StockCrossing
Xác nhận giao nhau
GET /stockcrossing
Lấy danh sách nhóm giao dịch giao nhau:
- Param: location (id kho, lấy theo người dùng), location_out (id kho xuất), confirm=Y|N (xác nhận), start_date, end_date (Ngày thực hiện giao dịch)
- Order: group_id, datenew, person_name, location_out_name, is_confirm, note
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| action | NO | ||
| is_correct | NO | ||
| note_confirm | NO | ||
| diary_error | NO | ||
| is_processed | NO | ||
| note_process | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.stock.v1+json
application/hal+json
application/json |
| Authorization | HTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details) |
Response
Status Codes
- 406: Not Acceptable
- 415: Unsupported Media Type
- 200: OK
- 401: Unauthorized
- 403: Forbidden
Headers
| Header | Value |
|---|---|
| Content-Type | application/vnd.stock.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
{
"_embedded": {
"stock_crossing": [
{
"uuid", //uuid group stockdiary
"group_id", // id group stockdiary
"datenew", //Ngày giao nhau
"person_name", //Nhân viên giao nhau
"location_out_name", //Kho xuất
"first_product_name", //Tên sản phẩm đại diện
"num_other_diary", //Số sản phẩm còn lại trong group
"note", //Ghi chú của giao dịch
"is_confirm", //Trạng thái xác nhận giao nhau
},
...
]
}
}
GET /stockcrossing[/:group_uuid]
Lấy thông tin chi tiết giao dịch giao nhau
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| action | NO | ||
| is_correct | NO | ||
| note_confirm | NO | ||
| diary_error | NO | ||
| is_processed | NO | ||
| note_process | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.stock.v1+json
application/hal+json
application/json |
| Authorization | HTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details) |
Response
Status Codes
- 406: Not Acceptable
- 415: Unsupported Media Type
- 200: OK
- 404: Not Found
- 401: Unauthorized
- 403: Forbidden
Headers
| Header | Value |
|---|---|
| Content-Type | application/vnd.stock.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
{
"result": "OK",
"group_diary": {
"group_id", //id group diary
"datenew", //Ngày giao dịch
"person_name", //Nhân viên giao dịch
"location_in", //Kho nhập
"location_out", //Kho xuất
"note_diary", // Ghi chú của giao dịch
"is_correct": "Y|N|null", // Xác nhận đúng hay sai
"person_confirm", //Người xác nhận (chỉ nên hiển thị khi is_correct!=null)
"date_confirm", //Ngày xác nhận (chỉ nên hiển thị khi is_correct!=null)
"note_confirm", //Ghi chú xác nhận (chỉ nên hiển thị khi is_correct!=null)
"diary": [ //Danh sách sản phẩm giao dịch
{
"id", //id diary
"reference", //Mã SP
"product_name", //Tên SP
"units" // Số lượng
},
...
],
"diary_error", //Mảng id diary lỗi (Hiển thị kèm danh sách SP giao dịch trên, chỉ hiển thị khi is_correct=N)
"is_processed": "Y|N|null", //Đã xử lý giao dịch sai (chỉ hiển thị khi is_correct=N)
"person_process", //Người xử lý sai (chỉ hiển thị khi is_correct=N và is_processed!=null)
"date_process", //Ngày xử lý sai (chỉ hiển thị khi is_correct=N và is_processed!=null)
"note_process"// Ghi chú xử lý sai (chỉ hiển thị khi is_correct=N và is_processed!=null)
},
}
//Mã lỗi:
- NOT_FOUND_GROUP_DIARY: Không tìm thấy giao dịch
- ERROR: Lỗi khác
PUT /stockcrossing[/:group_uuid]
Xác nhận giao nhau (confirm) và xác nhận xử lý giao nhau sai (processing)
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| action | NO | ||
| is_correct | NO | ||
| note_confirm | NO | ||
| diary_error | NO | ||
| is_processed | NO | ||
| note_process | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.stock.v1+json
application/hal+json
application/json |
| Content-Type | application/vnd.stock.v1+json
application/json |
| Authorization | HTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details) |
Body
{
"action": "confirm" | "processing (chỉ thực hiện khi is_correct=N)",
"is_correct": "Y|N", //Xác nhận giao nhau. Với action confirm. Required
"note_confirm", //Ghi chú xác nhận. Với action confirm
"diary_error", // mảng JSON stockdiary id trong group bị sai. Với action confirm. Required khi is_correct=N
"is_processed": "Y|N", //Xác nhận đã xử lý giao nhau sai. Với action confirm (not requiqred, hiển thị khi correct=N), processing (required)
"note_process" //Ghi chú xử lý giao nhau sai. Với action confirm (hiển thị khi correct=N), processing
}
Response
Status Codes
- 406: Not Acceptable
- 415: Unsupported Media Type
- 200: OK
- 404: Not Found
- 400: Client Error
- 422: Unprocessable Entity
- 401: Unauthorized
- 403: Forbidden
Headers
| Header | Value |
|---|---|
| Content-Type | application/vnd.stock.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
{result: "SUCCESS|ERROR"}
//Mã lỗi:
- confirm:
+ NOT_FOUND_GROUP_DIARY: Không tìm thấy nhóm giao nhau
+ NOT_PERMISSION_ON_LOCATION: Không có quyền thực hiện xác nhận này
+ GROUP_DIARY_CONFIRMED: Giao nhau đã được xác nhận
+ DIARY_ERROR_NOT_FOUND: diary error không tìm thấy có trong group
+ ERROR: Lỗi khác
- processing:
+ NOT_FOUND_GROUP_DIARY: Không tìm thấy nhóm giao nhau
+ NOT_PERMISSION_ON_LOCATION: Không có quyền thực hiện xác nhận này
+ GROUP_DIARY_NOT_CONFIRMED: Giao nhau chưa được xác nhận (confirm)
+ GROUP_DIARY_CORRECT: Giao nhau đã được xác nhận đúng
+ GROUP_DIARY_PROCESSED: Giao nhau đã được xác nhận xử lý
+ ERROR: Lỗi khác
StockExpiries
Quản lý hạn sử dụng
GET /stockexpiries
- Lấy danh sách thời hạn sử dụng
- Param: reference, name (tên SP), start_date_expired (Ngày hết hạn), end_date_expired, is_active (set mặc định Y)
Order: name, manufacture_date, expired_date, warning_date, created_at
Lấy danh sách HSD của tất cả SP: truyền param get_product_expiry=Y&page_size=-1
Truyền thêm param name để lọc tương đối theo tên và mã SP
Lấy danh sách sản phẩm nhập mua có HSD: truyền param get_product_buy=Y&page_size=-1
- Truyền param start_date, end_date để lọc ngày mua (tối đa 32 ngày)
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| reference | NO | ||
| expiry | Hạn sử dụng: 0 (không có hạn sử dụng), number (tháng) |
NO | |
| warning | Số ngày trước ngày hết hạn để cảnh báo |
NO | |
| manufacture_date | NO | ||
| expired_date | NO | ||
| action | NO | ||
| location_id | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.stock.v1+json
application/hal+json
application/json |
| Authorization | HTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details) |
Response
Status Codes
- 406: Not Acceptable
- 415: Unsupported Media Type
- 200: OK
- 401: Unauthorized
- 403: Forbidden
Headers
| Header | Value |
|---|---|
| Content-Type | application/vnd.stock.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
- Danh sách HSD
{
"_embedded": {
"stock_expiries": [
{
"id", //id stock expiry
"reference",
"product_name",
"manufacture_date", //Ngày sản xuất
"expiry", // Số tháng hết hạn từ ngày sản xuất
"expired_date", //Ngày hết hạn
"expired", //Số ngày còn lại trước khi hết hạn (nếu giá trị = 0 => hết hạn)
"warning", //Số ngày trước khi hết hạn để cảnh báo
"warning_date", //Ngày cảnh báo
"created_at", //Ngày tạo
"person_create", //Người tạo
"location": "[{"is_check": "Y|N", "check_date" (ngày kiểm tra), "location_id", "person_check" (người kiểm tra), "location_name"},...]"
},
...
]
},
}
- Danh sách HSD theo SP:
{
"_embedded": {
"stock_expiries": [
{
"id", //product id
"reference",
"product_name", //ten SP
"expiry", // HSD (tháng)
"warning", // Số ngày cảnh báo
}
]
},
}
- Danh sách sản phẩm mua:
{
"_embedded": {
"stock_expiries": [
{
"id",
"reference",
"product_name",
"expiry",
"warning",
}
]
},
}
PUT /stockexpiries
Thêm thời hạn sử dụng
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| reference | NO | ||
| expiry | Hạn sử dụng: 0 (không có hạn sử dụng), number (tháng) |
NO | |
| warning | Số ngày trước ngày hết hạn để cảnh báo |
NO | |
| manufacture_date | NO | ||
| expired_date | NO | ||
| action | NO | ||
| location_id | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.stock.v1+json
application/hal+json
application/json |
| Content-Type | application/vnd.stock.v1+json
application/json |
Body
[{
"reference",
"expiry", //Hạn sử dụng (tháng) (số tháng hết hạn kể từ ngày sản xuất)
"warning", //Cảnh báo (ngày) Số ngày trước ngày hết hạn để cảnh báo
"manufacture_date", //yyyy-mm-dd
"expired_date" //yyyy-mm-dd
},...]
Response
Status Codes
- 406: Not Acceptable
- 415: Unsupported Media Type
- 200: OK
- 400: Client Error
- 422: Unprocessable Entity
Headers
| Header | Value |
|---|---|
| Content-Type | application/vnd.stock.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
{"result: "SUCCESS|ERROR"}
Các lỗi:
- INVALID_VALUE: bao gồm các lỗi nhập sai dữ liệu
- WARNING_NOT_SAME: Ngày cảnh báo các dòng cùng sản phẩm không giống nhau
- EXPIRY_DUPLICATE: Trùng dòng
- REFERENCE_NOT_EXIST: Mã SP không tồn tại
- EXPIRY_EXIST: Thời hạn sử dụng đã tồn tại
- ERROR: Lỗi lưu dữ liệu
PUT /stockexpiries[/:expiry_id]
- Chỉnh sửa thời hạn sử dụng
- Xác nhận đã xử lý kho
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| reference | NO | ||
| expiry | Hạn sử dụng: 0 (không có hạn sử dụng), number (tháng) |
NO | |
| warning | Số ngày trước ngày hết hạn để cảnh báo |
NO | |
| manufacture_date | NO | ||
| expired_date | NO | ||
| action | NO | ||
| location_id | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.stock.v1+json
application/hal+json
application/json |
| Content-Type | application/vnd.stock.v1+json
application/json |
| Authorization | HTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details) |
Body
{
"action": "editExpiry | checkLocation",
"reference", //Với action editExpiry
"expiry", //Với action editExpiry
"warning", //Với action editExpiry
"manufacture_date", //Với action editExpiry
"expired_date", //Với action editExpiry
"location_id", //Với action checkLocation
}
Response
Status Codes
- 406: Not Acceptable
- 415: Unsupported Media Type
- 200: OK
- 404: Not Found
- 400: Client Error
- 422: Unprocessable Entity
- 401: Unauthorized
- 403: Forbidden
Headers
| Header | Value |
|---|---|
| Content-Type | application/vnd.stock.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
{result: "SUCCESS | ERROR"}
Các lỗi:
- NOT_FOUND_EXPIRY: Không tìm thấy HSD
- NOT_ACTIVE_EXPIRY: HSD đã không còn hoạt động
- ERROR: Lỗi lữu trữ
- Với editExpiry
+ EXPIRY_EXIST: HSD đã tồn tại
+ EXPIRY_CHECKED: HSD đã có kho check
- Với checkLocation
+ NOT_EXIST_LOCATION: Không tồn tại kho hoặc không có quyền trên kho này
+ LOCATION_CHECKED: HSD đã check trên kho này
DELETE /stockexpiries[/:expiry_id]
Xóa HSD Các lỗi: - NOT_FOUND_EXPIRY: Không tìm thấy HSD - NOT_ACTIVE_EXPIRY: HSD đã không còn hoạt động
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| reference | NO | ||
| expiry | Hạn sử dụng: 0 (không có hạn sử dụng), number (tháng) |
NO | |
| warning | Số ngày trước ngày hết hạn để cảnh báo |
NO | |
| manufacture_date | NO | ||
| expired_date | NO | ||
| action | NO | ||
| location_id | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.stock.v1+json
application/hal+json
application/json |
| Authorization | HTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details) |
Response
Status Codes
- 406: Not Acceptable
- 415: Unsupported Media Type
- 204: No Content
- 404: Not Found
- 401: Unauthorized
- 403: Forbidden
Headers
| Header | Value |
|---|---|
| Content-Type | application/vnd.stock.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
StockMapLevels
Quản lý thứ bậc kho
GET /stockmaps/levels
Lấy danh sách thứ bậc kho
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| code | NO | ||
| label | NO | ||
| order | NO | ||
| prefix | NO | ||
| background_color | NO | ||
| border_color | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.stock.v1+json
application/hal+json
application/json |
| Authorization | HTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details) |
Response
Status Codes
- 406: Not Acceptable
- 415: Unsupported Media Type
- 200: OK
- 401: Unauthorized
- 403: Forbidden
Headers
| Header | Value |
|---|---|
| Content-Type | application/vnd.stock.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
{
"_embedded": {
"stock_map_levels": [
{
"uuid", //level uuid
"code",
"label",
"prefix", //Tiền tố
"order", //Thứ tự
"background_color", //Màu nền
"border_color" //Màu border
}
]
},
}
POST /stockmaps/levels
Thêm thứ bậc
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| code | NO | ||
| label | NO | ||
| order | NO | ||
| prefix | NO | ||
| background_color | NO | ||
| border_color | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.stock.v1+json
application/hal+json
application/json |
| Content-Type | application/vnd.stock.v1+json
application/json |
| Authorization | HTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details) |
Body
{
"code", //required
"label", //required
"prefix": "/.-",
"order",
"background_color",
"border_color"
}
Response
Status Codes
- 406: Not Acceptable
- 415: Unsupported Media Type
- 201: Created
- 400: Client Error
- 422: Unprocessable Entity
- 401: Unauthorized
- 403: Forbidden
Headers
| Header | Value |
|---|---|
| Content-Type | application/vnd.stock.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
{"result":"SUCCESS | ERROR"}
Mã lỗi:
- ERROR: Lỗi lưu trữ
PUT /stockmaps/levels[/:level_id]
Chỉnh sửa thứ bậc
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| code | NO | ||
| label | NO | ||
| order | NO | ||
| prefix | NO | ||
| background_color | NO | ||
| border_color | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.stock.v1+json
application/hal+json
application/json |
| Content-Type | application/vnd.stock.v1+json
application/json |
| Authorization | HTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details) |
Body
{
"code",
"label",
"prefix": "/.-",
"order",
"background_color",
"border_color"
}
Response
Status Codes
- 406: Not Acceptable
- 415: Unsupported Media Type
- 200: OK
- 404: Not Found
- 400: Client Error
- 422: Unprocessable Entity
- 401: Unauthorized
- 403: Forbidden
Headers
| Header | Value |
|---|---|
| Content-Type | application/vnd.stock.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
{"resuilt":"SUCCESS | ERROR"}
Mã lỗi:
- NOT_FOUND_LEVEL: Không tìm thấy thứ bậc
- EXIST_MAP_USE_LEVEL: Thứ bậc đã được sử dụng trong 1 sơ đồ kho
- ERROR: Lỗi lưu trữ
DELETE /stockmaps/levels[/:level_id]
Xóa thứ bậc. Result: {"resuilt":"SUCCESS | ERROR"} Mã lỗi: - NOT_FOUND_LEVEL: Không tìm thấy thứ bậc - EXIST_MAP_USE_LEVEL: Thứ bậc đã được sử dụng trong 1 sơ đồ kho - ERROR: Lỗi lưu trữ
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| code | NO | ||
| label | NO | ||
| order | NO | ||
| prefix | NO | ||
| background_color | NO | ||
| border_color | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.stock.v1+json
application/hal+json
application/json |
| Authorization | HTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details) |
Response
Status Codes
- 406: Not Acceptable
- 415: Unsupported Media Type
- 204: No Content
- 404: Not Found
- 401: Unauthorized
- 403: Forbidden
Headers
| Header | Value |
|---|---|
| Content-Type | application/vnd.stock.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
StockMapProducts
GET /stockmaps/products/:location[/:map/:product_id]
Lấy danh sách sản phẩm thuộc map: /stockmaps/products/[:location] - Filter: map (map id), product_code, product_name, reference - Order: reference, product_name, map, min, max, stock, reality, deviation, flag_type, person_name, date Quyền: stock.map.view_list
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| map | NO | ||
| product | NO | ||
| code | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.stock.v1+json
application/hal+json
application/json |
| Authorization | HTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details) |
Response
Status Codes
- 406: Not Acceptable
- 415: Unsupported Media Type
- 200: OK
- 401: Unauthorized
- 403: Forbidden
Headers
| Header | Value |
|---|---|
| Content-Type | application/vnd.stock.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
{
"_embedded": {
"stock_map_products": [
{
"id", //product id
"reference",
"product_name",
"maps", //Mảng json map mà sản phẩm thuộc: [{"uuid","code"},...]
"min",
"max",
"stock",
"reality",
"deviation",
"flag_type",
"person_name",
"date"
},...
]
}
}
POST /stockmaps/products/:location[/:map/:product_id]
Thêm sản phẩm vào map: /stockmaps/products/[:location] Quyền: stock.map.add_product
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| map | NO | ||
| product | NO | ||
| code | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.stock.v1+json
application/hal+json
application/json |
| Content-Type | application/vnd.stock.v1+json
application/json |
| Authorization | HTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details) |
Body
{
"map", //map id
"product", //product id.
"code" //product code. Mặc định thêm bằng product nếu không có code
}
Response
Status Codes
- 406: Not Acceptable
- 415: Unsupported Media Type
- 201: Created
- 400: Client Error
- 422: Unprocessable Entity
- 401: Unauthorized
- 403: Forbidden
Headers
| Header | Value |
|---|---|
| Content-Type | application/vnd.stock.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
{result: "SUCCESS | ERROR"}
Các lỗi:
- NOT_FOUND_LOCATION
- NOT_FOUND_MAP
- MAP_NOT_SET_SAVE_PRODUCT
- NOT_FOUND_PRODUCT
- EXIST_MAP_PRODUCT
- ERROR
DELETE /stockmaps/products/:location[/:map/:product_id]
Xóa map: /stockmaps/products/[:location]/[:map]/[:product_id]; Quyền: stock.map.delete; Các lỗi: - NOT_FOUND_LOCATION; - NOT_FOUND_MAP_PRODUCT; - ERROR;
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| map | NO | ||
| product | NO | ||
| code | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.stock.v1+json
application/hal+json
application/json |
| Authorization | HTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details) |
Response
Status Codes
- 406: Not Acceptable
- 415: Unsupported Media Type
- 204: No Content
- 404: Not Found
- 401: Unauthorized
- 403: Forbidden
Headers
| Header | Value |
|---|---|
| Content-Type | application/vnd.stock.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
StockMaps
GET /stockmaps/maps/:location
Xem danh sách map: /stockmaps/maps/[:location_id]. - Filter: parent (id, khu vực cha), code (code khu vực), name (tên khu vực), reference (mã SP), product_name (Tên SP) Quyền: stock.map.view_list
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| parent | NO | ||
| code | NO | ||
| name | NO | ||
| map_level | NO | ||
| length | NO | ||
| width | NO | ||
| coord_l1 | NO | ||
| coord_l2 | NO | ||
| coord_w1 | NO | ||
| coord_w2 | NO | ||
| is_save_product | NO | ||
| order | NO | ||
| action | NO | ||
| background_color | NO | ||
| border_color | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.stock.v1+json
application/hal+json
application/json |
| Authorization | HTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details) |
Response
Status Codes
- 406: Not Acceptable
- 415: Unsupported Media Type
- 200: OK
- 401: Unauthorized
- 403: Forbidden
Headers
| Header | Value |
|---|---|
| Content-Type | application/vnd.stock.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
{
"_embedded": {
"stock_maps": [
{
"uuid", //map id
"parent", //parent id
"code", //map code, đã kèm code map cha
"name", //map name
"length", //Chiều dài map (m)
"width", //Chiều rộng map (m)
"coord_l1", // Tọa độ 1 của map theo chiều dài của map cha (m)
"coord_l2", // Tọa độ 2 của map theo chiều dài của map cha (m)
"coord_w1", // Tọa độ 1 của map theo chiều rộng của map cha (m)
"coord_w2", // Tọa độ 2 của map theo chiều rộng của map cha (m)
"is_save_product": "Y|N", // map chứa sản phẩm
"order" //Thứ tự map trong map cha,
"background_color",
"border_color"
}
]
},
}
POST /stockmaps/maps/:location
Thêm map mới. Quyền: stock.map.add
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| parent | NO | ||
| code | NO | ||
| name | NO | ||
| map_level | NO | ||
| length | NO | ||
| width | NO | ||
| coord_l1 | NO | ||
| coord_l2 | NO | ||
| coord_w1 | NO | ||
| coord_w2 | NO | ||
| is_save_product | NO | ||
| order | NO | ||
| action | NO | ||
| background_color | NO | ||
| border_color | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.stock.v1+json
application/hal+json
application/json |
| Content-Type | application/vnd.stock.v1+json
application/json |
| Authorization | HTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details) |
Body
{
"parent", //parent id. Not required
"code",
"name",
"map_level", //map level id
"length",
"width",
"coord_l1",
"coord_l2",
"coord_w1",
"coord_w2",
"is_save_product": "Y|N",
"background_color",
"border_color"
}
Response
Status Codes
- 406: Not Acceptable
- 415: Unsupported Media Type
- 201: Created
- 400: Client Error
- 422: Unprocessable Entity
- 401: Unauthorized
- 403: Forbidden
Headers
| Header | Value |
|---|---|
| Content-Type | application/vnd.stock.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
{result:"SUCCESS | ERROR"}
Các lỗi:
- NOT_FOUND_LOCATION
- NOT_FOUND_PARENT
- PARENT_SAVE_PRODUCT: Khu vực cha được cài đặt chứa sản phẩm
- ERROR
GET /stockmaps/maps/:location[/:map_id]
Lấy thông tin map: /stockmaps/maps/[:location]/[:map_id] Quyền: stock.map.view_detail
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| parent | NO | ||
| code | NO | ||
| name | NO | ||
| map_level | NO | ||
| length | NO | ||
| width | NO | ||
| coord_l1 | NO | ||
| coord_l2 | NO | ||
| coord_w1 | NO | ||
| coord_w2 | NO | ||
| is_save_product | NO | ||
| order | NO | ||
| action | NO | ||
| background_color | NO | ||
| border_color | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.stock.v1+json
application/hal+json
application/json |
| Authorization | HTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details) |
Response
Status Codes
- 406: Not Acceptable
- 415: Unsupported Media Type
- 200: OK
- 404: Not Found
- 401: Unauthorized
- 403: Forbidden
Headers
| Header | Value |
|---|---|
| Content-Type | application/vnd.stock.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
{
"result": "OK",
"map": {
"uuid",
"parent",
"code",
"name",
"map_level",
"length",
"width",
"coord_l1",
"coord_l2",
"coord_w1",
"coord_w2",
"is_save_product",
"order",
"background_color",
"border_color"
},
}
PUT /stockmaps/maps/:location[/:map_id]
- Chỉnh sửa thông tin map. Quyền: stock.map.edit_info
- Chỉnh sửa thứ tự map. Quyền: stock.map.edit_order
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| parent | NO | ||
| code | NO | ||
| name | NO | ||
| map_level | NO | ||
| length | NO | ||
| width | NO | ||
| coord_l1 | NO | ||
| coord_l2 | NO | ||
| coord_w1 | NO | ||
| coord_w2 | NO | ||
| is_save_product | NO | ||
| order | NO | ||
| action | NO | ||
| background_color | NO | ||
| border_color | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.stock.v1+json
application/hal+json
application/json |
| Content-Type | application/vnd.stock.v1+json
application/json |
| Authorization | HTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details) |
Body
{
"action": "editInfo | editOrder",
"code", //Với action editInfo
"name", //Với action editInfo
"map_level", //Với action editInfo
"length", //Với action editInfo
"width", //Với action editInfo
"coord_l1", //Với action editInfo
"coord_l2", //Với action editInfo
"coord_w1", //Với action editInfo
"coord_w2", //Với action editInfo
"is_save_product", //Với action editInfo
"parent", //Với action editOrder
"order", //Với action editOrder
"background_color", //Với action editOrder
"border_color" //Với action editOrder
}
Response
Status Codes
- 406: Not Acceptable
- 415: Unsupported Media Type
- 200: OK
- 404: Not Found
- 400: Client Error
- 422: Unprocessable Entity
- 401: Unauthorized
- 403: Forbidden
Headers
| Header | Value |
|---|---|
| Content-Type | application/vnd.stock.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
{result:"SUCCESS | ERROR"}
Các lỗi:
- Lỗi chung
+ NOT_FOUND_LOCATION
+ NOT_FOUND_MAP
+ ERROR
- editInfo
+ MAP_HAS_MAP_CHILDREN: Khu vực có khu vực con không thể set is_save_product = Y
+ MAP_HAS_PRODUCTS: Đã có sản phẩm thuộc khu vực không thể set is_save_product = N
- editOrder
+ NOT_FOUND_PARENT
- PARENT_SAVE_PRODUCT: Khu vực cha được cài đặt chứa sản phẩm
DELETE /stockmaps/maps/:location[/:map_id]
Xóa map. Quyền: stock.map.delete Các lỗi: - Lỗi chung + NOT_FOUND_LOCATION + NOT_FOUND_MAP + MAP_HAS_MAP_CHILDREN + MAP_HAS_PRODUCTS + ERROR
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| parent | NO | ||
| code | NO | ||
| name | NO | ||
| map_level | NO | ||
| length | NO | ||
| width | NO | ||
| coord_l1 | NO | ||
| coord_l2 | NO | ||
| coord_w1 | NO | ||
| coord_w2 | NO | ||
| is_save_product | NO | ||
| order | NO | ||
| action | NO | ||
| background_color | NO | ||
| border_color | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.stock.v1+json
application/hal+json
application/json |
| Authorization | HTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details) |
Response
Status Codes
- 406: Not Acceptable
- 415: Unsupported Media Type
- 204: No Content
- 404: Not Found
- 401: Unauthorized
- 403: Forbidden
Headers
| Header | Value |
|---|---|
| Content-Type | application/vnd.stock.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
StockOrders
Quản lý đặt, báo đặt hàng
GET /stockorders/:type
- Lấy danh sách đặt, báo đặt hàng:
/stockorders/order.
- Quyền:
stock.order.view_list. - Filter:
order_status(mảng các trạng thái: ""(Rỗng),ordered(Đã đặt),received(Đã về),not_order(Không đặt) ,not_receive(Không về),debt_not(Đang nợ - SP không đặt, không về),debt_received(Đang nợ - Sản phẩm đã về),debt(Đang nợ - Chưa xủ lý)),reference,product_name,start_date_received,end_date_received. - Lưu ý: Nếu filter theo
order_statuscóreceivedthìstart_date_receivedlà bắt buộc.
- Quyền:
- Lấy lịch sử của đơn hàng:
/stockorders/order?other_view=history&order_uuid=[order_uuid]. - Lấy lịch sử của báo đặt:
/stockorders/order?other_view=history&propose_uuid=[propose_uuid]. - Lấy danh sách các đơn hàng đã được đặt nhưng có phát sinh nhập kho (gợi ý đã nhận hàng):
/stockorders/order?other_view=check_receive.
Các mã lỗi HTTP có thể xảy ra:
- 403 Forbidden: Không có quyền stock.order.view_list.
- 405 Method Not Allowed: Sai type trong URL (chỉ chấp nhận order).
- 422 Unprocessable Entity: Dữ liệu lọc không hợp lệ (ví dụ: thiếu start_date_received khi lọc theo received).
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| action_post_propose | NO | ||
| action_post_order | NO | ||
| action_put_propose | NO | ||
| action_put_order | NO | ||
| propose_data | NO | ||
| qty | NO | ||
| debt_object | NO | ||
| propose_status | NO | ||
| order_uuids | NO | ||
| order_data | NO | ||
| note | NO | ||
| order_status | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.stock.v1+json
application/hal+json
application/json |
| Authorization | HTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details) |
Response
Status Codes
- 406: Not Acceptable
- 415: Unsupported Media Type
- 200: OK
- 401: Unauthorized
- 403: Forbidden
Headers
| Header | Value |
|---|---|
| Content-Type | application/vnd.stock.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
- Danh sách đơn đặt hàng:
{
"_embedded": {
"stock_orders": [
{
"uuid", // Order UUID
"product_id",
"reference",
"product_name",
"supplier_name",
"uom_name",
"units_package", // SL / gói
"group_replace", // Nhóm sản phẩm thay thế
"order_status": "Rỗng|ordered|received|not_order|not_receive",
"order_date", //Ngày đặt
"order_person_id", //Id Người đặt
"order_person_name", //Tên Người đặt
"order_note", //Ghi chú đặt hàng
"order_qty", //Số lượng đặt
"receive_person_id", //id Người nhận hàng
"receive_date", //Ngày nhận hàng
"proposes": "[ // Mảng JSON danh sách báo đặt
{
\"uuid\", // Propose UUID
\"date\", // Ngày báo
\"order\", // Thứ tự
\"person_id\", // ID người báo
\"person_name\", // Tên người báo
\"qty\", // Số lượng nợ
\"debt_object\", // Đối tượng nợ
\"status\" // Trạng thái nợ (returned (Đã trả), replaced (Đã thế), waiting (Chờ), cancel (Hủy))
}, ...]"
},
...
]
}
}
- Lịch sử:
{
"_embedded": {
"stock_orders": [
{
"uuid", // History UUID
"person_name",
"date",
"log" // Nội dung lịch sử
},
...
]
}
}
- Gợi ý nhận hàng:
{
"order_check_receive": {
"order_uuids": [ ... ], // Mảng các order_uuid
"count_status": {//Số lượng theo trạng thái
"ordered": "number",
"not_receive": "number",
"not_order": "number"
}
}
}
POST /stockorders/:type
POST
/stockorders/propose: Các hành động liên quan đến báo đặt hàng. Quyền:stock.order.propose.action_post_propose="check_product": Kiểm tra sản phẩm trước khi thêm báo đặt.action_post_propose="add_propose": Thêm báo đặt mới.
POST
/stockorders/order: Các hành động liên quan đến đơn đặt hàng.action_post_order="merge": Gộp 2 dòng đơn hàng. Quyền:stock.order.merge.action_post_order="order": Thực hiện đặt hàng. Quyền:stock.order.order.action_post_order="receive": Xác nhận đã nhận hàng. Quyền:stock.order.receive.
Các mã lỗi HTTP có thể xảy ra:
- 403 Forbidden: Không có quyền thực hiện hành động tương ứng.
- 422 Unprocessable Entity: Thiếu action_post_propose hoặc action_post_order, hoặc dữ liệu gửi lên không hợp lệ (thiếu trường, sai định dạng).
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| action_post_propose | NO | ||
| action_post_order | NO | ||
| action_put_propose | NO | ||
| action_put_order | NO | ||
| propose_data | NO | ||
| qty | NO | ||
| debt_object | NO | ||
| propose_status | NO | ||
| order_uuids | NO | ||
| order_data | NO | ||
| note | NO | ||
| order_status | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.stock.v1+json
application/hal+json
application/json |
| Content-Type | application/vnd.stock.v1+json
application/json |
| Authorization | HTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details) |
Body
- **check_product**:
{
"action_post_propose": "check_product",
"propose_data": [{
"reference", // required
"debt_object", // required
"qty" // required
}, ...]
}
- **add_propose**:
{
"action_post_propose": "add_propose",
"propose_data": [{...}] // Tương tự check_product
}
- **merge**:
{
"action_post_order": "merge",
"order_uuids": ["uuid_1", "uuid_2"] // Mảng chứa 2 order_uuid cần gộp
}
- **order**:
{
"action_post_order": "order",
"order_data": [{
"order_uuid", // required
"qty", // required
"note"
}, ...]
}
- **receive**:
{
"action_post_order": "receive",
"order_uuids": ["...", "..."] // Mảng các order_uuid cần xác nhận nhận hàng
}
Response
Status Codes
- 406: Not Acceptable
- 415: Unsupported Media Type
- 201: Created
- 400: Client Error
- 422: Unprocessable Entity
- 401: Unauthorized
- 403: Forbidden
Headers
| Header | Value |
|---|---|
| Content-Type | application/vnd.stock.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
- **check_product**:
{
"result": "SUCCESS",
"propose_check": [{
"product_id",
"reference",
"product_name",
"group_replace",
"order_uuid",
"order_status",
"debt_object",
"status": "ok|warning|error", // ok: hợp lệ, warning: cảnh báo, error: không hợp lệ
"qty"
}, ...]
}
- **add_propose**:
{
"result": "SUCCESS",
"propose_uuids": ["...", "..."]
}
// Mã lỗi:
- INSERT_ORDER_FAILED: Lỗi không thể tạo dòng đơn hàng mới trong CSDL.
- INSERT_PROPOSE_FAILED: Lỗi không thể tạo dòng báo đặt mới trong CSDL.
- INSERT_HISTORY_FAILED: Lỗi không thể ghi lịch sử hành động.
- **merge**:
{
"result": "SUCCESS",
"order_primary": "..." // uuid của dòng chính sau khi gộp
}
// Mã lỗi:
- NOT_FOUND_ORDERS: Không tìm thấy một hoặc cả hai đơn hàng cần gộp.
- INVALID_MERGE_ORDERS: Các đơn hàng không hợp lệ để gộp (ví dụ: khác sản phẩm, một đơn đã nhận hàng, hoặc là cùng một đơn hàng).
- MERGE_ORDERS_FAILED: Lỗi CSDL trong quá trình gộp.
- **order**:
{"result": "SUCCESS"}
// Mã lỗi:
- INVALID_ORDER_STATUS: Đơn hàng đã có trạng thái (đã đặt, đã về,...) nên không thể đặt lại.
- DUPLICATE_NOT_ORDER_RECEIVE_PRODUCT: Đã tồn tại một đơn hàng khác cho cùng sản phẩm này với trạng thái "Không đặt" hoặc "Không về".
- NOT_FOUND_ORDER: Không tìm thấy đơn hàng với UUID đã cung cấp.
- ORDER_FAILED: Lỗi CSDL trong quá trình cập nhật trạng thái đặt hàng.
- **receive**:
{"result": "SUCCESS"}
// Mã lỗi:
- INVALID_ORDER_STATUS: Chỉ những đơn hàng có trạng thái "Đã đặt" (ordered) mới có thể xác nhận nhận hàng.
- ORDER_FAILED: Lỗi CSDL trong quá trình cập nhật trạng thái nhận hàng.
PUT /stockorders/:type[/:uuid]
PUT
/stockorders/propose/:uuid: Cập nhật báo đặt. Quyền:stock.order.propose.action_put_propose="edit_object_qty": Sửa đối tượng nợ và số lượng.action_put_propose="edit_status": Sửa trạng thái báo đặt (trả hàng, thay thế, chờ, hủy).
PUT
/stockorders/order/:uuid: Cập nhật đơn đặt hàng. Quyền:stock.order.order.action_put_order="edit_note": Sửa ghi chú.action_put_order="edit_qty": Sửa số lượng đặt.action_put_order="edit_status": Sửa trạng thái đơn hàng.
Các mã lỗi HTTP có thể xảy ra:
- 403 Forbidden: Không có quyền thực hiện hành động tương ứng.
- 422 Unprocessable Entity: Thiếu action_put_propose hoặc action_put_order, hoặc dữ liệu gửi lên không hợp lệ.
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| action_post_propose | NO | ||
| action_post_order | NO | ||
| action_put_propose | NO | ||
| action_put_order | NO | ||
| propose_data | NO | ||
| qty | NO | ||
| debt_object | NO | ||
| propose_status | NO | ||
| order_uuids | NO | ||
| order_data | NO | ||
| note | NO | ||
| order_status | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.stock.v1+json
application/hal+json
application/json |
| Content-Type | application/vnd.stock.v1+json
application/json |
| Authorization | HTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details) |
Body
- **propose/edit_object_qty**:
{
"action_put_propose": "edit_object_qty",
"qty",
"debt_object"
}
- **propose/edit_status**:
{
"action_put_propose": "edit_status",
"propose_status": "returned|replaced|waiting|cancel" // required
}
- **order/edit_note**:
{
"action_put_order": "edit_note",
"note"
}
- **order/edit_qty**:
{
"action_put_order": "edit_qty",
"qty" // required
}
- **order/edit_status**:
{
"action_put_order": "edit_status",
"order_status": "|not_order|ordered|not_receive|received" // required, rỗng để reset
}
Response
Status Codes
- 406: Not Acceptable
- 415: Unsupported Media Type
- 200: OK
- 404: Not Found
- 400: Client Error
- 422: Unprocessable Entity
- 401: Unauthorized
- 403: Forbidden
Headers
| Header | Value |
|---|---|
| Content-Type | application/vnd.stock.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
{"result": "SUCCESS"}
// Các mã lỗi có thể xảy ra:
- **propose/edit_object_qty**:
- NOT_FOUND_PROPOSE: Không tìm thấy báo đặt.
- ORDER_ALREADY_PROCESSED: Đơn hàng đã được xử lý (đã đặt, đã về,...) nên không thể sửa báo đặt.
- UPDATE_PROPOSE_FAILED: Lỗi CSDL khi cập nhật.
- **propose/edit_status**:
- NOT_FOUND_PROPOSE: Không tìm thấy báo đặt.
- ORDER_NOT_PROCESSED: Đơn hàng chưa được xử lý (chưa đặt) nên không thể sửa trạng thái nợ.
- UPDATE_PROPOSE_FAILED: Lỗi CSDL khi cập nhật.
- **order/edit_note**: NOT_FOUND_ORDER, UPDATE_ORDER_FAILED (Lỗi CSDL).
- **order/edit_qty**: NOT_FOUND_ORDER, STATUS_NOT_ORDERED (Chỉ sửa được SL khi đơn ở trạng thái "Đã đặt"), UPDATE_ORDER_FAILED (Lỗi CSDL).
- **order/edit_status**: NOT_FOUND_ORDER, INVALID_STATUS_UPDATE (Trạng thái cập nhật không hợp lệ so với trạng thái hiện tại), UPDATE_ORDER_FAILED (Lỗi CSDL).
DELETE /stockorders/:type[/:uuid]
Xóa một báo đặt: /stockorders/propose/:uuid. Quyền: stock.order.propose.
Chỉ có thể xóa khi đơn hàng liên quan chưa được đặt hàng (tức là order_status là rỗng). Nếu đơn hàng chỉ có 1 báo đặt này, cả đơn hàng cũng sẽ bị xóa.
Các mã lỗi HTTP có thể xảy ra:
- 403 Forbidden: Không có quyền stock.order.propose.
- 405 Method Not Allowed: Sai type trong URL (chỉ chấp nhận propose).
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| action_post_propose | NO | ||
| action_post_order | NO | ||
| action_put_propose | NO | ||
| action_put_order | NO | ||
| propose_data | NO | ||
| qty | NO | ||
| debt_object | NO | ||
| propose_status | NO | ||
| order_uuids | NO | ||
| order_data | NO | ||
| note | NO | ||
| order_status | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.stock.v1+json
application/hal+json
application/json |
| Authorization | HTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details) |
Response
Status Codes
- 406: Not Acceptable
- 415: Unsupported Media Type
- 204: No Content
- 404: Not Found
- 401: Unauthorized
- 403: Forbidden
Headers
| Header | Value |
|---|---|
| Content-Type | application/vnd.stock.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Stockdeviation
GET /stockdeviation/:location[/:id]
Lấy danh sách tồn lệch: /stockdeviation/[:location].
- Filter: product_name, reference, code, stock, reality, deviation, flag_type, person, position, start_date_deviation, end_date_deviation, start_date_transaction, end_date_transaction
- Order: reference, product_name, position, stock, reality, deviation, flag_type, person, date
- Filter: product_name, reference, code, stock, reality, deviation, flag_type, person, position, start_date_deviation, end_date_deviation, start_date_transaction, end_date_transaction
Lấy danh sách lịch sử tồn lệch: /stockdeviation/[:location]?view_history=Y.
- Filter: product_name, reference, code, stock, reality, deviation, flag_type, person, start_date_deviation, end_date_deviation
- Order: reference, product_name, stock, reality, deviation, flag_type, person, date
- Filter: product_name, reference, code, stock, reality, deviation, flag_type, person, start_date_deviation, end_date_deviation
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| reference | NO | ||
| stock | NO | ||
| reality | NO | ||
| deviation | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.stock.v1+json
application/hal+json
application/json |
| Authorization | HTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details) |
Response
Status Codes
- 406: Not Acceptable
- 415: Unsupported Media Type
- 200: OK
- 401: Unauthorized
- 403: Forbidden
Headers
| Header | Value |
|---|---|
| Content-Type | application/vnd.stock.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
- Danh sách tồn lệch:
{
"_embedded": {
"stockdeviation": [
{
"product_id", //ID sản phẩm
"reference", //Mã SP
"product_name", //Tên SP
"position", //Vị trí
"stock", //Tồn máy
"reality", //Tồn thực
"deviation", //Tồn lệch
"flag_type": "D|R|P", //Cờ: D: Draft (nháp); R: Right (đúng); P: Periodic (định kỳ)
"person_name", //Người chỉnh lệch
"date" // Ngày chỉnh lệch
},
...
]
}
}
- Danh sách lịch sử tồn lệch:
{
"_embedded": {
"stockdeviation": [
{
"product_id", //ID sản phẩm
"reference", //Mã SP
"product_name", //Tên SP
"stock", //Tồn máy
"reality", //Tồn thực
"deviation", //Tồn lệch
"flag_type", //Cờ
"edited": "Y|N", //Đã chỉnh tồn
"person_name", //Người chỉnh lệch
"date" // Ngày chỉnh lệch
},
...
]
}
}
PUT /stockdeviation/:location[/:id]
- Check dữ liệu chỉnh sửa tồn lệch: /stockdeviation/:location?check_deviation=Y
- Chỉnh sửa tồn lệch: /stockdeviation/:location, cần truyền param: edited (đã chỉnh sửa, yêu cầu quyền show_edited), flag_type (cờ).
- Quy tắt nhập xử lý tồn lệch:
- Yêu cầu phải có data reality hoặc deviation.
- Lúc nào reality cũng phải >=0.
- Nếu có đồng thời stock, reality, deviation thì kiểm tra deviation dựa trên stock, reality theo công thức tồn lệch deviation = reality - stock
- Nếu không có stock: Nếu tồn tại cả reality và deviation thì stock bằng reality - deviation, còn chỉ tồn tại reality hoặc deviation thì stock = stock_current, giá trị reality hoặc deviation còn lại sẽ tính dựa theo công thức tồn lệch và kiểm tra reality (nếu không có truyền reality)
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| reference | NO | ||
| stock | NO | ||
| reality | NO | ||
| deviation | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.stock.v1+json
application/hal+json
application/json |
| Content-Type | application/vnd.stock.v1+json
application/json |
| Authorization | HTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details) |
Body
[
{
"reference", //Mã SP. Required
"stock", //Tồn máy
"reality", //Tồn thực
"deviation" //Tồn lệch
},
...
]
Response
Status Codes
- 406: Not Acceptable
- 415: Unsupported Media Type
- 200: OK
- 400: Client Error
- 422: Unprocessable Entity
- 401: Unauthorized
- 403: Forbidden
Headers
| Header | Value |
|---|---|
| Content-Type | application/vnd.stock.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
- Check data chỉnh sửa tồn lệch: return lại mảng data đã truyền vào kèm result và các attribute cần thiết
{
"_embedded": {
"stockdeviation": [
{
"reference", //Mã SP truyền
"stock", //Tồn máy truyền
"reality", //Tồn thực truyền
"deviation", //Tồn lệch truyền
"result": "ERROR|OK", //Kết quả check
"result_code" // Chỉ có khi result ERROR, theo bảng mã lỗi bên dưới
"product_name", //Tên SP
"deviation_old", // Tồn lệch cũ
"stock_current" // Tồn máy hiện tại
},
...
]
}
}
- Chỉnh sửa tồn lệch:
{"result: "SUCCESS|ERROR"}
Các lỗi xảy ra:
- NOT_FOUND_LOCATION: Không tìm thấy location.
- INCORRECT_FLAG_TYPE: param flag_type không đúng. Chỉ ở action chỉnh sửa tồn lệch
- DUPLICATE_PRODUCT: Trùng mã SP
- INCORRECT_DEVIATION: giá trị tồn lệch, tồn thực không đúng
- NOT_FOUND_PRODUCT: Không tìm thấy sản phẩm hoặc sản phẩm không thuộc kho
StockdiaryTemp
GET /stockdiary/temp
Lấy danh sách phiếu tạm
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| action | YES | ||
| stockdiary_id | YES | ||
| product_id | NO | ||
| product_code | NO | ||
| line_id | NO | ||
| units | NO | ||
| person_id | NO | ||
| reason | NO | ||
| location_id | NO | ||
| location_transfer | NO | ||
| supplier_id | NO | ||
| note | NO | ||
| products | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.stock.v1+json
application/hal+json
application/json |
| Authorization | HTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details) |
Response
Status Codes
- 406: Not Acceptable
- 415: Unsupported Media Type
- 200: OK
- 401: Unauthorized
- 403: Forbidden
Headers
| Header | Value |
|---|---|
| Content-Type | application/vnd.stock.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
{
"_embedded": {
"stockdiary_temp": [
{
"id", //id stockdiary temp
"label", //label stockdiary temp
"person_name",
"location_name",
"person_share",
"first_product_name",
"num_other_line",
"created_at",
"updated_at",
}
]
},
"page_count",
"page_size",
"total_items",
"page"
}
GET /stockdiary/temp[/:stockdiary_id]
- Lấy danh sách lý do theo người dùng: /reason;
- Lấy danh sách kho theo người dùng: /location-person;
- Lấy thông tin phiếu hiện tại: /current. Thêm param set_current_access_token=Y để set quyền truy cập stockdiary hiện tại.
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| action | YES | ||
| stockdiary_id | YES | ||
| product_id | NO | ||
| product_code | NO | ||
| line_id | NO | ||
| units | NO | ||
| person_id | NO | ||
| reason | NO | ||
| location_id | NO | ||
| location_transfer | NO | ||
| supplier_id | NO | ||
| note | NO | ||
| products | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.stock.v1+json
application/hal+json
application/json |
| Authorization | HTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details) |
Response
Status Codes
- 406: Not Acceptable
- 415: Unsupported Media Type
- 200: OK
- 404: Not Found
- 401: Unauthorized
- 403: Forbidden
Headers
| Header | Value |
|---|---|
| Content-Type | application/vnd.stock.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
//REASON
{
"reason": {
[reason_id]: [reason_label],
...
}
}
//LOCATION-PERSON
{
"location_person": {
[location_id]: [location_name],
...
},
}
//CURRENT
{
"result": "SUCCESS",
"current_stockdiary": {
"stockdiary_info": {
"stockdiary_id",
"stockdiary_label",
"person_name",
"reason",
"reason_name",
"location_id"",
"location_name",
"location_transfer",
"location_transfer_name",
"supplier_id",
"supplier_name",
"note"
},
"stockdiary_lines": [
{
"line_id",
"product_id",
"product_name",
"reference",
"units",
"units_package"
},
...
]
}
}
//Lỗi CURRENT có thể xảy ra:
- NOT_CURRENT_ACCESS_TOKEN
- ERROR
PUT /stockdiary/temp[/:stockdiary_id]
Xử lý các hành động: addLine (Thêm SP), editStockdiary (Sửa các thông tin chung của phiếu: Lý do, kho, NCC, ghi chú,...), editUnit (Chỉnh sửa số lượng dòng), deleteLine (Xóa dòng), activeStockdiary (kích hoạt phiếu chờ), forwardStockdiary (chuyển tiếp phiếu), createNewStockdiary (Tạo phiếu mới), importProduct (import từ danh sách sản phẩm)
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| action | YES | ||
| stockdiary_id | YES | ||
| product_id | NO | ||
| product_code | NO | ||
| line_id | NO | ||
| units | NO | ||
| person_id | NO | ||
| reason | NO | ||
| location_id | NO | ||
| location_transfer | NO | ||
| supplier_id | NO | ||
| note | NO | ||
| products | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.stock.v1+json
application/hal+json
application/json |
| Content-Type | application/vnd.stock.v1+json
application/json |
| Authorization | HTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details) |
Body
{
"action": "addLine | editStockdiary | editUnit | deleteLine | activeStockdiary | forwardStockdiary | createNewStockdiary",
"stockdiary_id": "Phiếu đang xử lý hoặc phiếu đang chờ cho action activeStockdiary",
"product_id|product_code": "Áp dụng với action addLine",
"line_id": "Áp dụng với các action: editUnit, deleteLine",
"units": "Áp dụng với action addLine, editUnit. Chỉ có thể mang giá trị âm với lý do chỉnh sửa tồn (từ tồn lệch). Chỉ có thể giá trị 0 với lý lý chỉnh sửa tồn (từ tồn thực)",
"person_id" : "Áp dụng với action forwardStockdiary"
"reason": "Áp dụng với action editStockdiary",
"location_id": "Áp dụng với action editStockdiary",
"location_transfer": "Áp dụng với action editStockdiary. Required với reason giao nhau",
"supplier_id": "Áp dụng với action editStockdiary. Required với reason mua hàng và trả NCC",
"note": "Áp dụng với action editStockdiary",
"products": "Áp dụng với action importProduct. Là 1 mảng string JSON theo cấu trúc [{"reference":"[reference]","units":"[units]"},...]"
}
Response
Status Codes
- 406: Not Acceptable
- 415: Unsupported Media Type
- 200: OK
- 404: Not Found
- 400: Client Error
- 422: Unprocessable Entity
- 401: Unauthorized
- 403: Forbidden
Headers
| Header | Value |
|---|---|
| Content-Type | application/vnd.stock.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
//SUCCESS
Đa số các action trả về dạng {"result":"SUCCESS"}
Riêng:
- Action addLine:
{
"result": "SUCCESS",
"line": {
"line_id",
"product_id",
"product_name",
"units"
},
"is_update": "Y|N" // Cập nhật SL line sản phẩm đã tồn tại hay tạo line mới
}
- Action editStockdiary:
{
"result": "SUCCESS",
"stockdiary_info": {
"reason",
"reason_name",
"location_id",
"location_name",
"location_transfer",
"location_transfer_name",
"supplier_id",
"supplier_name",
"note",
},
}
- Action activeStockdiary, forwardStockdiary, createNewStockdiary: Trả về cấu trúc giống GET /current
Các lỗi có thể xảy ra:
Lỗi chung:
+ STOCKDIARY_NOT_CURRENT: Giá trị stockdiary_id không phải stockdiary hiện tại. (Trừ action activeStockdiary)
+ NOT_CURRENT_ACCESS_TOKEN: Chưa set truy cập phiếu tạm cho access_token hiện tại.
+ ERROR: Lỗi khác.
Lỗi riêng:
- addLine:
+ PRODUCT_NOT_FOUND: Không tìm thấy SP
- editStockdiary:
+ NOT_FOUND_REASON: Lý do không đúng
+ NOT_PERMISSION_SELECT_THIS_REASON: Không có quyền chọn lý do
+ REQUIRED_LOCATION_ID: Yêu cầu location_id
+ NOT_PERMISSION_SELECT_THIS_LOCATION: Không có quyền chọn kho
+ REQUIRED_LOCATION_TRANSFER: Yêu cầu kho giao nhau
+ NOT_FOUND_LOCATION_TRANSFER: Không tìm thấy kho giao nhau
+ LOCATION_TRANSFER_DIFFERENT_LOCATION: Kho giao nhau phải khác kho chính
+ REQUIRED_SUPPLIER_ID: Yêu cầu NCC
+ NOT_FOUND_SUPPLIER: Không tìm thấy NCC
- editUnits, deleteLine:
+ LINE_NOT_FOUND: Không tìm thấy line để chỉnh sửa
- activeStockdiary:
+ STOCKDIARY_NOT_FOUND: Không tìm thấy phiếu
- forwardStockdiary:
+ PERSON_NOT_FOUND: Nhân viên không tìm thấy
+ NOT_FORWARD_YOURSELF: Không được chuyển tiếp cho chính mình
+ STOCKDIARY_NOT_ITEM: Phiếu không có item nào
- createNewStockdiary: không có
- importProduct:
+ DUPLICATE_REFERENCE: Trùng mã trên dữ liệu import
+ INCORRECT_UNITS: Số lượng không đúng
+ NOT_FOUND_PRODUCT: Không tìm thấy từ mã SP
DELETE /stockdiary/temp[/:stockdiary_id]
Xóa phiếu hiện tại: /stockdiary/temp/[stockdiary_id]; Và tự động tạo phiếu mới. Trả về thông tin phiếu mới theo cấu trúc trả về GET /tickets/temp/current. Các lỗi có thể xảy ra: - STOCKDIARY_NOT_CURRENT: Không tìm thấy ticket; - NOT_CURRENT_ACCESS_TOKEN: Chưa set truy cập phiếu tạm cho access_token hiện tại; - ERROR: Lỗi khác
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| action | YES | ||
| stockdiary_id | YES | ||
| product_id | NO | ||
| product_code | NO | ||
| line_id | NO | ||
| units | NO | ||
| person_id | NO | ||
| reason | NO | ||
| location_id | NO | ||
| location_transfer | NO | ||
| supplier_id | NO | ||
| note | NO | ||
| products | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.stock.v1+json
application/hal+json
application/json |
| Authorization | HTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details) |
Response
Status Codes
- 406: Not Acceptable
- 415: Unsupported Media Type
- 204: No Content
- 404: Not Found
- 401: Unauthorized
- 403: Forbidden
Headers
| Header | Value |
|---|---|
| Content-Type | application/vnd.stock.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Stockdiary
POST /stockdiary/stockdiary[/:stockdiary_id]
- Thực hiện giao dịch kho từ phiếu tạm
- Thực hiện giao dịch chuyển đổi tồn sản phẩm
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| stockdiary_temp_id | NO | ||
| action | NO | ||
| location | NO | ||
| product_out_id | NO | ||
| units_out | NO | ||
| product_in | Array | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.stock.v1+json
application/hal+json
application/json |
| Content-Type | application/vnd.stock.v1+json
application/json |
Body
{
"stockdiary_temp_id", // required với việc thực hiện giao dịch kho từ phiếu tạm
"action": "convert", // Convert: chuyển đổi tồn sản phẩm
"location", //location id. Required with action convert
"product_out_id", // ID sản phẩm xuất. Required with action convert
"units_out", // Số lượng sản phẩm xuất. Required with action convert
"product_in":'[{"product_id":[:product_id],"units":[:units]},...]' // String JSON, mảng id, số lượng sản phẩm nhập. Required with action convert
}
Response
Status Codes
- 406: Not Acceptable
- 415: Unsupported Media Type
- 201: Created
- 400: Client Error
- 422: Unprocessable Entity
Headers
| Header | Value |
|---|---|
| Content-Type | application/vnd.stock.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
//SUCCESS
{"result": "SUCCESS"}
//ERROR
- Giao dịch từ kho tạm:
+ STOCKDIARY_TEMP_INVALID: Giá trị stockdiary_temp_id không hợp lệ.
+ NOT_CURRENT_ACCESS_TOKEN: Chưa set truy cập phiếu tạm cho access_token hiện tại.
+ REQUIRED_REASON: Chưa chọn "lý do"
+ NOT_PERMISSION_SELECT_THIS_REASON: Không có quyền với "lý do" này.
+ REQUIRED_LOCATION_ID: Chưa chọn kho.
+ NOT_PERMISSION_SELECT_THIS_LOCATION: Không có quyền với kho này.
+ REQUIRED_LOCATION_TRANSFER: Chưa chọn kho giao nhau.
+ NOT_FOUND_LOCATION_TRANSFER: Không tìm thấy kho giao nhau.
+ LOCATION_TRANSFER_DIFFERENT_LOCATION: Kho giao nhau phải khác kho chính.
+ REQUIRED_SUPPLIER_ID: Chưa chọn NCC.
+ NOT_FOUND_SUPPLIER: Không tìm thấy NCC.
+ STOCKDIARY_TEMP_NOT_ITEM: Phiếu tạm chưa có SP nào.
+ REQUEST_UNITS_GREATER_EQUAL_0: Số lượng phải lớn hơn hoặc bằng 0.
+ REQUEST_UNITS_GREATER_0: Số lượng phải lớn hơn 0.
+ ERROR: Lỗi khác
- Giao dịch chuyển đổi tồn sản phẩm:
+ NOT_PERMISSION_SELECT_THIS_LOCATION: Không có quyền trên kho này.
+ NOT_FOUND_PRODUCT_OUT: Không tìm thấy sản phẩm xuất.
+ INCORRECT_UNITS_IN: Số lượng nhập không đúng.
+ NOT_FOUND_PRODUCT_IN: Không tìm thấy sản phẩm nhập.
+ INCORRECT_UNITS_CONVERT: Số lượng SP nhập không phù hợp với số lượng SP xuất.
+ ERROR: Lỗi khác.
Stocklevel
Quản lý định mức kho
GET /stocklevel[/:location[/:id]]
Xem danh sách định mức kho: /stocklevel/[:location_id]. - Filter: in_stock=Y (Thuộc kho), product_name (tên SP), reference (mã SP), code (mã vạch), units (Tồn), min (tồn min), max (tồn max), position (vị trí) - Order: product_name, reference, units, min, max, position
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| reference | YES | ||
| min | NO | ||
| max | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.stock.v1+json
application/hal+json
application/json |
| Authorization | HTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details) |
Response
Status Codes
- 406: Not Acceptable
- 415: Unsupported Media Type
- 200: OK
- 401: Unauthorized
- 403: Forbidden
Headers
| Header | Value |
|---|---|
| Content-Type | application/vnd.stock.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
{
"_embedded": {
"stocklevel": [
{
"product_id",
"reference",
"product_name",
"units",
"min",
"max",
"position"
},
...
]
}
}
PUT /stocklevel[/:location[/:id]]
Sửa định mức kho: /stocklevel/[:location_id]
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| reference | YES | ||
| min | NO | ||
| max | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.stock.v1+json
application/hal+json
application/json |
| Content-Type | application/vnd.stock.v1+json
application/json |
| Authorization | HTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details) |
Body
[
{
"reference", //Mã SP. Required
"min",
"max",
},...
]
Response
Status Codes
- 406: Not Acceptable
- 415: Unsupported Media Type
- 200: OK
- 400: Client Error
- 422: Unprocessable Entity
- 401: Unauthorized
- 403: Forbidden
Headers
| Header | Value |
|---|---|
| Content-Type | application/vnd.stock.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
//SUCCESS
{"result": "SUCCESS"}
//ERROR
- NOT_FOUND_LOCATION: Không tìm thấy kho
- DUPLICATE_PRODUCT: Trùng mã SP (kèm danh sách mã trùng)
- NOT_FOUND_PRODUCT: Không tìm thấy sản phẩm (kèm danh sách mã không tìm thấy)
- ERROR: Lỗi khác