Resoconti personalizzati

Odoo è dotato di un framework di reporting potente e facile da usare. Il motore consente di creare nuovi report, come report fiscali, o stati patrimoniali e conti economici con raggruppamenti specifici e layout.

Importante

Attivare la modalità sviluppatore per accedere all’interfaccia di creazione dei report contabili.

Per creare un nuovo report, aprire l’app Contabilità e navigare in Configurazione ‣ Report contabili. Da qui, è possibile creare un report 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.

Quando si crea un nuovo report radice, è necessario creare una voce di menu per esso. Per farlo, aprire il report e, sullo stesso report, fare clic sull’icona (Azioni), quindi selezionare Crea voce di menu. Aggiornare la pagina; il report è ora disponibile in Contabilità ‣ Reportistica.

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 da uno dei menu principali dell’app di contabilità, tutte le sue varianti vengono visualizzate nel selettore di varianti nell’angolo in alto a destra della vista.

Example

Nell’immagine seguente, Report IVA (BE) è la variante del report radice Report fiscale generico.

Righe del report

Dopo aver creato un report (radice o variante), è necessario compilarlo con righe di report. È possibile crearne una nuova facendo clic su Aggiungi una riga, o modificare una riga di report esistente facendo clic su di essa. Tutte le righe di report richiedono un Nome, e possono avere un Codice aggiuntivo opzionale (a scelta) se si desidera utilizzare il loro valore nelle formule.

Opzioni righe motore.

Espressioni

Ogni riga di report può contenere una o più espressioni. Le espressioni possono essere viste come sotto-variabili necessarie per una riga di report. Per creare un’espressione, fare clic su Aggiungi una riga all’interno di una riga di report.

Quando si crea un’espressione, è necessario attribuire un”Etichetta utilizzata per fare riferimento a tale espressione. Pertanto, deve essere univoca tra le espressioni di ciascuna riga. Devono essere indicati anche un Motore di calcolo e una Formula. Il motore definisce come vengono interpretate le formule e le sottoformule. È possibile combinare espressioni che utilizzano motori di calcolo diversi nella stessa riga, se necessario.

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 che prende di mira gli 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:

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 sotto-righe di questa espressione. Se la riga di report ha un valore di raggruppamento, questo corrisponderà al numero di chiavi di raggruppamento distinte nelle righe di movimento corrispondenti. Altrimenti, sarà il numero di righe di movimento corrispondenti.

È anche possibile mettere un segno - all’inizio della sottoformula per invertire il segno del risultato.

Riga espressione all'interno di un resoconto

Motore “Etichette fiscali”

Una formula creata per questo motore consiste in un nome utilizzato per abbinare le etichette fiscali. Se tali etichette non esistono durante la creazione dell’espressione, verranno create.

Quando si valuta l’espressione, il calcolo dell’espressione può essere approssimativamente espresso come: (numero righe di movimento con + tag) - (numero righe di movimento con - tag).

Example

Se la formula è tag_name, il motore abbina le etichette fiscali +tag_name e -tag_name, creandole se necessario. Per esemplificare ulteriormente: due etichette vengono abbinate dalla formula. Se la formula è A, richiederà (e creerà, se necessario) le etichette +A e -A.

Motore “Aggrega altre formule”

Utilizzare questo motore quando è necessario eseguire operazioni aritmetiche sugli importi ottenuti per 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, digitare il codice della riga di report 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 “Prefisso dei codici di conto”

Questo motore viene utilizzato per abbinare importi registrati su conti utilizzando i prefissi dei codici di questi conti come variabili in un’espressione aritmetica.

Example

21
Le espressioni aritmetiche possono essere composte anche da un singolo prefisso, come in questo caso.

Example

21 + 10 - 5
Questa formula somma i saldi delle righe di movimento effettuate sui conti i cui codici iniziano con 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)
Questa formula funziona come l’esempio precedente, ma ignora i prefissi 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)
Questa formula somma i saldi delle righe di movimento effettuate sui conti il cui codice inizia con 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\()
Questa formula corrisponde ai conti il cui codice inizia con 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)
Questa formula abbina i conti i cui tag associati contengono quello con id 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)
Questa formula corrisponde ai conti i cui tag associati includo il tag indicato con 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
I saldi dei conti etichettati come my_module.my_tag saranno sommati a quelli dei conti collegati al tag con ID 42 e dei conti con prefisso 10.

I suffissi C e D possono essere utilizzati allo stesso modo con i tag.

Example

tag(my_module.my_tag)C
Questa formula corrisponde ai conti con il tag my_module.my_tag e un saldo attivo.

L’esclusione dei prefissi funziona anche con i tag.

Example

tag(my_module.my_tag)\(10)
Questa formula corrisponde ai conti con il tag my_module.my_tag e un codice che non inizia con 10.

Motore “Valore esterno”

Il motore “valore esterno” viene utilizzato per fare riferimento a valori manuali e valori di riporto. Tali valori non sono memorizzati utilizzando account.move.line, ma con account.report.external.value. Ognuno di questi oggetti punta direttamente all’espressione su cui ha impatto, quindi è necessario fare molto poco per la loro selezione qui.

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
è una sottoformula corretta che combina entrambi i comportamenti.

Motore “Funzione Python personalizzata”

Questo motore è un mezzo per gli sviluppatori per introdurre calcoli personalizzati 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. Utilizzalo solo se stai realizzando 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.

Colonne del resoconto.

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 Contabilità ‣ Voci di registro, 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, fai clic sulla riga che desideri 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 Contabilità ‣ Voci sezionale, clicca sull’icona (bug), quindi clicca su Campi. Il nome tecnico di ciascun campo è elencato nella colonna Nome campo.

Configurazione report fiscale personalizzato

Configurazione del report

Suggerimento

Tutti i termini tecnici e le funzioni del motore dei report di Odoo sono spiegati nelle sezioni precedenti di questa pagina. Si consiglia vivamente di leggere queste sezioni prima di configurare un report fiscale personalizzato.

Per creare un report fiscale personalizzato, apri l’app Contabilità, vai a Configurazione ‣ Report contabili, quindi fai clic su Nuovo:

  • Inserisci un nome per il tuo report.

  • Seleziona un Report radice.

  • Nel campo Disponibilità, seleziona Paese corrispondente, quindi seleziona il Paese corrispondente alla tua azienda.

Successivamente, crea una riga del report facendo clic su Aggiungi una riga. Una volta creata, fai clic su quella riga del report per configurarla:

  • Fai nuovamente clic su Aggiungi una riga per creare un”Espressione e assegnarle un nome.

  • Nella scheda Definizione, seleziona un Motore di calcolo per quell’espressione a seconda dei seguenti scenari:

In questo scenario, la tua azienda usa le griglie fiscali:

  • Seleziona Tax Tags come motore di calcolo. Odoo utilizza questo campo per collegare la riga del report alle tue imposte.

  • Nel campo Formula, digita il tuo identificatore breve della griglia (ad es. vat_sales_base). Odoo genera automaticamente le varianti + e - di questo tag da mappare in Configurazione ‣ Imposte.

  • Nel campo Subformula, inserisci base per riportare l’importo non tassato, oppure tax per riportare l’importo effettivo dell’imposta riscossa/pagata.

Ripeti questo processo secondo necessità. Quindi, Salva e chiudi.

In alternativa, puoi:

  • Seleziona Aggregate Other Formulas come motore di calcolo. Odoo utilizza questo campo per eseguire calcoli matematici su righe già presenti nel report anziché scansionare transazioni grezze.

  • Nel campo Formula, usa l’algebra di base facendo riferimento ai codici riga (ad es. LINE_10 - LINE_20).

Ripeti questo processo secondo necessità. Quindi, Salva e chiudi.

Nella scheda Opzioni di un”Espressione, compilare il campo Riporto a con una formula per riportare sempre i saldi o per riportarli solo quando l’importo è negativo. Lasciare vuoto questo campo se non si desidera utilizzare questa funzionalità.

Example

if_below(EUR(0))
Questa formula riporterà solo gli importi inferiori a 0,00 EUR.

Configurazione delle imposte

Successivamente, andare su Configurazione ‣ Imposte e fare clic su Nuovo per creare e configurare nuove imposte per il report fiscale personalizzato. Creare le imposte per le Vendite e gli Acquisti e compilare le Griglie fiscali per tutte le imposte utilizzando le griglie fiscali corrispondenti create in precedenza. Infine, assicurarsi di specificare sia un conto imposte da pagare che un conto imposte da ricevere per ciascuna imposta.

Example

Configurazione delle griglie fiscali.

Registrazione di chiusura

Per chiudere le imposte, è necessario specificare un gruppo di imposte su ciascuna imposta utilizzata nel report fiscale personalizzato. Per farlo, aprire l’app Contabilità, andare su Configurazione ‣ Imposte, aprire un’imposta che richiede un gruppo di imposte, fare clic sulla scheda Opzioni avanzate e selezionare un gruppo nel campo Gruppo di imposte. Una volta assegnato, fare clic sull’icona (freccia destra) e impostare sia un Conto imposte da pagare che un Conto imposte da ricevere.

Suggerimento

  • Quando tutto è stato configurato, assicurarsi di testare il report creando fatture, note spese e note di credito utilizzando le imposte specifiche per quel report. Infine, testare la registrazione di chiusura stessa.

  • Se si desidera nascondere un conto specifico dalla visualizzazione nella registrazione di chiusura fiscale, andare su Configurazione ‣ Imposte, selezionare l’imposta e fare clic sull’icona (impostazioni regola). Da lì, spuntare la casella Registrazione di chiusura fiscale per regolarne la visibilità.

Vedi anche

Chiusura fiscale