Skip to main content
Participant
October 16, 2024
Answered

Comment ignorer la valeur d'un champ qui n'est pas activé

  • October 16, 2024
  • 2 replies
  • 484 views

Bonjour,

C'est la première fois que j'essaie de créer un formulaire avec Acrobat. Je me suis debrouiller un peu et j'ai presque fini. Je suis bloqué sur le dernier champ TOTAL de mon formulaire.

Le formulaire que j'essaie de créer va servir de facture, avec des champs spécifications du produit, prix unitaire quantité et prix total de chaque produit. Puis vient enfin le champ qui va afficher la somme du prix  de tout les produits que j'ai appellé  SOUSTOTAL, puis le champ REDAMOUNT (5% de la valeur de SOUSTOTAL) et COMAMOUNT(10% de SOUSTOTAL). Le champ TOTAL sera la somme de SOUSTOTAL, de REDAMOUNT et de COMAMOUNT.

-----------------------------------------------------------SOUSTOTAL

------------✓------redevance   5%-------------------REDAMOUNT

-----------✓------commission 10%------------------COMAMOUNT

------------------------------------------------------------TOTAL

Le souci c'est que la redevance de 5% et la commission de 10 % ne sont pas toujours obligatoires, j'ai donc mis un checkbox   ✓ avant chaque champ qui , lorsqu'il est activé(checké) va afficher la valeur  de REDAMOUNT ou de COMAMOUNT , mais qui va caché les valeurs quand le checkbox n'est pas activé.

Maintenant, le souci du TOTAL car le TOTAL prend toujours en compte les valeurs de REDAMOUNT et de COMAMOUNT même si ceux là sont décoché.

J'aimerais donc qu'une âme charitable m'aide à finir ce premier formulaire et me propose une solution si possible. Ne m'en voulez pas, c'est mon premier et surtout pas le dernier.

Merci d'avance

This topic has been closed for replies.
Correct answer hariliva_6489

Merci pour toutes vos reponses. 

J'ai pas pu arriver à ce que je cherchais avec vos propositions mais ils m'ont servies de base pour les recherches que j'ai faites après avoir essayer beaucoup de script. Mais je n'ai pas voulu lâcher l'affaire car c'est quand même mon premier formulaire.

Voici donc la solution qui a permit d'avoir ce que je voulaais, je le poste car peut-être que cela va aider quelqu'un. 

Donc les scripts pour  RED et COM ont été insérer dans l'onglet actions des propriétés de chaque checkbox. Et les scripts de calcule de REDAAMOUNT et COMAMOUNT ont été insérer comme script de calcul pésonnalisé  dans l'onglet calcul des propriétés de chaque champ

// Script pour le checkbox RED
this.getField("RED").setAction("MouseUp", "if(event.target.isBoxChecked(0)){this.getField('REDAMOUNT').value = this.getField('SOUSTOTAL').value * 0.05;}else{this.getField('REDAMOUNT').value = 0;}");

// Script pour le checkbox  COM
this.getField("COM").setAction("MouseUp", "if(event.target.isBoxChecked(0)){this.getField('COMAMOUNT').value = this.getField('SOUSTOTAL').value * 0.1;}else{this.getField('COMAMOUNT').value = 0;}");

// Calcule  du champ  TOTAL
var soustotal = this.getField("SOUSTOTAL").value;
var red = this.getField("RED").isBoxChecked(0) ? this.getField("SOUSTOTAL").value * 0.05 : 0;
var com = this.getField("COM").isBoxChecked(0) ? this.getField("SOUSTOTAL").value * 0.1 : 0;
this.getField("TOTAL").value = soustotal + red + com;

// pour calculer  REDAMOUNT
if(this.getField("RED").isBoxChecked(0)){
  this.getField("REDAMOUNT").value = this.getField("SOUSTOTAL").value * 0.05;
} else {
  this.getField("REDAMOUNT").value = 0;
}

// pour calculer  COMAMOUNT
if(this.getField("COM").isBoxChecked(0)){
  this.getField("COMAMOUNT").value = this.getField("SOUSTOTAL").value * 0.1;
} else {
  this.getField("COMAMOUNT").value = 0;
}

 Merci beaucoup de m'avoir aider . 

2 replies

hariliva_6489AuthorCorrect answer
Participant
October 17, 2024

Merci pour toutes vos reponses. 

J'ai pas pu arriver à ce que je cherchais avec vos propositions mais ils m'ont servies de base pour les recherches que j'ai faites après avoir essayer beaucoup de script. Mais je n'ai pas voulu lâcher l'affaire car c'est quand même mon premier formulaire.

Voici donc la solution qui a permit d'avoir ce que je voulaais, je le poste car peut-être que cela va aider quelqu'un. 

Donc les scripts pour  RED et COM ont été insérer dans l'onglet actions des propriétés de chaque checkbox. Et les scripts de calcule de REDAAMOUNT et COMAMOUNT ont été insérer comme script de calcul pésonnalisé  dans l'onglet calcul des propriétés de chaque champ

// Script pour le checkbox RED
this.getField("RED").setAction("MouseUp", "if(event.target.isBoxChecked(0)){this.getField('REDAMOUNT').value = this.getField('SOUSTOTAL').value * 0.05;}else{this.getField('REDAMOUNT').value = 0;}");

// Script pour le checkbox  COM
this.getField("COM").setAction("MouseUp", "if(event.target.isBoxChecked(0)){this.getField('COMAMOUNT').value = this.getField('SOUSTOTAL').value * 0.1;}else{this.getField('COMAMOUNT').value = 0;}");

// Calcule  du champ  TOTAL
var soustotal = this.getField("SOUSTOTAL").value;
var red = this.getField("RED").isBoxChecked(0) ? this.getField("SOUSTOTAL").value * 0.05 : 0;
var com = this.getField("COM").isBoxChecked(0) ? this.getField("SOUSTOTAL").value * 0.1 : 0;
this.getField("TOTAL").value = soustotal + red + com;

// pour calculer  REDAMOUNT
if(this.getField("RED").isBoxChecked(0)){
  this.getField("REDAMOUNT").value = this.getField("SOUSTOTAL").value * 0.05;
} else {
  this.getField("REDAMOUNT").value = 0;
}

// pour calculer  COMAMOUNT
if(this.getField("COM").isBoxChecked(0)){
  this.getField("COMAMOUNT").value = this.getField("SOUSTOTAL").value * 0.1;
} else {
  this.getField("COMAMOUNT").value = 0;
}

 Merci beaucoup de m'avoir aider . 

PDF Automation Station
Community Expert
Community Expert
October 17, 2024

You do realize the setAction scripts are used to insert a script into the field?  You can simply insert the script 

 

if(event.target.isBoxChecked(0)){this.getField('COMAMOUNT').value = this.getField('SOUSTOTAL').value * 0.1;}else{this.getField('COMAMOUNT').value = 0;}

 

by pasting it into the 'Run a JavaScript' Mouse Up action, or running

 

this.getField("RED").setAction("MouseUp", "if(event.target.isBoxChecked(0)){this.getField('REDAMOUNT').value = this.getField('SOUSTOTAL').value * 0.05;}else{this.getField('REDAMOUNT').value = 0;}");

 

in the console once.

JR Boulay
Community Expert
Community Expert
October 16, 2024

Essayez ça en script de calcul dans le champ TOTAL :

var A = this.getField("SOUSTOTAL").value;
if (this.getField("REDAMOUNT").display != display.hidden) {var B = this.getField("REDAMOUNT").value;}
else {var B = 0;}
if (this.getField("COMAMOUNT").display != display.hidden) {var C = this.getField("COMAMOUNT").value;}
else {var C = 0;}

event.target.value = Number(A) + Number(B) + Number(C);
Acrobate du PDF, InDesigner et Photoshopographe
Participant
October 16, 2024

Merci beaucoup  pour votre reponse, mais je crois qu'il y a un souci de réglages de champs sur mon formulaire, car en  utilisant vore code, cocher les checkbox  affichent bien les bon valeurs mais le champ total n'est pas à jour.

Pour mieux expliquer: SOUSTOTAL =6244

-quand je check le champ pour faire apparaitre REDAMOUNT,  312.20 est bien affiché mais le champ TOTAL affiche 6244. Quand je le décoche, 312.20 disparaisse et le champ TOTAL devient 6556.2

-je descend cocher le checkbox pour afficher et cacher COMAMOUNT, je le coche et 624.40 s'affiche bien mais le champ TOTAL est revenu à  6244. Je le decoche , le champ redevient vide comme voulu mais le champ TOTAL affiche 6868.40 

-maintenant en cochant les deux check box : si je coche en premier REDAMMOUNT et COMAMOUNT en dernier , TOTAL affiche 6556,2. Mais dans le sens inverse (COM d'abord puis RED après) le montant sur TOTAL est  de 6868.40

J'espère que j'ai bien expliqué le souci. Je suis sur acrobat pro 2024.003.20180 au cas où ça compte. 

Merci!!!

PDF Automation Station
Community Expert
Community Expert
October 17, 2024

Using the display property of the REDAMOUNT and COMAMOUNT to determine a value is not a good idea because calculations run whenever a field value changes.  In this case the value of the check box is what changes when the box is clicked.  At that point the calculation runs based on the visibility of the text fields before they are changed with the mouse up action of the check box.  The total will always be off.  My suggestion:

Use the following custom calculation script in the total field (Assuming check box names are Check Box1 and Check Box2):

var A=this.getField("SOUSTOTAL").valueAsString;
var B,C;
if(this.getField("Check Box1").value!="Off")
{B=this.getField("REDAMOUNT").valueAsString}else{B=0}
if(this.getField("Check Box2").value!="Off")
{C=this.getField("COMAMOUNT").valueAsString}else{C=0}
event.value = Number(A) + Number(B) + Number(C);