/** * @param OrderItemUnitInterface $unit * @param PromotionInterface $promotion */ protected function removeUnitOrderItemAdjustments(OrderItemUnitInterface $unit, PromotionInterface $promotion) { foreach ($unit->getAdjustments(AdjustmentInterface::ORDER_UNIT_PROMOTION_ADJUSTMENT) as $adjustment) { if ($promotion === $this->originator->getOrigin($adjustment)) { $unit->removeAdjustment($adjustment); } } }
/** * {@inheritdoc} */ public function revert(PromotionSubjectInterface $subject, array $configuration, PromotionInterface $promotion) { if (!$subject instanceof OrderInterface && !$subject instanceof OrderItemInterface) { throw new UnexpectedTypeException($subject, 'Sylius\\Component\\Core\\Model\\OrderInterface or Sylius\\Component\\Core\\Model\\OrderItemInterface'); } foreach ($subject->getAdjustments(AdjustmentInterface::PROMOTION_ADJUSTMENT) as $adjustment) { if ($promotion === $this->originator->getOrigin($adjustment)) { $subject->removeAdjustment($adjustment); } } }
function it_reverts_order_units_order_promotion_adjustments(AdjustmentInterface $firstAdjustment, AdjustmentInterface $secondAdjustment, OrderInterface $order, OrderItemInterface $item, OrderItemUnitInterface $unit, OriginatorInterface $originator, PromotionInterface $otherPromotion, PromotionInterface $promotion) { $order->countItems()->willReturn(1); $order->getItems()->willReturn(new \ArrayIterator([$item->getWrappedObject()])); $item->getUnits()->willReturn(new \ArrayIterator([$unit->getWrappedObject()])); $unit->getAdjustments(AdjustmentInterface::ORDER_PROMOTION_ADJUSTMENT)->willReturn(new \ArrayIterator([$firstAdjustment->getWrappedObject(), $secondAdjustment->getWrappedObject()])); $originator->getOrigin($firstAdjustment)->willReturn($promotion); $originator->getOrigin($secondAdjustment)->willReturn($otherPromotion); $unit->removeAdjustment($firstAdjustment)->shouldBeCalled(); $unit->removeAdjustment($secondAdjustment)->shouldNotBeCalled(); $this->revert($order, [], $promotion); }