Jump to content

Tache cron : ajout ou suppression d'une catégorie à un produit


Recommended Posts

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

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

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

Aucun des deux car j'ai créé un champ prix_promo. :)

 

Merci

 

:blink:  :blink:  :blink:

 

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

  • Like 1
Link to comment
Share on other sites

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

 

 

post-1370825-0-89578400-1505376476_thumb.jpg

Edited by piR-web (see edit history)
Link to comment
Share on other sites

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.

  • Like 1
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...