Donnez vie à vos documents numériques !
 

Permettre saisie utilisateur sur un champ calculé

abracadabraPDF Forums PDF – Général Permettre saisie utilisateur sur un champ calculé

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #46315
    bab57
    Membre

    Bonjour,

    Je mets en place actuellement un pdf pour calculer le rendement d’un investissement immobilier.

    Dans ce fichier je calcul les frais de notaire à 9% du prix d’achat.

    var prix_achat = this.getField(“prix_achat”).value;
    event.value = prix_achat * 0.09;

    Ensuite je calcul le prix d’achat total (le prix d’achat, les frais de notaire et les travaux)

    var prix_achat = this.getField(“prix_achat”).value;
    var frais_notaire = prix_achat * 0.09;
    var travaux = this.getField(“travaux”).value;
    event.value = prix_achat + frais_notaire + travaux;

    Mais je voudrais permettre à l’utilisateur de saisir les frais de notaire manuellement ou de garder le calcul à 9%.

    Vous avez une idée?

    Merci d’avance pour votre aide

Affichage de 8 réponses de 1 à 8 (sur un total de 8)
  • Auteur
    Réponses
  • #67528
    Merlin
    Maître des clés

    Bonjour et bienvenue

    Dans le formulaire il faut ajouter un champ “Frais de notaire”  avec une valeur de “9” (ou 0.09 selon le calcul) par défaut, et inclure ce champ dans le calcul.
    Si ce champ est visible et n’est pas verrouillé, l’utilisateur peut facilement et intuitivement modifier sa valeur (le pourcentage utilisé).

    #67529
    bab57
    Membre

    Merci pour votre réponse.

    Je me suis peut être mal exprimé.

    J’ai déjà le champs “frais_de_notaire” qui multiple par 0,09 la valeur du champs “prix _achat”. Il y a un 3 ème champ “achat_total” qui additionne “prix_achat” et “frais_de_notaire”. Je voudrais que ce champs “frais de notaire” soit modifiable par l’utilisateur. Ce n’est pas le pourcentage que je souhaite modifier.

    Par exemple le champ “prix_achat” est de 100000 donc le champs “frais_de_notaire” est à 9000. Le champ “achat_total” est alors à 109000. Mais si l’utilisateur veux modifier le champs frais de notaire à 8457 il faudrait que le champ “prix_achat_total” soit à 108457.

    Voici mon code actuel:

    champ “frais_de_notaire”:

    Code:

    var prix_achat = this.getField(“prix_achat”).value;
    event.target.value = prix_achat * 0.09;

    champ “prix_achat_total”:

    Code:
    var prix_achat = this.getField(“prix_achat”).value;
    event.target.value = prix_achat +  (prix_achat * 0.09);
    #67530
    Merlin
    Maître des clés

    L’utilisateur ne peut pas modifier la valeur d’un champ calculé, il faut donc qu’il ne soit pas calculé.
    Soit pas du tout, soit en activant/désactivant la fonction de calcul via une case à cocher, par exemple.

    #67531
    bab57
    Membre

    Merci de votre retour rapide.

    Après des recherches sur internet j’ai trouvé cette ressource: https://answers.acrobatusers.com/How-to-make-an-event-value-override-a-calculated-value-q113047.aspx

    Je pense que c’est une piste mais je n’arrive pas a l’appliquer dans mon cas.

    Vous en pensez quoi?

    #67532
    bab57
    Membre

    J’ai trouvé la solution !

    Voici le code pour le champ “frais_de_notaire”:

    Code:
    var prix_achat = this.getField(“prix_achat”).value;
    if (event.source!=event.target) {
        event.target.value = prix_achat * 0.09;
    }

    Et le code pour le champ “prix_achat_total”:

    Code:
    var prix_achat = this.getField(“prix_achat”).value;
    var frais_notaire = this.getField(“frais_notaire”).value;
    event.target.value = prix_achat + (prix_achat * 0.09) ;
    if (event.source && event.source.name==”frais_notaire”) {
        event.target.value = prix_achat + frais_notaire ;
    }

    Mais maintenant j’ai le problème évoqué dans la ressource que j’ai partagé dans la réponse ci-dessous, c’est à dire que si je modifie ensuite la valeur de tout autre champ, la valeur calculée réapparaîtra

    La personne indique: “Si vous voulez éviter cela, vous pouvez modifier la condition pour vérifier si la source de l’événement est un champ spécifique.”

    Mais je n’arrive pas a le retranscrire en code…

    #67533
    bab57
    Membre

    Voici la solution.
    Dans le champs ou l’on souhaite avoir le choix entre la saisie ou le calcul automatique par rapport à un autre champ:

    Code:
    if (event.source!=null && event.source.name==”champ1″) {
        event.value = Number(this.getField(“champ1”).valueAsString) * 0.09; // effectue le le calcul de la valeur de champ1 multiplié par 0,09 si pas de valeur saisie
    }


    Et si on veux appeler la valeur de ce champ il faut utiliser ce code:

    Code:
    Number( this.getField(“champ2”).value)

    #67534
    Merlin
    Maître des clés

    :bravo:

    #67535
    bebarth
    Maître des clés

    bonjour,
    Pourquoi reconvertir en nombre (Number) une valeur convertie en chaine de caractères (valueAsString) ?
    Ça ne fonctionne pas directement avec “value” ???
    Bien trouvé !
    @+
    :bonjour:

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