Suivant la même méthodologie que l’import export des commentaires clients, nous allons voir à présent comment importer/ exporter les produits complémentaires.

Nous partons du postulat que nous créons un nouveau module « Module_Dataflow »
( les étapes de création du module ne seront pas détaillées )

Cette méthode fonctionne pour les éléments suivants :

  • Produits apparentés
  • Ventes incitatives
  • Ventes croisées

 

Voici le xml pour l’export des produits complémentaires

<action type="mymodule_dataflow/convert_parser_LinkedProducts" method="unparse">
<!-- Filtrage par produit <var name="product_id" >157</var> -->
<!-- Filtrage par type export ( upsell|crossel|related) defaut : upsell ) <var name="type">upsell</var> -->
</action>
<action type="dataflow/convert_mapper_column" method="map">
</action>
<action type="dataflow/convert_parser_csv" method="unparse">
<var name="delimiter"><![CDATA[;]]></var>
<var name="enclose"><![CDATA["]]></var>
<var name="fieldnames">true</var>
</action>
<action type="dataflow/convert_adapter_io" method="save">
<var name="type">file</var>
<var name="path">var/export</var>
<var name="filename"><![CDATA[exports-produits-complementaires.csv]]></var>
</action>

Voici le xml d’import des produits ( Le type d’import est déterminé par le nom des colonnes du fichier )

<action type="dataflow/convert_adapter_io" method="load">
<var name="type">file</var>
<var name="path">var/import</var>
<var name="filename"><![CDATA[produits complementaires.csv]]></var>
<var name="format"><![CDATA[csv]]></var>
</action>
<action type="dataflow/convert_parser_csv" method="parse">
<var name="delimiter"><![CDATA[;]]></var>
<var name="enclose"><![CDATA["]]></var>
<var name="fieldnames">true</var>
<var name="number_of_records">1</var>
<var name="decimal_separator"><![CDATA[.]]></var>
<var name="adapter">mymodule_dataflow/convert_parser_LinkedProducts</var>
<var name="method">parse</var>
</action>

Voici le code qui gère l’import

<?php
 
/**
* Import des produits apparentés
* Import des ventes incitatives
* Import des ventes croisées
*
*/
class MyModule_DataFlow_Model_Convert_Parser_LinkedProducts extends Mage_Eav_Model_Convert_Parser_Abstract {
 
 
 
public function parse() {
 
$batchModel = Mage::getSingleton('dataflow/batch');
 
$batchImportModel = $batchModel->getBatchImportModel();
$importIds = $batchImportModel->getIdCollection();
 
foreach ($importIds as $importId) {
$batchImportModel->load($importId);
$importData = $batchImportModel->getBatchData();
$this->saveRow($importData);
}
}
 
/**
* Import des données
* @param type $importData
*/
public function saveRow($importData) {
 
//En fonction du nom de la colonne  ( upsell_1 | related_1 | crossel_1 ) on détermine quel import doit être exécuté
if (array_key_exists('related_1', $importData)){
$mode = 'related';
$method = 'setRelatedLinkData';
}
else if (array_key_exists('crossel_1', $importData)) {
$mode = 'crossel';
$method = 'setCrossSellLinkData';
}
else {
$mode = 'upsell';
$method = 'setUpSellLinkData';
}
 
//Chargement du produit
$productId = Mage::getModel('catalog/product')->getIdBySku($importData['sku']);
 
if (!