Dans la vue du wizard, qui s'affiche, 4 types d'avance sont possibles
Cette vue est dynamique car elle s'adapte au choix retenu.
Par exemple, si l'on choisit "Pourcentage", la vue va se modifier dynamiquement en ajoutant le champ de saisie "Montant anticipé"
Techniquement, cela repose sur l'utilisation de l'attribut "on_change" d'un champ et sur les possibilités dynamiques des vues.
Le positionnement de l'attribut "on_change" permet l'exécution d'une méthode au changement de valeur du champ.
Dans notre exemple, le libellé "Que voulez vous facturer ?" est associé au champ "advance_payment_method"
![]() |
Mode "développeur" |
L'attribut "on_change" de ce champ permet d'appeler la méthode "onchange_method"
![]() |
sale_make_invoice_advance.xml |
Cette méthode permet ici d'affecter une valeur à "amount"
![]() |
sale_make_invoice_advance.py |
Concernant l'affichage dynamique des champs (et/ou libellés), cela est géré par l'attribut "invisible"
![]() |
sale_make_invoice_advance.xml |
Enfin, le click sur le bouton "Créer facture / Create Invoice" ...
![]() |
Mode "développeur" |
... déclenche l'appel de la méthode "create_invoices" ...
![]() |
sale_make_invoice_advance.py |
... qui appelle la méthode "_create_invoices"
![]() |
sale_make_invoice_advance.py |
... qui crée une nouvelle instance de l'objet "account.invoice" (facture)
La facture est créée dans l'état "brouillon" (attribut "state" avec valeur "draft").