piR-web Posted September 8, 2017 Share Posted September 8, 2017 Bonjour, Je voudrais créer une tache cron avec pour but d'ajouter ou supprimer une catégorie à un produit dont le prix promo est renseigné et que la date actuelle est comprise ente date_debut_promo et date_fin_promo. J'ai créé un fichier php avec : //Connect to the database $connection = mysql_connect($hostname, $username, $password); mysql_select_db($dbname, $connection); $product=new Product(intval($id_product)); $now = date("Y-m-d H:i:s"); if (!empty($product->prix_promo) && ($product->date_debut_promo!="0000-00-00 00:00:00" && $product->date_debut_promo <= $now) && ($product->date_fin_promo!="0000-00-00 00:00:00" && $now <= $product->date_fin_promo)) { $sql = "SELECT * FROM `"._DB_PREFIX_."category_product` WHERE id_category='113' AND id_product='".(int)$id_product."'"; $exist = Db::getInstance()->ExecuteS($sql); if(empty($exist[0]["id_product"])) { $sql = "SELECT MAX(position) AS max FROM "._DB_PREFIX_."category_product WHERE id_category='113'"; $res=Db::getInstance()->getRow($sql); $max=intval($res['max']); $sql = "INSERT INTO `"._DB_PREFIX_."category_product` (id_product,id_category,position) VALUES ('".(int)$id_product."','113','".(int)$max."')"; Db::getInstance()->Execute($sql); } } else { $sql = "DELETE FROM `"._DB_PREFIX_."category_product` WHERE `id_product`='".$id_product."' AND `id_category` = '113'"; Db::getInstance()->Execute($sql); } Je pense qu'il manque avant un select pour selectionner toutes les id-product de la table product et que pour chaque id_product il faut ajouter ou supprimer la categorie "113". Pouvez-vous m'aider ? Merci beaucoup Link to comment Share on other sites More sharing options...
BeComWeb Posted September 9, 2017 Share Posted September 9, 2017 Bonjour, Plusieurs remarques : 1. Déjà il faudrait savoir si tu travailles avec les règles de prix catalogue ou les règles de panier 2. Il vaudrait mieux concevoir ça sous la forme d'un module, d'autant que là tu ne précises pas où tu as mis ton code (quel fichier ? quel répertoire ?) 3. Utiliser mysql_connect() et mysql_select_db() est totalement inutile et dépassé, la classe Db sert à ça dans PS 4. Nativement le modèle Product ne contient pas de propriétés prix_promo, date_debut_promo,... donc à moins que tu aies modifié le core ça ne peut pas fonctionner Link to comment Share on other sites More sharing options...
piR-web Posted September 11, 2017 Author Share Posted September 11, 2017 Bonjour, Merci pour votre réponse. Mon but est d'ajouter ou supprimer automatiquement une catégorie promotion aux produits dont le prix promo est renseigné et que la date actuelle est comprise ente date_debut_promo et date_fin_promo. Ce sont des champs que j'ai ajouté au core. Que me conseillez-vous? Merci Cordialement Link to comment Share on other sites More sharing options...
BeComWeb Posted September 11, 2017 Share Posted September 11, 2017 De répondre à ma 1ère question pour commencer : "Déjà il faudrait savoir si tu travailles avec les règles de prix catalogue ou les règles de panier" Link to comment Share on other sites More sharing options...
piR-web Posted September 11, 2017 Author Share Posted September 11, 2017 Aucun des deux car j'ai créé un champ prix_promo. Merci Link to comment Share on other sites More sharing options...
BeComWeb Posted September 11, 2017 Share Posted September 11, 2017 Aucun des deux car j'ai créé un champ prix_promo. Merci Non, non, non ! Stop ! On rétro-pédale. Désolé mais là c'est n'importe quoi, je préfère le dire franchement. On parle du calcul du prix de vente ici, un élément fondamental du CMS, dispersé à des centaines d'endroits dans le fichier du core et dans le thème. Tout ce que tu vas réussir à faire c'est afficher au client un prix différent de ce qu'il va payer. Ca va créer des bugs et de l'insatisfaction. Pour faire des remises tu disposes déjà des prix spécifiques, des règles de prix catalogue et des règles de panier. Pourquoi vouloir réinventer la roue ? Carrée en plus... 1 Link to comment Share on other sites More sharing options...
piR-web Posted September 14, 2017 Author Share Posted September 14, 2017 (edited) Bonjour; Tu as le droit de dire que c'est n'importe quoi mais laisse-moi t'expliquer ce que je veux faire... Peut-être que ça adoucira tes propos . Je souhaite créer des promotions qui s'affichent pendant une période déterminée avec un prix spécial, une quantité spéciale, et plusieurs champs qui ne doivent s'afficher que pendant cette période : - un champ "quantité" - un champ "marquage" - un champ "frais de port" - un champ "frais technique" Voir capture écran ci-dessous De plus je veux que cette période passée, le "prix normal" et la "quantité normale" soit de nouveau affiché sans les champs créés. De plus je souhaite que ces promotions soient ajoutées ou supprimées automatiquement de la catégorie promotion en fonction des dates et que ces promotions soient facilement gérables en lot via le store commander. Voilà, j'espère avoir été claire. Que me conseilles-tu? Merci Edited September 14, 2017 by piR-web (see edit history) Link to comment Share on other sites More sharing options...
BeComWeb Posted September 18, 2017 Share Posted September 18, 2017 Pourquoi une catégorie spéciale alors que nativement il existe une case à cocher ("on_sale" / "Afficher un bandeau promo...") qui va automatiquement "ajouter" le produit à la page "Promotions" ? Ensuite tu utilises une règle de prix spécifique pour indiquer la quantité requise et les dates de la promo. Et toute la partie affichage peut être gérée en Smarty (dans le template donc), sans avoir à bricoler le core et la base de données. De cette manière le script pour le cron sera aussi beaucoup plus simple à écrire. 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now