«

PATCH /api/admin/discount-product/{id} - Cập nhật thông tin sản phẩm ưu đãi

Request body: { "discountRate"(): 0, "customerDiscountRate"(): 0, "dealerCommissionRate"(): 0, "marketingPartnerCommissionRate"(): 0, "status"(): "string", "dealer"(): "string", "category"(*): 0, "note": "string" }

    • Given Hệ thống Admin Sabomall tồn tại thông tin category
      categoryIdnameparent
      1Linh kiện điện tử
      2Hệ thống GPSLinh kiện điện tử
      3Phần tử chuyển mạchLinh kiện điện tử
      4Thiết bị nhà bếpĐồ gia dụng
      5Ăng tenLinh kiện điện tử
      6Ăng ten vệ tinhĂng ten
  • Tags: @AUTOMATED, @TNK-6029

    Không thể cập nhật thông tin sản phẩm ưu đãi khi không có quyền supplier:update_product

    • Given Tôi có token của tài khoản có thông tin
      accountpermissionGrouppermissionGroupNamepermission
      suppliersupplier_groupsupplier_grouptrừ quyền supplier:update_product
    • And Tồn tại shop ưu đãi có thông tin
      idcategorydiscountTypestatusdealerdiscountRatecustomerDiscountRatedealerCommissionRatemarketingPartnerCommissionRate
      shop1Linh kiện điện tửSOME_PRODUCTACTIVEadmin15601515
    • And Shop "shop1" có danh sách sản phẩm ưu đãi
      productIdcategorydealerdiscountRatecustomerDiscountRatedealerCommissionRatemarketingPartnerCommissionRatestatus
      product1Hệ thống GPSlanhuong10501010ACTIVE
    • And Request có header là
      X-Tenantm26
    • When Gửi request "PATCH" đến "/admin/discount-product/${product1}" với body
      {
        "discountRate": 20
      }
    • Then Tôi nhận được response có HTTP Status 403
  • Tags: @AUTOMATED, @TNK-6029

    Không thể cập nhật thông tin sản phẩm ưu đãi khi gửi request với token đã hết hạn

    • Given Token đã hết hạn
    • And Tồn tại shop ưu đãi có thông tin
      idcategorydiscountTypestatusdealerdiscountRatecustomerDiscountRatedealerCommissionRatemarketingPartnerCommissionRate
      shop1Linh kiện điện tửSOME_PRODUCTACTIVEadmin15601515
    • And Shop "shop1" có danh sách sản phẩm ưu đãi
      productIdcategorydealerdiscountRatecustomerDiscountRatedealerCommissionRatemarketingPartnerCommissionRatestatus
      product1Hệ thống GPSlanhuong10501010ACTIVE
    • And Request có header là
      X-Tenantm26
    • When Gửi request "PATCH" đến "/admin/discount-product/${product1}" với body
      {
        "discountRate": 20
      }
    • Then Tôi nhận được response có HTTP Status 401
  • Tags: @AUTOMATED, @TNK-6029

    Không thể cập nhật thông tin sản phẩm ưu đãi khi gửi request không có header

    • Given Tồn tại shop ưu đãi có thông tin
      idcategorydiscountTypestatusdealerdiscountRatecustomerDiscountRatedealerCommissionRatemarketingPartnerCommissionRate
      shop1Linh kiện điện tửSOME_PRODUCTACTIVEadmin15601515
    • And Shop "shop1" có danh sách sản phẩm ưu đãi
      productIdcategorydealerdiscountRatecustomerDiscountRatedealerCommissionRatemarketingPartnerCommissionRatestatus
      product1Hệ thống GPSlanhuong10501010ACTIVE
    • And Có token full quyền
    • When Gửi request "PATCH" đến "/admin/discount-product/${product1}" với body
      {
        "discountRate": 20
      }
    • Then Tôi nhận được response có HTTP Status 404
    • And Response có body thỏa mãn giá trị như sau
      {
        "title": "product_not_found"
      }
  • Tags: @AUTOMATED, @TNK-6029

    Không thể cập nhật thông tin sản phẩm ưu đãi khi gửi request với header X-Tenant không hợp lệ

    • Given Tồn tại shop ưu đãi có thông tin
      idcategorydiscountTypestatusdealerdiscountRatecustomerDiscountRatedealerCommissionRatemarketingPartnerCommissionRate
      shop1Linh kiện điện tửSOME_PRODUCTACTIVEadmin15601515
    • And Shop "shop1" có danh sách sản phẩm ưu đãi
      productIdcategorydealerdiscountRatecustomerDiscountRatedealerCommissionRatemarketingPartnerCommissionRatestatus
      product1Hệ thống GPSlanhuong10501010ACTIVE
    • And Có token full quyền
    • And Request có header là
      X-Tenant<tenant>
    • When Gửi request "PATCH" đến "/admin/discount-product/${product1}" với body
      {
        "discountRate": 20
      }
    • Then Tôi nhận được response có HTTP Status 404
    • And Response có body thỏa mãn giá trị như sau
      {
        "title": "product_not_found"
      }

    Examples:

    tenant
    m2
    null
  • Tags: @AUTOMATED, @TNK-6029

    Cập nhật thông tin sản phẩm ưu đãi thành công khi gửi request với thông tin hợp lệ: trạng thái sản phẩm,

    tỷ lệ ưu đãi của sp, ngành hàng, chiết khấu cho các bên, người thương lượng, ghi chú. Có lưu lại log khi thay đổi thông tin sản phẩm

    • Given Có token full quyền
    • And Tồn tại shop ưu đãi có thông tin
      idcategorydiscountTypestatusdealerdiscountRatecustomerDiscountRatedealerCommissionRatemarketingPartnerCommissionRate
      shop1Linh kiện điện tửSOME_PRODUCTACTIVEadmin15601515
    • And Shop "shop1" có danh sách sản phẩm ưu đãi
      productIdcategorydealerdiscountRatecustomerDiscountRatedealerCommissionRatemarketingPartnerCommissionRatestatus
      product1Hệ thống GPSlanhuong10501010ACTIVE
    • And Request có header là
      X-Tenantm26
    • When Gửi request "PATCH" đến "/admin/discount-product/${product1}" với body
      {
        "discountRate": 20,
        "customerDiscountRate": 30.5,
        "dealerCommissionRate": 15.5,
        "marketingPartnerCommissionRate": 15,
        "status": "INACTIVE",
        "dealer": "admin",
        "category": ${3},
        "note": "update qua api"
      }
    • Then Tôi nhận được response có HTTP Status 200
    • And Response có body thỏa mãn giá trị như sau
      {
        "id": "${product1}",
        "discountRate": 20.0,
        "customerDiscountRate": 30.5,
        "dealerCommissionRate": 15.5,
        "marketingPartnerCommissionRate": 15.0,
        "status": "INACTIVE",
        "dealer": "admin",
        "category": ${3},
        "note": "update qua api"
      }
    • When Gửi request "GET" đến "/admin/discount-product/${product1}/logs"
    • Then Response có body thỏa mãn giá trị như sau
      [
        {
        "activity": "DISCOUNT_PRODUCT_UPDATE",
        "change": {
        "valueChange": {
          "changedValues": [
          {
            "key": "status",
            "left": "ACTIVE",
            "right": "INACTIVE"
          },
          {
            "key": "dealer",
            "left": "lanhuong",
            "right": "admin"
          },
          {
            "key": "discountRate",
            "left": 10,
            "right": 20.0
          },
          {
            "key": "customerDiscountRate",
            "left": 50,
            "right": 30.5
          },
          {
            "key": "dealerCommissionRate",
            "left": 10,
            "right": 15.5
          },
          {
            "key": "marketingPartnerCommissionRate",
            "left": 10,
            "right": 15.0
          },
          {
            "key": "otherCommissionRate",
            "left": 30,
            "right": 39
          },
          {
            "key": "category",
            "left": "Hệ thống GPS",
            "right": "Phần tử chuyển mạch"
          }
          ]
        }
      }
      }
      ]
  • Tags: @AUTOMATED, @TNK-6029

    Có thể cập nhật từng thông tin của sản phẩm ưu đãi

    • Given Có token full quyền
    • And Tồn tại shop ưu đãi có thông tin
      idcategorydiscountTypestatusdealerdiscountRatecustomerDiscountRatedealerCommissionRatemarketingPartnerCommissionRate
      shop1Linh kiện điện tửSOME_PRODUCTACTIVEadmin15601515
    • And Shop "shop1" có danh sách sản phẩm ưu đãi
      productIdcategorydealerdiscountRatecustomerDiscountRatedealerCommissionRatemarketingPartnerCommissionRatestatusnote
      product1Hệ thống GPSlanhuong15601515<status><note>
    • And Request có header là
      X-Tenantm26
    • When Gửi request "PATCH" đến "/admin/discount-product/${product1}" với body
      {
      <bodyJson>
      }
    • Then Trả về status code 200
    • And Response có body thỏa mãn giá trị như sau
      {
      <responseJson>
      }
    • When Gửi request "GET" đến "/admin/discount-product/${product1}/logs"
    • Then Response có body thỏa mãn giá trị như sau
      [
      {
      "change" : {"valueChange": {<logResponseJson>}}
      }
      ]

    Examples:

    status note bodyJson responseJson logResponseJson
    ACTIVE note1 "note": "note2" "note": "note2" "changedValues": [{"key": "note","left": "note1","right": "note2"}]
    ACTIVE "note": "note" "note": "note" "changedValues": [{"key": "note","left": "","right": "note"}]
    ACTIVE note "note": "" "note": "" "changedValues": [{ "key": "note", "left": "note", "right": "" }]
    ACTIVE "category": ${3} "category": ${3} "changedValues": [{ "key": "category", "left": "Hệ thống GPS", "right": "Phần tử chuyển mạch"}]
    ACTIVE "dealer": "admin" "dealer": "admin" "changedValues": [{"key": "dealer","left": "lanhuong","right": "admin"}]
    ACTIVE "discountRate": 20 "discountRate": 20.0 "changedValues": [ {"key": "discountRate","left": 15,"right": 20.0}]
    ACTIVE "discountRate": 0 "discountRate": 0.0 "changedValues": [ {"key": "discountRate","left": 15,"right": 0.0}]
    ACTIVE "discountRate": 20.5 "discountRate": 20.5 "changedValues": [ {"key": "discountRate","left": 15,"right": 20.5}]
    ACTIVE "customerDiscountRate": 65 "customerDiscountRate": 65.0, "otherCommissionRate": 5.0 "changedValues": [{"key": "customerDiscountRate","left": 60,"right": 65.0}, {"key": "otherCommissionRate", "left": 10, "right": 5.0}]
    ACTIVE "customerDiscountRate": 65.5 "customerDiscountRate": 65.5, "otherCommissionRate": 4.5 "changedValues": [{"key": "customerDiscountRate","left": 60,"right": 65.5}, {"key": "otherCommissionRate", "left": 10, "right": 4.5}]
    ACTIVE "customerDiscountRate": 0 "customerDiscountRate": 0.0, "otherCommissionRate": 70.0 "changedValues": [{"key": "customerDiscountRate","left": 60,"right": 0.0}, {"key": "otherCommissionRate", "left": 10, "right": 70.0}]
    ACTIVE "dealerCommissionRate": 20 "dealerCommissionRate": 20.0, "otherCommissionRate": 5.0 "changedValues": [{ "key": "dealerCommissionRate", "left": 15, "right": 20.0 }, {"key": "otherCommissionRate","left": 10,"right": 5.0 }]
    ACTIVE "dealerCommissionRate": 20.5 "dealerCommissionRate": 20.5, "otherCommissionRate": 4.5 "changedValues": [{ "key": "dealerCommissionRate", "left": 15, "right": 20.5 }, {"key": "otherCommissionRate","left": 10,"right": 4.5 }]
    ACTIVE "dealerCommissionRate": 0 "dealerCommissionRate": 0.0, "otherCommissionRate": 25.0 "changedValues": [{ "key": "dealerCommissionRate", "left": 15, "right": 0.0 }, {"key": "otherCommissionRate","left": 10,"right": 25.0 }]
    ACTIVE "marketingPartnerCommissionRate": 20 "marketingPartnerCommissionRate": 20.0, "otherCommissionRate": 5.0 "changedValues": [{"key": "marketingPartnerCommissionRate", "left": 15,"right": 20.0},{"key": "otherCommissionRate", "left": 10, "right": 5.0 }]
    ACTIVE "marketingPartnerCommissionRate": 20.5 "marketingPartnerCommissionRate": 20.5, "otherCommissionRate": 4.5 "changedValues": [{"key": "marketingPartnerCommissionRate", "left": 15,"right": 20.5},{"key": "otherCommissionRate", "left": 10, "right": 4.5 }]
    ACTIVE "marketingPartnerCommissionRate": 0 "marketingPartnerCommissionRate": 0.0, "otherCommissionRate": 25.0 "changedValues": [{"key": "marketingPartnerCommissionRate", "left": 15,"right": 0.0},{"key": "otherCommissionRate", "left": 10, "right": 25.0 }]
    INACTIVE "status": "ACTIVE" "status": "ACTIVE" "changedValues": [{"key": "status","left": "INACTIVE","right": "ACTIVE"}]
    ACTIVE "status": "INACTIVE" "status": "INACTIVE" "changedValues": [{"key": "status","left": "ACTIVE","right": "INACTIVE"}]
  • Tags: @AUTOMATED, @TNK-6029

    Sản phẩm không thay đổi thông tin khi gửi lên các thông tin sau với giá trị null: trạng thái, ngành hàng,

    người thương lượng, tỷ lệ ưu đãi, chiết khấu cho các bên

    • Given Có token full quyền
    • And Tồn tại shop ưu đãi có thông tin
      idcategorydiscountTypestatusdealerdiscountRatecustomerDiscountRatedealerCommissionRatemarketingPartnerCommissionRate
      shop1Linh kiện điện tửSOME_PRODUCTACTIVEadmin15601515
    • And Shop "shop1" có danh sách sản phẩm ưu đãi
      productIdcategorydealerdiscountRatecustomerDiscountRatedealerCommissionRatemarketingPartnerCommissionRatestatus
      product1Hệ thống GPSlanhuong10501010ACTIVE
    • And Request có header là
      X-Tenantm26
    • When Gửi request "PATCH" đến "/admin/discount-product/${product1}" với body
      {
        "discountRate": null,
        "customerDiscountRate": null,
        "dealerCommissionRate": null,
        "marketingPartnerCommissionRate": null,
        "status": null,
        "dealer": null,
        "category": null
      }
    • Then Tôi nhận được response có HTTP Status 200
    • And Response có body thỏa mãn giá trị như sau
      {
        "id": "${product1}",
        "discountRate": 10.0,
        "customerDiscountRate": 50.0,
        "dealerCommissionRate": 10.0,
        "marketingPartnerCommissionRate": 10.0,
        "status": "ACTIVE",
        "dealer": "lanhuong",
        "category": ${2}
      }
  • Tags: @AUTOMATED, @TNK-6029

    Sản phẩm không thay đổi thông tin khi gửi lên status, dealer với giá trị rỗng

    • Given Có token full quyền
    • And Tồn tại shop ưu đãi có thông tin
      idcategorydiscountTypestatusdealerdiscountRatecustomerDiscountRatedealerCommissionRatemarketingPartnerCommissionRate
      shop1Linh kiện điện tửSOME_PRODUCTACTIVEadmin15601515
    • And Shop "shop1" có danh sách sản phẩm ưu đãi
      productIdcategorydealerdiscountRatecustomerDiscountRatedealerCommissionRatemarketingPartnerCommissionRatestatus
      product1Hệ thống GPSlanhuong10501010ACTIVE
    • And Request có header là
      X-Tenantm26
    • When Gửi request "PATCH" đến "/admin/discount-product/${product1}" với body
      {
        "status": "",
        "dealer": ""
      }
    • Then Tôi nhận được response có HTTP Status 200
    • And Response có body thỏa mãn giá trị như sau
      {
        "id": "${product1}",
        "status": "ACTIVE",
        "dealer": "lanhuong"
      }
  • Tags: @AUTOMATED, @TNK-6029

    Không thể cập nhật trạng thái sản phẩm khác Hoạt động (ACTIVE), Ngừng hoạt động (INACTIVE)

    • Given Có token full quyền
    • And Tồn tại shop ưu đãi có thông tin
      idcategorydiscountTypestatusdealerdiscountRatecustomerDiscountRatedealerCommissionRatemarketingPartnerCommissionRate
      shop1Linh kiện điện tửSOME_PRODUCTACTIVEadmin15601515
    • And Shop "shop1" có danh sách sản phẩm ưu đãi
      productIdcategorydealerdiscountRatecustomerDiscountRatedealerCommissionRatemarketingPartnerCommissionRatestatus
      product1Hệ thống GPSlanhuong10501010ACTIVE
    • And Request có header là
      X-Tenantm26
    • When Gửi request "PATCH" đến "/admin/discount-product/${product1}" với body
      {
        "status": "DEACTIVE"
      }
    • Then Tôi nhận được response có HTTP Status 400
    • And Response có body thỏa mãn giá trị như sau
      {
        "title": "status_invalid"
      }
  • Tags: @AUTOMATED, @TNK-6029

    Không thể cập nhật ngành hàng sản phẩm không thuộc ngành hàng của shop ưu đãi hoặc không phải là cấp thấp nhất

    trong ngành hàng của shop ưu đãi

    • Given Có token full quyền
    • And Tồn tại shop ưu đãi có thông tin
      idcategorydiscountTypestatusdealerdiscountRatecustomerDiscountRatedealerCommissionRatemarketingPartnerCommissionRate
      shop1Linh kiện điện tửSOME_PRODUCTACTIVEadmin15601515
    • And Shop "shop1" có danh sách sản phẩm ưu đãi
      productIdcategorydealerdiscountRatecustomerDiscountRatedealerCommissionRatemarketingPartnerCommissionRatestatus
      product1Hệ thống GPSlanhuong10501010ACTIVE
    • And Request có header là
      X-Tenantm26
    • When Gửi request "PATCH" đến "/admin/discount-product/${product1}" với body
      {
        "category": <category>
      }
    • Then Tôi nhận được response có HTTP Status 400
    • And Response có body thỏa mãn giá trị như sau
      {
        "title": "category_invalid",
        "detail": "A product's category must not have a child category"
      }

    Examples:

    category
    ${4}
    ${5}
  • Tags: @AUTOMATED, @TNK-6029

    Không thể cập nhật sản phẩm với thông tin ngành hàng không tồn tại

    • Given Có token full quyền
    • And Tồn tại shop ưu đãi có thông tin
      idcategorydiscountTypestatusdealerdiscountRatecustomerDiscountRatedealerCommissionRatemarketingPartnerCommissionRate
      shop1Linh kiện điện tửSOME_PRODUCTACTIVEadmin15601515
    • And Shop "shop1" có danh sách sản phẩm ưu đãi
      productIdcategorydealerdiscountRatecustomerDiscountRatedealerCommissionRatemarketingPartnerCommissionRatestatus
      product1Hệ thống GPSlanhuong10501010ACTIVE
    • And Request có header là
      X-Tenantm26
    • When Gửi request "PATCH" đến "/admin/discount-product/${product1}" với body
      {
        "category": 00
      }
    • Then Tôi nhận được response có HTTP Status 400
    • And Response có body thỏa mãn giá trị như sau
      {
        "title": "Bad Request"
      }
  • Tags: @AUTOMATED, @TNK-6029

    Không thể cập nhật sản phẩm ưu đãi với thông tin người thương lượng không tồn tại

    • Given Có token full quyền
    • And Tồn tại shop ưu đãi có thông tin
      idcategorydiscountTypestatusdealerdiscountRatecustomerDiscountRatedealerCommissionRatemarketingPartnerCommissionRate
      shop1Linh kiện điện tửSOME_PRODUCTACTIVEadmin15601515
    • And Shop "shop1" có danh sách sản phẩm ưu đãi
      productIdcategorydealerdiscountRatecustomerDiscountRatedealerCommissionRatemarketingPartnerCommissionRatestatus
      product1Hệ thống GPSlanhuong10501010ACTIVE
    • And Request có header là
      X-Tenantm26
    • When Gửi request "PATCH" đến "/admin/discount-product/${product1}" với body
      {
        "dealer": "not_exist"
      }
    • Then Tôi nhận được response có HTTP Status 400
    • And Response có body thỏa mãn giá trị như sau
      {
        "title": "dealer_invalid"
      }
  • Tags: @AUTOMATED, @TNK-6029

    Không thể cập nhật tỷ lệ chiết khấu, chiết khấu cho các bên với giá trị không hợp lệ

    • Given Có token full quyền
    • And Tồn tại shop ưu đãi có thông tin
      idcategorydiscountTypestatusdealerdiscountRatecustomerDiscountRatedealerCommissionRatemarketingPartnerCommissionRate
      shop1Linh kiện điện tửSOME_PRODUCTACTIVEadmin15601515
    • And Shop "shop1" có danh sách sản phẩm ưu đãi
      productIdcategorydealerdiscountRatecustomerDiscountRatedealerCommissionRatemarketingPartnerCommissionRatestatus
      product1Hệ thống GPSlanhuong10501010ACTIVE
    • And Request có header là
      X-Tenantm26
    • When Gửi request "PATCH" đến "/admin/discount-product/${product1}" với body
      {
        "discountRate": <discountRate>,
        "customerDiscountRate": <customerDiscountRate>,
        "dealerCommissionRate": <dealerCommissionRate>,
        "marketingPartnerCommissionRate": <marketingPartnerCommissionRate>,
      }
    • Then Tôi nhận được response có HTTP Status 400
    • And Response có body thỏa mãn giá trị như sau
      {
        "title": "Bad Request"
      }

    Examples:

    discountRate customerDiscountRate dealerCommissionRate marketingPartnerCommissionRate
    a 50 10 10
    -1 50 10 10
    "" 50 10 10
    101 50 10 10
    10 a 10 10
    10 -1 10 10
    10 "" 10 10
    10 101 10 10
    10 50 a 10
    10 50 -1 10
    10 50 101 10
    10 50 "" 10
    10 50 10 a
    10 50 10 -1
    10 50 10 101
    10 50 10 ""
  • Tags: @AUTOMATED, @TNK-6029

    Trả về lỗi 404 khi gửi request cập nhật sản phẩm ưu đãi với id sản phẩm không tồn tại

    • Given Có token full quyền
    • And Request có header là
      X-Tenantm26
    • When Gửi request "PATCH" đến "/admin/discount-product/00000000-000d-000d-b000-dc0a00a00b0a" với body
      {
        "discountRate": 30
      }
    • Then Tôi nhận được response có HTTP Status 404
    • And Response có body thỏa mãn giá trị như sau
      {
        "title": "product_not_found"
      }
  • Tags: @AUTOMATED, @TNK-6029

    Không thể cập nhật sản phẩm của shop có loại là "Áp dụng tất cả sản phẩm"

    • Given Tồn tại shop ưu đãi có thông tin
      idcategorydiscountTypestatusdealerdiscountRatecustomerDiscountRatedealerCommissionRatemarketingPartnerCommissionRate
      shop1Linh kiện điện tửSOME_PRODUCTACTIVEadmin15601515
    • And Shop "shop1" có danh sách sản phẩm ưu đãi
      productIdcategorydealerdiscountRatecustomerDiscountRatedealerCommissionRatemarketingPartnerCommissionRatestatus
      product1Hệ thống GPSlanhuong10501010ACTIVE
    • And Cập nhật shop ưu đãi với thông tin
      iddiscountType
      shop1ALL_PRODUCT
    • And Có token full quyền
    • And Request có header là
      X-Tenantm26
    • When Gửi request "PATCH" đến "/admin/discount-product/${product1}" với body
      {
        "discountRate": 30
      }
    • Then Tôi nhận được response có HTTP Status 400
    • And Response có body thỏa mãn giá trị như sau
      {
        "title": "action_not_allowed",
        "detail": "Can't update product with all-product discount type"
      }