Passa al contenuto

Il modello account.move.line: Guida alle righe di prima nota in Odoo

Guida essenziale al modello delle righe delle scritture contabili in Odoo per sviluppatori e consulenti funzionali
10 marzo 2026 di
Il modello account.move.line: Guida alle righe di prima nota in Odoo
Dasolo
| Ancora nessun commento

Introduzione


In Odoo i modelli definiscono la struttura dei dati e come vengono conservati nel database: ogni informazione operativa — dall'ordine di vendita alla fattura fino alla scrittura contabile — risiede all'interno di un modello ben definito.


Conoscere i modelli Odoo è fondamentale sia per chi configura i processi sia per chi sviluppa: è la base dell'architettura dati, dove si definiscono campi, relazioni e regole di business.

Questo articolo si concentra su uno dei modelli chiave della contabilità in Odoo: account.move.line. Se devi creare report personalizzati, collegare sistemi esterni o gestire riconciliazioni, incontrerai spesso questo modello.

Che cos'è il modello account.move.line


Il modello account.move.line rappresenta le singole righe di una scrittura contabile: ogni riga è un importo in Dare o Avere. Le righe di una stessa scrittura devono quadrare: la somma dei DARE deve essere uguale alla somma degli AVERE.


Nel flusso dell'app Contabilità, account.move.line è figlio di account.move, che rappresenta la registrazione completa (fatture, note, estratti conto, scritture manuali). Una registrazione può contenere una o più righe.


La definizione base del modello sta nel modulo account, mentre altri moduli lo estendono tramite l'ereditarietà dei modelli Odoo: il modulo Vendite aggiunge dettagli delle righe fattura, Acquisti gestisce righe di fornitore, l'analitica inserisce ripartizioni. Così ogni app arricchisce il modello senza ricrearne la struttura centrale.

Campi principali del modello


Di seguito trovi i campi più rilevanti di account.move.line: comprenderli ti aiuterà a lavorare correttamente con scritture contabili e report finanziari.


1. name

Tipo: Char. Etichetta o descrizione della riga, visibile nelle viste della scrittura e nei documenti. Sulle fatture deriva spesso dal nome del prodotto o da una descrizione personalizzata.


2. move_id

Tipo: Many2one (account.move). Collega la riga alla scrittura padre: ogni riga appartiene a un solo move. È la relazione primaria del modello.


3. account_id

Tipo: Many2one (account.account). L'account di destinazione della riga. Campo obbligatorio: deve essere un conto operativo (non di sola visualizzazione o chiuso). Serve per la rendicontazione e i raggruppamenti del piano dei conti.


4. debit

Tipo: Float. Importo in Dare. Default 0.0. Una riga ha tipicamente o il valore in debit o in credit, non entrambi. I DARE tipicamente aumentano attività e costi.


5. credit

Tipo: Float. Importo in Avere. Default 0.0. Gli AVERE aumentano passività, patrimonio e ricavi. In una scrittura la somma dei dare deve uguagliare la somma degli avere.


6. balance

Tipo: Float (calcolato). Differenza debit minus credit: rappresenta l'effetto netto della riga — positivo per i DARE, negativo per gli AVERE — utile nei report e nelle riconciliazioni.


7. partner_id

Tipo: Many2one (res.partner). Cliente, fornitore o altra controparte collegata alla riga. Necessario per scadenziari, aging e riconciliazione delle partite aperte.


8. date

Tipo: Date. Data di registrazione della riga, di norma ereditata dalla move padre. Influisce sulle chiusure periodiche, sui report e sugli scadenzari.


9. date_maturity

Tipo: Date. Data di scadenza del pagamento. Rilevante per crediti e debiti, usata negli aging report e per pianificare pagamenti.


10. currency_id

Tipo: Many2one (res.currency). Valuta della riga; può differire dalla valuta societaria per scritture in valuta estera.


11. amount_currency

Tipo: Float. Importo espresso nella valuta della riga. Insieme a currency_id abilita la contabilità multi-valuta.


12. quantity

Tipo: Float. Quantità opzionale, utile per righe legate a prodotti (fatture, note di credito) per report basati sui volumi e calcoli unitari.


13. product_id

Tipo: Many2one (product.product). Il prodotto associato alla riga quando proviene da ordini di vendita/acquisto o da righe fattura.


14. product_uom_id

Tipo: Many2one (uom.uom). Unità di misura della quantità; necessaria per una corretta visualizzazione e conversione unità.


15. price_unit

Tipo: Float. Prezzo unitario: usato insieme alla quantità per calcolare gli importi delle righe di fattura o nota.


16. tax_ids

Tipo: Many2many (account.tax). Imposte applicate alla riga; al momento della registrazione Odoo può generare righe dedicate per gli importi IVA.


17. tax_line_id

Tipo: Many2one (account.tax). Per le righe imposta indica il tax che ha generato quella riga, distinguendola dalle righe contabili ordinarie.


18. analytic_account_id

Tipo: Many2one (account.analytic.account). Conto analitico per tracciare costi e ricavi su progetto, reparto o centro di costo quando l'analitica è attiva.


19. analytic_distribution

Tipo: Json o Text. Ripartizione analitica su più conti; nelle versioni più recenti può sostituire il singolo analytic_account_id quando si usano piani di distribuzione.


20. ref

Tipo: Char. Riferimento esterno o memo, spesso ereditato dalla move; utile per abbinamenti e per comparire nei report.


21. narration

Tipo: Text. Nota interna ereditata dalla move; non viene stampata sui documenti verso i clienti a meno di personalizzazioni.


22. journal_id

Tipo: Many2one (account.journal). Il giornale di appartenenza della registrazione; utile per filtrare e raggruppare i movimenti.


23. company_id

Tipo: Many2one (res.company). La compagnia a cui appartiene la riga: nei setup multi-company la visibilità e la consolidazione dipendono da questo campo.


24. reconciled

Tipo: Boolean. Indica se la riga è stata completamente riconciliata; usato per trovare rapidamente le partite aperte.


25. full_reconcile_id

Tipo: Many2one (account.full.reconcile). Collega tutte le righe riconciliate insieme, permettendo di ricostruire i gruppi di riconciliazione.


26. payment_id

Tipo: Many2one (account.payment). Per le righe collegate a pagamenti indica il record pagamento, utile per associare fatture e incassi.


27. statement_id

Tipo: Many2one (account.bank.statement). Per righe provenienti da estratti conto bancari collega lo statement; usato in fase di riconciliazione bancaria.


28. statement_line_id

Tipo: Many2one (account.bank.statement.line). Collega la riga alla specifica linea dell'estratto conto quando si effettua il matching con le transazioni bancarie.


29. display_type

Tipo: Selection. Valori come 'line_section' o 'line_note' per sezionare la scrittura o aggiungere note: queste righe sono puramente informative e non hanno debit/credit.


30. create_date

Tipo: Datetime. Timestamp di creazione del record, gestito automaticamente da Odoo; utile per audit e tracciamento.


31. write_date

Tipo: Datetime. Timestamp dell'ultima modifica, anch'esso gestito automaticamente e utile per storicizzare le variazioni.

Come questo modello viene usato nei processi aziendali


1. Fatturazione clienti

Alla conferma di una fattura, Odoo genera le righe in account.move.line: i ricavi vengono registrati sugli account di vendita, le partite a cliente sugli account clienti, e per ogni imposta viene creata una riga dedicata. partner_id lega la riga al cliente per aging e riconciliazione.


2. Fatture fornitori

Le fatture fornitori generano righe per costi, IVA detraibile e debiti verso fornitori: la struttura è analoga a quella delle fatture clienti ma con tipi di conto differenti.


3. Riconciliazione bancaria

Le linee dell'estratto conto si abbinano alle righe contabili tramite statement_line_id; in fase di riconciliazione Odoo collega le righe (full_reconcile_id) e marca reconciled = True.


4. Registrazioni manuali

Gli utenti possono creare scritture manuali composte da più righe: ogni riga ha account, importo in dare o avere e partner opzionale. Odoo richiede che le scritture quadrare prima della registrazione definitiva.



5. Report analitici e di costo

Con l'analitica attiva, le righe portano analytic_account_id o una distribuzione analitica; i report possono raggruppare per conto analitico per mostrare costi e ricavi per progetto, ufficio o altra dimensione.

Come gli sviluppatori estendono questo modello


Gli sviluppatori estendono account.move.line con vari approcci, sfruttando principalmente l'ereditarietà dei modelli di Odoo.


Ereditarietà del modello

Dichiarando _inherit = 'account.move.line' in un modulo si estende il modello: si possono aggiungere campi, sovrascrivere metodi o aggiungere vincoli. L'ereditarietà mantiene le modifiche nel modulo dedicato facilitando gli aggiornamenti.


Aggiunta di campi

Definisci nuovi campi nel modello ereditato usando il tipo corretto (Char, Many2one, Boolean, Integer, Text, Selection). Valuta se rendere i campi dipendenti dalla company in ambienti multi-company e presta attenzione alle dipendenze per i campi calcolati.


Estensioni in Python

Sovrascrivi i metodi create, write o unlink per introdurre logica custom; chiama sempre super() per preservare il comportamento di base. Evita di violare la regola che assicura che debiti e crediti si bilancino.


Odoo Studio

Odoo Studio permette di aggiungere campi su account.move.line senza codice, utile per personalizzazioni rapide come etichette o tag. Per logiche complesse e regole di riconciliazione è però preferibile sviluppare moduli dedicati più sostenibili nel tempo.

Buone pratiche


  • Non creare o modificare righe di movimento bypassando la move: usa l'API del move (es. line_ids) così Odoo mantiene la coerenza e applica i controlli necessari.
  • Negli estratti e nei report filtra sempre per move_id.state = 'posted' per escludere bozze o registrazioni annullate.
  • Usa account_id con il tipo di conto corretto (receivable, payable, ecc.) per garantire comportamento corretto negli aging e nella riconciliazione.
  • Se integri tramite API, crea prima il move e poi le righe; assicurati che debiti e crediti siano bilanciati prima di postare la registrazione.
  • Per campi personalizzati, usa il prefisso x_ o un prefisso del modulo per ridurre il rischio di conflitti con future versioni di Odoo.

Errori comuni


  • Impostare contemporaneamente debit e credit sulla stessa riga. Ogni riga dovrebbe avere o debit o credit, non entrambi.
  • Creare movimenti sbilanciati. La somma dei debiti deve sempre uguagliare la somma degli averi: Odoo blocca la registrazione in caso contrario.
  • Modificare righe già registrate senza utilizzare gli strumenti di rettifica o storno. Le scritture postate vanno rettificate con movimenti compensativi, non alterando direttamente le righe.
  • Dimenticare partner_id sulle righe di crediti e debiti. Senza partner le scadenze e la riconciliazione possono risultare incomplete o inaccurate.
  • Sovrascrivere metodi core senza chiamare super(). Questo può compromettere il funzionamento della riconciliazione, dei lock o di altri moduli collegati.

Conclusione


Il modello account.move.line è il cuore della contabilità in Odoo: registra ogni Dare e Avere di fatture, note e scritture. Conoscere i suoi campi e come viene esteso ti permette di configurare, personalizzare e integrare Odoo con più efficacia.

Sia che tu sia un consulente funzionale che mappa i processi contabili, sia che tu sia uno sviluppatore che costruisce report o integrazioni, padroneggiare account.move.line riduce tempi e rischi di errore.

Hai bisogno di aiuto per la tua implementazione Odoo?


Dasolo supporta le aziende nell'implementazione, personalizzazione e ottimizzazione di Odoo. Siamo specializzati in integrazioni API e sviluppo su misura, con esperienza approfondita nell'architettura dati e nei modelli come account.move.line.


Se ti serve supporto per la tua implementazione Odoo, moduli custom o integrazioni, possiamo aiutarti. Prenota una demo per parlare del tuo progetto.

Il modello account.move.line: Guida alle righe di prima nota in Odoo
Dasolo 10 marzo 2026
Condividi articolo
Accedi per lasciare un commento