2012-11-08 10 views
5

ho creato un Observer.php per l'evento catalog_product_new_actionvalori del prodotto Set di default quando si aggiungono nuovi prodotti in 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 
      )); 
    } 

} 

Quando aggiungo un nuovo prodotto il peso, lo status, categoria fiscale e prezzo sono correttamente impostato ai miei valori predefiniti. La quantità di magazzino e la disponibilità di magazzino non sono impostate.

Come posso impostare questi valori di scorta nell'osservatore?

NOTA: utilizzo nella schermata Gestisci prodotto esistente subito dopo aver fatto clic sul pulsante Add Product.

La seguente soluzione funziona. I dati di inventario è impostato correttamente (vedi R.S. risposta):

 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); 
     } 

risposta

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

saperne di più su http://blog.magentoconnect.us/creating-magento-products-on-the-fly/

+0

Grazie! Funziona, leggermente cambiato. Vedi la domanda modificata con la soluzione. Il problema era il '$ product-> save()'. Questo dà un'eccezione 'SQLSTATE [23000]: Violazione del vincolo di integrità: 1452 Impossibile aggiungere o aggiornare una riga secondaria: fallisce un vincolo di chiave esterna. – Guus

Problemi correlati