Étendez les possibilités de l’import avec vos propres champs

Accédez à la partie PRO de l’outil pour l’ajout de champs personnalisés :

Pour accéder à la partie PRO, cliquez sur l'icône + de la colonne de droite intitulée 'Champs Disponibles'

Importer un champ de langue dans une table

Assurez-vous de bien choisir la grille dans laquelle vous voulez ajouter votre champ - dans cet exemple, il s’agira de la grille Catalogue : Import Produit.

Ajout du champ

Clic sur l’icône d’ajout pour créer la ligne du nouveau champ et indiquez son ID “my_field” dans cet exemple précis.

L’ID du champ doit correspondre exactement au nom du champ dans la table de la base de données

La ligne du champ est créée dans la liste. Vous devez voir deux colonnes comme ceci :

ID

Nom

my_field

my_field

Le nom du champ peut être modifié par la suite si besoin.

Ajout des requêtes

Dans le panneau des Propriétés Avancées à droite :

Sélectionner le menu Processus d'import des déclinaisons, et renseignez :

if (in_array($switchObject, ['my_field']))
{
    $value = $GLOBALS['import_value'];
    $id_lang = (int) $getIDlangByISO[$mappingData['CSV2DBOptions'][$firstLineData[$key]]];
    $id_prd = (!empty($id_product) ? (int) $id_product : (int) $newprod->id);
    if (!empty($id_lang))
    {
        $sql = 'SELECT COUNT(*) FROM '._DB_PREFIX_.'mytable_lang
                WHERE id_product='.$id_prd.'
                AND id_lang = '.$id_lang.'
                AND id_shop = '.(int) $id_shop;
        if (Db::getInstance()->getValue($sql))
        {
            Db::getInstance()->execute('UPDATE '._DB_PREFIX_.'mytable_lang
                        SET `'.$switchObject."`='".pSQL($value)."'
                        WHERE id_product=".$id_prd.'
                        AND id_lang = '.$id_lang.'
                        AND id_shop = '.(int) $id_shop);
        }
        else
        {
            Db::getInstance()->execute('INSERT INTO '._DB_PREFIX_.'mytable_lang (id_product, id_lang, id_shop, `'.$switchObject.'`)
                        VALUES ('.$id_prd.','.$id_lang.','.(int) $id_shop.",'".pSQL($value)."')");
        }
    }
}

ATTENTION : pour les tables product_lang et product_attribute_lang, ne pas ajouter ce bloc de code dans les données ci-dessus :

else
        {
            Db::getInstance()->execute('INSERT INTO '._DB_PREFIX_.'mytable_lang (id_product, id_lang, id_shop, `'.$switchObject.'`)
                        VALUES ('.$id_prd.','.$id_lang.','.(int) $id_shop.",'".pSQL($value)."')");
        }

- Sélectionner Langue sélectionnable, et ajoutez le nom du champ (séparés par une virgule si plusieurs champs à saisir). Exemple : last_field, my_field.

Ce code est à adapter selon vos besoins.

N’oubliez pas de l’enregistrer en cliquant sur ce bouton

Fermez la fenêtre d'édition des champs personnalisés et utilisez le champ dans votre mapping d'import.

Ajouter un champ de la table ps_product

Assurez-vous de bien choisir la grille dans laquelle vous voulez ajouter votre champ - dans cet exemple, il s’agira de la grille Catalogue : Import Produit.

Ajout du champ

Clic sur l’icône d’ajout pour créer la ligne du nouveau champ et indiquez son ID my_field dans cet exemple précis.

L’ID du champ doit correspondre exactement au nom du champ dans la table de la base de donnéestenant renseigner dans la grille :

La ligne du champ est créée dans la liste. Vous devez voir deux colonnes comme ceci :

ID

Nom

my_field

my_field

Le nom du champ peut être modifié par la suite si besoin.

Ajout des requêtes

Dans le panneau des Propriétés Avancées à droite :

- sélectionner le menu Processus d'import des déclinaisons, et renseignez :

if ($switchObject == 'my_field') {
    $value = $GLOBALS['import_value'];
    $id_prd = (!empty($id_product) ? (int)$id_product : (int)$newprod->id);
    if (!empty($id_prd)) {
        $sql = "UPDATE " . _DB_PREFIX_ . "product SET `" . $switchObject . "`='" . psql($value) . "' WHERE id_product=" . (int)$id_prd;
	Db::getInstance()->Execute($sql);
    }
}}

Ce code est à adapter à vos besoins.

N’oubliez pas de l’enregistrer en cliquant sur ce bouton :

Fermez la fenêtre d'édition des champs personnalisés et utilisez le champ dans votre mapping d'import.

Importer dans une déclinaison produit

Objectif

Nous souhaitons importer une information (valeur numérique) à un produit depuis un fichier CSV. Si le produit n'a pas de déclinaison, c'est le champ de la table ps_product qui est mis à jour. Si le produit a des déclinaisons, on force la valeur du produit de base à 0 et on met à jour la déclinaison concernée.

Assurez-vous de bien choisir la grille dans laquelle vous voulez ajouter votre champ - dans cet exemple, il s’agira de la grille Catalogue : Import Produit.

Ajout du champ

Clic sur l’icône d’ajout pour créer la ligne du nouveau champ et indiquer son ID my_field dans cet exemple précis.

L’ID du champ doit correspondre exactement au nom du champ dans la table de la base de données

La ligne du champ est créée dans la liste. Vous devez voir deux colonnes comme ceci :

ID

Nom

my_field

my_field

Le nom du champ peut être modifié par la suite si besoin.

Ajout des requêtes

Dans le panneau des Propriétés Avancées à droite :

- Sélectionner le menu Processus d'import, et renseignez :

if ($switchObject == 'my_field' && $GLOBALS['import_value'] != '')
{
    $id_prd = (!empty($id_product) ? (int) $id_product : (int) $newprod->id);
    Db::getInstance()->execute('UPDATE '._DB_PREFIX_.'product 
                SET `'.$switchObject."`='".importConv2Float($GLOBALS['import_value'])."' 
                WHERE id_product=".(int) $id_prd);
}

- Sélectionner le menu Processus d'import des déclinaisons, et renseignez :

if ($switchObject == 'my_field' && isCombinationWithID() && $GLOBALS['import_value'] != '')
{
    $id_prd = (!empty($id_product) ? (int) $id_product : (int) $newprod->id);
    Db::getInstance()->execute('UPDATE '._DB_PREFIX_.'product SET `'.$switchObject.'`=0 WHERE id_product='.(int) $id_prd);
    Db::getInstance()->execute('UPDATE '._DB_PREFIX_.'product_attribute SET `'.$switchObject."`='".importConv2Float($GLOBALS['import_value'])."' WHERE id_product_attribute=".(int) $id_product_attribute);
}

Ce code est à adapter à vos besoins.

N’oubliez pas de l’enregistrer en cliquant sur ce bouton

Fermez la fenêtre d'édition des champs personnalisés et utilisez le champ dans votre mapping d'import.

Importer un champ dans une table (insert et update)

Assurez-vous de bien choisir la grille dans laquelle vous voulez ajouter votre champ - dans cet exemple, il s’agira de la grille Catalogue : Import Produit.

Ajout du champ

Clic sur l’icône d’ajout pour créer la ligne du nouveau champ et indiquez son ID “my_field” dans cet exemple précis.

L’ID du champ doit correspondre exactement au nom du champ dans la table de la base de données

La ligne du champ est créée dans la liste. Vous devez voir deux colonnes comme ceci :

ID

Nom

my_field

my_field

Le nom du champ peut être modifié par la suite si besoin.

Ajout des requêtes

Dans le panneau des Propriétés Avancées à droite :

- Sélectionner le menu Processus d'import des déclinaisons, et renseignez :

if (in_array($switchObject, ['my_field'])) {
    $value = $GLOBALS['import_value'];
    $id_prd = (!empty($id_product) ? (int)$id_product : (int)$newprod->id);
    
    $sql = 'SELECT COUNT(*) 
            FROM ' . _DB_PREFIX_ . 'my_table
            WHERE id_product=' . $id_prd;
    if (Db::getInstance()->getValue($sql)) {
        Db::getInstance()->execute('UPDATE ' . _DB_PREFIX_ . 'my_table
                                        SET `' . $switchObject . "`='" . pSQL($value) . "'
                                        WHERE id_product=" . $id_prd);
    } else {
        Db::getInstance()->execute('INSERT INTO ' . _DB_PREFIX_ . 'my_table (id_product, `' . $switchObject . '`)
                                         VALUES (' . $id_prd . ',"' . pSQL($value) . '")');
    }
}

Ce code est à adapter à vos besoins.

N’oubliez pas de l’enregistrer en cliquant sur ce bouton

Fermez la fenêtre d'édition des champs personnalisés et utilisez le champ dans votre mapping d'import.