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)
/**
* 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)
;
}
When using promotion with
Item percentage discount
orItem fixed discount
actions, then adjustments are applied onAdjustmentInterface::ORDER_ITEM_PROMOTION_ADJUSTMENT
(orORDER_UNIT_PROMOTION_ADJUSTMENT
, didn't check) level.In such case
CartView
is empty, while
totals->promotion
is correctly filled. (Do ignore non-standard output, this is artifact of my project)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 levelsand
cartDiscounts
only checks for order level https://github.com/Sylius/ShopApiPlugin/blob/8fe5f49cb1c3015922fff2c362cb0d03782f3373/src/Factory/Cart/CartViewFactory.php#L85I'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.