1

で総計ラウンド、私はカスタムモジュールを作成し、コアモデルに私は総計を丸めたいカート&請求書

を書き換えています私の書き換えモデルコードは

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つ目は

2.Mage_Sales_Model_Orderあります例えば

<?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; 
     } 
    } 

=> _Invoice

カート

サブトータル:990.00

割引:120.70

総計:869.00(四捨五入)

請求書

サブトータル:990.00割引

:私は、カートや請求書で同じ総計をしたい869.30(四捨五入ではない)

:120.70

総計だから、助けてください

ありがとうございます

答えて

0

コアファイルをローカルに上書きした後、以下のコードを実装します。

まず、以下のようなHELPERファイルで(新しいモジュールを作成する必要がいますが、任意のモジュールヘルパーファイルでこの機能を置くことができる)一つの関数を作成していない:

Namespace_module_helper_data extends Mage_Core_Helper_Abstract 
{ 
    public function getFormatedPrice($price)  
    { 
    return Mage::getModel('directory/currency')->format($price, array('display'=>Zend_Currency::NO_SYMBOL), false);  
    } 
} 

どこその後、あなたはこの機能を使用することができますどこでもマゼンタで価格を丸める必要があります。

あなたは以下のようなヘルパー関数を使用することができます。以下のような丸い価格のため

$helper = Mage::helper('modulename'); // module name means name of the module in which you have create helper 

使用機能:

$price = 120.12456; 
echo $helper->getFormatedPrice($price); // you can get round price as per your store. 

おかげ

+0

をあなたの答えてくれてありがとう@Elsnerをしかし、これは適切ではありません注文や請求書の合計を取得する方法。 –

+0

あなたのansはフロントエンドにとって非常に便利です。これは、多くの場所での変更のために私のためには機能しません。 –

関連する問題