/** * {@inheritdoc} */ public function isEligible(PromotionSubjectInterface $subject, array $configuration) { if (isset($configuration['equal']) && $configuration['equal']) { return $subject->getPromotionSubjectTotal() >= $configuration['amount']; } return $subject->getPromotionSubjectTotal() > $configuration['amount']; }
/** * {@inheritdoc} */ public function execute(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'); } $adjustment = $this->createAdjustment($promotion); $adjustment->setAmount(-$subject->getPromotionSubjectTotal() * $configuration['percentage']); $subject->addAdjustment($adjustment); }
/** * {@inheritdoc} */ public function execute(PromotionSubjectInterface $subject, array $configuration, PromotionInterface $promotion) { if (!$subject instanceof OrderInterface) { throw new UnexpectedTypeException($subject, OrderInterface::class); } $adjustment = $this->createAdjustment($promotion); $adjustmentAmount = (int) round($subject->getPromotionSubjectTotal() * $configuration['percentage']); $adjustment->setAmount(-$adjustmentAmount); $subject->addAdjustment($adjustment); }
/** * {@inheritdoc} */ public function execute(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'); } $adjustment = $this->repository->createNew(); $adjustment->setAmount(-$subject->getPromotionSubjectTotal() * $configuration['percentage']); $adjustment->setLabel(OrderInterface::PROMOTION_ADJUSTMENT); $adjustment->setDescription($promotion->getDescription()); $subject->addAdjustment($adjustment); }
function it_should_recognize_subject_as_eligible_if_subject_total_is_equal_with_configured_depending_on_equal_setting(PromotionSubjectInterface $subject) { $subject->getPromotionSubjectTotal()->shouldBeCalled()->willReturn(500); $this->isEligible($subject, array('amount' => 500, 'equal' => false))->shouldReturn(false); $this->isEligible($subject, array('amount' => 500, 'equal' => true))->shouldReturn(true); }
function it_should_recognize_subject_as_eligible_if_subject_total_is_equal_with_configured(PromotionSubjectInterface $subject) { $subject->getPromotionSubjectTotal()->shouldBeCalled()->willReturn(500); $this->isEligible($subject, ['amount' => 500])->shouldReturn(true); }
/** * {@inheritdoc} */ public function isEligible(PromotionSubjectInterface $subject, array $configuration) { return $subject->getPromotionSubjectTotal() >= $configuration['amount']; }