ShopApiPlugin
ShopApiPlugin copied to clipboard
CartView cartDiscounts doesn't show ORDER_ITEM_PROMOTION_ADJUSTMENT, ORDER_UNIT_PROMOTION_ADJUSTMENT discounts
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.