Étendez les possibilités de l'export 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'

Exporter un champ provenant d'une table externe

Pré-requis

Le champ doit être déjà présent en base de données et dans un override de la classe 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 : Export 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'export et renseignez :

if (in_array($switchObject, ['my_field']))
{
    $sql = 'SELECT `'.$switchObject.'` 
            FROM '._DB_PREFIX_.'my_table 
            WHERE id_product='.(int) $p->id;
    $field = Db::getInstance()->getValue($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'export.

Exporter un champ de langue de la classe Product

Pré-requis

Le champ doit être déjà présent en base de données et dans un override de la classe 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 : Export 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 Langue sélectionnable et renseignez :

my_field

- sélectionner le menu Processus d'export et renseignez :

if (in_array($switchObject, ['my_field'])) { $field = $p->my_field; }

Cas particulier :

Si le champ est présent dans la base de donnée mais que l'override n'a pas été fait dans la classe Product. Alors il est quand même possible d'aller chercher sa valeur en ajoutant du code qui produise une requête SQL plutôt que d'utiliser l'objet Product.

if ($switchObject == 'my_field') {
    $field = '';
    $sql = "SELECT `".$switchObject."` FROM " . _DB_PREFIX_ . "product_lang
            WHERE id_product=" . (int)$id_product."
            AND id_lang=".(int)$getIDlangByISO[$f['lang']]."
            AND id_shop=".(int) $selected_shops_id;

        $field = (string)Db::getInstance()->getValue($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'export.

Exporter un champ de la classe Product

Pré-requis

Le champ doit être déjà présent en base de données et dans un override de la classe 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 : Export 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

Ajout des requêtes

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

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

if (in_array($switchObject, array('my_field'))) { $field = $p->my_field; }

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'export.

Exporter le nombre de ventes produits sur une période

Assurez-vous de bien choisir la grille dans laquelle vous voulez ajouter votre champ - dans cet exemple, il s’agira de la grille Catalogue : Export 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.

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.

Ici nous voulons exporter le nombre de ventes pour la période 2025-01-01 au 2025-09-01

Ajout des requêtes

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

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

if (in_array($switchObject, ['my_field']))
{
    $sql = 'SELECT COALESCE(SUM(od.product_quantity),0) AS nb_ventes
            FROM `'._DB_PREFIX_.'order_detail` od
            RIGHT JOIN `'._DB_PREFIX_.'orders` o ON (od.id_order = o.id_order)
            WHERE od.product_id = '.(int) $p->id.' 
            AND o.valid = 1 
            AND o.date_add BETWEEN "2025-01-01 00:00:00" AND "2025-09-01 00:00:00"';
    $field = (int) Db::getInstance()->getValue($sql);
}

Exporter l'intervalle de jours depuis la dernière commande

Assurez-vous de bien choisir la grille dans laquelle vous voulez ajouter votre champ - dans cet exemple, il s’agira de la grille Catalogue : Export 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.

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'export et renseignez :

if (in_array($switchObject, ['my_field']))
{
    $sql = '(SELECT DATEDIFF(NOW(),o.date_add)
                FROM '._DB_PREFIX_.'orders o
                WHERE o.id_order IN (SELECT DISTINCT(od.id_order)
                                    FROM '._DB_PREFIX_."order_detail od
                                    WHERE od.product_id = '".(int) $p->id."')
                ORDER BY o.date_add DESC
                LIMIT 1)";
    $field = (int)Db::getInstance()->getValue($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'export.

Ajouter un champ 'déclinaison oui/non'

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

Ajout du champ

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

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

ID

Nom

has_combi

has_combi

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'export et renseignez :

if (in_array($switchObject, ['has_combi']))
{
    $sql = "SELECT IF(COUNT(*)>0, '".pSQL(_l('Yes'))."', '".pSQL(_l('No'))."')
            FROM `"._DB_PREFIX_."product_attribute`
            WHERE id_product = '".(int) $p->id."'";
    $field = Db::getInstance()->getValue($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'export.