Intgrazione datiSpesso abbiamo la necessità di creare dei prodotti in modo automatico leggendo magari i dati da un file CSV per scopi di test oppure per tenere sincronizzati i dati del catalogo da altre fonti. Al termine di questo tutorial avremo un sistema funzionante che carica e legge un file CSV e crea una serie di prodotti semplici. Le attività che faremo sono:

  • Leggere un file CSV da Magento
  • Caricare le immagini da codice
  • Associare un prodotto ad una categoria da codice
  • Creare un prodotto semplice

Al termine dei tutorial rilasceremo su GitHub il codice. Iniziamo a vedere come creare un prodotto in maniera programmatica in Magento.

Prima di tutto è necessario definire il “current store” con questa istruzione:

Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);

Poi possiamo iniziare a creare il prodotto:


$product = Mage::getModel('catalog/product');

try{
$product
// ->setStoreId(1) //con questa istruzione si possono impostare i dati per uno store specifico
->setWebsiteIds(array(1)) //il website ID al quale assegnare il prodotto
->setAttributeSetId(9) // Id dell'attribute SET.
->setTypeId('simple') // il tipo di prodotto
->setCreatedAt(strtotime('now')) //Data creazione del prodotto
// ->setUpdatedAt(strtotime('now')) //data di aggiornamento del prodotto

->setSku('magedevel001') //SKU
->setName('test prodotto') //nome del prodotto
->setWeight(4.0000) // il peso
->setStatus(1) //lo status (1 - enabled, 2 - disabled)
->setTaxClassId(4) //tax class
->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH) //catalog and search visibility->setPrice(11.22) //price in form 11.22

->setCost(22.33) //price in form 11.22
->setSpecialPrice(00.44) //special price in form 11.22
->setSpecialFromDate('06/1/2014') //special price from (MM-DD-YYYY)
->setSpecialToDate('06/30/2014') //special price to (MM-DD-YYYY)->setMetaTitle('test meta title 2')

->setMetaKeyword('test meta')
->setMetaDescription('test meta descrizione')

->setDescription('Descrizione estesa')
->setShortDescription('Descrizione breve')

->setStockData(array(

'use_config_manage_stock' => 0, //'Use config settings' checkbox
'manage_stock'=>1, //manage stock
'min_sale_qty'=>1, //Minimum Qty Allowed in Shopping Cart
'max_sale_qty'=>2, //Maximum Qty Allowed in Shopping Cart
'is_in_stock' => 1, //Stock Availability
'qty' => 999 //qty
)
);

$product->save();

}catch(Exception $e){
Mage::log($e->getMessage());
}

Vediamo alcuni punti di interesse.

$product->setStoreId(1) //con questa istruzione si possono impostare i dati per uno store specifico. L'elenco degli store sono disponibili nella tabella "core_store".

Altro punto interessante è l’assegnazione della classe di tassazione:

$product->setTaxClassId(4) //tax class

La classe di tassazione è gestita dalle seguenti tabelle :

  • tax_class
  • tax_calculation_rate
  • tax_calculation_rate_title
  • tax_calculation_rule
  • tax_calculation

Nel caso specifico è necessario verificare la tabella tax_class per prendere l’id della tassazione. La classe di tassazione può essere di tipo PRODUCT e di tipo CUSTOMER.

Nell’articolo seguente vedremo come caricare un file CSV in magento leggere i dati e creare un prodotto.