osCommerce France : Accueil Forum Portail osCommerce France Réponses aux questions Foire aux contributions

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> [Resolu]Enregistrer une promotion directement dans la fiche produit
mickael34
posté 9 Oct 2013, 13:16
Message #1


Ceinture orange OSC
Icône de groupe

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

Ce message a été modifié par mickael34 - 9 Oct 2013, 14:21.


--------------------
Sur OsCommerce 2.2
Go to the top of the page
 
chti_poupon
posté 9 Oct 2013, 13:46
Message #2


Ceinture noire OSC
Icône de groupe

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
Go to the top of the page
 
mickael34
posté 9 Oct 2013, 14:20
Message #3


Ceinture orange OSC
Icône de groupe

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

Ce message a été modifié par mickael34 - 9 Oct 2013, 14:22.


--------------------
Sur OsCommerce 2.2
Go to the top of the page
 

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



RSS 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)