Javascrip / HTML formulaire de calcul

Signaler
Messages postés
35
Date d'inscription
vendredi 13 décembre 2019
Statut
Membre
Dernière intervention
18 juin 2020
-
Messages postés
35
Date d'inscription
vendredi 13 décembre 2019
Statut
Membre
Dernière intervention
18 juin 2020
-
Bonjour,

J'ai un script pour faire le calcul des prix, tout fonctionne parfaitement sauf que j'ai essayé plusieurs combinaisons différentes et je n'arrive toujours pas a faire une promotion en euro, juste en pourcentage, je sais pas pourquoi, a chaque fois que j'essaye je ne peux pas écrire sur le champs input de la promo en euro.

Les données ne sont pas entrés en base de données c'est juste pour l'affichage des chiffres avant de valider le formulaire. seul la quantité est le prix unitaire hors taxe sont inscrit en base de données.

function calcul_ht_ttc(event) // fonction de calcul
{
 var quantity = $('input[name="quantity"]').val();
 var prix_ht = $('input[name="prix_ht"]').val();
 var total_ht = $('input[name="total_ht"]').val(); 
 var taux_tva  = $('input[name="taux_tva"]').val();
 var montant_tva = $('input[name="montant_tva"]').val();
 var promo = $('input[name="montant_promo"]').val();
 var pourcentage =  $('input[name="pourcentage"]').val();
 var prix_ttc = $('input[name="prix_ttc"]').val();

 
 if(event.target.name=='prix_ttc')
 {

   var new_prix_ttc = (new_total_ht*(1+taux_tva/100)).toFixed(2);  
   $('input[name="prix_ttc"]').val(new_prix_ttc);
  
 }
 else
 {
   
   var new_promo = (pourcentage*prix_ht)*quantity/(100).toFixed(2);  
   $('input[name="montant_promo"]').val(new_promo);
   
   
   var new_total_ht = (prix_ht*quantity)-(new_promo).toFixed(2);  
   $('input[name="total_ht"]').val(new_total_ht);   

      var new_montant_tva = (new_total_ht*(taux_tva/100)).toFixed(2);  
   $('input[name="montant_tva"]').val(new_montant_tva);


   var prix_ttc = (new_total_ht+(1*new_montant_tva)).toFixed(2);  
   $('input[name="prix_ttc"]').val(prix_ttc);
   
}
$(function() // jQuery
{
 $('.myForm input').bind('keyup mouseup', calcul_ht_ttc); // appel de la fonction de calcul lors d'un événement 'keyup' ou 'mouseup'
});
 } 






<div class="modal fade" id="modal-default" >
 <form action="../process/Items.php" method="POST" class="myForm">

  <div class="modal-dialog" role="document" >
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span>
        </button>

      </div>
      <div class="modal-body">

        <div class="form-group">
          <label>Qty:</label>
          <input  type="number"  class="form-control"  id="quantity" name="quantity" value="1" step="any">
        </div>
        
        <div class="form-group">
         <label>Prix HT:</label>
         <input type="number" class="form-control" id="prix_ht"   name="prix_ht" value="" step="any">
       </div>


       <div class="row">
        <div class="col-md-6">
          <div class="form-group">
            <label>Promo %</label>
            <input  type="number" class="form-control" name="pourcentage"  value=""   step="any">

          </div>
          <!-- /.form-group -->

          <!-- /.form-group -->
        </div>

        <div class="col-md-6">
          <div class="form-group">
           <label>Promo Eur</label>
           <input  type="text" class="form-control" name="montant_promo"  value=""   step="any" >

         </div>

       </div>


     </div>

     <div class="form-group">
       <label>Total HT</label>
       <input type="number" class="form-control"   name="total_ht" value="" step="any" readonly>

     </div>

     <div class="row">
      <div class="col-md-6">
        <div class="form-group">
         <label>Tx TVA</label>
 

         <input  type="text" class="form-control"  name="taux_tva" value="  <?php echo  $vat['vat']; ?>"  readonly>


       </div>
       <!-- /.form-group -->

       <!-- /.form-group -->
     </div>

     <div class="col-md-6">
      <div class="form-group">
        <label>Montant TVA</label>
        <input type="text" class="form-control"  name="montant_tva" value="" step="any" readonly>

      </div>

    </div>


  </div>
  

  <div class="form-group">
   <label>Prix TTC:</label>
   <input type="number" class="form-control"  name="prix_ttc" value="" step="any" readonly>
 </div>

</div>


<div class="modal-footer">
  <div align="left">
    <button type="reset" class="btn btn-default" data-dismiss="modal">Cancel</button>
    <button type="submit" name="createItems" class="btn btn-space btn-primary">Ouvrir la demande</button>
  </form>
</div>
</div>
</div>
</div>
</div>

</div>  

2 réponses

Messages postés
28938
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 juillet 2020
2 609
Bonjour,

Sans regarder plus loin...
 var new_promo = (pourcentage*prix_ht)*quantity/(100).toFixed(2);

Ne penses tu pas que tu as un souci au niveau de tes parenthèses ?
Le .toFixed(2) .. s'applique à quoi à ton avis ?

bien entendu...Idem pour tes autres calculs...
 var new_promo = (pourcentage*prix_ht)*quantity/(100).toFixed(2);  

var new_total_ht = (prix_ht*quantity)-(new_promo).toFixed(2);


De plus, lorsque l'on travaille en javascript, le réflexe à avoir.. c'est de regarder la CONSOLE de son navigateur.
Je suppose que tu y verras des messages d'erreur...


Je vois également que tu as mis un attribut step sur ton champ promo
 step="any"

Sauf que... l'attribtut STEP ne sert que sur des inputs de type NUMBER ... hors toi, tu as mis un type TEXT....



PS: En Javascript il est préférable de travailler avec les ID des éléments au lieu des NAME.
Comme cela a été fait dans ta précédente question...
Pourquoi changer ??




Messages postés
35
Date d'inscription
vendredi 13 décembre 2019
Statut
Membre
Dernière intervention
18 juin 2020

Au niveau des parenthèse de calcul ? je sais, pas j'ai les bons chiffres qui s’affichent.
Pour le .toFixed(2) c'est pour l'arrondis à 2 chiffres après la virgule. j'ai pas besoin de garder les éléments NAME, sauf pour le ht, et la quantité que je dois insérer dans une table, le reste des autres champs c'est juste pour l'affichage des chiffres avant insertion.

J'ai déjà regarder avec la console, je n'ai aucun message.