/** * @Then /^an email with shipment's details of (this order) should be sent to "([^"]+)"$/ */ public function anEmailWithShipmentDetailsOfOrderShouldBeSentTo(OrderInterface $order, $recipient) { $this->assertEmailContainsMessageTo($order->getNumber(), $recipient); $this->assertEmailContainsMessageTo($order->getLastShipment()->getMethod()->getName(), $recipient); $tracking = $this->sharedStorage->get('tracking_code'); $this->assertEmailContainsMessageTo($tracking, $recipient); }
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); }
/** * {@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()); }