2012-11-08 14 views
5

मैं घटना catalog_product_new_actionडिफ़ॉल्ट सेट उत्पाद मूल्यों जब Magento 1.7

<?php 
class Starmall_Productobserver_Model_Observer 
{ 

    public function initProduct(Varien_Event_Observer $observer) 
    { 
     $product = $observer->getEvent()->getProduct(); 
      $product->setWeight(1); 
      $product->setStatus(1); 
      $product->setTaxClassId(1); 
      $product->setPrice(1); 

      $product->setStockData(array(
        'is_in_stock' => 1, 
        'qty' => 99999 
      )); 
    } 

} 

के लिए एक Observer.php बनाया है जब मैं एक नए उत्पाद को जोड़ने के वजन, स्थिति, कर वर्ग और कीमत सही ढंग से स्थापित कर रहे हैं में नए उत्पाद को जोड़ने मेरे डिफ़ॉल्ट के लिए। स्टॉक क्यूटी और स्टॉक उपलब्धता सेट नहीं है।

मैं इन स्टॉक मूल्यों को पर्यवेक्षक में कैसे सेट कर सकता हूं?

नोट: मैं Add Product बटन पर क्लिक करने के बाद मौजूदा प्रबंधित उत्पाद स्क्रीन में उपयोग कर रहा हूं।

निम्नलिखित समाधान काम करता है। इन्वेंटरी डेटा ठीक से सेट है (आर एस जवाब देखें):

 public function initProduct(Varien_Event_Observer $observer) 
     { 
      $product = $observer->getEvent()->getProduct(); 
      $product->setWeight(1); 
      $product->setStatus(1); 
      $product->setTaxClassId(1); 
      $product->setPrice(1); 
      $product->setWebsiteIDs(array(1)); 

      $stockItem = Mage::getModel('cataloginventory/stock_item'); 
      $stockItem->assignProduct($product); 
      $stockItem->setData('is_in_stock', 1); 
      $stockItem->setData('qty', 1); 

      $product->setStockItem($stockItem); 
     } 

उत्तर

5
.... 

//$product->save(); 

$stockItem = Mage::getModel('cataloginventory/stock_item'); 
$stockItem->assignProduct($product); 
$stockItem->setData('is_in_stock', 1); 
$stockItem->setData('stock_id', 1); 
$stockItem->setData('store_id', 1); 
$stockItem->setData('manage_stock', 0); 
$stockItem->setData('use_config_manage_stock', 0); 
$stockItem->setData('min_sale_qty', 0); 
$stockItem->setData('use_config_min_sale_qty', 0); 
$stockItem->setData('max_sale_qty', 1000); 
$stockItem->setData('use_config_max_sale_qty', 0); 

//$stockItem->save(); 

पढ़ें में अधिक http://blog.magentoconnect.us/creating-magento-products-on-the-fly/

+0

धन्यवाद! यह काम करता है, थोड़ा बदल गया। समाधान के साथ संपादित प्रश्न देखें। समस्या '$ product-> save()' थी। यह एक अपवाद देता है 'एसक्यूएलएसटीएटी [23000]: ईमानदारी बाधा उल्लंघन: 1452 बच्चे की पंक्ति को जोड़ या अपडेट नहीं कर सकता: एक विदेशी कुंजी बाधा विफल हो जाती है' – Guus

0

ऐसा लगता है कि आप वास्तविक स्टॉक आइटम वस्तु जो उत्पाद वस्तु पर एक संपत्ति के रूप में सेट किया गया है के साथ काम करने की आवश्यकता होगी।

स्टॉक आइटम गुणों के संदर्भ के लिए Mage_CatalogInventory_Model_Observer::copyInventoryData()[link] देखें।

संबंधित मुद्दे