public function applyToOrder(CustomerOrder $order) { $amount = $order->getCurrency()->convertAmount(CustomerOrder::getApplication()->getDefaultCurrency(), $this->getDiscountAmount($order->totalAmount->get())); $orderDiscount = OrderDiscount::getNewInstance($order); $orderDiscount->amount->set($amount); $orderDiscount->description->set($this->parentCondition->getParam('name_lang')); $order->registerOrderDiscount($orderDiscount); }
public function testFixedDiscountWithTaxesAndDeliveryZone() { $this->createOrderWithZone(); $this->order->addProduct($this->products[0]); $this->order->save(); $shipment = $this->order->getShipments()->get(0); $rates = $this->order->getDeliveryZone()->getShippingRates($shipment); $shipment->setAvailableRates($rates); $shipment->setRateId($rates->get(0)->getServiceID()); $shipment->save(); $initTotal = $this->order->getTotal(true); $initTax = $this->order->getTaxAmount(); $discount = OrderDiscount::getNewInstance($this->order); $discount->amount->set(10); $discount->save(); $this->assertEquals((int) $this->order->getTotal(true), (int) ($initTotal - 10)); $tax = $this->order->getTaxAmount(); $expectedTax = 110 / 6 + 20; $this->assertEquals(round($expectedTax, 2), round($tax, 2)); }