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ênKiểuBắt buộcMô tả
product_idintCóID sản phẩm
price_policy_idintCó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ẽ:

  1. Tạo mới: Nếu giá cho biến thể đó chưa có.
  2. Cập nhật: Nếu giá đã tồn tại và có thay đổi.
  3. Xóa: Nếu price_by_uom trống, bản ghi giá sẽ bị xóa.
  4. 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 items cũ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ườngKiểuBắt buộcMô tả
company_idintCóID công ty
creator_idintCóID người thao tác
itemsarrayCóDanh sách giá biến thể. Tối đa 1000 items.

Cấu trúc Item trong mảng items

TrườngKiểuBắt buộcMô tả
product_idintCóID sản phẩm (phải trùng với product_id trên URL)
product_variant_idintCóID biến thể
price_by_uomarrayCóMảng giá theo đơn vị tính (xem Object Schema). Nếu rỗng [], giá cũ sẽ bị xóa.
price_policy_idintKhôngKhông sử dụng (chính sách giá lấy theo URL)
priceintKhô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ỗiMô tả
error_items_property_is_requiredTrường items không được để trống
error_items_count_max_1000Số lượng items tối đa là 1000
error_company_id_requiredID công ty không được để trống
error_company_id_notfoundID công ty không tìm thấy
error_user1_id_requiredID người tạo không được để trống
error_user_id_notfoundID 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_foundSả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_availableKhông có quyền product.manage (HTTP 403)

On this page