[Resolu]Enregistrer une promotion directement dans la fiche produit |
Bienvenue invité ( Connexion | Inscription )
[Resolu]Enregistrer une promotion directement dans la fiche produit |
9 Oct 2013, 13:16
Message
#1
|
|
Ceinture orange OSC Groupe : Membres Messages : 181 Inscrit : 3-January 08 Membre no 20263 |
Bonjour,
En m'aidant de ce post : ici j'ai voulu me donner la possibilité de pouvoir mettre un produit en promo directement dans la fiche du produit côté admin. Je m'explique sur ce que je veux faire : - je créé un nouveau produit --> RAS je ne renseigne pas de prix promo : un nouveau produit ne sera jamais en promo direct. - je veux le mettre en promo un produit --> je vais modifier le produit directement dans sa fiche et je renseigne les champs concernant la promo. J'ai "bidouillé" ce morceau de code que j'ai placé dans la partie $action == 'update_product' du fichier categories.php : Code if ($action == 'insert_product') { $insert_sql_data = array('products_date_added' => 'now()'); $sql_data_array = array_merge($sql_data_array, $insert_sql_data); tep_db_perform(TABLE_PRODUCTS, $sql_data_array); $products_id = tep_db_insert_id(); tep_db_query("insert into " . TABLE_PRODUCTS_TO_CATEGORIES . " (products_id, categories_id) values ('" . (int)$products_id . "', '" . (int)$current_category_id . "')"); } elseif ($action == 'update_product') { // ajout du prix promo $quest_query = tep_db_query("SELECT specials_id FROM " . TABLE_SPECIALS . " WHERE products_id = '" . (int)$products_id . "'"); $quest = tep_db_fetch_array($quest_query); //$specials_id = tep_db_prepare_input($HTTP_POST_VARS['specials_id']); $products_price = tep_db_prepare_input($HTTP_POST_VARS['products_price']); $specials_price = tep_db_prepare_input($HTTP_POST_VARS['specials_price']); $day = tep_db_prepare_input($HTTP_POST_VARS['day']); $month = tep_db_prepare_input($HTTP_POST_VARS['month']); $year = tep_db_prepare_input($HTTP_POST_VARS['year']); if (substr($specials_price, -1) == '%') $specials_price = ($products_price - (($specials_price / 100) * $products_price)); $expires_date = ''; if (tep_not_null($day) && tep_not_null($month) && tep_not_null($year)) { $expires_date = $year; $expires_date .= (strlen($month) == 1) ? '0' . $month : $month; $expires_date .= (strlen($day) == 1) ? '0' . $day : $day; } if(empty($quest[specials_id])){ tep_db_query("insert into " . TABLE_SPECIALS . " (products_id, specials_new_products_price, specials_date_added, expires_date, status) values ('" . (int)$products_id . "', '" . tep_db_input($specials_price) . "', now(), '" . tep_db_input($expires_date) . "', '1')"); } else { tep_db_query("update " . TABLE_SPECIALS . " set specials_new_products_price = '" . tep_db_input($specials_price) . "', specials_last_modified = now(), expires_date = '" . tep_db_input($expires_date) . "' where products_id = '" . (int)$products_id . "'"); } // fin prix promo Avec le code ci-dessus je peux : - créer un nouveau produit --> il ne se mettra pas en promo --> OK - je peux modifier un produit existant pour le mettre en promo --> la promo s'enregistrera correctement --> OK Le problème vient du cas suivant : Si je veux modifier un produit existant mais SANS le mettre en promo (ce qui peut tout à fait arriver), il m'enregistre un prix promo à 0 € ! Le souci vient surement de ma requête : Code if(empty($quest[specials_id])){ tep_db_query("insert into " . TABLE_SPECIALS . " (products_id, specials_new_products_price, specials_date_added, expires_date, status) values ('" . (int)$products_id . "', '" . tep_db_input($specials_price) . "', now(), '" . tep_db_input($expires_date) . "', '1')"); } else { tep_db_query("update " . TABLE_SPECIALS . " set specials_new_products_price = '" . tep_db_input($specials_price) . "', specials_last_modified = now(), expires_date = '" . tep_db_input($expires_date) . "' where products_id = '" . (int)$products_id . "'"); } Il faut que j'arrive à écrire si possible : on créé une promo dans 2 cas : - si elle n'existe pas encore (dans le cas contraire on update) - et si il y a bien un prix renseigné dans la case prix promo (dans le cas contraire on ne créé pas) !!! D'avance merci d'éclairer mes lanternes Ce message a été modifié par mickael34 - 9 Oct 2013, 14:21. -------------------- Sur OsCommerce 2.2
|
|
9 Oct 2013, 13:46
Message
#2
|
|
Ceinture noire OSC Groupe : TechDev Messages : 2757 Inscrit : 9-September 08 Lieu : Douai Membre no 22915 |
Bonjour
Il me semble que quand on modifie le prix normal, le produit n'est pas en promotion (ou date dépassée) et qu'en tous cas le prix promo n'est pas nul. Donc, n'enregistrer une promo que si ET(la date limite est plus tard, le prix promo est défini, le prix promo est positif) devrait résoudre la question. Chti poupon |
|
9 Oct 2013, 14:20
Message
#3
|
|
Ceinture orange OSC Groupe : Membres Messages : 181 Inscrit : 3-January 08 Membre no 20263 |
Ben tu vois c'était tout bête et j'y avais pas pensé
Je sais pas si c'est bien "écrit" mais ça marche à priori : if(empty($quest[specials_id]) AND $specials_price > 0) { Merci Ce message a été modifié par mickael34 - 9 Oct 2013, 14:22. -------------------- Sur OsCommerce 2.2
|
|
Version bas débit | Nous sommes le : 28th March 2024 - 12:22 |
Ce site est déclaré auprès de la commision Nationale de l'Informatique et des Libertés (déclaration n°: 1043896) |