1

I So Endsumme wollen Runden habe ich benutzerdefinierte Modul erstellen und Core-ModelleRunde Gesamtsumme erhalten in Warenkorb & Rechnung

Meine Rewrite Modell Code umschreiben ist unter

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

und zweite ist

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

=> Zum Beispiel

Wagen

Teilsumme: 990.00

Rabatt: 120,70

Endsumme: 869,00 (gerundet)

Rechnung

Teilsumme: 990.00

Rabatt: 120,70

Endsumme: 869,30 (nicht gerundet)

I gleiche Endsumme in Karre und in Rechnung wollen Also, bitte helfen Sie mir

Vielen Dank im Voraus

Antwort

0

Sobald Sie die Kerndatei in local überschreiben, implementieren Sie den folgenden Code.

Zunächst wie unter einer Funktion in der HELFER-Datei erstellen (keine Notwendigkeit, neues Modul zu erstellen, aber Sie können diese Funktion in jeder Modul Hilfsdatei) setzen:

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

dann können Sie nur diese Funktion verwenden, in denen Sie müssen den Preis in jedem wo in Magento runden.

können Sie Hilfsfunktion verwenden wie unten:

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

Verwenden Sie die Funktion für Rund Preis wie unten:

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

Dank

+0

Dank @Elsner für Ihre Antwort Aber dies ist nicht richtig Weg, um im Auftrag oder in der Rechnung zu kommen. –

+0

Ihr ans ist sehr nützlich für Front-End. Das wird bei mir wegen vieler Änderungen nicht funktionieren. –