How to... Aggiungere un wizard

Ciao a tutti,

eccoci con un nuovo post della nostra sezione di ODOO tutorial. Questa volta vi spiegherò come implementare un wizard all'interno dell'ERP.

Cos'è un wizard?

Un wizard in ODOO è un modello visualizzato attraverso una dialog window. Al contrario dei modelli visti fino ad ora un wizard  è dichiarato utilizzando la classe Transient Model.  

La classe Transient Model estende la più nota classe Model, da cui eredita  tutti i metodi.

Cosa differenzia la classe Transient Model dalla Model?

I dati di un Wizard non sono persistenti come quelli di un modello, essi vengono cancellati dopo un certo periodo di tempo.

I modelli Wizard non richiedono particolari diritti d'accesso quindi, al contrario dei Model, tutti gli utenti hanno permessi a generare dati wizard.

È importante sottolineare che da un modello non è possibile definire una relazione, attraverso un many2one per esempio, ad un modello wizard. 

Per ulteriore documentazione a riguardo vi consiglio di leggere quella ufficiale di ODOO 

Implementazione

Per convenzione i wizard vengono raccolti all'interno di una directory denominata wizard, abbiate cura di includere in ogni cartella il file di init per importare le classi definite nella directory e di inserire i file xml all'interno del manifest.

Immagine 1

 

È stata estesa prima di tutto la classe product.template al fine di aggiungere un campo state che ne indichi la disponibilità o meno.

Immagine 2

Nell'immagine 2 vediamo come si definisce una classe Wizard ed un metodo che mette in stato sold out i prodotti selezionati nel wizard. Come vedrete la definizione è del tutto analoga ad una classe standard di ODOO fatta eccezione del riferimento alla classe TransientModel.

Immagine 3

 

Nell'immagine 3 si visualizza la definizione della vista per il nostro wizard:

  • Il tag act_window definisce l'azione di visualizzazione  della form definita per la classe wizard, form in cui l'utente andrà a scegliere la lista dei prodotti  da rendere sold out.  
  • Il tag menuitem permette di inserire l'azione definita precedentemente in un menu all'interno del parent sale.product_config_main  contenuto nel modulo sale

La view di un modello wizard segue le stesse logiche di una view collegata ad un modello. 

All'interno della view è stato definito infine un button di tipo object che richiama attraverso il name il metodo di cambio stato dei prodotti definito nel wizard.

 
Interfaccia

Vediamone ora il risultato all'interno di ODOO:

Immagine 4

 

Nell'immagine 4  si visualizza la vista in cui l'utente può, tramite la nuova voce del menu contenuta nella Configurazione del modulo Sale, modificare lo stato dei prodotti in Sold out.

tutorial wizard interfaccia
Immagine 5

 

Nell'immagine 5 si visualizza il wizard,  dove l'utente seleziona i prodotti da modificare.

Immagine 6

 

Nell'immagine 6 vediamo infine che i prodotti selezionati nel wizard sono ora in stato "Non disponibile".

L'esempio appena presentato è davvero semplice ma permette di capire quanto possano essere utili i wizard per velocizzare le operazioni di un utente all'interno di ODOO.

Il nostro post finisce qui, spero tanto che questo tutorial vi sia stato d'aiuto.

Se anche tu cerchi supporto, chiarimenti a riguardo o vorresti valutare ODOO per la tua azienda non esitare a contattarci. 

Stay tuned,

Letizia

 

Pubblicato in Tutorial da Letizia
Tags: odoo, tutorial, wizard, product