Donnez vie à vos documents numériques !
 

Formulaire de commandes

abracadabraPDF Forums PDF – Général Formulaire de commandes

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #45947
    warrenc50
    Membre

    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  {
      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  {
      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()

Affichage de 25 réponses de 26 à 50 (sur un total de 68)
  • Auteur
    Réponses
  • #64793
    bebarth
    Maître des clés

    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:

    #64794
    warrenc50
    Membre

    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.

    Code:
    var f=this.getField(« SKU1 »);
    var g=this.getField(« Prix1 »);
    var laSKU1=event.value;
    for (var i=0; iif (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;
    }
    }

    #64795
    bebarth
    Maître des clés

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

    #64796
    bebarth
    Maître des clés

    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:

    #64797
    warrenc50
    Membre

    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:  À+

    #64798
    bebarth
    Maître des clés

    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:

    #64799
    warrenc50
    Membre

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

    #64800
    bebarth
    Maître des clés

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

    #64801
    warrenc50
    Membre

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

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

    #64802
    bebarth
    Maître des clés

    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:

    #64803
    Merlin
    Maître des clés

    J’espère pour toi que tu prends le train.
    gillet-jaune1.jpg

    Bon weekend.
    :Smiley15:

    #64804
    warrenc50
    Membre

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

    Un grand merci!!

    #64805
    bebarth
    Maître des clés

    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:

    #64806
    warrenc50
    Membre

    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.

    #64807
    bebarth
    Maître des clés

    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:

    #64808
    bebarth
    Maître des clés

    bonjour,
    En fin de compte, dans mon fichier j’ai rajouté une case à cocher Opt8. et quelques lignes en fin de fonction « lesOptions » :

    Code:

        }
        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:

    #64809
    warrenc50
    Membre

    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

    #64810
    warrenc50
    Membre

    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?

    #64811
    bebarth
    Maître des clés

    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:

    #64812
    warrenc50
    Membre

    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.

    #64813
    Merlin
    Maître des clés

    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:

    #64814
    warrenc50
    Membre

    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 ?

    #64815
    Merlin
    Maître des clés

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

    #64816
    warrenc50
    Membre

    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

    #64817
    bebarth
    Maître des clés

    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 :

    Code:
    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:

Affichage de 25 réponses de 26 à 50 (sur un total de 68)
  • Vous devez être connecté pour répondre à ce sujet.