public function collect(Mage_Sales_Model_Order_Invoice $invoice) { $invoice->setPaymentCharge(0); $invoice->setBasePaymentCharge(0); $paymentCharge = $invoice->getOrder()->getPaymentCharge(); $basePaymentCharge = $invoice->getOrder()->getBasePaymentCharge(); // we moeten de btw meenemen in de berekening $paymentMethod = $invoice->getOrder()->getPayment()->getMethod(); $taxClass = Mage::helper('pay_payment')->getPaymentChargeTaxClass($paymentMethod); $storeId = Mage::app()->getStore()->getId(); $taxCalculationModel = Mage::getSingleton('tax/calculation'); $request = $taxCalculationModel->getRateRequest($invoice->getOrder()->getShippingAddress(), $invoice->getOrder()->getBillingAddress(), null, $storeId); $request->setStore(Mage::app()->getStore()); $rate = $taxCalculationModel->getRate($request->setProductClassId($taxClass)); if ($rate > 0) { $baseChargeTax = round($invoice->getBasePaymentCharge() / (1 + $rate / 100) * ($rate / 100), 2); $chargeTax = round($invoice->getPaymentCharge() / (1 + $rate / 100) * ($rate / 100), 2); } else { $baseChargeTax = 0; $chargeTax = 0; } $invoice->setPaymentCharge($paymentCharge); $invoice->setBasePaymentCharge($basePaymentCharge); $invoice->setBaseTaxAmount($invoice->getBaseTaxAmount() + $baseChargeTax); $invoice->setTaxAmount($invoice->getTaxAmount() + $chargeTax); $invoice->setGrandTotal($invoice->getGrandTotal() + $invoice->getPaymentCharge()); $invoice->setBaseGrandTotal($invoice->getBaseGrandTotal() + $invoice->getBasePaymentCharge()); return $this; }
public function collect(Mage_Sales_Model_Order_Invoice $invoice) { $invoice->setPaymentCharge(0); $invoice->setBasePaymentCharge(0); /*$hasInvoices = $invoice->getOrder()->hasInvoices(); $paymentMethod = $invoice->getOrder()->getPayment()->getMethod(); if ($paymentMethod) { //&& !$hasInvoices $chargeType = Mage::getStoreConfig('payment/'.strval($paymentMethod).'/charge_type'); $chargeValue = Mage::getStoreConfig('payment/'.strval($paymentMethod).'/charge_value'); if ($chargeValue) { if ($chargeType=="percentage") { $subTotal = $invoice->getSubtotal(); $amount = $subTotal * intval($chargeValue) / 100; } else { $amount = intval($chargeValue); } $invoice->setPaymentCharge($amount); $invoice->setBasePaymentCharge($amount); } } $invoice->setGrandTotal($invoice->getGrandTotal() + $invoice->getPaymentCharge()); $invoice->setBaseGrandTotal($invoice->getBaseGrandTotal() + $invoice->getBasePaymentCharge()); */ $amount = $invoice->getOrder()->getPaymentCharge(); $invoice->setPaymentCharge($amount); $amount = $invoice->getOrder()->getBasePaymentCharge(); $invoice->setBasePaymentCharge($amount); $invoice->setGrandTotal($invoice->getGrandTotal() + $invoice->getPaymentCharge()); $invoice->setBaseGrandTotal($invoice->getBaseGrandTotal() + $invoice->getBasePaymentCharge()); return $this; }