如何在成本上应用自定义属性值

时间:2014-01-18 10:58:44

标签: php mysql magento

我是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

希望有人引导我走向正确的方向

最好的问候

2 个答案:

答案 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());

现在问题解决了

全部谢谢

最好的问候