Quản lý nhóm sản phẩmGiá biến thể
Cập nhật giá theo lô
Cập nhật/Tạo mới giá cho các biến thể của một sản phẩm thuộc một chính sách giá cụ thể.
Endpoint
PUT /v1/productvariantprices/product/{product_id}/policy/{price_policy_id}
Quyền:
product.manage
Path Parameters
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
product_id | int | Có | ID sản phẩm |
price_policy_id | int | Có | ID chính sách giá |
Request Body
Gửi danh sách các biến thể và giá tương ứng của chúng. Hệ thống sẽ:
- Tạo mới: Nếu giá cho biến thể đó chưa có.
- Cập nhật: Nếu giá đã tồn tại và có thay đổi.
- Xóa: Nếu
price_by_uomtrống, bản ghi giá sẽ bị xóa. - Xóa giá không gửi lên: Mọi giá hiện có của sản phẩm trong chính sách giá này mà không có trong
itemscũng sẽ bị xóa. Vì vậy cần gửi đầy đủ giá của tất cả biến thể muốn giữ lại.
| Trường | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
company_id | int | Có | ID công ty |
creator_id | int | Có | ID người thao tác |
items | array | Có | Danh sách giá biến thể. Tối đa 1000 items. |
Cấu trúc Item trong mảng items
| Trường | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
product_id | int | Có | ID sản phẩm (phải trùng với product_id trên URL) |
product_variant_id | int | Có | ID biến thể |
price_by_uom | array | Có | Mảng giá theo đơn vị tính (xem Object Schema). Nếu rỗng [], giá cũ sẽ bị xóa. |
price_policy_id | int | Không | Không sử dụng (chính sách giá lấy theo URL) |
price | int | Không | (Legacy field, thường không dùng, nên gửi 0) |
Ví dụ JSON
{
"company_id": 1,
"creator_id": 10,
"items": [
{
"product_id": 123,
"product_variant_id": 101,
"price_policy_id": 1,
"price": 0,
"price_by_uom": [
{ "uom_id": 0, "value": 150000, "min_quantity": 0 },
{ "uom_id": 5, "value": 3000000, "min_quantity": 1 }
]
},
{
"product_id": 123,
"product_variant_id": 102,
"price_policy_id": 1,
"price": 0,
"price_by_uom": []
}
]
}Response Schema
HTTP 200 - OK
Trả về danh sách các giá đã được xử lý (Tạo mới/Cập nhật/Không đổi). Các giá bị xóa sẽ không xuất hiện trong danh sách trả về. __count_ignore_changed là số item có giá không thay đổi so với hiện tại.
{
"currentpage": 1,
"limit": 200,
"total": 1,
"items": [
{
"company_id": 1,
"creator_id": 10,
"id": 501,
"product_id": 123,
"product_variant_id": 101,
"price_policy_id": 1,
"price_by_uom": [
{ "uom_id": 0, "value": 150000, "min_quantity": 0 },
{ "uom_id": 5, "value": 3000000, "min_quantity": 1 }
],
"source": 1,
"note": "",
"date_created": 1710748200,
"date_modified": 1710748200
}
],
"__count_ignore_changed": 0
}Error Codes
Lỗi dữ liệu đầu vào (HTTP 422). Trả về mảng các mã lỗi trong trường error:
| Mã lỗi | Mô tả |
|---|---|
error_items_property_is_required | Trường items không được để trống |
error_items_count_max_1000 | Số lượng items tối đa là 1000 |
error_company_id_required | ID công ty không được để trống |
error_company_id_notfound | ID công ty không tìm thấy |
error_user1_id_required | ID người tạo không được để trống |
error_user_id_notfound | ID người tạo không tìm thấy |
error_create_product_variant_price_failed(Variant ID #ID) | Lỗi khi tạo giá cho biến thể cụ thể |
error_update_product_variant_price_failed(Variant ID #ID) | Lỗi khi cập nhật giá cho biến thể cụ thể |
error_delete_product_variant_price_failed(Variant ID #ID) | Lỗi khi xóa giá cho biến thể cụ thể |
error_not_found | Sản phẩm hoặc chính sách giá không tồn tại / không thuộc công ty của bạn (HTTP 404) |
error_role_not_available | Không có quyền product.manage (HTTP 403) |