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": { ... }}