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 prix tableau dynamique


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 6
    Par défaut Calcul de prix tableau dynamique
    Bonjour à tous,

    J'ai créer un tableau dynamique avec 4 champs : Descriptif / quantitée / prix HT / ID.
    voici mon code pour le tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    var str1 = 0;
    function AddRow(){
    	str1 ++;
        var newRow = document.getElementById('table_matos').insertRow(-1);
        var newCell = newRow.insertCell(0);
        newCell.innerHTML = '<input type=\"text\" size=\"54\" name=\"descriptif_matos_'+str1+'\" />';
        newCell = newRow.insertCell(1);
        newCell.innerHTML = '<input type=\"text\" size=\"1\" name=\"quantitee_matos_'+str1+'\" />';
       	newCell = newRow.insertCell(2);
        newCell.innerHTML = '<input type=\"text\" size=\"12\" name=\"prix_ht_unitaire_matos_'+str1+'\"/>';
    	newCell = newRow.insertCell(3);
        newCell.innerHTML = '<input type=\"hidden\" name=\"nb_materiel\" size=\"2\" value=\"'+str1+'\"/>'+str1+'';
    le tableau marche bien, il me rajoute les lignes comme je le désire, le problème c'est que je voudrais faire le calcule a la voler du prix, ce qui me ferai donc utiliser les champs "quantités" et "prix".
    Vu que les lignes s'incrémentes grâce à +str1+ je suis lâcher mon niveau de java scripte n'es pas asser bon.
    si je pouvais avoir un petit coup de main ce serai sympa.

    Merci de votre aide.

    PS : je recupe les contenu des champs plus loin en PHP (pas de soucis pour ca)

  2. #2
    Membre Expert
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Par défaut
    fais une recherche sur
    elements
    du formulaire

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 6
    Par défaut merci mais c un peut vague
    merci mais tu peut préciser un peut ?
    après je me débrouille.

  4. #4
    Membre Expert
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Par défaut
    function calcul(formulaire){
    total=0;
    for(i=1;i<=str1 ;i++){
    total+=formulaire.elements["quantitee_matos_"+i].value*formulaire.elements["prix_ht_unitaire_matos_"+i].value;
    }

    return total;
    }
    ou quelque chose comme cela

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 6
    Par défaut apparament ca ne fonctionne pas ...
    Merci pour ton bout de code mais cela ne semble fonctionne.
    J'ai du supprimer le"}" en dernière ligne car il étais en trop.
    soit la fonction ne tourne pas soit il n'arrive pas à recupérer

    "formulaire.elements["quantitee_matos_"+i]"

    une idée pour m'aider a deboger ?
    Merci

  6. #6
    Membre Expert
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Par défaut
    formulaire à mettre en paramètre
    document.forms[0] par exemple

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 6
    Par défaut heuuu
    ok je penses que mon niveau JS n'es pas asser bon pour ca ...
    je vais rester sur mon php et je reviendrais dessus plus tard sinon je vais te harceler de question basic.
    LOL

    merci encore de ton aide.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 6
    Par défaut autre aproche...
    en fait j'ai deja un calcule sur la page qui me fait mes calcules à la voler de mon HT TTC et tva qui ce lance suite a un bouter "calculer"
    voici le code :

    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
     
    function Rond(num,p) { // en JavaScript
       p=Math.pow(10,p)
       return Math.round(num*p)/p
    }
    function calculer(formulaire) 
    {
    	duree=Number(formulaire.duree_inter.value); 
    	tarif=Number(formulaire.tarif_h.value);
    	ht_presta=Number(formulaire.prix_ht_presta.value);
    	ht_materiel=Number(formulaire.prix_ht_materiel.value);
    	ttc_materiel=Number(formulaire.prix_ttc_materiel.value);
     
    	if (duree=="0.0") {
    		//calcul du HT prestation
    		ht=(duree*tarif)+ht_presta;
    	} else {
    		ht=duree*tarif;
    	}
     
    	//calcul de la TVA prestation
    	ttc=ht*1.196;
    	tva=ttc-ht;
    	if (ht_materiel!="") {
    		//calcule de la tva et ttc du materiel
    		ttc_materiel=ht_materiel*1.196;
    		tva_materiel=ttc_materiel-ht_materiel;
    	} else {
    		//calcule de la tva et ht du materiel
    		ht_materiel=ttc_materiel/1.196;
    		tva_materiel=ttc_materiel-ht_materiel;
    	}
    	formulaire.prix_ht_presta.value=(Rond(ht,2));
    	formulaire.prix_ttc_presta.value=(Rond(ttc,2));
    	formulaire.prix_tva_presta.value=(Rond(tva,2));
    	formulaire.prix_ttc_materiel.value=(Rond(ttc_materiel,2));
    	formulaire.prix_tva_materiel.value=(Rond(tva_materiel,2));
    	formulaire.prix_ht_materiel.value=(Rond(ht_materiel,2));
     
    	// calculte des totaux
    	ht_total=ht+ht_materiel;
    	tva_total=tva+tva_materiel;
    	ttc_total=ttc+ttc_materiel;
     
    	formulaire.prix_ht_total.value=(Rond(ht_total,2));
    	formulaire.prix_tva_total.value=(Rond(tva_total,2));
    	formulaire.prix_ttc_total.value=(Rond(ttc_total,2));
     
    }
    D'après toi comment je peut intégrer ton code pour remplacer la variable "ht_materiel"

    car autant utiliser mon bouton "calculer" pour avoir l'ensemble de mon calcule plutôt que d'avoir plein de petits bouton, harrg ça m'en fil des bouton ca ... lol

    si tu n'as pas d'idée je laisse tomber.
    encore merci pour ton aide.

  9. #9
    Membre Expert
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Par défaut
    ht_materiel=Number(formulaire.prix_ht_materiel.value);
    ->
    qt_materiel=Number(formulaire.elements["quantitee_matos_"+i].value);

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 6
    Par défaut Super ca marche ;)
    Merci encore pour ton aide j'ai trouver comment tous faire fonctionner.
    J'ai donc integrer ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    // Calcule du prix HT materiel depuis le tableau dynamique
    	total=0;
    	for(i=1;i<=str1 ;i++){
    		total+=formulaire.elements["quantitee_matos_"+i].value*formulaire.elements["prix_ht_unitaire_matos_"+i].value;
    	}
    et modifier la variable "ht_materiel" pour qu'elle corresponde au resultat de "total".

    Voici donc mon code pour ceux que ça peut aider :
    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    function Rond(num,p) { // en JavaScript
       p=Math.pow(10,p)
       return Math.round(num*p)/p
    }
    function calculer(formulaire) 
    {
    	// Calcule du prix HT materiel depuis le tableau dynamique
    	total=0;
    	for(i=1;i<=str1 ;i++){
    		total+=formulaire.elements["quantitee_matos_"+i].value*formulaire.elements["prix_ht_unitaire_matos_"+i].value;
    	}
     
    	duree=Number(formulaire.duree_inter.value); 
    	tarif=Number(formulaire.tarif_h.value);
    	ht_presta=Number(formulaire.prix_ht_presta.value);
    	ttc_materiel=Number(formulaire.prix_ttc_materiel.value);
    	ht_materiel=total; // on definit le prix HT de l'ensemble du materiel et on l'indique pour les calculs TTC et TVA
     
    	if (duree=="0.0") {
    		//calcul du HT prestation
    		ht=(duree*tarif)+ht_presta;
    	} else {
    		ht=duree*tarif;
    	}
     
    	//calcul de la TVA prestation
    	ttc=ht*1.196;
    	tva=ttc-ht;
    	if (ht_materiel!="") {
    		//calcule de la tva et ttc du materiel
    		ttc_materiel=ht_materiel*1.196;
    		tva_materiel=ttc_materiel-ht_materiel;
    	} else {
    		//calcule de la tva et ht du materiel
    		ht_materiel=ttc_materiel/1.196;
    		tva_materiel=ttc_materiel-ht_materiel;
    	}
    	formulaire.prix_ht_presta.value=(Rond(ht,2));
    	formulaire.prix_ttc_presta.value=(Rond(ttc,2));
    	formulaire.prix_tva_presta.value=(Rond(tva,2));
    	formulaire.prix_ttc_materiel.value=(Rond(ttc_materiel,2));
    	formulaire.prix_tva_materiel.value=(Rond(tva_materiel,2));
    	formulaire.prix_ht_materiel.value=(Rond(ht_materiel,2));
     
    	// calculte des totaux
    	ht_total=ht+ht_materiel;
    	tva_total=tva+tva_materiel;
    	ttc_total=ttc+ttc_materiel;
     
    	formulaire.prix_ht_total.value=(Rond(ht_total,2));
    	formulaire.prix_tva_total.value=(Rond(tva_total,2));
    	formulaire.prix_ttc_total.value=(Rond(ttc_total,2));
     
    }
    var str1 = 0;
    function AddRow(){
    	str1 ++;
        var newRow = document.getElementById('table_matos').insertRow(-1);
        var newCell = newRow.insertCell(0);
        newCell.innerHTML = '<input type=\"text\" size=\"54\" name=\"descriptif_matos_'+str1+'\" />';
        newCell = newRow.insertCell(1);
        newCell.innerHTML = '<input type=\"text\" size=\"1\" name=\"quantitee_matos_'+str1+'\" />';
       	newCell = newRow.insertCell(2);
        newCell.innerHTML = '<input type=\"text\" size=\"12\" name=\"prix_ht_unitaire_matos_'+str1+'\"/>';
    	newCell = newRow.insertCell(3);
        newCell.innerHTML = '<input type=\"hidden\" name=\"nb_materiel\" size=\"2\" value=\"'+str1+'\"/>'+str1+'';
    }
    function calcul_materiel(formulaire){
    	ht_materiel=0;
    	for(c=1;c<=str1 ;c++){
    		ht_materiel+=formulaire.elements["quantitee_matos_"+c]*formulaire.elements["prix_ht_unitaire_matos_"+c];
    	}
    	return ht_materiel;
    	formulaire.prix_ht_materiel.value=(Rond(ht_materiel,2));
    }

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

Discussions similaires

  1. Calcul automatique dans tableau dynamique
    Par vinketi97 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/01/2014, 16h46
  2. [A-02] Insérer un champ calculé dans un tableau croisé dynamique
    Par atoffoli75 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 23/11/2008, 08h55
  3. Tableau dynamique et calcul automatique
    Par hubertc dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/08/2007, 13h24
  4. Réponses: 4
    Dernier message: 03/08/2007, 13h48
  5. [VBA-E]Ligne calculée en fin de tableau dynamique
    Par AliochaBada dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 07/10/2006, 22h23

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