2014-01-18 3 views
0

Я новичок в 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 наблюдателя - 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

Почему вы не пишите цену в каталоге Magento/цена объекта MÖBEL?

$_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(); 
+0

'функция productUpdate общественности (Varien_Event_Observer $ наблюдатель) { $ продукта = $ наблюдатель> GetEvent () -> getProduct(); \t \t $ cost = $ product-> getCost(); $ price = $ product-> getprice(); \t \t $ id = $ product-> getEntityId(); \t \t $ _product = Mage :: getModel ('catalog/product') -> load ($ product-> getId()); $ _product-> setPrice ($ cost); // или другое поле цены $ _product-> save(); } 'спасибо Roy .. я тестирую это, но цена не обновляется до сих пор пустым полем. Я также отключил кеш – lordman

+0

См. Этот пример [pastebin example] (http://pastebin.com/znEip1Uy), которые имеют некоторые протоколирования. Не могли бы вы посмотреть, что показывает вам журнал? –

+0

Я пытаюсь, но ... Неустранимая ошибка: максимальное время выполнения 30 секунд превышено в /home3/rahman12/public_html/magento/app/code/core/Mage/Catalog/Model/Resource/Eav/Attribute.php в строке 255 – lordman

0

моя проблема решена .. одна вещь, которую я хочу разделить выше кода. проблема в приведенном выше коде i перезагружает модель 2 раза.после удаления этой модели

$_product = Mage::getModel('catalog/product')->load($product->getId()); 

Теперь проблема решена

Спасибо всем

С наилучшими пожеланиями

Смежные вопросы