Я хочу округлить общую сумму. Итак, я создал собственный модуль и переписал основные модели.
Мой код модели перезаписи ниже
<сильный>1. Mage_Sales_Model_Quote_Address_Total_Grand
<?php
class Lr_Roundtotal_Model_Quote_Address_Total_Grand extends Mage_Sales_Model_Quote_Address_Total_Grand
{
public function collect(Mage_Sales_Model_Quote_Address $address)
{
$grandTotal = $address->getGrandTotal();
$baseGrandTotal = $address->getBaseGrandTotal();
$totals = array_sum($address->getAllTotalAmounts());
$baseTotals = array_sum($address->getAllBaseTotalAmounts());
$address->setGrandTotal(round($grandTotal+$totals)); //Modificated
$address->setBaseGrandTotal(round($baseGrandTotal+$baseTotals)); //Modificated
//$address->setGrandTotal($grandTotal+$totals); --Original
//$address->setBaseGrandTotal($baseGrandTotal+$baseTotals); --Original
return $this;
}
public function fetch(Mage_Sales_Model_Quote_Address $address)
{
$address->addTotal(array(
'code' => $this->getCode(),
'title' => Mage::helper('sales')->__('Grand Total'),
'value' => round($address->getGrandTotal()),
'netvalue' => round($address->getGrandTotal()),
'area' => 'footer',
));
return $this;
}
}
и второй
2.Mage_Sales_Model_Order_Invoice
<?php
class Lr_Roundtotal_Model_Order_Invoice extends Mage_Sales_Model_Order_Invoice
{
public function pay()
{
if ($this->_wasPayCalled) {
return $this;
}
$this->_wasPayCalled = true;
$invoiceState = self::STATE_PAID;
if ($this->getOrder()->getPayment()->hasForcedState()) {
$invoiceState = $this->getOrder()->getPayment()->getForcedState();
}
$this->setState($invoiceState);
$this->getOrder()->getPayment()->pay($this);
$this->getOrder()->setTotalPaid(
round($this->getOrder()->getTotalPaid()+$this->getGrandTotal()) //Modificated
// $this->getOrder()->getTotalPaid()+$this->getGrandTotal() --Original
);
$this->getOrder()->setBaseTotalPaid(
round($this->getOrder()->getBaseTotalPaid()+$this->getBaseGrandTotal()) //Modificated
// $this->getOrder()->getBaseTotalPaid()+$this->getBaseGrandTotal() --Original
);
Mage::dispatchEvent('sales_order_invoice_pay', array($this->_eventObject=>$this));
return $this;
}
}
=> Например
Корзина
промежуточный итог: 990,00
скидка : 120.70
Общий итог: 869,00 (округлено)
Счет
промежуточный итог: 990,00
скидка : 120.70
Общий итог: 869,30 (без округления)
Я хочу, чтобы общая сумма в корзине и в счете-фактуре была одинаковой. Пожалуйста, помогите мне.
заранее спасибо