Categories
GET /product-cats
Lấy danh sách nhóm sản phẩm. Quyền: product.category.view_list
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| parentid | NO | ||
| name | NO | ||
| catorder | NO | ||
| action | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.products.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.products.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
{
"_embedded": {
"categories": [
{
"id",
"parentid",
"name",
"catorder"
},
...
]
}
}
POST /product-cats
Thêm nhóm sản phẩm. Quyền product.category.add
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| parentid | NO | ||
| name | NO | ||
| catorder | NO | ||
| action | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.products.v1+json
application/hal+json
application/json |
| Content-Type | application/vnd.products.v1+json
application/json |
| Authorization | HTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details) |
Body
{
"parentid",
"name", //required
"catorder",
}
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.products.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
{"result": "SUCCESS | ERROR"}
PUT /product-cats[/:cat_id]
Sửa nhóm sản phẩm. Quyền: product.category.edit_info, product.category.edit_parent
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| parentid | NO | ||
| name | NO | ||
| catorder | NO | ||
| action | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.products.v1+json
application/hal+json
application/json |
| Content-Type | application/vnd.products.v1+json
application/json |
| Authorization | HTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details) |
Body
{
"action": "editInfo | editParent"
"parentid", //Với action editParent
"name", //Với action editInfo. Required
"catorder", //Với action editInfo
}
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.products.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
{result: "SUCCESS | ERROR"}
Lỗi: NOT_FOUND_CATEGORY, ERROR
DELETE /product-cats[/:cat_id]
Xóa nhóm sản phẩm. Mã lỗi: NOT_FOUND_CATEGORY, HAS_CATEGORY_CHILDREN, ERROR. Quyền: product.category.delete
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| parentid | NO | ||
| name | NO | ||
| catorder | NO | ||
| action | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.products.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.products.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Documents
GET /product-docs
- Lấy danh sách sản phẩm chứng từ: /product-docs
- Param: reference, product_name, has_doc, order, dir
- Order: reference, product_name, [business_uuid]
- Lấy label các cột động: /product-docs?get_column_label=Y
- Lấy danh sách chi tiết sản phẩm chứng từ: /product-docs?view_detail=Y
- Param: business (business_uuid. Required), reference, product_name, has_doc, product_doc_code, product_doc_name, order, dir
- Order: reference, product_name, has_doc, product_doc_code, product_doc_name, uom, convert_rate, created_at, stock_units, tax_rate
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| product_id | NO | ||
| business_uuid | NO | ||
| has_doc | NO | ||
| product_doc_code | NO | ||
| product_doc_name | NO | ||
| tax_rate | NO | ||
| stock_units | NO | ||
| uom | NO | ||
| convert_rate | Tỉ lệ chuyển đổi so với sản phẩm POS. VD SP POS apollo (24 chai), SP chứng từ apollo (1 chai) => tỉ lệ: 1:24 (luu y viet lien luon co dấu ":") |
NO | |
| action | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.products.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.products.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
- Danh sách SP chứng từ:
{
"_embedded": {
"documents": [
{
"id", //product_id
"reference",
"product_name",
[business_uuid]: "Y|N|null"
...
},
...
]
}
}
- Label cột động:
{
"_embedded": {
"documents": [
{
"key": [business_uuid],
"value": [business_name]
}
...
]
}
- Danh sách chi tiết SP chứng từ:
{
"_embedded": {
"documents": [
{
"id",//product_id
"reference",
"product_name",
"has_doc": "Y|N|null",
"product_doc_code", // Mã SP chứng từ
"product_doc_name", // Tên SP chứng từ
"uom", // Tên đơn vị tính
"convert_rate", // Tỉ lệ chuyển đổi
"stock_units", //Tồn kho chứng từ
"tax_rate", // Thuế suất (%)
"created_at",
},
...
]
},
}
POST /product-docs
Thêm mới chứng từ sản phẩm doanh nghiệp
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| product_id | NO | ||
| business_uuid | NO | ||
| has_doc | NO | ||
| product_doc_code | NO | ||
| product_doc_name | NO | ||
| tax_rate | NO | ||
| stock_units | NO | ||
| uom | NO | ||
| convert_rate | Tỉ lệ chuyển đổi so với sản phẩm POS. VD SP POS apollo (24 chai), SP chứng từ apollo (1 chai) => tỉ lệ: 1:24 (luu y viet lien luon co dấu ":") |
NO | |
| action | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.products.v1+json
application/hal+json
application/json |
| Content-Type | application/vnd.products.v1+json
application/json |
| Authorization | HTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details) |
Body
{
"product_id", //required
"business_uuid", //required
"has_doc":"Y|N", //required
"uom", //Tên đơn vị tính
"convert_rate":"[số nguyên]:[số nguyên]", //required. Tỉ lệ chuyển đổi (Tỉ lệ chuyển đổi so với sản phẩm POS. VD SP POS apollo (thùng 24 chai), SP chứng từ apollo (1 chai) => tỉ lệ: 1:24 (luu y viet lien luon co dấu ":"))
"product_doc_code",
"product_doc_name",
"tax_rate" //Thuế suất (%). Có thể null (ghi chú: Nếu giá trị rỗng sẽ lấy theo thuế suất chung trong cấu hình HDDT)
}
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.products.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
{"result": "SUCCESS|ERROR"}
Mã Lỗi:
- EXIST_PRODUCT_DOC_BUSINESS: Đã tồn tại chứng từ sản phẩm doanh nghiệp
- NOT_FOUND_PRODUCT: Không tìm thấy product
- NOT_FOUND_BUSINESS: Không tìm thấy business
- ERROR: Lỗi khác
PUT /product-docs
Import tồn chứng từ. Quyền product.doc.import_stock
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| product_id | NO | ||
| business_uuid | NO | ||
| has_doc | NO | ||
| product_doc_code | NO | ||
| product_doc_name | NO | ||
| tax_rate | NO | ||
| stock_units | NO | ||
| uom | NO | ||
| convert_rate | Tỉ lệ chuyển đổi so với sản phẩm POS. VD SP POS apollo (24 chai), SP chứng từ apollo (1 chai) => tỉ lệ: 1:24 (luu y viet lien luon co dấu ":") |
NO | |
| action | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.products.v1+json
application/hal+json
application/json |
| Content-Type | application/vnd.products.v1+json
application/json |
Body
[
{
"business_uuid", //Phải giống với các item khác
"product_doc_code", //Mã chứng từ
"stock_units" //Tồn chung từ
},
...
]
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.products.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
{result: "SUCCESS | ERROR"}
Các mã lỗi:
- DUPLICATE_PRODUCT: trùng product_doc_code
- ERROR: Lỗi khác
GET /product-docs[/:document_id]
Lấy thông tin chi tiết chứng từ của sản phẩm: /product-docs/[product_id]
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| product_id | NO | ||
| business_uuid | NO | ||
| has_doc | NO | ||
| product_doc_code | NO | ||
| product_doc_name | NO | ||
| tax_rate | NO | ||
| stock_units | NO | ||
| uom | NO | ||
| convert_rate | Tỉ lệ chuyển đổi so với sản phẩm POS. VD SP POS apollo (24 chai), SP chứng từ apollo (1 chai) => tỉ lệ: 1:24 (luu y viet lien luon co dấu ":") |
NO | |
| action | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.products.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.products.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
{
"info": {
"reference",
"name"
},
"doc": [
{
"uuid", // uuid document
"business_uuid",
"business_name",
"has_doc": "Y|N",
"uom",
"convert_rate",
"product_doc_code",
"product_doc_name",
"stock_units",
"created_at",
},
...
]
}
PUT /product-docs[/:document_id]
- Chỉnh sửa chứng từ sản phẩm doanh nghiệp: /product-docs/[doc_uuid]. Quyền: product.doc.edit
- Đồng bộ tồn từ hệ thống VNPT HKD: /product-docs/[eb_uuid]. Quyền: product.doc.sync_stock
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| product_id | NO | ||
| business_uuid | NO | ||
| has_doc | NO | ||
| product_doc_code | NO | ||
| product_doc_name | NO | ||
| tax_rate | NO | ||
| stock_units | NO | ||
| uom | NO | ||
| convert_rate | Tỉ lệ chuyển đổi so với sản phẩm POS. VD SP POS apollo (24 chai), SP chứng từ apollo (1 chai) => tỉ lệ: 1:24 (luu y viet lien luon co dấu ":") |
NO | |
| action | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.products.v1+json
application/hal+json
application/json |
| Content-Type | application/vnd.products.v1+json
application/json |
| Authorization | HTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details) |
Body
- Chỉnh sửa chứng từ sản phẩm doanh nghiệp
{
"action": "editDoc"
"has_doc": "Y|N", //required
"product_doc_code",
"product_doc_name",
"uom",
"convert_rate",
"tax_rate"
}
- Đồng bộ tồn
{
"action": "syncStock"
}
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.products.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
{"result": "SUCCESS|ERROR"}
Mã Lỗi:
- Chỉnh sửa chứng từ sản phẩm doanh nghiệp:
+ NOT_FOUND_DOC: Không tìm thấy chứng từ
+ ERROR: Lỗi khác
- Đồng bộ tồn:
+ NOT_FOUND_EB: Không tìm thấy dịch vụ HDDT
+ NOT_EB_VNPT_HOUSEHOLD: Dịch vụ không phải là VNPT HKD
+ NOT_EB_REQUIRED_INFO: Thiếu thông tin đăng nhập dịch vụ
+ ERROR_LOGIN_EB: Lỗi đăng nhập dịch vụ (sai thông tin đăng nhập)
+ NOT_STOCK_ITEM: Không có tồn sản phẩm nào trong hệ thống dịch vụ
+ ERROR: Lỗi khác
DELETE /product-docs[/:document_id]
Xóa chứng từ sản phẩm doanh nghiệp: /product-docs/[doc_uuid]
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| product_id | NO | ||
| business_uuid | NO | ||
| has_doc | NO | ||
| product_doc_code | NO | ||
| product_doc_name | NO | ||
| tax_rate | NO | ||
| stock_units | NO | ||
| uom | NO | ||
| convert_rate | Tỉ lệ chuyển đổi so với sản phẩm POS. VD SP POS apollo (24 chai), SP chứng từ apollo (1 chai) => tỉ lệ: 1:24 (luu y viet lien luon co dấu ":") |
NO | |
| action | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.products.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.products.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Products
Quản lý danh sách sản phẩm
GET /products[/:type/:product_id]
Lấy danh sách sản phẩm:
- Để lấy danh sách theo giá gói, truyền param: with=price;
- Truyền param active=Y để lọc theo sản phẩm active;
+ Params: name, code, reference, category (//id), pricebuy, pricesell, order (//sắp xếp: name, reference, pricesell, pricebuy, category), dir (//thứ tự sắp xếp: asc, desc)
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| action | NO | ||
| reference | NO | ||
| code | NO | ||
| name | NO | ||
| category | NO | ||
| pricesell | NO | ||
| pricebuy | NO | ||
| uom | NO | ||
| supplier | NO | ||
| active | NO | ||
| customer | NO | ||
| customer_cat | NO | ||
| units | NO | ||
| units_label | NO | ||
| price | NO | ||
| price_id | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.products.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.products.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
{
"_embedded": {
"products": [
{
"id",
"reference",
"name",
"pricesell",
"pricebuy",
"category_name",
"units", //Chỉ hiển thị khi xem theo giá gói
"units_label", //Chỉ hiển thị khi xem theo giá gói
"isactive"
},
...
]
}
}
POST /products[/:type/:product_id]
Tạo sản phẩm
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| action | NO | ||
| reference | NO | ||
| code | NO | ||
| name | NO | ||
| category | NO | ||
| pricesell | NO | ||
| pricebuy | NO | ||
| uom | NO | ||
| supplier | NO | ||
| active | NO | ||
| customer | NO | ||
| customer_cat | NO | ||
| units | NO | ||
| units_label | NO | ||
| price | NO | ||
| price_id | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.products.v1+json
application/hal+json
application/json |
| Content-Type | application/vnd.products.v1+json
application/json |
| Authorization | HTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details) |
Body
{
"reference",
"code",
"name",
"category",
"pricesell",
"pricebuy",
"uom",
"supplier",
"active": "Y|N"
}
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.products.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
//SUCCESS
{
"result": "SUCCESS",
"product_id"
}
//ERROR
- EXIT_REFERENCE
- EXIT_CODE
- EXIT_NAME
- NOT_FOUND_UOM
- NOT_FOUND_SUPPLIER
- ERROR
GET /products[/:type/:product_id]
Lấy thông tin sản phẩm: - /product/[product_id]: Lấy thông tin chi tiết sản phẩm. - /prices/[product_id]: Lấy danh sách giá gói mặc định của sản phẩm, truyền thêm param customer_id nếu lấy theo KH; - /stocks/[product_id]: Lấy danh sách các thông tin về các kho hàng của sản phẩm (tồn, min, max, tồn lệch, vị trí,...); - /label/[giatribatki]?form_label_num=num&product[1][id]=id&product[1][units]=units&product[1][label_num]=label_num&...: Lấy danh sách dữ liệu in tem sản phẩm
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| action | NO | ||
| reference | NO | ||
| code | NO | ||
| name | NO | ||
| category | NO | ||
| pricesell | NO | ||
| pricebuy | NO | ||
| uom | NO | ||
| supplier | NO | ||
| active | NO | ||
| customer | NO | ||
| customer_cat | NO | ||
| units | NO | ||
| units_label | NO | ||
| price | NO | ||
| price_id | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.products.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.products.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
//Return ERROR
{
"result": "ERROR",
"code": "NOT_FOUND_PRODUCT"
}
//Return SUCCESS
//Thông tin chi tiết sản phẩm
{
"attributes": {
"reference", //Mã SP
"code", //Mã vạch
"name",
"category_id",
"category_name",
"pricebuy", //chuỗi 10 ký tự * khi không có quyền xem giá mua
"pricesell",
"uom_id", //id ĐVT
"uom_name",
"supplier_id", //Id NCC
"supplier_name",
"isactive": "Y|N"
},
"prices": [ //Danh sach gia goi
{
"customer_id",
"customer_name",
"customer_cat_id",
"customer_cat_name",
"price",
"units",
"units_label",
"total_price"
},
...
],
"label": [ //Danh sách nhãn phụ
{
"uuid", //label uuid
"label", //Tên nhãn phụ
"image", //Hình ảnh
"position", //Vị trí
"is_active":"Y|N", //Trạng thái kích hoạt
"is_default": "Y|N",
"created_at" //Ngày tạo
},
...
],
"doc": [ //Danh sách chứng từ
{
"uuid", // uuid document
"business_uuid",
"business_name",
"has_doc": "Y|N",
"product_doc_code",
"product_doc_name",
"created_at",
},
...
]
}
//Danh sách giá gói
{
"result": "SUCCESS",
"prices": [
{
"pricesell",
"units",
"units_label"
}
],
}
//Danh sách thông tin kho hàng
{
"result": "SUCCESS",
"stocks": [
{
"location_name", //Tên kho
"units", // Tồn kho
"stock_min", //Tồn min
"stock_max", //Tồn max
"position", //Vị trí
"deviation", //Tồn lệch
"deviation_flag_type", //Loại cờ set tồn lệch
"deviation_person", // Người cập nhật tồn lệch
"deviation_update_at" // Thời gian cập nhật tồn lệch
},
....
]
}
//Danh sách tem
{
"result": "SUCCESS",
"label_product": [
{
"reference",
"code",
"code_label",
"name",
"price"
},
...
]
}
//Lỗi có thể xảy ra
- REQUIRED_PARAM_PRODUCT: yêu cầu param product
- REQUIRED_PARAM_FORM_LABEL_NUM: Yêu cầu param form_label_num
- INCORRECT_PRODUCT: param product không đúng cấu trúc
- INCORRECT_FORM_LABEL_NUM: giá trị form_label_num không phù hợp: 0
PUT /products[/:type/:product_id]
Chỉnh sửa thông tin sản phẩm
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| action | NO | ||
| reference | NO | ||
| code | NO | ||
| name | NO | ||
| category | NO | ||
| pricesell | NO | ||
| pricebuy | NO | ||
| uom | NO | ||
| supplier | NO | ||
| active | NO | ||
| customer | NO | ||
| customer_cat | NO | ||
| units | NO | ||
| units_label | NO | ||
| price | NO | ||
| price_id | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.products.v1+json
application/hal+json
application/json |
| Content-Type | application/vnd.products.v1+json
application/json |
| Authorization | HTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details) |
Body
{
"action": "editCode | editName | editCategory | editPricesell | editPricebuy | editUom | editSupplier | editActive | addPrice | editPrice | deletePrice",
"reference", //với action editCode
"code", //với action editCode
"name", //với action editName
"category", //với action editCategory
"pricesell", //với action editPricesell
"pricebuy", //với action editPricebuy
"uom", //với action editUom
"supplier", //với action editSupplier
"active", //với action editActive
"customer", //với action "addPrice | editPrice". Not required
"customer_cat", //với action "addPrice | editPrice". Not required
"units", //với action "addPrice | editPrice"
"units_label", //với action "addPrice | editPrice". Not required
"price", //với action "addPrice | editPrice"
"price_id" //với action "editPrice | deletePrice"
}
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.products.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
//SUCCESS
{
"result":"SUCCESS",
"price" // Thông tin giá gói. Chỉ hiển thị với action addPrice, editPrice
}
//ERROR
- Lỗi chung: ERROR
- Action editCode: EXIT_REFERENCE, EXIT_CODE
- Action editName: EXIT_NAME
- Action editUom: NOT_FOUND_UOM
- Action editSupplier: NOT_FOUND_SUPPLIER
- Action addPrice, editPrice:
+ NOT_FOUND_CUSTOMER
+ NOT_FOUND_CUSTOMER_CAT,
+ NOT_UNIT_1_WITH_NOT_CUSTOMER (không được setup giá với gói SL 1 khi không chọn KH và nhóm KH)
+ EXIT_PRICE: gói SL với đối tượng chọn đã tồn tại
- NOT_FOUND_PRICE_ID: Price_id không tìm thấy. Với action editPrice, deletePrice
DELETE /products[/:type/:product_id]
Xóa sản phẩm: DELETE /products/product/[product_id]. Lỗi có thể xảy ra: NOT_FOUND_PRODUCT
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| action | NO | ||
| reference | NO | ||
| code | NO | ||
| name | NO | ||
| category | NO | ||
| pricesell | NO | ||
| pricebuy | NO | ||
| uom | NO | ||
| supplier | NO | ||
| active | NO | ||
| customer | NO | ||
| customer_cat | NO | ||
| units | NO | ||
| units_label | NO | ||
| price | NO | ||
| price_id | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.products.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.products.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Replace
GET /product-replace
Lấy danh sách sản phẩm group replace, convert.
- Filter: product_name (tên SP), reference (Mã SP), has_replace (có nhóm thay thế), has_convert (có nhóm chuyển đổi)
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| action | NO | ||
| name | NO | ||
| min | NO | ||
| max | NO | ||
| product_id | NO | ||
| allow_propose | NO | ||
| ratio | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.products.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.products.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
{
"_embedded": {
"replace": [
{
"id", //ID tạm, là id replace khi SP có group replace và là id product khi SP chưa có group replace
"replace_id",
"replace_name",
"min", // Tồn min group replace
"max", // Tồn max group replace
"convert": String JSON "[
{
"id", //ID group convert
"name", // Tên group convert
"products": [
{
"id", //ID product
"reference", //Mã SP
"name", //Tên SP
"ratio", //Số lượng tỉ lệ
"is_default": "Y|N", // Là SP mặc đỉnh của group replace
"allow_propose": "N|Y" // Cho phép đặt hàng hay không
},
....
]
},
....
]",
},
]
}
}
POST /product-replace
Khởi tạo group replace, group convert
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| action | NO | ||
| name | NO | ||
| min | NO | ||
| max | NO | ||
| product_id | NO | ||
| allow_propose | NO | ||
| ratio | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.products.v1+json
application/hal+json
application/json |
| Content-Type | application/vnd.products.v1+json
application/json |
Body
{
"action": "createReplace|createConvert",
"name", //Tên group.
"min", // Tồn min group. Chỉ với action createReplace
"max", // Tồn max group. Chỉ với action createReplace
"product_id" //Sản phẩm để khởi tạo group. Required
}
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.products.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
{"result":"SUCCESS|ERROR"}
//Các lỗi có thể xảy ra:
- NOT_FOUND_PRODUCT: Không tìm thấy SP với product_id
- EXISTED_REPLACE_PRODUCT: Sản phẩm đã có group replace
- EXISTED_CONVERT_PRODUCT: Sản phẩm đã có group convert
- ERROR: Lỗi khác
GET /product-replace[/:replace_id]
- Lấy danh sách sản phẩm convert từ product_id (áp dụng khi chuyển đổi SP): /product-replace/[:product_id]?get_convert=Y&location=[:location]
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| action | NO | ||
| name | NO | ||
| min | NO | ||
| max | NO | ||
| product_id | NO | ||
| allow_propose | NO | ||
| ratio | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.products.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.products.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
//SUCCESS
{
"result": "SUCCESS",
"products": [
{
"id", // id product
"reference", // Mã SP
"name", // Tên SP
"ratio": [units_product_out, units_product_in], // Tỉ lệ chuyển đổi SP. VD: Xuất xăng cal 30L sang cal 1L thì tỉ lệ 1:30, ratio = [1,30]
"units", // Tồn theo kho
"location_name" // Tên kho
},
}
Lỗi có thể xảy ra:
- REQUIRED_PARAM_LOCATION: Yêu cầu cần có param location
- NOT_FOUND_PRODUCT: Id sản phẩm không đúng
- NOT_FOUND_CONVERT: Không tìm thấy danh sách sản phẩm chuyển đổi
PUT /product-replace[/:replace_id]
- Chỉnh thông tin group replace (editReplace): /product-replace/[:replace_id]
- Chỉnh thông tin group convert (editConvert): /product-replace/[:convert_id]
- Thêm sản phẩm vào group replace (addProductReplace): /product-replace/[:replace_id]
- Thêm sản phẩm vào group convert (addProductConvert): /product-replace/[:convert_id]
- Sửa thông tin sản phẩm (editProduct): /product-replace/[:product_id]
- Xóa sản phẩm khỏi group replace (deleteProductReplace): /product-replace/[:replace_id]
- Xóa sản phẩm khỏi group convert (deleteProductConvert): /product-replace/[:convert_id]
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| action | NO | ||
| name | NO | ||
| min | NO | ||
| max | NO | ||
| product_id | NO | ||
| allow_propose | NO | ||
| ratio | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.products.v1+json
application/hal+json
application/json |
| Content-Type | application/vnd.products.v1+json
application/json |
Body
{
"action": "editReplace | editConvert | addProductReplace | addProductConvert | editProduct | deleteProductReplace | deleteProductConvert",
"name", //tên group. Với action editReplace, editConvert
"min", // Với action editReplace
"max", // Với action editReplace
"product_id", với action editReplace, addProductReplace, addProductConvert, deleteProductReplace, deleteProductConvert
"allow_propose", // Với action editProduct
"ratio" // Với action editProduct
}
Response
Status Codes
- 406: Not Acceptable
- 415: Unsupported Media Type
- 200: OK
- 404: Not Found
- 400: Client Error
- 422: Unprocessable Entity
Headers
| Header | Value |
|---|---|
| Content-Type | application/vnd.products.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
//SUCCESS
{"result": "SUCCESS"}
//ERROR
- editReplace
+ NOT_FOUND_REPLACE_GROUP: Không tìm thấy group replace
+ NOT_FOUND_PRODUCT: Không tìm thấy product
+ PRODUCT_NOT_IN_REPLACE_GROUP: Product không ở trong group replace
+ ERROR: Lỗi khác
- editConvert:
+ NOT_FOUND_CONVERT_GROUP: Không tìm thấy group convert
+ ERROR: Lỗi khác
- addProductReplace:
+ NOT_FOUND_REPLACE_GROUP: Không tìm thấy group replace
+ NOT_FOUND_PRODUCT: Không tìm thấy product
+ PRODUCT_IN_REPLACE_GROUP_OTHER: Sản phẩm đang ở group replace khác
+ ERROR: Lỗi khác
- addProductConvert:
+ NOT_FOUND_CONVERT_GROUP: Không tìm thấy group convert
+ NOT_FOUND_PRODUCT: Không tìm thấy product
+ PRODUCT_IN_CONVERT_GROUP_OTHER: Sản phẩm đang ở group convert khác
+ PRODUCT_IN_REPLACE_GROUP_OTHER: Sản phẩm đang ở group replace khác
+ ERROR: Lỗi khác
- editProduct:
+ NOT_FOUND_PRODUCT: Không tìm thấy SP
+ ERROR: Lỗi khác
- deleteProductReplace:
+ NOT_FOUND_REPLACE_GROUP: Không tìm thấy group replace
+ NOT_FOUND_PRODUCT: Không tìm thấy product
+ PRODUCT_NOT_IN_REPLACE_GROUP: Sản phẩm không nằm trong group replace
+ ERROR: Lỗi khác
- deleteProductConvert:
+ NOT_FOUND_CONVERT_GROUP: Không tìm thấy group convert
+ NOT_FOUND_PRODUCT: Không tìm thấy product
+ PRODUCT_NOT_IN_CONVERT_GROUP: Sản phẩm không nằm trong group convert
+ ERROR: Lỗi khác
SecondaryLabels
GET /product-secondary-labels
Lấy danh sách sản phẩm nhãn phụ - Param: code, reference, product_name, has_label=Y|N - Order: reference, product_name
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| product_id | NO | ||
| label | NO | ||
| image | NO | ||
| position | NO | ||
| is_active | NO | ||
| is_default | NO | ||
| action | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.products.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.products.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
{
"_embedded": {
"secondary_labels": [
{
"id", //product id
"reference",
"product_name",
"label_image", //nhãn phụ
},
...
]
}
}
POST /product-secondary-labels
Thêm nhãn phụ cho sản phẩm
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| product_id | NO | ||
| label | NO | ||
| image | NO | ||
| position | NO | ||
| is_active | NO | ||
| is_default | NO | ||
| action | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.products.v1+json
application/hal+json
application/json |
| Content-Type | application/vnd.products.v1+json
application/json |
| Authorization | HTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details) |
Body
{
"product_id", //Required
"label", //Tên nhãn phụ
"image", Hình ảnh, kiểu base64. Required
"position", //Vị trí
"is_active": "Y|N", //Reuiqred
"is_default": "Y|N" //Required
}
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.products.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
{result: "SUCCESS|ERROR"}
Mã lỗi:
- DEFAULT_MUST_ACTIVE: is_default = Y thì is_active phải Y
- NOT_FOUND_PRODUCT: Không tìm thấy product
- ERROR_UPLOAD_IMAGE: Lỗi upload hình ảnh
- ERROR: Lỗi khác
GET /product-secondary-labels[/:label_id]
Lấy thông tin chi tiết nhãn phụ sản phẩm: /product-secondary-labels/[product_id]
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| product_id | NO | ||
| label | NO | ||
| image | NO | ||
| position | NO | ||
| is_active | NO | ||
| is_default | NO | ||
| action | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.products.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.products.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
{
"info": {
"reference", //Mã SP
"name" //Tên SP
},
"label": [
{
"uuid", //label uuid
"label", //Tên nhãn phụ
"image", //Hình ảnh
"position", //Vị trí
"is_active":"Y|N", //Trạng thái kích hoạt
"is_default": "Y|N",
"created_at" //Ngày tạo
},
...
]
}
Mã lỗi:
- NOT_FOUND_PRODUCT: Không tìm thấy nhãn phụ
PUT /product-secondary-labels[/:label_id]
Chỉnh sửa nhãn phụ: /product-secondary-labels/[label_uuid]
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| product_id | NO | ||
| label | NO | ||
| image | NO | ||
| position | NO | ||
| is_active | NO | ||
| is_default | NO | ||
| action | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.products.v1+json
application/hal+json
application/json |
| Content-Type | application/vnd.products.v1+json
application/json |
| Authorization | HTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details) |
Body
{
"action": "editInfo | editImage"
"label", //với action editInfo
"image": "", /với action editImage. Reuiqred
"position": "", //với action editInfo
"is_active": "", //với action editInfo. Required
"is_default": "", //với action editInfo. Required
}
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.products.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
{result: "SUCCESS|ERROR"}
Các mã lỗi:
- NOT_FOUND_LABEL: Không tìm thấy nhãn phụ
- DEFAULT_MUST_ACTIVE: Nhãn mặc định phải active. Với action editInfo
- ERROR_UPLOAD_IMAGE: Lỗi upload image. Với action editImage
- INVALID_IMAGE: Hình ảnh không đúng. Với action editImage
- ERROR: Lỗi khác
DELETE /product-secondary-labels[/:label_id]
Xóa nhãn phụ: /product-secondary-labels/[label_uuid]
Fields
| Field | Type | Description | Required |
|---|---|---|---|
| product_id | NO | ||
| label | NO | ||
| image | NO | ||
| position | NO | ||
| is_active | NO | ||
| is_default | NO | ||
| action | NO |
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.products.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.products.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Uom
GET /product-uom[/:uom_id]
Lấy danh sách đơn vị tính
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.products.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.products.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
{
"_embedded": {
"uom": [
{
"id",
"name",
},
...
]
}
}
UpdatePrices
Cập nhật giá sản phẩm
GET /products-update-prices[/:product_id]
Lấy thông tin chi tiết giá của một hoặc nhiều sản phẩm dựa vào mã sản phẩm (reference).
Quyền: products.update_prices
Tham số (query parameter): reference (bắt buộc) - chuỗi các mã sản phẩm, cách nhau bởi dấu phẩy. Ví dụ: /product-update-prices?reference=SP001,SP002
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.products.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.products.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
{
"products_prices": [
{
"product_id",
"reference",
"name",
"pricebuy",
"pricesell",
"group_convert",
"prices": [
{
"price_id",
"customer_id",
"customer_name",
"category_id",
"category_name",
"units",
"units_label",
"price",
"total_price"
},
...
]
},
...
]
}
Mã lỗi có thể xảy ra:
- 403 Forbidden: Không có quyền `products.update_prices`.
- 422 Unprocessable Entity:
+ Thiếu tham số `reference`.
+ Một hoặc nhiều `reference` không tồn tại trong hệ thống.
PUT /products-update-prices[/:product_id]
Cập nhật hàng loạt giá mua, giá bán và các giá gói của sản phẩm.
Quyền: products.update_prices
Request
Headers
| Header | Value |
|---|---|
| Accept | application/vnd.products.v1+json
application/hal+json
application/json |
| Content-Type | application/vnd.products.v1+json
application/json |
Body
{
"[product_id_1]": {
"pricesell": [new_pricesell],
"pricebuy": [new_pricebuy],
"prices": {
"[price_id_1]": [new_price],
"[price_id_2]": [new_price]
}
},
"[product_id_2]": {
"pricesell": [new_pricesell]
}
}
Response
Status Codes
- 406: Not Acceptable
- 415: Unsupported Media Type
- 200: OK
Headers
| Header | Value |
|---|---|
| Content-Type | application/vnd.products.v1+json
application/hal+json
application/json |
| Allow | Comma-separated list of all HTTP methods allowed |
Body
// Thành công
{"result": "SUCCESS"}
// Thất bại
{"result": "ERROR", "data_error": { ... }}