Ich möchte der Gesamtsumme in Magento einen zusätzlichen Betrag hinzufügen. Auf der Checkout-Seite sieht der Abschnitt zur Bestellüberprüfung folgendermaßen aus:
Diese zusätzlichen Kosten hängen von einigen Bedingungen ab.
Meine Frage lautet: Wie kann ich die Gesamtsumme auf der Checkout-Seite ändern? Dafür habe ich Folgendes getan: Ich erstelle ein Modul. Bitte schauen Sie meinen Code:
app / code / local / Locwiseship / Customprice / etc / config.xml
<?xml version="1.0"?>
<config>
<modules>
<Locwiseship_Customprice>
<version>1.0.10</version>
</Locwiseship_Customprice>
</modules>
<global>
<events>
<!-- Création éventuelle du lien de parrainage lors de la commande -->
<sales_quote_collect_totals_after>
<observers>
<set_custom_price_locwiseship>
<type>singleton</type>
<class>Locwiseship_Customprice_Model_Sales_Quote_Address_Total_Mytotal</class>
<method>collect</method>
<method>fetch</method>
</set_custom_price_locwiseship>
</observers>
</sales_quote_collect_totals_after>
</events>
</global>
</config>
app / code / local / Locwiseship / Customprice / Model / Observer.php
<?php
/**
* @category Locwiseship
* @package Locwiseship_Customprice
*/
class Locwiseship_Customprice_Model_Sales_Quote_Address_Total_Mytotal
extends Mage_Sales_Model_Quote_Address_Total_Abstract
{
public function __construct()
{
$this->setCode('mytotal');
}
public function collect(Mage_Sales_Model_Quote_Address $address)
{
parent::collect($address);
foreach ($this->_getAddressItems($address) as $item) {
// These two lines represent whatever logic you're
// using to calculate these amounts
$baseAmt = 10;
$amt = 10;
// Set the item's total
$item->setBaseMytotalAmount($baseAmt);
$item->setMytotalAmount($amt);
// These methods automatically take care of summing
// "mytotal_amount" on the quote address
$this->_addBaseAmount($baseAmt);
$this->_addAmount($amt);
}
return $this;
}
public function fetch(Mage_Sales_Model_Quote_Address $address)
{
// Naturally, this exists on the quote address because "collect" ran already
$amt = $address->getMytotalAmount();
if ($amt != 0) {
$address->addTotal(array(
'code' => $this->getCode(),
'title' => Mage::helper('Locwiseship_Customprice')->__('My Total'),
'value' => $amt
));
}
return $this;
}
}
app / etc / modules / Locwiseship_Customprice.xml
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<Locwiseship_Customprice>
<active>true</active>
<codePool>local</codePool>
</Locwiseship_Customprice>
</modules>
</config>
Thais ist mein Code. Aber nichts ist passiert. Das funktioniert nicht. Ist das der richtige Ansatz? Wie kann ich das zum Laufen bringen? Bitte helfen Sie mir .. Ich verwende Magento 1.9.0.1
quelle
Antworten:
Ich würde nicht empfehlen, dies mit einem Beobachter zu tun. Sie sollten diese neue Summe als neue Spalte zu
sales_flat_quote
undsales_flat_order
hinzufügen (Sie können diese neue Spalte auch zu Rechnung und Gutschrift hinzufügen).Dies habe ich getan, als ich eine zusätzliche Summe hinzufügen musste, um das Guthaben der Kunden anzuzeigen. In Ihrem müssen
config.xml
Sie Folgendes hinzufügen:Dann sollten Ihre Blockklassen folgendermaßen aussehen:
Hier haben Sie einige nette Links mit einer detaillierteren Erklärung: http://www.classyllama.com/blog/unravelling-magentos-collecttotals-example http://astrio.net/blog/magento-development-add-total-row -Auschecken/
quelle