2015-09-23 4 views
0

Я хочу изменить значение custom custom attribute (voucher_value) настраиваемого набора атрибутов (ваучер) при добавлении в корзину. Я пробовал в событии наблюдателя checkout_cart_product_add_after. Я мог бы изменить цену, но не смог изменить значение пользовательского атрибута voucher_value.Как изменить настраиваемый атрибут настраиваемого атрибута при добавлении в корзину?

Вот моя функция

public function change_price($observer) { 
     // Get the quote item 
     $item = $observer->getQuoteItem(); 
     // Ensure we have the parent item, if it has one 
     $item = ($item->getParentItem() ? $item->getParentItem() : $item); 
     Mage::log("Item Details: ".print_r($item, true), null, 'item_before1.log'); 
     // Load the custom price 
     $price = Mage::app()->getRequest()->getPost('custom_voucher_price'); 
      if(!empty($price)){ 
        $product = Mage::getModel('catalog/product')->load($item->getProductId()); 
        $product->addAttributeUpdate('voucher_value', 39 , 1); 
        //$product->addCustomOption('voucher_value_value', 259 , $product); 
        $product->save(); 
        $voucher_discount = $product->getAttributeText('voucher_discount'); 
        $voucher_value = $product->getAttributeText('voucher_value'); 
        Mage::log("voucher_value: ".print_r($voucher_value, true), null, 'voucher_value.log'); 
        $voucher_discount_amount = 0; 
        if($voucher_discount!=null && (!empty($voucher_discount))){ 
        $voucher_discount = floatval($voucher_discount); 
        $voucher_discount_amount = $price * $voucher_discount/100; 
        } 
        else{ 
        $voucher_discount = 0; 
        } 
        $custom_price = $price - $voucher_discount_amount; 

        $item->setCustomPrice($custom_price); 

        $item->setOriginalCustomPrice($custom_price); 
        $info = $item->getOptions(); 

       $option = Mage::getModel('sales/quote_item_option') 
        ->setProductId($product->getId()) 
        ->setCode('voucher_value') 
        ->setProduct($product) // needed for EE only ? 
        ->setValue(39); 
       $item->addOption($option); 
       $product = $observer->getProduct(); 

       $item->setCustomAttribute($product->getCustomAttribute()); 

       // $item->setOptions($option);     
       // $item->setData('voucher_value_value', $price); */ 
       } 
    $item->save(); 
    // Enable super mode on the product. 
    $item->getProduct()->setIsSuperMode(true); 
} 

Пожалуйста Помощь Как изменить значение пользовательского атрибута пользовательского набора атрибутов.

ответ

0

Вы можете попробовать использовать:

$product = Mage::getModel('catalog/product')->load($item->getProductId()); 
        $product->setVoucherCode($new_value); 
        $product->save(); 
+0

метод setVoucherCode не доступен – Sagardevd

+0

Тогда попробуйте -> УстановитьДанные ('voucher_code', $ new_value); –

+0

этот пользовательский атрибут (voucher_value) имеет цены в раскрывающемся списке в backend. Я могу установить с помощью setData ('voucher_value', $ new_value); функция одно из значения из раскрывающегося списка opton, но я хочу установить пользовательское значение, введенное пользователем на лицевой стороне – Sagardevd

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