Prix Spéciaux (Fenêtre) - Champ d'une table externe aux tables prix spéciaux
Instructions pour ajouter un champ dans l'interface des Prix Spéciaux et qui se trouve dans une table externe à celles des prix spéciaux
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 Fenêtre Prix Spécifiques :

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

La ligne du champ est créée dans la liste. Il faut maintenant renseigner les informations :
On imagine dans cet exemple, que la table ps_ma_table contient les champs :
id_de_ma_table, id_product, mon_champ
Il faut ensuite ajouter les éléments de configuration techniques, dans les propriétés spécifiques, dans le panneau de droite :

Copiez/collez le contenu ci-dessous dans le menu Liste de choix (uniquement si le type de champ est « Choix multiple », sinon ne rien mettre) et enregistrez :
return array(0=>_l('Aucune'), 1=>_l('Valeur 1'), 2=>_l('Valeur 2'));Copiez/collez le contenu ci-dessous dans le menu SQL Select et enregistrez :
return ' ,mt.mon_champ';Copiez/collez le contenu ci-dessous dans le menu SQL Left Join et enregistrez :
return " LEFT JOIN "._DB_PREFIX_."ma_table mt ON (mt.id_product= p.id_product)";Copiez/collez le contenu ci-dessous dans le menu PHP onAfterUpdateSQL et enregistrez :
if (isset($_POST["mon_champ"])) {
$sql = "SELECT * FROM " . _DB_PREFIX_ . "ma_table WHERE id_product=" . (int)$id_product;
$res = Db::getInstance()->ExecuteS($sql);
$mon_champ = (int)Tools::getValue('mon_champ', 0);
if (count($res)) {
if ($mon_champ) {
$sql = "UPDATE " . _DB_PREFIX_ . "ma_table SET mon_champ=" . (int)$mon_champ . " WHERE id_product=" . (int)$id_product;
Db::getInstance()->Execute($sql);
} else {
$sql = "DELETE FROM " . _DB_PREFIX_ . "ma_table WHERE id_product=" . (int)$id_product;
Db::getInstance()->Execute($sql);
}
} else {
$sql = "INSERT INTO " . _DB_PREFIX_ . "ma_table (id_product,mon_champ) VALUES (" . (int)$id_product . "," . pSQL($mon_champ) . ")";
Db::getInstance()->Execute($sql);
}
}Ce code est à adapter à vos besoins.
Vous pouvez maintenant fermer cette fenêtre.
De retour dans la fenêtre précédente, le nouveau champ se trouve dans la liste des champs disponibles (surligné en orange) et vous pouvez l’ajouter à votre grille des prix spéciaux.