我是Magento的新手。我试图通过一种简单的方式在成本上应用自定义保证金,然后获得其销售价格。我想只花费一些功能来计算20%增值税(TAX)和自定义属性保证金,假设我设定了15%。
示例:
添加或编辑产品时我有三个字段:
Cost = 100
Price = 0
margin_percentage: 15 (means 15%)
在用户添加100和保证金百分比15之后,系统首先计算20%增值税然后结果金额增加15%保证金以便我得到这个案例
成本+增值税+保证金= 138 保存后
Cost = 100
Price = 138
margin_percentage: 15
我已经编写了一个模块并尝试使用Event Observer实现此目的 - catalog_product_save_before 和 catalog_product_save_after
这是一个功能。如果此代码有效,我可以应用公式,但我尝试更新db表没有发生任何事情。我不知道出了什么问题。
我正在尝试更新此表catalog_product_flat_1
class SmashingMagazine_LogProductUpdate_Model_Observer
{
/**
* Magento passes a Varien_Event_Observer object as
* the first parameter of dispatched events.
*/
public function logUpdate(Varien_Event_Observer $observer)
{
$product = $observer->getEvent()->getProduct();
$cost = $product->getCost();
$_product = Mage::getModel('catalog/product')->load($product->getId());
$_product->setPrice($cost); // or an other price field
$_product->save();
Mage::log(
"cost {$cost} Price {$price} ",
null,
'product-updates.log'
);
}
}
我按照本教程制作了这个模块http://coding.smashingmagazine.com/2012/03/01/basics-creating-magento-module/ ...现在上面的代码出了什么问题?还给我执行超时错误。我的服务器当前执行时间是300000
希望有人引导我走向正确的方向
最好的问候
答案 0 :(得分:0)
为什么不在Magento目录/价格mobel对象中写出价格?
$_product = Mage::getModel('catalog/product')->load($product->getId());
$_product->setPrice($cost); // or an other price field
$_product->save();
而不是:
$connection = Mage::getSingleton('core/resource')->getConnection('core_write');
$connection->beginTransaction();
$fields = array();
$fields['price'] = $cost;
$where = $connection->quoteInto('entity_id =?', $id);
$connection->update('catalog_product_flat_1', $fields, $where);
$connection->commit();
答案 1 :(得分:0)
我的问题解决了..我想在上面的代码中分享一件事。上面代码中的问题我重新加载模型2次。删除此模型后
$_product = Mage::getModel('catalog/product')->load($product->getId());
现在问题解决了
全部谢谢
最好的问候