Exemplo n.º 1
0
 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);
 }
Exemplo n.º 2
0
 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));
 }