Problème variable en PHP

Résolu
Chris2009 -  
Marco la baraque Messages postés 1030 Statut Contributeur -
Bonjour,

Je n'arrive pas à solutionner un petit problème dans ce petit bout de script PHP:

// la variable $reduc permet de tester s'il y a une promo
$price = tep_add_tax($products['products_price'], tep_get_tax_rate($products['products_tax_class_id']));

if($special_result['specials_new_products_price'] == '' ) {
$discount_price = '' ;
$regular_price = $price;
$reduc = false;
} else {
// $discount_price = $special_result['specials_new_products_price'];
$discount_price = tep_add_tax($special_result['specials_new_products_price'], tep_get_tax_rate($special_result['products_tax_class_id']));

// $price = tep_add_tax($products['products_price'], tep_get_tax_rate($products['products_tax_class_id']));

$regular_price = $price;
$reduc = true;
}

Si une promo existe le prix normal est le même que le prix barré ??

Y a t'il un programmateur dans la salle ?
Configuration: Windows Vista
Internet Explorer 6.0

8 réponses

  1. Marco la baraque Messages postés 1030 Statut Contributeur 329
     
    Ok, je comprends mieux.

    La solution :
    ...
    } else {
    $discount_price = $price;
    
    $regular_price = tep_add_tax($special_result['specials_new_products_price'], tep_get_tax_rate($special_result['products_tax_class_id']));­
    $reduc = true;
    } 
    ...
    


    Pourquoi?
    Parce qu'en fait, ce qui est stocké dans la base de donnée ($special_result['products_price']), c'est le prix de vente. C'est à dire le prix auquel l'article va être vendu :
    - s'il n'y a pas de réduc, c'est le prix de base
    - s'il y a une réduc, c'est le prix soldé

    Ensuite, pour obtenir le prix originel, il faut rajouter à ce prix la valeur de la démarque/

    Cordialement,
    1
  2. Marco la baraque Messages postés 1030 Statut Contributeur 329
     
    Bonsoir,
    Oui. Si une réduc existe, le seul prix qui change est le prix discount apparemment.

    Cordialement,
    0
    1. Chris2009
       
      Sauf que là le prix Normal ce met au même prix que le prix Barré ??
      0
      1. Marco la baraque Messages postés 1030 Statut Contributeur 329 > Chris2009
         
        Et bien, si ton prix est barré alors qu'il n'y a pas de réduction (ce qui est un peu bizarre tu m'avoueras), d'après le peu de code qu'on a, je serais enclin à répondre OUI à ta question.

        Cordialement,
        0
    2. Chris2009
       
      Bonsoir Marco la baraque et merci de te pencher sur mon problème.

      Un petit exemple pour mieux expliquer:

      Produit 100€ pas de promo

      Case 1 = prix de Vente = 100€
      Case 2 = prix barré = vide

      Produit 100€ avec -20%

      Case 1 = prix de Vente = 80€
      Case 2 = prix barré = 80€

      C'est là que ça marche pas !!
      0
      1. Marco la baraque Messages postés 1030 Statut Contributeur 329 > Chris2009
         
        Effectivement, ça n'a pas l'air d'être bon.
        Cependant, avec le code que tu nous montres, on ne peut pas déterminer d'où vient le problème, ce n'est pas suffisant.

        Cordialement,
        0
  3. chris-2009 Messages postés 354 Statut Membre 7
     
    Effectivement, je viens de voir que les quelques lignes au dessus vont avec ce code :

    $special_query = tep_db_query("SELECT specials_new_products_price , expires_date , specials_date_added FROM " . TABLE_SPECIALS . " WHERE products_id = " . $products['products_id'] . " AND status = '1' limit 1");
    $special_result = tep_db_fetch_array($special_query);
    if ($special_result['specials_new_products_price'] > 0) $products['products_price'] = $special_result['specials_new_products_price'];

    $product_num++;

    //calcul des prix
    // la variable $reduc permet de tester s'il y a une promo
    $price = tep_add_tax($products['products_price'], tep_get_tax_rate($products['products_tax_class_id']));

    if($special_result['specials_new_products_price'] == '' ) {
    $discount_price = '' ;
    $regular_price = $price;
    $reduc = false;
    } else {
    // $discount_price = $special_result['specials_new_products_price'];
    $discount_price = tep_add_tax($special_result['specials_new_products_price'], tep_get_tax_rate($special_result['products_tax_class_id']));

    // $price = tep_add_tax($products['products_price'], tep_get_tax_rate($products['products_tax_class_id']));

    $regular_price = $price;
    $reduc = true;
    }

    Ps: je viens de m'enregistrer, c'est pour ça la petite différence de pseudo
    0
  4. chris-2009 Messages postés 354 Statut Membre 7
     
    Et ci joint le code d'origine que j'ai modifié car la TVA n'était pas prise en compte sur les promo:

    $special_query = tep_db_query("SELECT specials_new_products_price , expires_date , specials_date_added FROM " . TABLE_SPECIALS . " WHERE products_id = " . $products['products_id'] . " AND status = '1' limit 1");
    $special_result = tep_db_fetch_array($special_query);
    if ($special_result['specials_new_products_price'] > 0) $products['products_price'] = $special_result['specials_new_products_price'];

    $product_num++;

    //calcul des prix
    // la varaible $reduc permet de tester s'il y a une promo
    $price = tep_add_tax($products['products_price'], tep_get_tax_rate($products['products_tax_class_id']));
    if($special_result['specials_new_products_price'] == '' ) {
    $discount_price = '' ;
    $regular_price = $price;
    $reduc = false;
    } else {
    $discount_price = $special_result['specials_new_products_price'];
    $regular_price = $price;
    $reduc = true;
    }

    Si tu veux les fichiers complets, je peux aussi mais le problème vient de ces quelques lignes (enfin je pense)
    0
    1. Marco la baraque Messages postés 1030 Statut Contributeur 329
       
      Et bien écoute, vu que $price n'est pas modifié lorsque tu as une réduction, et que dans tous les cas $regular_price = $price, je ne comprends pas.

      Peut-être est-ce ta fonction $price = tep_add_tax($products['products_price'], tep_get_tax_rate($products['products_tax_class_id'])); qui fournit un mauvais résultat...

      J'en doute, mais je ne vois que ça...

      Cordialement,
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. chris-2009 Messages postés 354 Statut Membre 7
     
    En commentant cette ligne je me retrouve avec les prix inversés :

    // if ($special_result['specials_new_products_price'] > 0) $products['products_price'] = $special_result['specials_new_products_price'];

    Le prix barré devient le prix de vente

    Le prix de vente devient le prix barré

    J'ai l'impression d'avancer mais dans le désordre (amis Turfiste Bonjour)
    0
    1. Marco la baraque Messages postés 1030 Statut Contributeur 329
       
      ?
      Je ne comprends pas... Le prix de vente et le prix barrés sont égaux, comment vois-tu qu'ils sont inversés ?
      0
  7. chris-2009 Messages postés 354 Statut Membre 7
     
    En commentant la ligne, j'arrive à avoir le prix Normal et le prix Promo mais pas dans les bonnes cases :

    Case 1 = prix barré = 100€ qui devrait être prix de vente
    Case 2 = prix de Vente = 80€ qui devrait être prix promo

    J'en perds mes sens !!
    0
  8. chris-2009 Messages postés 354 Statut Membre 7
     
    Je test et je te fait mon rapport LOL
    0
  9. chris-2009 Messages postés 354 Statut Membre 7
     
    Je te remercie beaucoup, je ne vois plus de BUG.

    Si tu as du temps libre, j'ai plein de petite co.....eries qui pourrait animer tes soirées.

    Encore Merci
    0
    1. Marco la baraque Messages postés 1030 Statut Contributeur 329
       
      Euh...
      Bah à l'occasion postes tes nouveaux problèmes sur le forum. Si ça me parle je répondrai.
      Après des fois ça m'arrive aussi d'avoir des projets pour animer mes soirées ;)

      A la prochaine,
      0