/** * {@inheritdoc} */ public function visitOrder(OrderInterface $order) { if (null === $order->getCoupon()) { $orderTotal = new OrderTotal(); $discount = $this->getDiscountForClient($order->getClient()); if ($discount > 0) { $productTotal = $order->getProductTotal(); $orderTotal->setCurrency($order->getCurrency()); $orderTotal->setGrossAmount($productTotal->getGrossAmount() * $discount); $orderTotal->setNetAmount($productTotal->getNetAmount() * $discount); $orderTotal->setTaxAmount($productTotal->getTaxAmount() * $discount); $orderTotalDetail = $this->initResource(); $orderTotalDetail->setOrderTotal($orderTotal); $orderTotalDetail->setModifierType('%'); $orderTotalDetail->setModifierValue($discount); $orderTotalDetail->setOrder($order); $orderTotalDetail->setSubtraction(true); $order->addTotal($orderTotalDetail); } } }
/** * {@inheritdoc} */ public function visitOrder(OrderInterface $order) { if (null !== $order->getCoupon()) { $productTotal = $order->getProductTotal(); $coupon = $order->getCoupon(); $modifier = $this->calculateModifierValue($coupon, $productTotal->getGrossAmount(), $order->getCurrency()); if ($modifier > 0) { $orderTotal = new OrderTotal(); $orderTotal->setCurrency($order->getCurrency()); $orderTotal->setGrossAmount($productTotal->getGrossAmount() * $modifier); $orderTotal->setNetAmount($productTotal->getNetAmount() * $modifier); $orderTotal->setTaxAmount($productTotal->getTaxAmount() * $modifier); $orderTotalDetail = $this->initResource(); $orderTotalDetail->setOrderTotal($orderTotal); $orderTotalDetail->setModifierType($coupon->getModifierType()); $orderTotalDetail->setModifierValue($modifier); $orderTotalDetail->setOrder($order); $orderTotalDetail->setSubtraction(true); $order->addTotal($orderTotalDetail); } } }