function it_does_nothing_if_order_has_no_shipping_adjustments(Collection $shippingAdjustments, OrderInterface $order, ShipmentInterface $shipment, ZoneInterface $zone)
 {
     $order->getLastShipment()->willReturn($shipment);
     $order->getAdjustments(AdjustmentInterface::SHIPPING_ADJUSTMENT)->willReturn($shippingAdjustments);
     $shippingAdjustments->isEmpty()->willReturn(true);
     $shippingAdjustments->last()->shouldNotBeCalled();
     $this->apply($order, $zone);
 }
 private function calculateNonNeutralTaxTotal(OrderInterface $order)
 {
     $nonNeutralTaxTotal = 0;
     foreach ($order->getAdjustments(AdjustmentInterface::TAX_ADJUSTMENT) as $taxAdjustment) {
         if (!$taxAdjustment->isNeutral()) {
             $nonNeutralTaxTotal = $taxAdjustment->getAmount();
         }
     }
     return $nonNeutralTaxTotal;
 }
 /**
  * @When I delete the order :order
  */
 public function iDeleteTheOrder(OrderInterface $order)
 {
     $adjustmentsId = [];
     foreach ($order->getAdjustments() as $adjustment) {
         $adjustmentsId[] = $adjustment->getId();
     }
     $this->sharedStorage->set('deleted_adjustments', $adjustmentsId);
     $this->sharedStorage->set('deleted_addresses', [$order->getShippingAddress()->getId(), $order->getBillingAddress()->getId()]);
     $this->sharedStorage->set('order_id', $order->getId());
     $this->orderRepository->remove($order);
 }
 /**
  * {@inheritdoc}
  */
 public function apply(OrderInterface $order, ZoneInterface $zone)
 {
     $lastShipment = $order->getLastShipment();
     if (!$lastShipment) {
         return;
     }
     $shippingAdjustments = $order->getAdjustments(AdjustmentInterface::SHIPPING_ADJUSTMENT);
     if ($shippingAdjustments->isEmpty()) {
         return;
     }
     $taxRate = $this->taxRateResolver->resolve($lastShipment->getMethod(), array('zone' => $zone));
     if (null === $taxRate) {
         return;
     }
     $lastShippingAdjustment = $shippingAdjustments->last();
     $taxAmount = $this->calculator->calculate($lastShippingAdjustment->getAmount(), $taxRate);
     $this->addAdjustment($order, $taxAmount, $taxRate->getLabel(), $taxRate->isIncludedInPrice());
 }