LE BASI DI ODOO. TUTORIAL PART 2.1

 

 

Ciao,

rieccomi a supportarvi nello sviluppo di personalizzazioni ODOO con lo scopo finale di offrirvi le conoscenze base necessarie.Per chi non avesse letto il primo tutorial lo può visualizzare al seguente link. La scorsa volta vi ho spiegato come aggiungere semplicemente un campo ad un modello preesistente. In questa prima parte definiremo insieme delle classi ex-novo ovvero andremo a creare dei modelli. Breve ma utile premessa: il primo tutorial è stato fatto con ODOO 9 mentre ora disponiamo della decima versione ( in arrivo la 11!), sono stati migliorati alcuni aspetti ma nel complesso il modus operandi è rimasto lo stesso. Tra le due versioni è stata rinominata negli addons la classe __openerp__.py  in __manifest__.py in cui, come nella precedente, vengono definiti I parametri utili alla corretta installazione del nostro addon personalizzato.

 

 

 

Nel __manifest__.py , oltre ai parametri di tipo descrittivo dell’addon, indicheremo:

  1. La categoria di appartenenza che “classifica” la tematica affrontata dal nostro addon

  2. Le dipendenze ovvero gli addons che il sistema installerà congiuntamente al nostro

  3. Le viste che l’ utente visualizzerà da interfaccia.

 

Andiamo a definire all’ interno della directory models una classe che implementi la creazione e l’ archiviazione di menu giornalieri per un ristorante.

 

 

 

La classe DailyMenu viene caratterizzata da:

  1. _name: Il nome associato alla classe, ho definito la classe come nomeAddon.nomeClasse

  2. _description : La descrizione sarà il “nome” del nostro addon visto dall’ utente

  3. _order : L’ ordine con cui I dati verrano visualizzati, nel nostro caso l’ ordine partirà dal menu più recente.

Per conoscere appieno I campi possibili da associare vi consiglio di studiare la documentazione della nuova ORM API di ODOO , vi aiuterà a comprendere la corretta definizione di essi.

La classe DailyMenu è composta dai seguenti campi :

  1. name, un nome da associare al Menu. Stiamo definendo un campo di tipo Char con un default pari a “Menu” ed un help ( un tooltip mostrato quando il cursore è sul campo name) che descriva all’ utente il significato del campo.

  2. date, un campo di tipo Data che per default è pari ad oggi.

  3. meals_line_ids, un campo di tipo one2many che ci permette di strutturare il nostro menu di più linee di tipo menu_restaurant.daily_menu.line. In questo modo un menu, tramite il proprio id, sarà collegato a più oggetti di tipo dailymenu_line

  4. general_note, un campo di tipo text utilizzato per associare al menu delle note generali.

Dopo aver definito la nostra classe Daily Menu andiamo ad implementare la classe Daily Menu Line che caratterizza appunto le linee che compongono il menu.

L’ utente da interfaccia dovrà poter definire una linea di menu indicando il tipo di piatto, il piatto ( ovvero l’ oggetto product in ODOO) , delle note, il prezzo del piatto ed una lista di tag associati al prodotto.

 

 

La classe Daily Menu Line quindi è composta da:

  1. _name: Il nome associato alla classe, ho usato una sintassi del tipo nome Addon.nomeClasse.line, in questo modo nel nome ho modo di conoscerne la dipendenza con il modello Daily Menu

  2. _description : La descrizione sarà il “nome” del nostro addon visto dall’ utente

  3. _order : L’ ordine con cui I dati verranno visualizzati, nel nostro caso l’ ordine partirà dal numero sequence che viene utilizzato da ODOO per abilitare il drag delle linee del menu.

I campi definiti nella classe Daily Menu Line sono:

  1. dailymenu_id che identifica l’id del menu di cui fa parte la line

  2. label_prod che definisce un “tipo di piatto” per il prodotto

  3. prod_tmpl_id, riferimento al product_template

  4. price, campo di tipo float che si riferisce al corrispondente campo del prodotto

  5. product_id, riferimento al product

  6. note, campo di tipo text per associare alla singola linea delle note

  7. sequence, un intero per utilizzare il drag delle linee

  8. tag_ids, campo di tipo many2many che permette di associare al prodotto una lista di tag ( che potrebbero essere degli ingredienti)

 

 

Ho definito infine un modello, LabelProd, per il tipo di piatto in modo da permettere all’ utente di crearne di nuovi, in maniera indipendente, definendone il nome.

Nel prossimo tutorial vi spiegherò come implementare le viste per I modelli appena creati e come accedere, dalla barra del menu principale di ODOO, al modello Daily Menu.

 

Stay tuned,

Letizia

 

Pubblicato in Tutorial da Letizia