21. Sergio Corato – odoo-italia.org - Bari 4 e 5 novembre 2021 21 Risultato finale Altro esempio:
20. Sergio Corato – odoo-italia.org - Bari 4 e 5 novembre 2021 20 Risultato finale Ogni voce è navigabile, con il totale che corrisponde a quanto rendicontato:
14. Sergio Corato – odoo-italia.org - Bari 4 e 5 novembre 2021 14 Report: KPI’s Sono state alla fine creati i KPI’s, di cui qui vediamo sempre quelli relativi alle righe fattura, con la query collegata e l’espressione con cui vengono calcolati i valori:
18. Sergio Corato – odoo-italia.org - Bari 4 e 5 novembre 2021 18 PR verso OCA Le modifiche fatte da questi moduli hanno all’origine una piccola modifica sul codice del mis_builder, in cui per comodità viene passato tramite il risultato della funzione il dominio creato, senza dover ricrearlo, vedi PR [6], di cui questa è la modifica:
15. Sergio Corato – odoo-italia.org - Bari 4 e 5 novembre 2021 15 Report navigabile Si voleva infine entrare nel dettaglio dei movimenti da cui prende origine il dato esposto, per fini di controllo contabile. È stato quindi modificato il report per poter visionare la vista ad elenco dei singoli movimenti, il cui totale mostrato a video corrisponde con quanto riportato nel report riassuntivo (in questo esempio il totale fatturato di 20.334€).
16. Sergio Corato – odoo-italia.org - Bari 4 e 5 novembre 2021 16 Report navigabile È possibile quindi aprire l’oggetto di origine, la riga fattura in questo esempio, da cui risalire alla fattura e agli altri oggetti collegati:
6. Sergio Corato – odoo-italia.org - Bari 4 e 5 novembre 2021 6 Panoramica progetto Questi movimenti analitici sono poi utilizzati per presentare all’utente la panoramica progetto in cui sono evidenziati i tempi svolti sul progetto, i ricavi e i costi direttamente imputati. Questa vista dà quindi un resoconto limitato alla parte operativa del progetto e relativi costi, importo fatturato e da fatturare, separando tutta la parte relativa alla vendita di prodotti, certamente utile ma non completa.
12. Sergio Corato – odoo-italia.org - Bari 4 e 5 novembre 2021 12 Report: query È stato quindi creato il report, partendo dalle query, di cui qui sono mostrate quelle che interessano le righe fattura : In particolare si nota che il campo analitico è presente nelle righe, quindi si è potuto selezionarlo direttamente, e sono presenti alcuni campi aggiuntivi, utilizzati per la rendicontazione dei costi, vedi modulo [4].
1. MIS Builder: analisi dati esplosi per conto analitico Autore: Sergio Corato Quando: giovedì 04 novembre 2021 10.10 – 11.00 Cosa: Sviluppo estensioni e analisi dati con MIS Builder Rif.: info@efatto.it
4. Sergio Corato – odoo-italia.org - Bari 4 e 5 novembre 2021 4 Analisi Che poi vengono esposti configurando i KPI’s: Inoltre permette di estrarre i dati da un qualsiasi oggetto tramite le query , che generano degli aggregati di dati con delle funzioni matematiche di aggregazione predefinite (somma, media, massimo, minimo):
9. Sergio Corato – odoo-italia.org - Bari 4 e 5 novembre 2021 9 Sviluppo Mentre in questa parte del codice viene aggiunta la logica per cui se é stato indicato il conto analitico, la funzione va a prenderlo:
11. Sergio Corato – odoo-italia.org - Bari 4 e 5 novembre 2021 11 Sviluppo su ordine di vendita Nell’ordine di vendita, per aiutare l’utente a collegare un conto analitico specifico, è stato spostato il campo dal tab Altre informazioni alla testata, molto più visibile: Infatti il conto analitico, se presente al momento della conferma dell’SO, viene utilizzato come conto analitico del progetto, permettendo quindi di collegare più progetti allo stesso conto analitico.
8. Sergio Corato – odoo-italia.org - Bari 4 e 5 novembre 2021 8 Sviluppo La seconda modifica è stata di aggiungere un modello collegato a quello su cui è basata la query, nel quale andare ad indicare il campo del conto analitico : Questo è il codice in cui vengono fatte queste modifiche, nel modulo [1]:
13. Sergio Corato – odoo-italia.org - Bari 4 e 5 novembre 2021 13 Report: sviluppo per navigazione dati Per poter navigare i dati, il KPI deve risalire alla query di origine. È stato quindi aggiunto un link alla query: Questa query viene poi inserita nella funzione originale di creazione del report navigabile ereditandola, vedi modulo [2], rimpiazzando il dominio, il modello e il campo data:
22. Sergio Corato – odoo-italia.org - Bari 4 e 5 novembre 2021 22 Note Rimuovendo il filtro per conto analitico, è possibile ottenere un risultato complessivo, il report potrebbe essere però molto pesante a seconda delle quantità di commesse gestite. Si possono comunque creare diversi report specifici in base alle necessità, per ovviare a queste problematiche. Nel caso in questione il report è relativo a commesse pluriennali, quindi il filtro temporale è stato impostato ad un periodo molto lungo, senza operare confronti temporali. I report del MIS Builder possono riguardare un qualsiasi oggetto di Odoo, quindi non è limitato alla parte contabile e si può adattare a molte esigenze.
19. Sergio Corato – odoo-italia.org - Bari 4 e 5 novembre 2021 19 Risultato finale Questo è un esempio di resoconto di un progetto in corso d’opera, in cui è visualizzato il risultato previsto al completamento. Ci sono infatti i costi e i ricavi già avvenuti, integrati con i costi ed i ricavi da sostenere in seguito in base alle vendite effettuate ed ai costi futuri da sostenere. Il report è aggiornato in tempo reale, è sufficiente quindi aprirlo per vedere lo stato aggiornato.
2. Sergio Corato – odoo-italia.org - Bari 4 e 5 novembre 2021 2 Richiesta La richiesta era di avere un sistema di reportistica veloce, completo ed efficiente per rendicontare in tempo reale i ricavi ed i costi attuali e previsti di un progetto. In Odoo ci sono diverse possibilità di ottenere lo stesso risultato, in questo caso la scelta è caduta su MIS Builder per vari motivi, senza per questo giudicare inadeguate altre soluzioni. MIS Builder è indirizzato principalmente a rendicontare i dati dai movimenti contabili, per i quali mette a disposizione delle espressioni specifiche:
10. Sergio Corato – odoo-italia.org - Bari 4 e 5 novembre 2021 10 Sviluppo Infine, se non è stato indicato il conto analitico in quanto non presente nel modello oggetto della query, la funzione va a prendere il conto analitico dal modello alternativo indicato. In questo modo è sufficiente che, ad esempio, nelle riparazioni ci sia il conto analitico nella riparazione stessa, senza dover essere presente nelle righe dei materiali utilizzati.
3. Sergio Corato – odoo-italia.org - Bari 4 e 5 novembre 2021 3 Analisi La reportistica del MIS Builder fornisce quindi di default la possibilità di creare report che partono dai movimenti contabili, in maniera abbastanza * semplice *, in forma molto chiara e gradevole, esportabile in pdf e scaricabile in xls. Un esempio sono i report per il bilancio riclassificato CEE presenti nella localizzazione italiana.
17. Sergio Corato – odoo-italia.org - Bari 4 e 5 novembre 2021 17 Report navigabile Questa funzione è resa disponibile dal modulo [3], in cui vengono forzate delle viste specifiche in base al modello della query sulla riga. In questo caso sono state aggiunte solo le viste relative alle righe fatture, righe ordini di vendita e righe analitiche, in quanto la richiesta era limitata a queste.
5. Sergio Corato – odoo-italia.org - Bari 4 e 5 novembre 2021 5 Progetti e conti analitici Parlando di progetti è necessario parlare di conti analitici, in quanto sono collegati e sono stati oggetto di refactoring nelle versioni recenti di Odoo, con cui sono state risolte alcune incongruenze: - il conto analitico serve per gestire dietro le quinte il collegamento con le movimentazioni analitiche, mentre i progetti sono la parte esposta all’utente - il conto analitico viene creato automaticamente alla creazione del progetto, con quindi un rapporto 1:1, a meno che l’utente crei il conto analitico autonomamente - i movimenti analitici corrispondono in massima parte alle ore del timesheet , con poche altre casistiche (righe ordini di vendita, righe ordini di acquisto quanto indicato il conto analitico, costi di materiali registrati nei task nel caso siano installati dei moduli aggiuntivi, ecc.).
7. Sergio Corato – odoo-italia.org - Bari 4 e 5 novembre 2021 7 Sviluppo: cosa fare Per soddisfare la richiesta infatti è necessario: - collegare i dati prelevati ad un conto analitico - navigare i dati fino a risalire all’origine - filtrare i dati su ricerche più complesse Si è scelto quindi di estendere le capacità del sistema di reportistica. Per navigare i dati estratti, la prima modifica è stata di aggiungere sulle righe delle query il conto analitico presente nel modello della riga estratta:
23. Sergio Corato – odoo-italia.org - Bari 4 e 5 novembre 2021 23 Riferimenti [1] https://github.com/sergiocorato/e-account/tree/12.0/mis_builder_analytic_query e relativa PR verso OCA https://github.com/OCA/mis-builder-contrib/pull/12 [2] https://github.com/sergiocorato/e-account/tree/12.0/mis_builder_query_drilldown e relativa PR verso OCA https://github.com/OCA/mis-builder-contrib/pull/13 [3] https://github.com/sergiocorato/e-account/tree/12.0/mis_builder_query_drilldown_view [4] https://github.com/sergiocorato/e-account/tree/12.0/account_invoice_line_usability [5] https://github.com/sergiocorato/e-account/tree/12.0/sale_order_line_usability [6] https://github.com/OCA/mis-builder/pull/368 Autore: Sergio Corato Rif.: info@efatto.it Git: https://github.com/sergiocorato Web: https://efatto.it