Resoconti personalizzati¶
Odoo è dotato di un framework di reporting potente e facile da usare. Il motore consente di creare nuovi report, come report fiscali, stati patrimoniali e conti economici con raggruppamenti e layout specifici.
Importante
Attiva la modalità sviluppatore per accedere alla configurazione dei report contabili.
Per creare un nuovo report, vai a . Da qui, crea un report principale o una variante.
Suggerimento
Valuta il salvataggio dei report modificati come varianti per mantenere intatti i report radice.
Per accedere all’interfaccia di gestione di un report esistente dal report stesso, fai clic sull’icona ingranaggi.
Resoconti radice¶
I resoconti radice sono resoconti contabili generici e neutrali che fungono da modelli per costruire le versioni locali. Se un resoconto non presenta un resoconto radice viene considerato esso stesso un resoconto radice.
Example
Un resoconto fiscale per il Belgio e gli Stati Uniti utilizzerebbe la stessa versione generica come base e la adatterebbe alle rispettive normative nazionali.
La creazione di una voce di menu è necessaria per accedere a un nuovo report radice. Per farlo, apri la configurazione del report, fai clic su Azione, Crea voce di menu e aggiorna la pagina. Il report è ora disponibile in .
Nota
I casi che richiedono la creazione di un nuovo resoconto sono rari, come ad esempio quando le autorità fiscali di un Paese richiedono un nuovo e specifico tipo di resoconto.
Varianti¶
Le varianti sono versioni specifiche per Paese dei resoconti radice e, pertanto, fanno sempre riferimento a un resoconto radice. Per creare una variante, selezionare un resoconto generico (radice) nel campo Resoconto radice quando crei un nuovo resoconto.
Quando un report radice viene aperto dal menu Reportistica dell’app Contabilità, tutte le sue varianti vengono visualizzate nel selettore delle varianti del report nell’angolo in alto a destra della vista.
Example
Report IVA (BE) è una variante del report radice Report fiscale generico.
Righe¶
Dopo aver creato un report (radice o variante), il passo successivo consiste nel riempirlo con righe. Per creare una nuova riga, fai clic su Aggiungi una riga. Per modificare una riga esistente, fai clic sulla riga stessa e modifica il popup. Tutte le righe richiedono un Nome e possono avere un Codice facoltativo che consente di utilizzare il valore della riga nelle formule.
Espressioni¶
Ogni riga può contenere una o più espressioni. Le espressioni possono essere viste come sotto-variabili necessarie per una riga del report. Per creare un’espressione, fai clic su Aggiungi una riga all’interno del popup di una riga.
Quando si crea un’espressione, è necessario inserire un”Etichetta utilizzata per fare riferimento a quell’espressione. L’etichetta deve essere univoca tra le espressioni di ogni riga del report. Devono essere completati anche i campi Motore di calcolo e Formula. Il motore di calcolo definisce come vengono interpretate le formule e le sottoformule. È possibile combinare espressioni che utilizzano diversi motori di calcolo nella stessa riga, se necessario.
Nota
In base al motore, potrebbero essere richieste anche formule secondarie.
Motore di calcolo Dominio Odoo¶
Quando si utilizza il motore di calcolo Dominio Odoo, una formula viene interpretata come un dominio Odoo che si rivolge agli oggetti account.move.line.
La formula secondaria consente di definire il modo in cui le righe di spostamento corrispondenti al dominio vengono utilizzate per calcolare il valore dell’espressione:
sumIl risultato è la somma di tutti i saldi delle righe di movimento abbinate.
sum_if_posIl risultato è la somma di tutti i saldi delle righe movimento abbinate se l’importo è positivo. Altrimenti, è pari a
0.sum_if_negIl risultato è la somma di tutti i saldi delle righe movimento abbinate se l’importo è negativo. Altrimenti, è pari a
0.count_rowsIl risultato è il numero di sotto-righe di questa espressione. Se la riga genitore ha un valore group-by, questo corrisponderà al numero di chiavi di raggruppamento distinte nelle righe di movimento corrispondenti. Altrimenti, sarà il numero di righe di movimento corrispondenti.
Suggerimento
Per invertire il segno del risultato, inserisci un segno - all’inizio della sottoformula.
Motore di calcolo Aggregazione di altre formule¶
Il motore di calcolo Aggregazione di altre formule esegue operazioni aritmetiche sugli importi ottenuti da altre espressioni. Le formule qui sono composte da riferimenti a espressioni separati da uno dei quattro operatori aritmetici di base (addizione +, sottrazione -, divisione / e moltiplicazione *). Per fare riferimento a un’espressione, digita il codice della riga genitore seguito da un punto . e l”etichetta dell’espressione (es. codice.etichetta).
Di seguito, un elenco delle principali formule secondarie:
if_above(CUR(amount))Il valore dell’espressione aritmetica viene restituito solo se è maggiore del limite fornito. Altrimenti, il risultato sarà
0.if_below(CUR(amount))Il valore dell’espressione aritmetica viene restituito solo se è inferiore al limite fornito. Altrimenti, il risultato sarà
0.if_between(CUR1(amount1), CUR2(amount2))Il valore dell’espressione aritmetica viene restituito solo se è strettamente compreso tra i limiti forniti. In caso contrario, verrà riportato al limite più vicino.
if_other_expr_above(LINE_CODE.EXPRESSION_LABEL, CUR(amount))Il valore dell’espressione aritmetica verrà restituito solo se il valore dell’espressione denotata dal codice di riga e dall’etichetta di espressione forniti è maggiore del limite fornito. Altrimenti, il risultato sarà
0.if_other_expr_below(LINE_CODE.EXPRESSION_LABEL, CUR(amount))Il valore dell’espressione aritmetica verrà restituito solo se il valore dell’espressione denotata dal codice di riga e dall’etichetta di espressione forniti è inferiore al limite fornito. Altrimenti, il risultato sarà
0.
CUR corrisponde al codice valuta in maiuscolo e amount è l’importo del limite espresso in quella valuta.
cross_report(xml_id | report_id)Utilizzato per confrontare un’espressione da un altro report identificato dall’xml_id o dall’ID del report stesso.
Motore di calcolo Prefisso dei codici conto¶
Il motore di calcolo Prefisso dei codici conto viene utilizzato per abbinare importi registrati su conti utilizzando i prefissi dei codici di questi conti come variabili in un’espressione aritmetica.
Example
21Example
21 + 10 - 521 e 10, e sottrae il saldo di quelle sui conti con il prefisso 5.È anche possibile ignorare la selezione di prefissi secondari.
Example
21 + 10\(101, 102) - 5\(57)101, 102 e 57.È possibile applicare un “sottofiltraggio” su crediti e debiti utilizzando i suffissi C e D. In questo caso, un conto verrà considerato solo se il suo prefisso corrisponde, e se il saldo totale delle righe di movimento effettuate su questo conto è credito/debito.
Example
Il conto 210001 ha un saldo di -42 e il conto 210002 ha un saldo di 25. La formula 21D corrisponde solo al conto 210002, e quindi restituisce 25. Il conto 210001 non viene abbinato, poiché il suo saldo è a credito.
Le esclusioni del prefisso possono essere mescolate con i suffissi C e D.
Example
21D + 10\(101, 102)C - 5\(57)21 se è a debito (D) e 10 se è a credito (C), ma ignora i prefissi 101, 102, e sottrae il saldo di quelle sui conti con il prefisso 5, ignorando il prefisso 57.Per abbinare la lettera C o D in un prefisso e non utilizzarla come suffisso, utilizza un’esclusione vuota ().
Example
21D\()21D, indipendentemente dal segno del saldo.Oltre a utilizzare i prefissi dei codici per includere i conti, è possibile abbinarli a tag conto. Questo è particolarmente utile, ad esempio, se nel tuo Paese non esiste un piano dei conti standardizzato, dove lo stesso prefisso potrebbe essere usato per scopi diversi da un’azienda all’altra.
Example
tag(25)Se il tag a cui si fa riferimento è definito in un file di dati, è possibile utilizzare un XMLID al posto dell’ID.
Example
tag(my_module.my_tag)È inoltre possibile utilizzare espressioni aritmetiche con i tag, eventualmente combinandole con selezioni di prefissi.
Example
tag(my_module.my_tag) + tag(42) + 1010.I suffissi C e D possono essere utilizzati allo stesso modo con i tag.
Example
tag(my_module.my_tag)CL’esclusione dei prefissi funziona anche con i tag.
Example
tag(my_module.my_tag)\(10)10.Motore di calcolo Valore esterno¶
Il motore di calcolo Valore esterno viene utilizzato per fare riferimento a valori manuali e valori riportati. Tali valori non vengono memorizzati utilizzando account.move.line, ma con account.report.external.value. Ognuno di questi oggetti punta direttamente all’espressione su cui impatta, quindi è necessario fare ben poco riguardo alla loro selezione qui.
Le formule utilizzabili sono:
sumSe il risultato deve essere la somma di tutti i valori esterni nel periodo.
most_recentSe il risultato deve essere il valore dell’ultimo valore esterno nel periodo.
Inoltre, le formule secondarie possono essere usate in due modi:
rounding=XLa sostituzione di
Xcon un numero indica l’arrotondamento dell’importo a X decimali.editableIndica che questa espressione può essere modificata manualmente, attivando la visualizzazione di un’icona nel resoconto, che consente all’utente di eseguire questa azione.
Nota
I valori manuali vengono creati nella data date_to attualmente selezionata nel resoconto.
Entrambe le formule secondarie possono essere mescolate separandole con un ;.
Example
editable;rounding=2Motore di calcolo Funzione Python personalizzata¶
Il motore di calcolo Funzione Python personalizzata è un mezzo per gli sviluppatori per introdurre un calcolo personalizzato delle espressioni caso per caso. La Formula è il nome di una funzione python da chiamare, e la Sottoformula è una chiave da recuperare nel dizionario restituito da questa funzione. Utilizzare questo motore di calcolo solo se si sta creando un modulo personalizzato.
Colonne¶
I resoconti possono avere un numero indefinito di colonne da visualizzare. Ogni colonna ottiene i suoi valori dalle espressioni dichiarate sulle righe. Il campo expression_label della colonna fornisce l’etichetta delle espressioni il cui valore viene visualizzato. Se una riga non ha alcuna espressione in quel campo, non viene visualizzato nulla in questa colonna. Se sono necessarie più colonne, è necessario utilizzare etichette di espressione diverse.
Quando si utilizza la funzione di confronto tra periodi presente nella scheda Opzioni di un rendiconto contabile, tutte le colonne vengono ripetute in e per ogni periodo.
Raggruppamento righe¶
È possibile un raggruppamento non standard aggiungendo o utilizzando campi esistenti sul modello Voce di registro, a condizione che i campi siano correlati e non memorizzati.
Nota
Il raggruppamento delle righe richiede che il report abbia righe di report esplicite che possono essere modificate. I report differiti, ad esempio, non supportano il raggruppamento delle righe in quanto utilizzano righe dinamiche generate.
Creare un nuovo campo sulla voce di registro¶
Per creare un campo correlato non memorizzato nel modello Voce di registro, andare prima a , e fare clic sull’icona (bug), quindi fare clic su Campi. Fare clic su Nuovo per creare un nuovo campo e compilare i seguenti campi:
Nome campo: un nome tecnico per il campo
Etichetta campo: l’etichetta da visualizzare per il campo
Tipo di campo: il tipo di campo a cui questo campo correlato dovrebbe puntare
Memorizzato: Lasciare questo campo deselezionato poiché solo i campi non memorizzati possono essere utilizzati per raggruppare le righe.
Modello correlato: Se il tipo di campo è one2many, many2many, o many2one, selezionare il modello del campo originale per cui raggruppare.
Definizione campo correlato: il percorso tecnico del campo per cui si desidera raggruppare
Example
Per raggruppare per il team di vendita del partner commerciale, impostare la definizione del campo correlato su
move_id.team_id.
Raggruppa righe¶
Per raggruppare le righe, vai alla scheda Righe del report desiderato, clicca sulla riga che vuoi raggruppare e modifica il campo Raggruppa per. Inserisci il nome tecnico (Nome campo) del campo da utilizzare come chiave di raggruppamento.
Suggerimento
Per trovare un elenco di tutti i campi del modello e i relativi nomi tecnici, vai a , clicca sull’icona (bug), quindi clicca su Campi. Il nome tecnico di ciascun campo è elencato nella colonna Nome campo.