Questo è il primo di altri post volti ad offrire, attraverso vari step, quelle che sono le basi per sviluppare in ODOO.
Prima di iniziare con il tutorial ci terrei a presentarmi: mi chiamo Letizia Freda, sono laureata in Ingegneria Informatica presso l'Università degli Studi del Sannio e lavoro come jr developer da febbraio presso la Netfarm.
Uno dei primi progetti, a cui ho preso parte all'interno dell'Azienda, è stato lo sviluppo di un addon per gestire un magazzino mediante ODOO. Per entrare nell'ottica del software per l'impresa ho partecipato alla conferenza sul Python che offriva una sezione dedicata al business, in cui ODOO è stato tra i principali protagonisti.
Ho constatato che a volte si dà per scontato la conoscenza delle basi. Questo tutorial, perciò, mira non ad approfondire questioni tecniche, ma a spiegare in maniera semplice l'abc per un buon inizio.
ODOO è la soluzione Open Source in grado di fornire un software per le imprese con alta possibilità di personalizzazione ma con, al contempo, un discreto ventaglio di soluzioni già presenti.
Nato nel 2005, dalla mente di Fabien Pinckaers, si è trasformato ed evoluto fino a diventare quella che è l’attuale versione, nota con il nome di ODOO 9.
ODOO è un ERP di tipo modulare; ciò comporta che ogni modulo o addon, una volta installato, estende e/o modifica la struttura di base.
Questa peculiarità fa sì che il programmatore possa sviluppare per il cliente una soluzione personalizzata senza dover curare aspetti a basso livello, ricavandone un prodotto ben piazzato sul mercato in tempi relativamente più brevi.
Ogni modulo sarà composto da una serie di :
- definizioni di dati e dei diritti
- codice che ne descrive le logiche
- viste per manipolarli
Il linguaggio di programmazione utilizzato è il python, le viste ed i diritti vengono definiti con file xml.
In questi tutorial, per gli esempi, si utilizzerà l’ambiente di sviluppo Pycharm.
ODOO è caratterizzato da tre licenze: la free, l’online e la enterprise.
La licenza free può essere utilizzata da un numero inferiore di 50 utenti e offre gli addons di base, l’enterprise e l’online hanno un ventaglio di funzionalità più ampio rispetto alla free ma c’è un costo mensile che comprende anche la possibilità di avere assistenza durante lo sviluppo.
Per chi si affaccia la prima volta a questo software la versione free è sicuramente quella più indicata, la si può installare al link https://www.odoo.com/page/download
Ad installazione avvenuta, all’interno della cartella di ODOO, saranno presenti gli addons di default.
La creazione di un addon ex novo, invece, avviene tramite terminale invocando il comando:
python odoo.py scaffold name_addon addons
Questo comando genererà all’interno della cartella un addon senza funzionalità, che però conterrà tutti i file che occorrono per poter interagire con la struttura di base.
Uno di questi, sicuramente il più importante, è _openerp_.py; esso è costituito da un dizionario che “descrive” il nostro addon, sono presenti infatti il summary e la description che verranno visualizzati al momento dell’installazione nel menu Apps all’interno dell’interfaccia.Nello stesso file ci sono anche gli elenchi delle viste e/o dei template che l’addon aggiunge.
Per poter visualizzare l’addon appena creato è importante aggiungere al dizionario del file _openerp_.py il settaggio a True di installable e di application (omessi al momento della creazione e pari a False per default). Il boolean auto_install, che rende l’addon auto-installante, invece è preferibile averlo False.
Eseguendo ora da terminale il comando
python odoo.py
ci sarà possibile sulla localhost alla porta 8069 di eseguire ODOO.
Dopo aver effettuato l’update delle Apps, si potrà visualizzare l’addon che abbiamo creato.
E’ possibile già installarlo ma, logicamente, questo non comporterà cambiamenti all’interfaccia perché non sono ancora state introdotte e/o modificate viste.
Una delle operazioni più semplici, ma anche quella più comune, da eseguire su di un modello esistente è quello di estenderlo aggiungendo un campo.
L’esempio che seguirà ha come prerequisito quello di installare il modulo per la gestione dei magazzini che introduce il modello “product”.
Ogni prodotto all’interno dell’interfaccia viene descritto mediante una scheda che ne presenta per esempio il nome, l’internal reference, il barcode e/o altre caratteristiche. Di seguito è riportata la scheda del prodotto bullone.
Vogliamo aggiungere un campo che identifica la priorità che ha un prodotto all’interno del magazzino, il nostro campo “priority” sarà un dizionario costituito dai seguenti valori: primary,secondary.
Come prima cosa si aggiunge un’estensione della classe product.template all’interno del file models.py (ricordiamo che odoo è sviluppato in python per quanto concerne la logica) che si troverà nella cartella models del nostro addon.
L’assegnazione di _inherit con il nome della classe estesa serve proprio a “riconoscerla” per ereditarne i campi.
Si definisce un dizionario _columns che invece contiene i campi da aggiungere, essi possono essere di vari tipi (char,integer,float,function,boolean, related,datetime ,selection,ecc). La selection ci fa visualizzare all’interno della vista appunto un menu a tendina.
Questa classe ha aggiunto un campo al modello “product.template”; per rendere visibile da interfaccia questa modifica dobbiamo aggiungere tale campo all’interno della vista (view) della scheda del prodotto.
Nella cartella views del nostro addon, nel file view.xml, scriveremo il seguente codice.
Tale codice identifica un’estensione di una view esistente; la nuova vista avrà un nome scelto da noi (nel nostro esempio è product.template.product.form.test), il modello esteso ed il riferimento alla view che estendiamo. Questo perché ad un modello possono esserci più viste collegate.
Nell’esempio abbiamo deciso di sostituire, mediante un replace, il campo barcode con il campo priority.
Per conoscere il nome della view che dobbiamo modificare bisogna in primis essere in modalità sviluppatore (si accede tramite il menu a tendina in alto a destra, cliccando su “About”).
Questo post nasce dalla voglia di spiegare, in maniera molto semplice e sintetica, come iniziare a muovere i primi passi in ODOO.
Sicuramente ODOO è uno strumento molto potente che permette di ottenere grandi risultati in poco tempo; il punto debole è nell’esperienza che si ha del software, determinante alla riuscita ed alla brevità dei tempi di sviluppo.