Produits - ajouter un champ d'une table externe aux tables produits (éditable, avec liste de choix)

Instructions pour ajouter une colonne dans votre interface Sc, indiquant la valeur d'un champ qui se trouve dans une table externes aux tables produits (éditable)

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

Assurez-vous de bien choisir la grille dans laquelle vous voulez ajouter votre champ - dans cet exemple, il s’agira de la Grille Produits.

Ajout du champ

Clic sur l’icône d’ajout pour créer la ligne du nouveau champ et indiquez son ID specific_action (doit correspondre exactement au nom du champ dans la base de données)

La ligne du champ est créée dans la liste. Il faut maintenant renseigner les informations :

Table

Another table

Nom

Action spécifique

Type

Choix Multiples

Rafraîchir les déclinaisons

Non

Il faut ensuite ajouter les éléments de configuration techniques, dans les propriétés spécifiques, dans le panneau de droite :

  1. Copiez/collez ce contenu dans le menu Liste de Choix et enregistrez :

return array(0=>_l('Aucune'), 1=>_l('Colis fragile, emballer avec carton A1'), 2=>_l('Colis long, emballer avec carton B3'));
  1. Copiez/collez ce contenu dans le menu SQL Select et enregistrez :

return ' ,sact.specific_action';
  1. Copiez/collez ce contenu dans le menu SQL Leftjoin et enregistrez :

return " LEFT JOIN "._DB_PREFIX_."specific_action sact ON (sact.id_product= p.id_product)";
  1. Copiez/collez ce contenu dans le menu PHP onAfterUpdateSQL et enregistrez :

if (isset($_POST["specific_action"])) {
    $sql = "SELECT * FROM " . _DB_PREFIX_ . "specific_action WHERE id_product=" . (int)$idproduct;
    $res = Db::getInstance()->ExecuteS($sql);
    $specific_action = (int)Tools::getValue('specific_action', 0);
    if (count($res)) {
        if ($specific_action) {
            $sql = "UPDATE " . _DB_PREFIX_ . "specific_action SET specific_action=" . (int)$specific_action . "  WHERE id_product=" . (int)$idproduct;
            Db::getInstance()->Execute($sql);
        } else {
            $sql = "DELETE FROM " . _DB_PREFIX_ . "specific_action WHERE id_product=" . (int)$idproduct;
            Db::getInstance()->Execute($sql);
        }
    } else {
        $sql = "INSERT INTO " . _DB_PREFIX_ . "specific_action (id_product,specific_action) VALUES (" . (int)$idproduct . "," . (int)$specific_action . ")";
        Db::getInstance()->Execute($sql);
    }
}

Fermez la fenêtre d'édition des champs personnalisés.

Le nouveau champ est présent dans la liste des champs disponibles, et vous pouvez l'ajouter à vos grilles produits.