Donnez vie à vos documents numériques !
 

Calcul sous conditions

abracadabraPDF Forums PDF – Général Calcul sous conditions

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #43590
    sioux
    Invité

    Bonjour à tous,
    Heureuse de trouver ce forum avant la chute total de mes cheveux que j’arrache depuis 2 semaines…
    je galère sur la création d’un bon de commande avec Adobe Acrobat Pro 6.0
    En ce qui concerne les champs : Nom, adresse, … tout va bien, les calculs de chaque ligne du bon de commande, c’est OK. Le calcul du sous-total : OK. Le problème arrive au frais de port !!
    Je m’explique : Si le sous-total est 100€ les frais de port sont gratuits.
    J’ai donc 3 champs : champs 1 = Soustotal
                                champs 2 = Frais de port (égal à 10 ou à 0)
                                champs 3 = Total

    J’ai essayé ceci : Dans le champs 2 :
    If(soustotal.value>100)
    {
    Fraisdeport.value=0 ;
    }
    If(soustotal.value<100)
    {
    Fraisdeport.value=10 ;
    }

    et dans le champs 3 :
    soustotal + fraisdeport

    Ca ne marche pas, quelqu’un a-t-il une idée ? J’ai appelé un formateur, mis le problème dans les mains d’un développeur qui maitrise le javascript… rien n’y fait.
    Merci de vos conseils… et un grand BRAVO à ce forum !!

Affichage de 11 réponses de 1 à 11 (sur un total de 11)
  • Auteur
    Réponses
  • #49405
    Lionel
    Membre

    Bonjour,

    Il y a un truc facile à faire, c’est de créer deux cases à cocher (portant le même nom et dont on ne peut cocher qu’une seule case en même temps) :
    -la première donne une valeur d’exportation de 10 (avec explication à coté de cette case)
    -la seconde donne une valeur d’exportation de 0 (avec explication à coté de cette case). Case cochée par défaut : celle de 10.
    Ensuite, une simple addition suffit. ;)

    Bien cordialement.
    Lionel

    #49406
    Merlin
    Maître des clés

    Je pense que ce n’est pas bon au niveau de la syntaxe, ça devrait plutôt ressembler à ça :

    Code:
    If (this.getField (« soustotal »).value {this.getField (« Fraisdeport »).value = 10;
    else
    this.getField « Fraisdeport ».value = 0;
    }

    Je n’ai pas testé mais ça devrait fonctionner…
    8);)

    #49407
    sioux
    Invité

    Merci de votre aide. J’ai donc essayé ton code Merlin, mais bizarrement il n’accepte pas le « else », il m’affiche une erreur de syntaxe.  :'(
    Je vais tenter la solution de Lionel en attendant de trouver ce code, j’avoue que je n’y avais pas pensé, mais je doute que notre client accepte la modification de sa mise en page, mais ça le fera peut-être patienté  :P.
    Merci à tout les 2… et si une idée vous vient… ;)

    Cordialement,
    Gladys

    #49408

    Bonjour,

    Le code suivant fonctionne à condition de le mettre dans le « Script de calcul personnalisé » du champs 3 :

    Attention mes 3 champs s’appellent : soustotal, Fraisdeport et champs 3 (la syntaxe doit être exacte, minuscule, majuscule et espace, sinon cela ne fonctionnera pas)

    Merlin, il y a une faute de frappe au début de votre code, le if s’écrit tout en minuscule !

    Copiez et coller le code ci-dessous à l’endroit indiqué plus haut :

    var valeurFrais = this.getField(« Fraisdeport »)
    if(this.getField(« soustotal »).value>100)
    {
    valeurFrais.value=0 ;
    valeurFrais.textColor = [« RGB »,0,1,0]
    }
    else
    {
    valeurFrais.value=10 ;
    valeurFrais.textColor = [« RGB »,1,0,0]
    }
    event.value = this.getField(« soustotal »).value + this.getField(« Fraisdeport »).value

    Bonne chance, si vous avez un problème, je peux vous envoyer le pdf avec l’exemple.

    #49409

    Gladys,
    Pour me contacter, envoyez-moi votre adresse e-mail au moyen de mon formulaire de contact.
    Vous le trouverez sur le site constitué « www. » suivi de mon « pseudo » en terminant par « .ch » (Suisse).

    Bonne journée

    #49410
    sioux
    Invité

    CA MARCHE !!  Merci  « cdiautomation’ (à défaut du prénom), c’est exactement ce qu’il me fallait,
    j’y croyais plus… à charge de revanche j’espère,
    Bien cordialement,
    Gladys

    #49411
    Merlin
    Maître des clés

    Merlin, il y a une faute de frappe au début de votre code, le if s’écrit tout en minuscule

    Oui, et en plus j’ai oublié quelques parenthèses et accolades…
    Mais j’avais prévenu : non testé !

    Merci en tous cas.

    ;):)

    #49412
    GolfAddict
    Membre

    Bonsoir à tous,

    Je me permet de reprendre le fil de cette discussion car je dois également effectuer un calcul de frais de port sur un bon de commande dont voici le rendu graphique :
    BON-DE-COMMANDE-3.jpg

    Comme vous pouvez le lire, je souhaite faire varier les frais de ports en fonction des quantités commandées. J’ai ajouté un champ masqué qui additionne les quantités commandées pour chaque coloris que j’ai appelé « QTT ». Le champs pour les frais de port est appelé « PORT ». Sa valeur par défaut a été mise à « 0,00 » et je souhaite la faire varier en fonction du nombre affiché dans le champ « QTT ». Voici le script que j’ai donc écrit dans Acrobat :

    var valeurFrais= this.getField(« PORT »)
    if(this.getField(« QTT »).value=0)
    {
    valeurFrais.value=0;
    }
    else if(this.getField(« QTT »).value=1)
    {
    valeurFrais.value=6.60;
    }
    else if(this.getField(« QTT »).value=2)
    {
    valeurFrais.value=7.95;
    }
    else if(this.getField(« QTT »).value=3)
    {
    valeurFrais.value=8.95;
    }
    else if(this.getField(« QTT »).value=4)
    {
    valeurFrais.value=9.95;
    }
    else if(this.getField(« QTT »).value=5)
    {
    valeurFrais.value=11.95;
    }
    else if(this.getField(« QTT »).value=6)
    {
    valeurFrais.value=11.95;
    }
    else if(this.getField(« QTT »).value=7)
    {
    valeurFrais.value=11.95;
    }
    else if(this.getField(« QTT »).value=8)
    {
    valeurFrais.value=13.95;
    }
    else if(this.getField(« QTT »).value>8)
    {
    valeurFrais.value=13.95;
    }

    Mon problème : le champ « QTT » fonctionne correctement et cumule toutes les quantités que je rajoute dans la grille. Mais le bon de commande m’affiche par défaut « 6,60 € » et non « 0,00 € ». Et malgré que le nombre affiché dans le champ « QTT » varie, la valeur du champ « PORT » reste toujours égale à « 6,60€ ». Aucun message d’erreur, donc je ne sais pas ce qui cloche !

    Pouvez-vous me dire si vous voyez une erreur à corriger dans mon script ?! Par avance merci pour votre aide précieuse !!!

    Garry

    #49413
    Merlin
    Maître des clés

    Salut,

    le mieux serait que tu postes tout ou partie (juste les champs de calcul) de ce PDF, histoire d’avoir du concret sous les yeux pour bien comprendre le déroulement des calculs.
    :bonjour:

    #49414
    alex
    Participant

    Après avoir corrigé ce qui suit, à savoir, un problème de syntaxe, les choses devraient s’éclaircir.
    Pour les comparaisons, le signe = doit être doublé, exemple:

    if(this.getField(« QTT »).value==0)
    {
    //script à exécuter
    }

    #49415
    alex
    Participant

    Le script pourrait être le suivant (à bien placer):
    Frais= this.getField(« PORT »);
    Qte=this.getField(« QTT »);
    Frais.value=0;
    if(Qte.value==1)
    {
    Frais.value=6.60;
    }
    if(Qte.value==2)
    {
    Frais.value=7.95;
    }
    if(Qte.value==3)
    {
    Frais.value=8.95;
    }
    if(Qte.value==4)
    {
    Frais.value=9.95;
    }
    if(Qte.value==5)
    {
    Frais.value=11.95;
    }
    if(Qte.value==6)
    {
    Frais.value=11.95;
    }
    if(Qte.value==7)
    {
    Frais.value=11.95;
    }
    if(Qte.value==8)
    {
    Frais.value=13.95;
    }
    if(Qte.value>8)
    {
    Frais.value=13.95;
    }

Affichage de 11 réponses de 1 à 11 (sur un total de 11)
  • Vous devez être connecté pour répondre à ce sujet.