Pour créer un ticket support, commencez par une recherche

Prix Spéciaux (fenêtre) : ajouter un champ d'une table externe aux tables prix spéciaux


Pré-requis

  • Version 2014-03-12 de Store Commander
  • Extension SC Éditeur de grilles Pro - Version 1.0
  • Le champ doit être déjà présent en base de données


 

Objectif

Nous souhaitons ajouter le champ "Mon champ" qui est stocké dans la table ps_ma_table (cette table n'existe pas par défaut dans PrestaShop).

Nous pourrons ainsi :

  • utiliser les filtres dans les grilles pour affiner nos sélections de prix spéciaux
  • éditer en masse ce champ par le système de copier coller de SC
  • exporter rapidement la grille des prix spéciaux avec ce champ


 

Mise en place

  • Pour ajouter le champ à la liste des champs disponibles pour vos grilles produit, cliquez sur le bouton  de l'interface "Ajout de champ", puis saisissez les informations suivantes :


Quel est l'ID du champ ? : mon_champ (doit correspondre exactement au nom du champ dans la table en base de données)
 

  • SC crée le champ, il faut maintenant renseigner dans la grille :


Nom du champ : Mon champ

Table : saisissez : special

Type : Choix multiple (doit correspondre à votre type de champ, ici un champ avec des valeurs prédéfinies)
 

  •  On imagine dans cet exemple, que la table ps_ma_table contient les champs :

 

id_de_ma_table, id_product, mon_champ

 

  • Dans le panneau des propriétés avancées :

Liste de choix (uniquement si le type de champ est « Choix multiple », sinon ne rien mettre) : 

return array(0=>_l('Aucune'), 1=>_l('Valeur 1'), 2=>_l('Valeur 2'));


 

SQLSelectDataSelect :

return ' ,mt.mon_champ ';
 

SQLSelectDataLeftJoin : 

return " LEFT JOIN "._DB_PREFIX_."ma_table  mt  ON (mt.id_product= p.id_product)";

 

onAfterUpdateSQL : 

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.

 

  •  Fermez la fenêtre d'édition des champs personnalisés et ajoutez le champ à vos grilles.