Formulaire de commandes  (Lu 3600 fois) Partager ce sujet Imprimer

1 2 B


warrenc50  29 octobre 2018 : 14:08

Bonjour
Je suis en train de créer un formulaire de commande dans lequel j'ai une première liste ou on peut choisir une catégorie.
Dans la seconde liste j'ai tous les items qui correspondent à chacune des catégories.
Est-ce possible de n'afficher que les items de la catégorie sélectionnée?




Voici le code pour le JS :

function Initialisation()
{
console.clear();
//On d?©finit les tableaux en respectant l'arborescence des menus:
console.println("Initialisation.Definition tableau Debut.")
ListeProduit=new Array();
ListeProduit[0]=["Cabinet","Specifications"];
ListeProduit[1]=["Filler Bout Gauche","Panneau Bout 1po Gauche"];
ListeProduit[2]=["Rangement","18po 1porte gauche"];
ListeProduit[3]=["Rangement","18po 1porte droite"];
ListeProduit[4]=["Rangement","18po 3tiroirs"];
ListeProduit[5]=["Rangement","Ouvert  Insert central 18po"];
ListeProduit[6]=["Rangement","Ouvert Bout 18po gauche"];
ListeProduit[7]=["Rangement","Ouvert Bout 18po droite"];
ListeProduit[8]=["Rangement","36po 2portes"];
ListeProduit[9]=["Rangement","Ouvert  Insert central 36po"];
ListeProduit[10]=["Rangement","Coin 90 18po 1porte gauche"];
ListeProduit[11]=["Rangement","Coin 90 18po 1porte droite"];
ListeProduit[12]=["Rangement","Desserte 18po"];
ListeProduit[13]=["Rangement","Chef 12po"];
ListeProduit[14]=["Rangement","Poubelle Coulissante 18po"];
ListeProduit[15]=["Rangement","Bonbonne 18po 1portegauche"];
ListeProduit[16]=["Rangement","Bonbonne 18po 1porte droite"];
ListeProduit[17]=["Évier","SMRT_N 18po 1portegauche"];
ListeProduit[18]=["Évier","SMRT_N 18po 1portedroite"];
ListeProduit[19]=["Évier","SMRT_E 18po 1portegauche"];
ListeProduit[20]=["Évier","SMRT_E 18po 1portedroite"];
ListeProduit[21]=["Évier","Base Évier 18po 1porte gauche"];
ListeProduit[22]=["Évier","Base Évier 18po 1doordroite"];
ListeProduit[23]=["Évier","BAR SMRT_N 36po 2portes"];
ListeProduit[24]=["Évier","SMRT_N 36po 2portes"];
ListeProduit[25]=["Évier","BAR SMRT_E 36po 2portes"];
ListeProduit[26]=["Évier","SMRT_E 36po 2portes"];
ListeProduit[27]=["Évier","SocialCorner gauche 36po 2portes"];
ListeProduit[28]=["Évier","SocialCorner droite 36po 2portes"];
ListeProduit[29]=["Évier","Base Évier 36po 2portes"];
ListeProduit[30]=["Grill","Grill Ceramique 30po 2portes"];
ListeProduit[31]=["Grill","Grill 36po 2portes"];
ListeProduit[32]=["Grill","Grill 42po 2portes"];
ListeProduit[33]=["Grill","Grill 48po 2portes"];
ListeProduit[34]=["Électroménagers","Electroménager 26po"];
ListeProduit[35]=["Finition","Filler Coin 90 3poX3po"];
ListeProduit[36]=["Finition","Filler Lineaire 2po"];
ListeProduit[37]=["Finition","Filler Lineaire - 4po"];
ListeProduit[38]=["Finition","Filler Lineaire avec Ouverture Prise Electrique 2poX4po - 4po"];
ListeProduit[39]=["Finition","Filler Lineaire 6po"];
ListeProduit[40]=["Finition","Filler Lineaire Ajustable"];
ListeProduit[41]=["Ambiance","Eclairage Lineaire 4po"];
ListeProduit[42]=["Filler Bout Droit","Panneau Bout 1po Droit"];
//
//Remplissage de la liste  1 (s?©lecteur Cabinet)
console.println("Remplissage liste 1 ")
lld=this.getField("DropdownE1","DropdownS1","DropdownS2","DropdownS3","DropdownS4,DropdownS5,DropdownE2");
lld.delay=true;
lld.clearItems();
index=0;
   while(index<ListeProduit.length)
   {
   lld.insertItemAt(ListeProduit[index][0],ListeProduit[index][0],index)
   index=index+1;
   }
lld.setFocus();
lld.currentValueIndices=0;
lld.delay=false;


//Remplissage de la liste 2 (s?©lecteur Specifications)
console.println("Remplissage liste 2.");
lld=this.getField("DropdownE1Spec","DropdownS1Spec","DropdownS2Spec","DropdownS3Spec","DropdownS4Spec","DropdownS5Spec","DropdownE2Spec");
lld.delay=true;
lld.clearItems();
index=0;
   while(index<ListeProduit.length)
   {
   lld.insertItemAt(ListeProduit[index][1],ListeProduit[index][1],index)
   index=index+1;
   }
lld.setFocus();
lld.currentValueIndices=0;
lld.delay=false;
//Fin remplissage Liste 2
console.println("Initialisation.Definition tableau.Fin")
}


Initialisation()

IP archivée


warrenc50  29 octobre 2018 : 14:15


Pour une de mes lignes du tableau j'ai 7 lignes 2 colonnes

item 2, 1ere colonne code qui parle à la 2e colonne: if(!event.willCommit)
{
rang=0;
selection=this.event.change;
console.println("*********"+selection);
index=1;
while(index<ListeProduit.length)
{
if(selection==ListeProduit[index][0]){rang=index;}
index=index+1;
}
console.println(rang);
this.getField("DropdownS1Spec").currentValueIndices=rang;
}




Item 2, 2e colonne : celui qui parle à la première colonne :

if(!event.willCommit)
{
rang=0;
selection=this.event.change;
console.println("*********"+selection);
index=1;
while(index<ListeProduit.length)
{
if(selection==ListeProduit[index][1]){rang=index;}
index=index+1;
}
console.println(rang);
this.getField("DropdownS1").currentValueIndices=rang;
}

IP archivée


bebarth  29 octobre 2018 : 19:02

bonjour,
Ne pourrais-tu pas regarder le script de ce post et voir s'il ne correspond pas mieux et plus simplement à ton utilité :
A mon avis, ce script est bien compliqué pour ce que tu veux faire. Je pense qu'il est très bien lorsqu'on a beaucoup d'arrière arrière... petites filles, mais dans ton cas il y a un peu plus simple !

@+
 :bonjour:

IP archivée


warrenc50  29 octobre 2018 : 21:04

Merci beaucoup
ça fonctionne!!




Maintenant j'aimerais pouvoir permettre l'ajout par l'utilisateur d'un autre cabinet.
Est-ce possible?

IP archivée


bebarth  30 octobre 2018 : 15:09

bonjour,
Maintenant j'aimerais pouvoir permettre l'ajout par l'utilisateur d'un autre cabinet.
Est-ce possible?
C’est certainement très clair pour toi, mais je ne comprends pas...
T’est-il possible de partager un fichier ?
@+
 :bonjour:

IP archivée


warrenc50  30 octobre 2018 : 18:52

Voici le fichier


Pour ce qui est de l'ajout d'une ligne de saisie pour ajouter un/des cabinets, s'il y a une solution je suis preneur.
Je tente aussi d'afficher un no de produits SKU dans ma 3e colonne lorsq'un item est choisi dans la colonne spécification.
La colonne "Type" détermine le Type de cabinets.
La colonne "Spécification" indique les dimensions et autres informations du type de cabinet
La colonne "SKU" correspond au no de produit relatif au choix fait dans la colonne Spécification. Donc cette colonne affiche tout simplement le no de produit choisi. Mais là ça ne fonctionne pas.
Je fais des tests avbec la 2e ligne

IP archivée


bebarth  30 octobre 2018 : 23:01

bonsoir,
Lorsque tu définis tes tables, il faut également indiquer les valeurs d'exportation, genre :
g.setItems([["Aucun Panneau de bout","1234567890"],["Panneau Bout 1po Gauche","9876543210"]]);Puis il faut mettre en script de calcul des champs SKU :
this.event.target.value=this.getField("Specifications").value;Ne pas oublier de cocher la case "Valider la valeur sélectionnée immédiatement des champs "Specifications" et celle "Autoriser l'utilisateur à saisir des textes personnalisé".
Je t'ai fait juste la première ligne !
@+
 :bonjour:

IP archivée


warrenc50  31 octobre 2018 : 15:23

Merci Beaucoup!!!
ça fonctionne numéro 1

IP archivée


warrenc50  01 novembre 2018 : 13:46

Demande additionnelle
Est-ce possible, avec des cases à cocher, d'ajouter à la fin du SKU, d'autres informations complémentaires?
Ex. : HROK-STOC-8XXXXX (qui est dans mon champ SKU)
et quand je clique sur une case à cocher ça donnerait ça : HROK-STOC-8XXXXX-316
et sur une autre case : HROK-STOC-8XXXXX-316-bck

IP archivée


bebarth  01 novembre 2018 : 14:47

bonjour,
Oui, c’est possible !
-bck doit être disponible uniquement après -316 où indifféremment avec ou sans ?
Je regarde ça ce soir !
@+
 :bonjour:

IP archivée


warrenc50  01 novembre 2018 : 14:50

Le sens d'affichage n'a pas d'importance.
pourvu qu'ils s'ajoutent après le Sku affiché


Mais bon.. si ça s'ajoute selon la séquence des cases à cocher, ça ferait bien.
voici toute la séquence... mais bon je sais que j'exagère
-316 -BCK -LBT -LIN -INS - LCK - HCB

Merci!!

IP archivée


bebarth  01 novembre 2018 : 23:15

bonsoir,
Je t'ai fait les 2 premières cases de la première ligne le plus simplement.
Après, selon les noms des champs que tu donneras, il serait bien de faire des boucles... ça éviterait d'écrire plein de lignes !
@+
 :bonjour:

IP archivée


warrenc50  02 novembre 2018 : 14:47

WOW!
Un immense MERCI!!

IP archivée


bebarth  02 novembre 2018 : 15:57

bonjour,
Si ça t'intéresse, une fois que tu auras mis en place tous les champs, si tu peux partager ton fichier je t'aiderai à "simplifier" le script pour le minimiser.
A moins que tu y arrives seul, évidemment...
@+
 :bonjour:

IP archivée


warrenc50  02 novembre 2018 : 19:35

daccord, mais le forum ne me permet pas de partager un fichier de plus de 1024 ko

IP archivée


bebarth  02 novembre 2018 : 21:41

...par MP via WeTransfer ou autre...
@+
 :bonjour:

IP archivée


Merlin  03 novembre 2018 : 16:46

le forum ne me permet pas de partager un fichier de plus de 1024 ko
Voir : https://abracadabrapdf.net/forum/index.php/topic,2974.0.html
 :Smiley03:

IP archivée


warrenc50  08 novembre 2018 : 15:25

Donc à date tout fonctionne
Par contre, j'aimerais exclure certains choix (cases à cocher) quand on choisit certains types de cabinet.
Exemple, on ne peut cocher (Isolation de l'évier) si on a choisi un cabinet de rangement.
Est-ce possible?

IP archivée


bebarth  08 novembre 2018 : 21:16

bonsoir,
Il faut ajouter une condition !
Dans le fichier exemple, j'ai masqué la case mais on pourrait aussi la mettre en lecture seule...
@+
 :bonjour:

IP archivée


warrenc50  09 novembre 2018 : 14:42

Merci!
j'ai du modifier un peu le code, mais la base était là
Ça fonctionne

IP archivée


bebarth  09 novembre 2018 : 16:51

j'ai du modifier un peu le code, mais la base était là
...en même temps, je ne peux pas écrire quelque chose de définitif avec des données inventées !
@+
 :bonjour:

IP archivée


warrenc50  09 novembre 2018 : 20:40

Ton aide est très apprécié.
Je n'y serais pas arrivé aussi rapidement sans ton aide.


Je continue à travailler sur le projet.
D'autres demandes entrent...
afficher le prix de chaque item de ma table "Spécifications" dans un autre champ texte.

var f=this.getField("Cabinets1");
var g=this.getField("Specifications1");
var laCabinets1=event.value;
for (var i=0; i<f.numItems; i++) {
if (laCabinets1==f.getItemAt(i,false)) {
var laTable1=+f.getItemAt(i,true);
break;
}
}
g.clearItems();
switch (laTable1) {
case 1:
g.setItems([["Faire un choix",""],["Cabinet bout ouvert (sans panneau Bout - E1)","HROK-STOC-8XXXXX"],["18po 1porte gauche","HROK-SB-8XXXXX"],["18po 1porte droite","HROK-SB-8XXXXX"],["18po 3tiroirs","HROK-ST3D-8XXXXX"],["Ouvert Insert central 18po","HROK-STOM-8XXXXX"],["Ouvert Bout 18po gauche","HROK-ST1D-8XXXXX"],["Ouvert Bout 18po droite","HROK-STOC-8XXXXX"],["36po 2portes","HROK-ST2D-8XXXXX"],["Ouvert Insert central 36po","HROK-STOM-8XXXXX"],["Coin 90 18po 1porte gauche","HROK-STC-8XXXXX"],["Coin 90 18po 1porte droite","HROK-STC-8XXXXX"],["Desserte 18po","HROK-STTC-8XXXXX"],["Chef 12po","HROK-STCC-8XXXXX"],["Poubelle Coulissante 18po","HROK-STTR-8XXXXX"],["Bonbonne 18po 1portegauche","HROK-STTK-8XXXXX"],["Bonbonne 18po 1porte droite","HROK-STTK-8XXXXX"]]);
break;
case 2:
g.setItems([["Faire un choix",""],["SMRT_N 18po 1portegauche","HROK-SSSM-8XXXXX"],["SMRT_N 18po 1portedroite","HROK-SSSM-8XXXXX"],["SMRT_E 18po 1portegauche","HROK-SSSM-8XXXXX"],["SMRT_E 18po 1portedroite","HROK-SSSM-8XXXXX"],["Base Évier 18po 1porte gauche","HROK-SB-8XXXXX"],["Base Évier 18po 1doordroite","HROK-SB-8XXXXX"],["BAR SMRT_N 36po 2portes","HROK-SSSM-8XXXXX"],["SMRT_N 36po 2portes","HROK-SSSM-8XXXXX"],["BAR SMRT_E 36po 2portes","HROK-SSSM-8XXXXX"],["SMRT_E 36po 2porte","HROK-SSSM-8XXXXX"],["SocialCorner gauche 36po 2portes","HROK-SSSC-8XXXXX"],["SocialCorner droite 36po 2portes","HROK-SSSC-8XXXXX"],["Base Évier 36po 2portes","HROK-SB-8XXXXX"]]);
break;
case 3:
g.setItems([["Faire un choix",""],["Ceramique 30po 2portes","HROK-GC-8XXXXX"],["Grill 36po 2portes","HROK-GR-8XXXXX"],["Grill 42po 2portes","HROK-GR-8XXXXX"],["Grill 48po 2portes","HROK-GR-8XXXXX"]]);
break;
case 4:
g.setItems([["Faire un choix",""],["Electroménager 26po","HROK-APP-8XXXXX"]]);
break;
case 5:
g.setItems([["Faire un choix",""],["Filler Coin 90 3poX3po","HROK-CFLR-8XXXXX"],["Filler Lineaire 2po","HROK-LFLR-8XXXXX"],["Filler Lineaire - 4po","HROK-LFLR-8XXXXX"],["Filler Lineaire pour électricité - 4po","HROK-LFLR-8XXXXX"],["Filler Lineaire 6po","HROK-LFLR-8XXXXX"],["Filler Lineaire Ajustable","HROK-LFLR-8XXXXX"]]);
break;
case 6:
g.setItems([["Faire un choix",""],["Eclairage Lineaire 4po","HROK-LEDL-8XXXXX"]]);
break;
}

IP archivée


bebarth  10 novembre 2018 : 08:28

bonjour,
je n'ai pas compris s'il y avait une question !  :geek:
@+
 :bonjour:

IP archivée


warrenc50  13 novembre 2018 : 16:59

Dans la "table" que j'ai présentée (message précédent plus haut), est-ce possible d'ajouter un prix pour chacun des items et de l'afficher dans une autre zone texte?

IP archivée


bebarth  15 novembre 2018 : 08:10

bonjour,
Je crois que j'ai oublié de répondre... désolé !
Dans la "table" que j'ai présentée (message précédent plus haut), est-ce possible d'ajouter un prix pour chacun des items et de l'afficher dans une autre zone texte?

Ici, dans les tables, on définit chaque élément d'une liste avec 1 ou 2 valeurs. Si on indique une seule valeur, c'est la valeur de l'élément (qui est affichée dans la liste), s'il y a 2 valeurs, la première représente la valeur de l'élément et la seconde la valeur d'exportation (celle qui sera utilisée pour un éventuel "calcul").
Dans le premier cas il n'est pas nécessaire de mettre des crochets ("Faire un choix" suffit au lieu de ["Faire un choix",""]) alors que dans le deuxième cas les crochet sont impératifs pour séparer les différents éléments (["Cabinet bout ouvert (sans panneau Bout - E1)","HROK-STOC-8XXXXX"]).
Si tu indiques un intitulé et une référence pour chaque élément de ta liste, tu ne pourras donc pas indiquer une troisième valeur. Soit tu indiques le prix avec la référence, soit il faut créer une autre table avec les références/prix. Dans ce cas, il serait préférable que les listes ailles chercher les référence dans cette même table, ce qui évite d'avoir 2 fois à taper la même référence. C'est plus sûr en cas de modifications... Par contre cela demande à réécrire le script, et c'est un peu de boulot !
J'espère avoir été clair.
@+
 :bonjour:

IP archivée


warrenc50  15 novembre 2018 : 15:10

Mon premier menu déroulant sert à déterminer quelle "Case" (1,2,3,4,5,6) sera choisie dans la Table. (img : Menu déroulant 1.png)
Mon 2e menu déroulant choisit l'item et sa valeur d'exportation (Sku) qui est affichée dans un autre champ. (Voir table plus haut)
Chaque Options qui est cliquée par la suite s'ajoute au Sku en bout de ligne. (img : exemple d'une ligne.png)


Et là je dois faire afficher le prix de chaque item du 2e menu et des options sélectionnées dans un autre champ (Prix)




Ça pourrait ressembler à quoi la programmation si j'ajoute une table pour cibler le résultat du Champ SKU et afficher le prix correspondant dans un Champ Prix?


Merci!

IP archivée


bebarth  19 novembre 2018 : 08:04

bonjour,
...et désolé pour cette réponse un peu tardive.
Il faudrait faire juste une table de correspondance avec le référence SKU et son prix.
En ce qui concerne les options, si telle case est cochée la variable correspondante est le prix, sinon elle est à 0. Ensuite tu additionnes le prix  de la référence avec toutes les variables option (même celles à zéro) et ça te donne le prix total.
Je vois que ton formulaire commence à être un peu complexe, et je pense que certaine opérations devrait passer en "fonction", ce qui t'éviterait d'écrire x fois la même chose, mais cela demande de revoir un peu le nom des champs...
@+
 :bonjour:

IP archivée


warrenc50  19 novembre 2018 : 16:30

J'ai tenté ça pour aller lire le résultat qui s'affiche dans le champ (SKU1)
et afficher le prix dans le champ (Prix1). Mais ça ne fonctionne pas.

var f=this.getField("SKU1");
var g=this.getField("Prix1");
var laSKU1=event.value;
for (var i=0; i<f.numItems; i++) {[/size]
if (laSKU1===f.getItemAt(i,false)) {
var laTableprix=+f.getItemAt(i,true);
break;
}
}
g.setItems();
switch (laTableprix) {
case 1:
g.setItems([["HROK-STOC-8XXXXX","$200.00"],["HROK-SB-8XXXXX","$200.00"],["HROK-SB-8XXXXX","$200.00"],["HROK-ST3D-8XXXXX","$200.00"],["HROK-STOM-8XXXXX","$200.00"],["HROK-ST1D-8XXXXX","$200.00"],["HROK-STOC-8XXXXX","$200.00"],["HROK-ST2D-8XXXXX","$200.00"],["HROK-STOM-8XXXXX","$200.00"],["HROK-STC-8XXXXX","$200.00"],["HROK-STC-8XXXXX","$200.00"],["HROK-STTC-8XXXXX","$200.00"],["HROK-STCC-8XXXXX","$200.00"],["HROK-STTR-8XXXXX","$200.00"],["HROK-STTK-8XXXXX","$200.00"],["HROK-STTK-8XXXXX","$200.00"],

["HROK-SSSM-8XXXXX","$200.00"],["HROK-SSSM-8XXXXX","$200.00"],["HROK-SSSM-8XXXXX","$200.00"],["HROK-SSSM-8XXXXX","$200.00"],["HROK-SB-8XXXXX","$200.00"],["HROK-SB-8XXXXX","$200.00"],["HROK-SSSM-8XXXXX","$200.00"],["HROK-SSSM-8XXXXX","$200.00"],["HROK-SSSM-8XXXXX","$200.00"],["HROK-SSSM-8XXXXX","$200.00"],["HROK-SSSC-8XXXXX","$200.00"],["HROK-SSSC-8XXXXX","$200.00"],["HROK-SB-8XXXXX","$200.00"],

["HROK-GC-8XXXXX","$200.00"],["HROK-GR-8XXXXX","$200.00"],["HROK-GR-8XXXXX","$200.00"],["HROK-GR-8XXXXX","$200.00"],

["HROK-APP-8XXXXX","$200.00"],

["HROK-CFLR-8XXXXX","$200.00"],["HROK-LFLR-8XXXXX","$200.00"],["HROK-LFLR-8XXXXX","$200.00"],["HROK-LFLR-8XXXXX","$200.00"],["HROK-LFLR-8XXXXX","$200.00"],["HROK-LFLR-8XXXXX","$200.00"],

["HROK-LEDL-8XXXXX","$200.00"]]);
break;
}
}

IP archivée


bebarth  19 novembre 2018 : 16:36

J'essaye de te faire un exemple sur la copie que j'ai ce soir ou demain matin !
@+
 :bonjour:

IP archivée


bebarth  19 novembre 2018 : 22:41

bonsoir,
Voici ce que j'ai fait. Je te laisse étudier ça.
J'ai essayé d'adapter un script par rapport aux éléments que j'avais, mais personnellement j'aurais fait ça différemment. Par contre il aurait fallut renommer les champs et ré-écrire certains scripts !
https://we.tl/t-qHozUizRCT
@+
 :bonjour:

IP archivée


warrenc50  20 novembre 2018 : 16:48

En passant... Merci
Mes no de produits contiennent des traits d'unions " - ", ce qui semble poser un problème dans le fichier scripts.
Que veux-tu dire par renommer les champs?


 :bonjour:  À+

IP archivée


bebarth  20 novembre 2018 : 18:49

bonjour,Utilise "valueAsString" plutôt que "value", ça évitera que le script prenne les traits d'union pour des signes "moins".Quant à renommer les champs, il faudrait pouvoir mettre un index correspondant au numéro de ligne par exemple. On pourrait alors construire des boucles avec les scripts, ce qui éviterait de retaper x fois la même chose !
@+
 :bonjour:

IP archivée


warrenc50  20 novembre 2018 : 19:14

Je suis daccord pour modifier le noms des champs et alléger le script.

IP archivée


bebarth  21 novembre 2018 : 18:21

bonjour,
Il faut que je trouve un moment ( :priere: ), et je regarde !
@+
 :bonjour:

IP archivée


warrenc50  21 novembre 2018 : 21:23

https://we.tl/t-4cH5dowBbN

Je ne sais pas où est mon erreur.. mais les prix ne s'affichent pas

IP archivée


bebarth  23 novembre 2018 : 12:25

bonjour,
Voici ce que je t'ai fait.
Je n'ai pas eu le temps de tout tester car je pars en week-end.
Je te laisse étudier et on en reparle lundi.
@+
 :bonjour:

IP archivée


Merlin  23 novembre 2018 : 13:34

J'espère pour toi que tu prends le train.


Bon weekend.
 :Smiley15:

IP archivée


warrenc50  26 novembre 2018 : 19:44

ça fonctionne à merveille!!!
et le fichier est très léger.


Un grand merci!!

IP archivée


bebarth  27 novembre 2018 : 07:58

bonjour,
Arrivé un moment, il faut choisir entre "complexité" et "compréhension"... surtout en fonction du temps à consacrer !
Je dis ça car il aurait été encore possible de "réduire" la table (sans le premier élément, mais ça compliquait le script) ou mettre les prix des options en table (mais je n'ai pas eu le temps de peaufiner).
@+
 :bonjour:

IP archivée


warrenc50  17 décembre 2018 : 16:47

Bonjour,
Est-ce possible de calculer un montant en fonction d'un pourcentage (1.5%) du prix du cabinet de base, pour une de mes options (case à cocher).
Le prix de cette option varie selon le SKU du cabinet.

IP archivée


bebarth  17 décembre 2018 : 21:32

bonsoir,
Il faudrait que je me replonge dans le fichier que je t'avais proposé et je ne sais pas si tu l'as utilisé tel quel !
D'après ce que je me souviens il y avait une case invisible avec le prix sans options. Il faudrait donc rajouter une case à cocher et si elle est cochée (!="Off"), tu rajoutes les 1,5%.
@+
 :bonjour:

IP archivée


bebarth  18 décembre 2018 : 09:12

bonjour,
En fin de compte, dans mon fichier j'ai rajouté une case à cocher Opt8. et quelques lignes en fin de fonction "lesOptions" :
...
    }
    prixOptions=prixOptions+opt7;
    if (this.getField("Opt8."+indice).value!="Off") {
        opt8=this.getField("Prix."+indice).value*0.015;
    } else {
        opt8=0;
    }
    prixOptions=prixOptions+opt8;
}

@+
 :bonjour:

IP archivée


warrenc50  18 décembre 2018 : 17:06

Merci!
En fait j'ai juste modifier l'option 1 avec ton code
Je n'ai pas eu à ajouter de cases à cocher.
ça ajoute 1.5% au prix initial




IP archivée


warrenc50  16 avril 2019 : 15:30

bonjour


J'ai une question.
Les formulaires que j'ai fait, fonctionnent super bien quand l'utilisateur les ouvre avec son application de bureau Acrobat.
Par contre, si c'est le plug-in Acrobat du navigateur qui le prend en charge, les fonctions du formulaire ne fonctionne plus.
Est-ce possible de forcer l'ouverture du PDF avec l'application bureau de l'utilisateur?

IP archivée


bebarth  16 avril 2019 : 18:57

Est-ce possible de forcer l'ouverture du PDF avec l'application bureau de l'utilisateur?
En local oui, mais pas via JavaScript...
Exemple pour Firefox : https://support.mozilla.org/fr/kb/desactiver-lecteur-pdf-integre
@+
 :bonjour:

IP archivée


warrenc50  16 avril 2019 : 19:40

je comprends.. le hic réside dans le fait que les clients ont leur environnement sur lequel je n'ai pas de contrôle.
je me demandais s'il y avait une façon de faire en sorte que le PDF ouvre par défaut avec l'application bureau pour eux, sans qu'ils aient à changer quoi que ce soit.

IP archivée


Merlin  17 avril 2019 : 10:35

Par contre, si c'est le plug-in Acrobat du navigateur qui le prend en charge, les fonctions du formulaire ne fonctionne plus.
En fait non.
Si ça ne fonctionne pas c'est justement parce-que le plugin Adobe PDFViewer n'est pas utilisé.
Et s'il n'est pas utilisé c'est parce-qu'il n'est pas supporté, ni par Firefox ni par Chrome.

Les solutions connues sont ici :
- https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/forcer-utilisation-pdf-avec-acrobat-reader/
- https://www.abracadabrapdf.net/ressources-et-tutos/creation/forcer-telechargement-pdf/
 :Smiley15:

IP archivée


warrenc50  06 novembre 2019 : 16:07

Allo

J'ai bonifié le formulaire PDF
J'ai un champ qui affiche la dimension totale de chaque item choisi
Le problème que j'ai, est que ce champ ne se met pas à jour.

Dans ma colonne : Cabinet Category , quand je remets le menu déroulant à "Make a choice", le champ "Total dimension in inches:   Side A:" n'ajuste pas son calcul.

SI je sélectionne dans le Step 1 un item, la colonne Step 2 devient disponible et je peux sélectionner l'item de mon choix.
Par contre, si je retourne dans la colonne Step 1 pour remettre "Make a choice", l'item de la colonne "Step 2" demeure à sa position et ne se remet pas à "Make a choice" ce qui afficherait 0 comme dimension. L'utilisateur ne


Avez-vous une idée pour régler ce problème ?

IP archivée


Merlin  06 novembre 2019 : 19:48

Je ne vois rien dans la colonne "step 2".
Par-contre la console renvoie des erreurs à chaque clic…
 :geek:

IP archivée


warrenc50  06 novembre 2019 : 20:06

Il faut ouvrir le pdf avec l'application bureau
La colonne 1 doit être choisie en premier
ensuite l'information de la colonne 2 apparait

IP archivée


bebarth  06 novembre 2019 : 21:22

bonjour,
Il faudrait que je me replonge un an après, et en ce moment je n'ai pas beaucoup de temps.
Ce qui est certain, c'est que tu ne peux pas écrire :
this.event.target.value="";pour une liste déroulante. On ne définie pas sa valeur comme ça !
En tout cas, je trouve ton formulaire très sympa !
@+
 :bonjour:

IP archivée


warrenc50  06 novembre 2019 : 21:54

Voici comment j'ai fait mes listes déroulantes de Step 1.


et Step 2 :

var lesElements =[
   //Type 0
   [],
   //Type 1 :  Left end
   [
      ["1-0","Make a choice","","0",0],
      ["1-1","No filler or cabinet","","0",0],
      ["1-2","1in End Filler pannel Left end","HROK-EFLR-800043","375.00",1],
      ["1-3","18in Open Shelves Cabinet","HROK-STOC-800022","2000.00",18]
   ],
   //Type 2 : Storage & specialities
   [
      ["2-0","Make a choice","","0",0],

   ],
   //Type 3 : Sink
   [

      ["3-0","Make a choice","","0",0],
      ["3-1","15in Sink Base Cabinet 1 Door Left Hinges","HROK-SB-800057","2750.00",15]

   ],
   //Type 4 : Grill
   [
      ["4-0","Make a choice","","0",0],
      ["4-1","15in Grill Base Cabinet 1 door Left hinges","HROK-GR-800059","2750.00",15]

   ],
   //Type 5 : Appliances
   [
      ["5-0","Make a choice","","0",0],
      ["5-1","18in Appliance Cabinet","HROK-APP-800070","1000.00",18]

   ],
   //Type 6 : Filler
   [
      ["6-0","Make a choice","","0",0],
      ["6-1","2in Linear Filler","HROK-LFLR-800046","275.00",2],
      ["6-2","4in Linear Filler","HROK-LFLR-800047","275.00",4],

   ],
   //Type 7 : Ambience
   [
      ["7-0","Make a choice","","0",0],
      ["7-1","4in Linear LED Lighting module","HROK-LEDL-800036","2000.00",4],
      ["7-2","4in Linear LED Lighting module for electrical box","HROK-LEDL-800037","2000.00",4]
   ],
   //Type 8 :  Right end
   [
      ["8-0","Make a choice","","0",0],
      ["8-1","No filler or cabinet","","0",0],
      ["8-2","1in End Filler pannel Right end","HROK-EFLR-800044","375.00",1],
      ["8-3","18in Open Shelves Cabinet Open Facade & Right end","HROK-STOC-800023","2000.00",18]
   ],
   //Type 9 : Corner Cabinet
   [
      ["9-0","Make a choice","","0",0],
      ["9-1","46in Corner Storage Cabinet 1 door Left Hinges","HROK-STC-800026","3625.00","46",31],
      ["9-2","46in Corner Storage Cabinet 1 door Right Hinges","HROK-STC-800027","3625.00","31",46],
      ["9-3","90° Corner Filler cabinet Right end","HROK-CFLR-800045","1750.00","31",31]
   ]
];

IP archivée


Merlin  07 novembre 2019 : 07:27

Il faut ouvrir le pdf avec l'application bureau
J'utilise Acrobat Pro DC pour MacOS.

La colonne 1 doit être choisie en premier ensuite l'information de la colonne 2 apparait
C'est bien ce que je fais et rien ne s'affiche dans la colonne step2.
Par-contre la console est toujours aussi volubile :

Les listes TELEPHONIE FIXE ont ete remplies a l'ouverture du document.
Les listes ACCES INTERNET ont ete remplies a l'ouverture du document.
Les listes TELEPHONIE FIXE ont ete remplies a l'ouverture du document.
Les listes ACCES INTERNET ont ete remplies a l'ouverture du document.
TypeError: x is null
2:Document-Level:Date
ReferenceError: lIndice is not defined
3:AcroForm:Cabinets.0:Validate
ReferenceError: lIndice is not defined
3:AcroForm:Cabinets.1:Validate
ReferenceError: lIndice is not defined
2:AcroForm:Specifications.2:Annot1:MouseUp:Action1
ReferenceError: lIndice is not defined
2:AcroForm:Specifications.0:Annot1:MouseUp:Action1
ReferenceError: lIndice is not defined
2:AcroForm:Specifications.0:Annot1:MouseUp:Action1
ReferenceError: lIndice is not defined
2:AcroForm:Specifications.0:Annot1:MouseUp:Action1
ReferenceError: lIndice is not defined
2:AcroForm:Specifications.0:Annot1:MouseUp:Action1

IP archivée


warrenc50  07 novembre 2019 : 16:42

Moi j'utilise Acrobat DC sur PC


Je me demande s'il existe un script pour remettre mes listes à leur position par défaut lorsque la première liste est remise à sa position par défaut.

IP archivée


warrenc50  13 novembre 2019 : 16:51

J'ai trouvé la solution

IP archivée