Resoconti personalizzati¶
Odoo è dotato di un quadro di reportistica potente e facile da usare. Il motore consente di creare nuovi resoconti, come dichiarazioni fiscali, o stati patrimoniali e conti economici con raggruppamenti e layout specifici.
Importante
Attiva la modalità sviluppatore per accedere all’interfaccia di creazione dei rendiconti contabili.
Per creare un nuovo rendiconto, vai su :menuselezione:`Contabilità --> Configurazione --> Gestione: Rendiconti contabili`. Da qui è possibile creare un resoconto radice o una variante.

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.
Durante la creazione di un nuovo resoconto radice, è necessario creare una voce menu. Per farlo, apri il resoconto e poi fai clic su
. Ricarica la pagina e il resoconto sarà disponibile nella sezione .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 apri un resoconto radice da uno dei menu principali dell’applicazione Contabilità, tutte le sue varianti vengono visualizzate nel selettore delle varianti nell’angolo in alto a destra della vista.
Example
Nella seguente immagine, Dichiarazione IVA (BE) è la variante del resoconto radice Resoconto fiscale generico.

Righe¶
Dopo aver creato un resoconto (radice o variante), è necessario completarlo con le righe. Puoi crearne una nuova facendo clic su Aggiungi riga, oppure modificare una riga esistente facendo clic su di essa. Tutte le righe richiedono un Nome possono avere un Codice (a tua scelta) facoltativo se vuoi utilizzare il loro valore nelle formule.

Espressioni¶
Ogni riga può contenere una o più espressioni. Le espressioni possono essere viste come variabili secondarie necessarie per una riga del resoconto. Per creare un’espressione, fai clic su Aggiungi riga all’interno di un resoconto di riga.
Quando si crea un’espressione, è necessario attribuire una etichetta usata per riferirsi a quell’espressione. Pertanto, deve essere unica tra le espressioni di ogni riga. Devono essere indicati anche un Motore di calcolo e una Formula. Il motore definisce come vengono interpretate le formule e le formule secondarie. Se necessario, è possibile combinare espressioni che utilizzano motori di calcolo diversi nella stessa riga.
Nota
In base al motore, potrebbero essere richieste anche formule secondarie.
Motore “Dominio Odoo”¶
Con questo motore, una formula viene interpretata come un dominio Odoo indirizzato a 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:
sum
Il risultato è la somma di tutti i saldi delle righe di movimento abbinate.
sum_if_pos
Il risultato è la somma di tutti i saldi delle righe movimento abbinate se l’importo è positivo. Altrimenti, è pari a
0
.sum_if_neg
Il risultato è la somma di tutti i saldi delle righe movimento abbinate se l’importo è negativo. Altrimenti, è pari a
0
.count_rows
Il risultato è il numero di righe secondarie di questa espressione. Se la riga padre ha un valore raggruppa per, corrisponderà al numero di chiavi di raggruppamento distinte nelle righe di movimento corrispondenti. Altrimenti, sarà il numero di righe di movimento corrispondenti.
Puoi aggiungere il segno -
all’inizio della formula secondaria per invertire il segno del risultato.

Motore “Unisci altre formule”¶
Si utilizza questo motore quando è necessario eseguire operazioni aritmetiche sugli importi ottenuti per altre espressioni. Le formule sono composte da riferimenti a espressioni separate da uno dei quattro operatori aritmetici di base (addizione +
, sottrazione -
, divisione /
e moltiplicazione *
). Per fare riferimento a un’espressione, digita il codice della riga madre seguito da un punto .
e dalla etichetta dell’espressione (es. code.label).
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.
Puoi utilizzare anche la formula secondaria cross_report
per abbinare un’espressione trovata in un altro resoconto.
Motore “Prefisso codici conto”¶
Questo motore viene utilizzato per abbinare gli importi effettuati sui conti utilizzando i prefissi dei codici di questi conti come variabili in un’espressione aritmetica.
Example
21
Example
21 + 10 - 5
21
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, si può usare 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) + 10
10
.I suffissi C
e D
possono essere utilizzati allo stesso modo con i tag.
Example
tag(my_module.my_tag)C
L’esclusione dei prefissi funziona anche con i tag.
Example
tag(my_module.my_tag)\(10)
10
.Motore “Valore esterno”¶
Il motore “valore esterno” è usato per riferirsi ai valori manuali e di riporto. Questi valori non vengono memorizzati con account.move.line
, ma con account.report.external.value
. Ognuno di questi oggetti punta direttamente all’espressione che impatta, quindi non è necessario fare molto per la loro selezione.
Le formule utilizzabili sono:
sum
Se il risultato deve essere la somma di tutti i valori esterni nel periodo.
most_recent
Se il risultato deve essere il valore dell’ultimo valore esterno nel periodo.
Inoltre, le formule secondarie possono essere usate in due modi:
rounding=X
La sostituzione di
X
con un numero indica l’arrotondamento dell’importo a X decimali.editable
Indica 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=2
Motore “Funzione Python personalizzata”¶
Questo motore è 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 formula secondaria è una chiave da recuperare nel dizionario restituito da questa funzione. Usalo solo se stai 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.