Exemplo n.º 1
0
 /**
  * {@inheritdoc}
  */
 public function isEligible(PromotionSubjectInterface $subject, array $configuration)
 {
     if (isset($configuration['equal']) && $configuration['equal']) {
         return $subject->getPromotionSubjectTotal() >= $configuration['amount'];
     }
     return $subject->getPromotionSubjectTotal() > $configuration['amount'];
 }
Exemplo n.º 2
0
 /**
  * {@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);
 }
Exemplo n.º 4
0
 /**
  * {@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);
 }
Exemplo n.º 5
0
 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);
 }
Exemplo n.º 7
0
 /**
  * {@inheritdoc}
  */
 public function isEligible(PromotionSubjectInterface $subject, array $configuration)
 {
     return $subject->getPromotionSubjectTotal() >= $configuration['amount'];
 }