IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Calcul de taxe


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2006
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Calcul de taxe
    Bonjour,

    Pourriez-vous m'aider, car ça fait 2 jour que je cherche l'erreur de mon script pour calculer la TVA:

    Voici le script:
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    <script language="javascript"><!--
    var tax_rates = new Array();
    tax_rates["1"] = 7.6;
     
    function doRound(x, places) {
      return Math.round(x * Math.pow(10, places)) / Math.pow(10, places);
    }
     
     
    function updateGrossAT(nomm,nommGross,tax) {
     
    var tax_rates = new Array();
    tax_rates["1"] = 7.6;
     
     
    var selected_value = document.forms["new_product"].tax.selectedIndex;
    var parameterVal = document.forms["new_product"].tax[selected_value].value;
     
      if ( (parameterVal > 0) && (tax_rates[parameterVal] > 0) ) {
        var taxRate = tax_rates[parameterVal];
      } else {
        var taxRate = 0;
      }
     
      var grossValue = document.forms["new_product"].nomm.value;
     
      if (taxRate > 0) {
        grossValue = grossValue * ((taxRate / 100) + 1);
      }
     
      document.forms["new_product"].nommGross.value = doRound(grossValue, 4);
    }
     
     
    function updateNetAT(nomm,nomGross,tax) {
     
    var tax_rates = new Array();
    tax_rates["1"] = 7.6;
     
      var selected_value = document.forms["new_product"].tax.selectedIndex;
      var parameterVal = document.forms["new_product"].tax[selected_value].value;
     
      if ( (parameterVal > 0) && (tax_rates[parameterVal] > 0) ) {
        var taxRate = tax_rates[parameterVal];
      } else {
        var taxRate = 0;
      }
     
      var netValue = document.forms["new_product"].nomGross.value;
     
      if (taxRate > 0) {
        netValue = netValue / ((taxRate / 100) + 1);
      }
     
      document.forms["new_product"].nomm.value = doRound(netValue, 4);
    }
    //--></script>

    Et dans le BODY :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    <input size="6" type="text" name="att_price[0]" value="" onchange="updateGrossAT("att_price[0]","att_price_gross[0]","products_tax_class_id[0]")"> 
     
     
    <select name="products_tax_class_id[0]" onchange="updateGrossAT("att_price[0]","att_price_gross[0]","products_tax_class_id[0]")">
    <option value="0">--aucun--</option>
    <option value="1" SELECTED>TVA</option>
    </select>
     
    <input type="text" name="att_price_gross[0]" OnKeyUp="updateNetAT("att_price[0]","att_price_gross[0]","products_tax_class_id[0]")">

    Merci d'avance pour votre aide.

  2. #2
    Membre régulier
    Inscrit en
    Juin 2005
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 243
    Points : 89
    Points
    89
    Par défaut
    Salut et bienvenu sur ce forum !!

    ça bloc où ? Tu as quel(s) message(s) d'erreur ? Sinon, peux tu mettre ton code entre balises '' car là c'est pas facile à lire...

    Merci et bonne semaine !

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2006
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Bonsoir,

    Lors du chargement il indique l'icone d'erreur jaune, puis lorsque le chargement est totalement effectué, il ne m'indique aucune erreur de la page, mais mais il ne fonctionne pas

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Bonjour,

    Tu dois pouvoir faire avec ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    <!DOCTYPE html 
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
      <head>
        <title>Titre</title>
    		<meta http-equiv="Content-type" content="text/html; charset=ISO-8859-1" />
    		<script type="text/javascript">
    			var tax_rates = new Array();
    			tax_rates["1"] = 7.6;
     
    			function doRound(x, places) 
    			{
    				return Math.round(x * Math.pow(10, places)) / Math.pow(10, places);
    			}				 
     
    			//-------------------------------------------------------------------------
    			//-- les paramètres passés à la fonction :
    			//-- formulaire : pointeur sur le formulaire,
    			//-- valeur : valeur du champ saisi,
    			//-- typeTaxe : nom du champ select,
    			//-- champAMettreAJour : nom du champ à mettre à jour,
    			//-- typeCalcul : signe arithmétique du calcul => * ou /.
    			//-------------------------------------------------------------------------
    			function calcul(formulaire, valeur, typeTaxe, champAMettreAJour, typeCalcul)
    			{
    				//-- si la valeur saisie n'est pas numérique, on dégage --------------
    				if (isNaN(valeur)) return;
     
    				with (formulaire)
    				{
    					//-- si la valeur du select = 0, on dégage -------------------------
    					var indiceTaxe = elements[typeTaxe].options[elements[typeTaxe].selectedIndex].value;
    					if (indiceTaxe == 0) return;
     
    					var coef = (tax_rates[indiceTaxe] /100) + 1;
    					elements[champAMettreAJour].value = doRound(eval(valeur  + typeCalcul + coef), 4);
    				}
    			}
    		</script>
      </head>
    	<body>
    		<form name="new_product">
    			<input size="6" type="text" name="att_price[0]" value="" onchange="calcul(this.form, this.value, 'products_tax_class_id[0]', 'att_price_gross[0]', '*')" /> 
    			<select name="products_tax_class_id[0]" onchange="calcul(this.form, this.value, 'type_taxe[0]', 'prix_ttc[0]', '*')">
    				<option value="0">-- aucun --</option>
    				<option value="1" selected="selected">TVA</option>
    			</select>
    			<input type="text" name="att_price_gross[0]" onkeyup="calcul(this.form, this.value, 'products_tax_class_id[0]', 'att_price[0]', '/')" /> 
        </form>
      </body>
    </html>

  5. #5
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par Aladin461
    Bonsoir,

    Lors du chargement il indique l'icone d'erreur jaune, puis lorsque le chargement est totalement effectué, il ne m'indique aucune erreur de la page, mais mais il ne fonctionne pas
    A mon avis, dans le code que tu as posté, il y a de gros problèmes de guillemets sur la partie HTML...

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2006
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Merci pour vos réponses, je vais essayer ce code dès que possible.
    Je vous redirais des nouvelles.

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2006
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Super, cela fonctionne.

    Mais j'ai encore un petit soucis dans ce code, quand je mets "aucun" de ma liste TVA, il me retourne une erreur au lieu de mettre une valeur avec TVA à 0%

    Erreur :'elements[...].options' à la valeur NULL ou n'est pas un objet.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <select name="products_tax_class_id[0]" onchange="calcul(this.form, this.value, 'type_taxe[0]', 'prix_ttc[0]', '*')">
    <option value="0">-- aucun --</option>
    <option value="1" selected="selected">TVA</option>
    </select>

  8. #8
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    			<select name="products_tax_class_id[0]" onchange="calcul(this.form, this.form.elements['att_price[0]'].value, 'products_tax_class_id[0]', 'att_price_gross[0]', '*')">
    Avec ce onchange, ça doit mieux marcher.

    Il faut modifier la méthode calcul pour qu'elle accepte le 0, aussi...

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2006
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci, cela fonctionne à merveille.

    J'ai juste modifier une partie de la fonction calcul pour que les cellules soit identique quand la taxe est à 0%

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    function calcul(formulaire, valeur, typeTaxe, champAMettreAJour, typeCalcul)
    	{
    //-- si la valeur saisie n'est pas numérique, on dégage --------------
    	     if (isNaN(valeur)) return;
     
    	     with (formulaire)
    	          {
    //-- si la valeur du select = 0, on dégage -------------------------
    		var indiceTaxe = elements[typeTaxe].options[elements[typeTaxe].selectedIndex].value;
    		if (indiceTaxe == 0) var coef=1;
    		else{
                         var coef = (tax_rates[indiceTaxe] /100) + 1;
                        }
       elements[champAMettreAJour].value = doRound(eval(valeur  + typeCalcul + coef), 4);
    		}
    	}

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Calcul des taxes sur état (facture)
    Par zizalajones dans le forum IHM
    Réponses: 2
    Dernier message: 18/07/2012, 19h01
  2. [XL-2007] Calcul inverse de taxes avec priorités
    Par Kalawaya dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/08/2011, 14h48
  3. Problème calcul de taxe
    Par hubald dans le forum ASP.NET
    Réponses: 2
    Dernier message: 13/11/2008, 01h53
  4. [TP7] Calculer sin, cos, tan, sqrt via le FPU
    Par zdra dans le forum Assembleur
    Réponses: 8
    Dernier message: 25/11/2002, 04h09
  5. Algo de calcul de FFT
    Par djlex03 dans le forum Traitement du signal
    Réponses: 15
    Dernier message: 02/08/2002, 17h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo