我的价格是例如10,00€ 这个价格是100克 客户可以在数量字段中添加任何g,例如300
magento现在的小计为3000,可以,但不是我的需要。
我需要这样做: 如果价格&数量设置,获取小计/价格数量,设置新小计
我可以在哪里进行修改?
非常感谢! 丹尼斯
修改 观察者的第三次尝试(不工作atm,没有错误,没有任何反应):
class Xyz_Catalog_Model_Price_Observer
{
public function __construct()
{
}
public function apply_quantity_order($observer)
{
$order = $observer->getEvent()->getOrder();
$pricequantity = $order->getPricequantity();
if($pricequantity != ''){
$old_sub_total = $order->getTotals();
$new_sub_total = $old_sub_total / 100;
$order->setTotals($new_sub_total);
} else {}
return $this;
}
public function apply_quantity_quote($observer)
{
$quote = $observer->getEvent()->getQuote();
$pricequantity = $quote->getPricequantity();
if($pricequantity != ''){
$old_sub_total = $quote->getTotals();
$new_sub_total = $old_sub_total / 100;
$quote->setTotals($new_sub_total);
} else {}
return $this;
}
}
XML:
<?xml version="1.0"?>
<config>
<global>
<models>
<xyzcatalog>
<class>Xyz_Catalog_Model</class>
</xyzcatalog>
</models>
<events>
<sales_order_save_after>
<observers>
<xyz_catalog_price_observer>
<class>Xyz_Catalog_Model_Price_Observer</class>
<method>apply_quantity_order</method>
</xyz_catalog_price_observer>
</observers>
</sales_order_save_after>
<sales_quote_save_after>
<observers>
<xyz_catalog_price_observer>
<class>Xyz_Catalog_Model_Price_Observer</class>
<method>apply_quantity_quote</method>
</xyz_catalog_price_observer>
</observers>
</sales_quote_save_after>
</events>
</global>
</config>
答案 0 :(得分:1)
我建议尝试事件 - sales_quote_save_after和sales_order_save_after,而不是覆盖子总计算函数。
您可以通过
以观察者方式获得报价和销售$observer->getEvent()->getOrder() //for order
$observer->getEvent()->getQuote() //for quote
然后相应地修改小计。
编辑:可能只是暗示如何修改子总数。
Edit2:您必须在配置中添加事件观察器,如下所示:
<sales_order_save_after>
<observers>
<yourext>
<class>yourext/observer</class>
<method>observerMethod</method>
</yourext>
</observers>
</sales_order_save_after>
有关详细信息,请查看Customize Magento using Event/Observer
答案 1 :(得分:1)
看看@ Programmatically add product to cart with price change
public function applyDiscount(Varien_Event_Observer $observer)
{
/* @var $item Mage_Sales_Model_Quote_Item */
$item = $observer->getQuoteItem();
if ($item->getParentItem()) {
$item = $item->getParentItem();
}
// calc special price
$percentDiscount = 5;
$specialPrice = $item->getOriginalPrice() - $percentDiscount;
// Make sure we don't have a negative
if ($specialPrice > 0) {
$item->setCustomPrice($specialPrice);
$item->setOriginalCustomPrice($specialPrice);
$item->getProduct()->setIsSuperMode(true);
}
}