public function testCalculateRequestValues_CorrectTotalAmount_WithRelativeDiscount_WithDifferentVatRatesPresent() { $config = SveaConfig::getDefaultConfig(); $order = \WebPay::createOrder($config); $order->addOrderRow(\WebPayItem::orderRow()->setAmountExVat(100.0)->setVatPercent(25)->setQuantity(2))->addOrderRow(\WebPayItem::orderRow()->setAmountExVat(100.0)->setVatPercent(6)->setQuantity(1))->addDiscount(\WebPayItem::relativeDiscount()->setDiscountPercent(25)); // follows HostedPayment calculateRequestValues() outline: $formatter = new HostedRowFormatter(); $request = array(); $request['rows'] = $formatter->formatRows($order); $request['amount'] = $formatter->formatTotalAmount($request['rows']); $request['totalVat'] = $formatter->formatTotalVat($request['rows']); // 5000*.25 = 1250 // 600*.25 = 150 // matches 1400 discount $this->assertEquals(26700, $request['amount']); // 35600 - 8900 discount $this->assertEquals(4200, $request['totalVat']); // 5600 - 1400 discount (= 10000/35600 *5600) discount }
public function testFormatTotalAmountNegative() { $this->order->addOrderRow(\WebPayItem::orderRow()->setAmountExVat(-100)->setVatPercent(0)->setQuantity(2)); $formatter = new HostedRowFormatter(); $rows = $formatter->formatRows($this->order); $this->assertEquals(-20000, $formatter->formatTotalAmount($rows)); }