ShopApiPlugin icon indicating copy to clipboard operation
ShopApiPlugin copied to clipboard

CartView cartDiscounts doesn't show ORDER_ITEM_PROMOTION_ADJUSTMENT, ORDER_UNIT_PROMOTION_ADJUSTMENT discounts

Open diimpp opened this issue 4 years ago • 0 comments

When using promotion with Item percentage discount or Item fixed discount actions, then adjustments are applied on AdjustmentInterface::ORDER_ITEM_PROMOTION_ADJUSTMENT (or ORDER_UNIT_PROMOTION_ADJUSTMENT, didn't check) level.

In such case CartView

    "cartDiscounts": []

is empty, while totals->promotion is correctly filled. (Do ignore non-standard output, this is artifact of my project)

    "totals": {
        "total": {
            "current": 12000,
            "currency": "EUR"
        },
        "items": {
            "current": 12000,
            "currency": "EUR"
        },
        "taxes": {
            "current": 2000,
            "currency": "EUR"
        },
        "shipping": {
            "current": 0,
            "currency": "EUR"
        },
        "promotion": {
            "current": -6100,
            "currency": "EUR"
        }
    },

Problem is with mismatch between adjustments levels for those properties. Totals->promotion uses https://github.com/Sylius/ShopApiPlugin/blob/8fe5f49cb1c3015922fff2c362cb0d03782f3373/src/Factory/Cart/TotalViewFactory.php#L26 which works by all three adjustment levels

     /** 
      * Returns amount of order discount. Does not include shipping discounts.
      */ 
     public function getOrderPromotionTotal(): int
     {
         return
             $this->getAdjustmentsTotalRecursively(AdjustmentInterface::ORDER_PROMOTION_ADJUSTMENT) +
             $this->getAdjustmentsTotalRecursively(AdjustmentInterface::ORDER_ITEM_PROMOTION_ADJUSTMENT) +
             $this->getAdjustmentsTotalRecursively(AdjustmentInterface::ORDER_UNIT_PROMOTION_ADJUSTMENT)
         ;
     }

and cartDiscounts only checks for order level https://github.com/Sylius/ShopApiPlugin/blob/8fe5f49cb1c3015922fff2c362cb0d03782f3373/src/Factory/Cart/CartViewFactory.php#L85

I'm going to fix this in my project and see how it will go, but so far it looks like an error, rather than design decision.

diimpp avatar Nov 23 '20 13:11 diimpp