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);
 }
 function it_reverts_order_units_order_promotion_adjustments(AdjustmentInterface $firstAdjustment, AdjustmentInterface $secondAdjustment, OrderInterface $order, OrderItemInterface $item, OrderItemUnitInterface $unit, PromotionInterface $promotion)
 {
     $order->countItems()->willReturn(1);
     $order->getItems()->willReturn([$item]);
     $item->getUnits()->willReturn([$unit]);
     $unit->getAdjustments(AdjustmentInterface::ORDER_PROMOTION_ADJUSTMENT)->willReturn([$firstAdjustment, $secondAdjustment]);
     $promotion->getCode()->willReturn('PROMOTION');
     $firstAdjustment->getOriginCode()->willReturn('PROMOTION');
     $secondAdjustment->getOriginCode()->willReturn('OTHER_PROMOTION');
     $unit->removeAdjustment($firstAdjustment)->shouldBeCalled();
     $unit->removeAdjustment($secondAdjustment)->shouldNotBeCalled();
     $this->revert($order, [], $promotion);
 }
 function it_reverts_proper_promotion_adjustment_from_all_units($originator, AdjustmentInterface $promotionAdjustment1, AdjustmentInterface $promotionAdjustment2, Collection $items, Collection $units, Collection $adjustments, OrderInterface $order, OrderItemInterface $orderItem, OrderItemUnitInterface $unit, PromotionInterface $promotion, PromotionInterface $someOtherPromotion)
 {
     $order->getItems()->willReturn($items);
     $items->getIterator()->willReturn(new \ArrayIterator([$orderItem->getWrappedObject()]));
     $orderItem->getUnits()->willReturn($units);
     $units->getIterator()->willReturn(new \ArrayIterator([$unit->getWrappedObject()]));
     $unit->getAdjustments(AdjustmentInterface::ORDER_UNIT_PROMOTION_ADJUSTMENT)->willReturn($adjustments);
     $adjustments->getIterator()->willReturn(new \ArrayIterator([$promotionAdjustment1->getWrappedObject(), $promotionAdjustment2->getWrappedObject()]));
     $originator->getOrigin($promotionAdjustment1)->willReturn($promotion);
     $unit->removeAdjustment($promotionAdjustment1)->shouldBeCalled();
     $originator->getOrigin($promotionAdjustment2)->willReturn($someOtherPromotion);
     $unit->removeAdjustment($promotionAdjustment2)->shouldNotBeCalled();
     $this->revert($order, ['percentage' => 0.2], $promotion);
 }
Example #4
0
 function it_deletes_an_order(SharedStorageInterface $sharedStorage, AddressInterface $shippingAddress, AddressInterface $billingAddress, AdjustmentInterface $adjustment, OrderRepositoryInterface $orderRepository, OrderInterface $order)
 {
     $orderRepository->findOneBy(['number' => '#00000000'])->willReturn($order);
     $order->getBillingAddress()->willReturn($billingAddress);
     $order->getShippingAddress()->willReturn($shippingAddress);
     $order->getAdjustments()->willReturn([$adjustment]);
     $billingAddress->getId()->willReturn(3);
     $shippingAddress->getId()->willReturn(2);
     $adjustment->getId()->willReturn(1);
     $orderRepository->remove($order)->shouldBeCalled();
     $sharedStorage->set('deleted_adjustments', [1])->shouldBeCalled();
     $sharedStorage->set('deleted_addresses', [2, 3])->shouldBeCalled();
     $this->iDeleteTheOrder('#00000000');
 }
Example #5
0
 function it_returns_tax_of_all_units_and_both_neutral_and_non_neutral_tax_adjustments(OrderItemUnitInterface $orderItemUnit1, OrderItemUnitInterface $orderItemUnit2, AdjustmentInterface $nonNeutralTaxAdjustment, AdjustmentInterface $neutralTaxAdjustment)
 {
     $orderItemUnit1->getTotal()->willReturn(1200);
     $orderItemUnit1->getTaxTotal()->willReturn(200);
     $orderItemUnit1->getOrderItem()->willReturn($this);
     $orderItemUnit2->getTotal()->willReturn(1120);
     $orderItemUnit2->getTaxTotal()->willReturn(120);
     $orderItemUnit2->getOrderItem()->willReturn($this);
     $this->addUnit($orderItemUnit1);
     $this->addUnit($orderItemUnit2);
     $neutralTaxAdjustment->isNeutral()->willReturn(true);
     $neutralTaxAdjustment->getType()->willReturn(AdjustmentInterface::TAX_ADJUSTMENT);
     $neutralTaxAdjustment->getAmount()->willReturn(200);
     $nonNeutralTaxAdjustment->isNeutral()->willReturn(false);
     $nonNeutralTaxAdjustment->getType()->willReturn(AdjustmentInterface::TAX_ADJUSTMENT);
     $nonNeutralTaxAdjustment->getAmount()->willReturn(300);
     $neutralTaxAdjustment->setAdjustable($this)->shouldBeCalled();
     $nonNeutralTaxAdjustment->setAdjustable($this)->shouldBeCalled();
     $this->addAdjustment($neutralTaxAdjustment);
     $this->addAdjustment($nonNeutralTaxAdjustment);
     $this->getTaxTotal()->shouldReturn(820);
 }
Example #6
0
 function it_does_not_include_shipping_promotion_adjustment_in_order_promotion_total(AdjustmentInterface $shippingPromotionAdjustment, OrderItemInterface $orderItem1)
 {
     $orderItem1->getTotal()->willReturn(500);
     $orderItem1->getAdjustmentsTotalRecursively(AdjustmentInterface::ORDER_PROMOTION_ADJUSTMENT)->willReturn(-400);
     $shippingPromotionAdjustment->getType()->willReturn(AdjustmentInterface::ORDER_PROMOTION_ADJUSTMENT);
     $shippingPromotionAdjustment->isNeutral()->willReturn(false);
     $shippingPromotionAdjustment->getAmount()->willReturn(-100);
     $orderItem1->setOrder($this)->shouldBeCalled();
     $this->addItem($orderItem1);
     $shippingPromotionAdjustment->setAdjustable($this)->shouldBeCalled();
     $this->addAdjustment($shippingPromotionAdjustment);
     $this->getOrderPromotionTotal()->shouldReturn(-400);
 }
 function it_returns_only_sum_of_neutral_and_non_neutral_tax_adjustments_as_tax_total(OrderItemInterface $orderItem, AdjustmentInterface $nonNeutralTaxAdjustment, AdjustmentInterface $neutralTaxAdjustment, AdjustmentInterface $notTaxAdjustment)
 {
     $neutralTaxAdjustment->isNeutral()->willReturn(true);
     $neutralTaxAdjustment->getType()->willReturn(AdjustmentInterface::TAX_ADJUSTMENT);
     $neutralTaxAdjustment->getAmount()->willReturn(200);
     $nonNeutralTaxAdjustment->isNeutral()->willReturn(false);
     $nonNeutralTaxAdjustment->getType()->willReturn(AdjustmentInterface::TAX_ADJUSTMENT);
     $nonNeutralTaxAdjustment->getAmount()->willReturn(300);
     $notTaxAdjustment->isNeutral()->willReturn(false);
     $notTaxAdjustment->getType()->willReturn(AdjustmentInterface::ORDER_PROMOTION_ADJUSTMENT);
     $notTaxAdjustment->getAmount()->willReturn(100);
     $orderItem->recalculateUnitsTotal()->shouldBeCalled();
     $neutralTaxAdjustment->setAdjustable($this)->shouldBeCalled();
     $nonNeutralTaxAdjustment->setAdjustable($this)->shouldBeCalled();
     $notTaxAdjustment->setAdjustable($this)->shouldBeCalled();
     $this->addAdjustment($neutralTaxAdjustment);
     $this->addAdjustment($nonNeutralTaxAdjustment);
     $this->addAdjustment($notTaxAdjustment);
     $this->getTaxTotal()->shouldReturn(500);
 }
Example #8
0
 function it_should_remove_tax_adjustments(AdjustmentInterface $shippingAdjustment, AdjustmentInterface $taxAdjustment)
 {
     $shippingAdjustment->getLabel()->willReturn(AdjustmentInterface::SHIPPING_ADJUSTMENT);
     $shippingAdjustment->setAdjustable($this)->shouldBeCalled();
     $taxAdjustment->getLabel()->willReturn(AdjustmentInterface::TAX_ADJUSTMENT);
     $taxAdjustment->setAdjustable($this)->shouldBeCalled();
     $this->addAdjustment($shippingAdjustment);
     $this->addAdjustment($taxAdjustment);
     $this->getAdjustments()->count()->shouldReturn(2);
     //both adjustments have been added
     $taxAdjustment->isLocked()->willReturn(false);
     $taxAdjustment->setAdjustable(null)->shouldBeCalled();
     $this->removeAdjustments(AdjustmentInterface::TAX_ADJUSTMENT);
     $this->getAdjustments()->count()->shouldReturn(1);
     //one has been removed
     $this->getAdjustments(AdjustmentInterface::TAX_ADJUSTMENT)->count()->shouldReturn(0);
     //tax adjustment has been removed
 }
 function it_revert_proper_promotion_adjustment_from_all_units(AdjustmentInterface $promotionAdjustment1, AdjustmentInterface $promotionAdjustment2, Collection $items, Collection $units, Collection $adjustments, OrderInterface $order, OrderItemInterface $orderItem, OrderItemUnitInterface $unit, PromotionInterface $promotion)
 {
     $order->getItems()->willReturn($items);
     $items->getIterator()->willReturn(new \ArrayIterator([$orderItem->getWrappedObject()]));
     $orderItem->getUnits()->willReturn($units);
     $units->getIterator()->willReturn(new \ArrayIterator([$unit->getWrappedObject()]));
     $unit->getAdjustments(AdjustmentInterface::ORDER_UNIT_PROMOTION_ADJUSTMENT)->willReturn($adjustments);
     $adjustments->getIterator()->willReturn(new \ArrayIterator([$promotionAdjustment1->getWrappedObject(), $promotionAdjustment2->getWrappedObject()]));
     $promotion->getCode()->willReturn('PROMOTION');
     $promotionAdjustment1->getOriginCode()->willReturn('PROMOTION');
     $unit->removeAdjustment($promotionAdjustment1)->shouldBeCalled();
     $promotionAdjustment2->getOriginCode()->willReturn('OTHER_PROMOTION');
     $unit->removeAdjustment($promotionAdjustment2)->shouldNotBeCalled();
     $this->revert($order, ['amount' => 1000], $promotion);
 }
 function it_reverts_a_proper_promotion_adjustment_from_all_units(AdjustmentInterface $promotionAdjustment1, AdjustmentInterface $promotionAdjustment2, ChannelInterface $channel, OrderInterface $order, OrderItemInterface $orderItem, OrderItemUnitInterface $unit, PromotionInterface $promotion)
 {
     $order->getChannel()->willReturn($channel);
     $channel->getCode()->willReturn('WEB_US');
     $order->getItems()->willReturn(new ArrayCollection([$orderItem->getWrappedObject()]));
     $orderItem->getUnits()->willReturn(new ArrayCollection([$unit->getWrappedObject()]));
     $unit->getAdjustments(AdjustmentInterface::ORDER_UNIT_PROMOTION_ADJUSTMENT)->willReturn(new ArrayCollection([$promotionAdjustment1->getWrappedObject(), $promotionAdjustment2->getWrappedObject()]));
     $promotion->getCode()->willReturn('PROMOTION');
     $promotionAdjustment1->getOriginCode()->willReturn('PROMOTION');
     $unit->removeAdjustment($promotionAdjustment1)->shouldBeCalled();
     $promotionAdjustment2->getOriginCode()->willReturn('OTHER_PROMOTION');
     $unit->removeAdjustment($promotionAdjustment2)->shouldNotBeCalled();
     $this->revert($order, ['WEB_US' => ['amount' => 1000]], $promotion);
 }
Example #11
0
 /**
  * Helper method
  *
  * @param OrderInterface      $order
  * @param AdjustmentInterface $shippingAdjustment
  * @param AdjustmentInterface $taxAdjustment
  */
 protected function addShippingAndTaxAdjustments(OrderInterface $order, AdjustmentInterface $shippingAdjustment, AdjustmentInterface $taxAdjustment)
 {
     $shippingAdjustment->getLabel()->willReturn(AdjustmentInterface::SHIPPING_ADJUSTMENT);
     $shippingAdjustment->setAdjustable($order)->shouldBeCalled();
     $taxAdjustment->getLabel()->willReturn(AdjustmentInterface::TAX_ADJUSTMENT);
     $taxAdjustment->setAdjustable($order)->shouldBeCalled();
     $order->addAdjustment($shippingAdjustment);
     $order->addAdjustment($taxAdjustment);
 }
Example #12
0
 function it_returns_promotions_total_recursively(AdjustmentInterface $orderPromotionAdjustment, AdjustmentInterface $orderItemPromotionAdjustment, OrderItemInterface $orderItem)
 {
     $orderPromotionAdjustment->getAmount()->willReturn(10000);
     $orderItemPromotionAdjustment->getAmount()->willReturn(5000);
     $orderPromotionAdjustment->isNeutral()->willReturn(false);
     $orderItemPromotionAdjustment->isNeutral()->willReturn(false);
     $orderPromotionAdjustment->getType()->willReturn(AdjustmentInterface::ORDER_PROMOTION_ADJUSTMENT);
     $orderItemPromotionAdjustment->getType()->willReturn(AdjustmentInterface::ORDER_ITEM_PROMOTION_ADJUSTMENT);
     $orderPromotionAdjustment->setAdjustable($this)->shouldBeCalled();
     $orderItem->getAdjustmentsRecursively(AdjustmentInterface::ORDER_ITEM_PROMOTION_ADJUSTMENT)->willReturn([$orderItemPromotionAdjustment]);
     $orderItem->setOrder($this)->shouldBeCalled();
     $orderItem->getTotal()->willReturn(15000);
     $orderItem->getAdjustmentsRecursively(AdjustmentInterface::ORDER_PROMOTION_ADJUSTMENT)->willReturn([]);
     $this->addItem($orderItem);
     $this->addAdjustment($orderPromotionAdjustment);
     $this->getPromotionsTotalRecursively()->shouldReturn(15000);
 }