LATAM Document

l10n_latam_invoice_document
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/19.0/l10n_latam_invoice_document
VERSION
VERSION 1.1
CATEGORY
CATEGORYAccounting/Localizations
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSADHOC SA
MAINTAINERS
MAINTAINERSADHOC SA
COMMITTERS
COMMITTERSOdoo Translation Bot, Arnold Moyaux, Luis Torres, Andrea Grazioso (agr-odoo), Gorash, Thomas Becquevort (thbe), Andrew Gavgavian, Dylan Kiss (dyki), guva-odoo, yosa-odoo, Claire (clbr), gteboul, Julia Elizondo, Antoine Dupuis, Anton Romanova (roan), Krzysztof Magusiak (krma), bhra-odoo, Dirk Douglas, Amr Elkhatieb, saurabh, soza-odoo
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:51:46
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - html_editor
    - uom
    - analytic
    - portal
    - http_routing
    - auth_signup
    - digest
    - resource
    - account_debit_note
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Functional
----------

In some Latinamerica countries, including Argentina and Chile, some accounting transactions like invoices and vendor bills are classified by a document types defined by the government fiscal authorities (In Argentina case ARCA, Chile case SII).

This module is intended to be extended by localizations in order to manage these document types and is an essential information that needs to be displayed in the printed reports and that needs to be easily identified, within the set of invoices as well of account moves.

Each document type have their own rules and sequence number, this last one is integrated with the invoice number and journal sequence in order to be easy for the localization user. In order to support or not this document types a Journal has a new option that lets to use document or not.

Technical
---------

If your localization needs this logic will then need to add this module as dependency and in your localization module extend:

* extend company's _localization_use_documents() method.
* create the data of the document types that exists for the specific country. The document type has a country field

Code Analysis

Views touched (17)
XML IDNameModelTypeStatus
external_layout_bold external_layout_bold ir.ui.view qweb Inherits web.external_layout_bold
external_layout_boxed external_layout_boxed ir.ui.view qweb Inherits web.external_layout_boxed
external_layout_bubble external_layout_bubble ir.ui.view qweb Inherits web.external_layout_bubble
external_layout_folder external_layout_folder ir.ui.view qweb Inherits web.external_layout_folder
external_layout_standard external_layout_standard ir.ui.view qweb Inherits web.external_layout_standard
external_layout_striped external_layout_striped ir.ui.view qweb Inherits web.external_layout_striped
external_layout_wave external_layout_wave ir.ui.view qweb Inherits web.external_layout_wave
view_account_invoice_filter account.move.select account.move field Inherits account.view_account_invoice_filter
view_account_invoice_report_search account.invoice.report.search account.invoice.report search Inherits account.view_account_invoice_report_search
view_account_journal_form account.journal.form account.journal form Inherits account.view_account_journal_form
view_account_move_filter account.move.filter account.move field Inherits account.view_account_move_filter
view_account_move_line_filter account.move.line.filter account.move.line separator Inherits account.view_account_move_line_filter
view_account_move_reversal account.move.reversal.form account.move.reversal form Inherits account.view_account_move_reversal
view_document_type_filter l10n_latam.document.type.filter l10n_latam.document.type search New
view_document_type_form l10n_latam.document.type.form l10n_latam.document.type form New
view_document_type_tree l10n_latam.document.type.list l10n_latam.document.type list New
view_move_form account.move.form account.move form Inherits account.view_move_form
Models touched (9)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • create_debit(self)
    Properly compute the latam document type of type debit note.

New fields (1)
  • l10n_latam_document_type_id Many2one → l10n_latam.document.type
    index=True args: 'l10n_latam.document.type', 'Document Type'
Public methods (0)

No public methods.

New fields (2)
  • l10n_latam_company_use_documents Boolean
    compute='_compute_l10n_latam_company_use_documents'
  • l10n_latam_use_documents Boolean
    help='If active: will be using for legal invoicing (invoices, debit/credit notes). If not set means that will be used to register accounting entries not related to invoicing legal documents. For Example: Receipts, Tax Payments, Register journal entries' args: 'Use Documents?'
Public methods (1)
  • check_use_document(self)
    @api.constrains('l10n_latam_use_documents')

New fields (6)
  • l10n_latam_available_document_type_ids Many2many → l10n_latam.document.type
    compute='_compute_l10n_latam_available_document_types' args: 'l10n_latam.document.type'
  • l10n_latam_document_number Char
    compute='_compute_l10n_latam_document_number' inverse='_inverse_l10n_latam_document_number' readonly=False string='Document Number'
  • l10n_latam_document_type_id Many2one → l10n_latam.document.type
    bypass_search_access=True compute='_compute_l10n_latam_document_type' index='btree_not_null' readonly=False store=True string='Document Type' args: 'l10n_latam.document.type'
  • l10n_latam_document_type_id_code Char
    related='l10n_latam_document_type_id.code' string='Doc Type'
  • l10n_latam_manual_document_number Boolean
    compute='_compute_l10n_latam_manual_document_number' string='Manual Number'
  • l10n_latam_use_documents Boolean
    compute='_compute_l10n_latam_use_documents' search='_search_l10n_latam_use_documents'
Public methods (0)

No public methods.

New fields (2)
  • l10n_latam_document_type_id Many2one
    bypass_search_access=True index='btree_not_null' related='move_id.l10n_latam_document_type_id' store=True
  • l10n_latam_use_documents Boolean
    related='move_id.l10n_latam_use_documents'
Public methods (0)

No public methods.

New fields (5)
  • l10n_latam_available_document_type_ids Many2many → l10n_latam.document.type
    compute='_compute_documents_info' args: 'l10n_latam.document.type'
  • l10n_latam_document_number Char
    string='Document Number'
  • l10n_latam_document_type_id Many2one → l10n_latam.document.type
    compute='_compute_document_type' domain="[('id', 'in', l10n_latam_available_document_type_ids)]" ondelete='cascade' readonly=False store=True args: 'l10n_latam.document.type', 'Document Type'
  • l10n_latam_manual_document_number Boolean
    compute='_compute_l10n_latam_manual_document_number' string='Manual Number'
  • l10n_latam_use_documents Boolean
    compute='_compute_documents_info'
Public methods (0)

No public methods.

New fields (8)
  • active Boolean
    default=True
  • code Char
    help='Code used by different localizations'
  • country_id Many2one → res.country
    help='Country in which this type of document is valid' index=True required=True args: 'res.country'
  • doc_code_prefix Char
    help="Prefix for Documents Codes on Invoices and Account Moves. For eg. 'FA ' will build 'FA 0001-0000001' Document Number" args: 'Document Code Prefix'
  • internal_type Selection
    help='Analog to odoo account.move.move_type but with more options allowing to identify the kind of document we are working with. (not only related to account.move, could be for documents of other models like stock.picking)' args: [('invoice', 'Invoices'), ('debit_note', 'Debit Notes'), ('credit_note', 'Credit Notes'), ('all', 'All Documents')]
  • name Char
    help='The document name' required=True translate=True
  • report_name Char
    help='Name that will be printed in reports, for example "CREDIT NOTE"' translate=True args: 'Name on Reports'
  • sequence Integer
    default=10 help='To set in which order show the documents type taking into account the most commonly used first' required=True
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/18.0/l10n_latam_invoice_document
VERSION
VERSION 1.1
CATEGORY
CATEGORYAccounting/Localizations
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSADHOC SA
MAINTAINERS
MAINTAINERSADHOC SA
COMMITTERS
COMMITTERSOdoo Translation Bot, Josse Colpaert, Xavier Morel, Arnold Moyaux, Luis Torres, Andrea Grazioso (agr-odoo), Katherine Zaoral, Carlos Lopez, Brice bib Bartoletti, Tiffany Chang (tic), Gorash, odoo, william-andre, Louis Wicket (wil), Thomas Becquevort (thbe), Andrew Gavgavian, Pablo Montenegro, Antoine Boonen, Dylan Kiss (dyki), Mathieu (mcou), Sven Fuehr, yosa-odoo, Louis (wil), mano-odoo, gteboul, Julia Elizondo, Urvish Patel, Antoine Dupuis, Anton Romanova (roan), Dirk Douglas, Amr Elkhatieb
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:26:00
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - html_editor
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - account_debit_note
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Functional
----------

In some Latinamerica countries, including Argentina and Chile, some accounting transactions like invoices and vendor bills are classified by a document types defined by the government fiscal authorities (In Argentina case AFIP, Chile case SII).

This module is intended to be extended by localizations in order to manage these document types and is an essential information that needs to be displayed in the printed reports and that needs to be easily identified, within the set of invoices as well of account moves.

Each document type have their own rules and sequence number, this last one is integrated with the invoice number and journal sequence in order to be easy for the localization user. In order to support or not this document types a Journal has a new option that lets to use document or not.

Technical
---------

If your localization needs this logic will then need to add this module as dependency and in your localization module extend:

* extend company's _localization_use_documents() method.
* create the data of the document types that exists for the specific country. The document type has a country field

Code Analysis

Views touched (17)
XML IDNameModelTypeStatus
external_layout_bold external_layout_bold ir.ui.view qweb Inherits web.external_layout_bold
external_layout_boxed external_layout_boxed ir.ui.view qweb Inherits web.external_layout_boxed
external_layout_bubble external_layout_bubble ir.ui.view qweb Inherits web.external_layout_bubble
external_layout_folder external_layout_folder ir.ui.view qweb Inherits web.external_layout_folder
external_layout_standard external_layout_standard ir.ui.view qweb Inherits web.external_layout_standard
external_layout_striped external_layout_striped ir.ui.view qweb Inherits web.external_layout_striped
external_layout_wave external_layout_wave ir.ui.view qweb Inherits web.external_layout_wave
view_account_invoice_filter account.move.select account.move field Inherits account.view_account_invoice_filter
view_account_invoice_report_search account.invoice.report.search account.invoice.report search Inherits account.view_account_invoice_report_search
view_account_journal_form account.journal.form account.journal form Inherits account.view_account_journal_form
view_account_move_filter account.move.filter account.move field Inherits account.view_account_move_filter
view_account_move_line_filter account.move.line.filter account.move.line separator Inherits account.view_account_move_line_filter
view_account_move_reversal account.move.reversal.form account.move.reversal form Inherits account.view_account_move_reversal
view_document_type_filter l10n_latam.document.type.filter l10n_latam.document.type search New
view_document_type_form l10n_latam.document.type.form l10n_latam.document.type form New
view_document_type_tree l10n_latam.document.type.list l10n_latam.document.type list New
view_move_form account.move.form account.move form Inherits account.view_move_form
Models touched (9)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • create_debit(self)
    Properly compute the latam document type of type debit note.

New fields (1)
  • l10n_latam_document_type_id Many2one → l10n_latam.document.type
    index=True args: 'l10n_latam.document.type', 'Document Type'
Public methods (0)

No public methods.

New fields (2)
  • l10n_latam_company_use_documents Boolean
    compute='_compute_l10n_latam_company_use_documents'
  • l10n_latam_use_documents Boolean
    help='If active: will be using for legal invoicing (invoices, debit/credit notes). If not set means that will be used to register accounting entries not related to invoicing legal documents. For Example: Receipts, Tax Payments, Register journal entries' args: 'Use Documents?'
Public methods (1)
  • check_use_document(self)
    @api.constrains('l10n_latam_use_documents')

New fields (6)
  • l10n_latam_available_document_type_ids Many2many → l10n_latam.document.type
    compute='_compute_l10n_latam_available_document_types' args: 'l10n_latam.document.type'
  • l10n_latam_document_number Char
    compute='_compute_l10n_latam_document_number' inverse='_inverse_l10n_latam_document_number' readonly=False string='Document Number'
  • l10n_latam_document_type_id Many2one → l10n_latam.document.type
    auto_join=True compute='_compute_l10n_latam_document_type' index='btree_not_null' readonly=False store=True string='Document Type' args: 'l10n_latam.document.type'
  • l10n_latam_document_type_id_code Char
    related='l10n_latam_document_type_id.code' string='Doc Type'
  • l10n_latam_manual_document_number Boolean
    compute='_compute_l10n_latam_manual_document_number' string='Manual Number'
  • l10n_latam_use_documents Boolean
    related='journal_id.l10n_latam_use_documents'
Public methods (0)

No public methods.

New fields (1)
  • l10n_latam_document_type_id Many2one
    auto_join=True index='btree_not_null' related='move_id.l10n_latam_document_type_id' store=True
Public methods (0)

No public methods.

New fields (5)
  • l10n_latam_available_document_type_ids Many2many → l10n_latam.document.type
    compute='_compute_documents_info' args: 'l10n_latam.document.type'
  • l10n_latam_document_number Char
    string='Document Number'
  • l10n_latam_document_type_id Many2one → l10n_latam.document.type
    compute='_compute_document_type' domain="[('id', 'in', l10n_latam_available_document_type_ids)]" ondelete='cascade' readonly=False store=True args: 'l10n_latam.document.type', 'Document Type'
  • l10n_latam_manual_document_number Boolean
    compute='_compute_l10n_latam_manual_document_number' string='Manual Number'
  • l10n_latam_use_documents Boolean
    compute='_compute_documents_info'
Public methods (0)

No public methods.

New fields (8)
  • active Boolean
    default=True
  • code Char
    help='Code used by different localizations'
  • country_id Many2one → res.country
    help='Country in which this type of document is valid' index=True required=True args: 'res.country'
  • doc_code_prefix Char
    help="Prefix for Documents Codes on Invoices and Account Moves. For eg. 'FA ' will build 'FA 0001-0000001' Document Number" args: 'Document Code Prefix'
  • internal_type Selection
    help='Analog to odoo account.move.move_type but with more options allowing to identify the kind of document we are working with. (not only related to account.move, could be for documents of other models like stock.picking)' args: [('invoice', 'Invoices'), ('debit_note', 'Debit Notes'), ('credit_note', 'Credit Notes'), ('all', 'All Documents')]
  • name Char
    help='The document name' required=True translate=True
  • report_name Char
    help='Name that will be printed in reports, for example "CREDIT NOTE"' translate=True args: 'Name on Reports'
  • sequence Integer
    default=10 help='To set in which order show the documents type taking into account the most commonly used first' required=True
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/17.0/l10n_latam_invoice_document
VERSION
VERSION 1.0
CATEGORY
CATEGORYAccounting/Localizations
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSADHOC SA
MAINTAINERS
MAINTAINERSADHOC SA
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Josse Colpaert, Xavier Morel, Luis Torres, Katherine Zaoral, Carlos Lopez, Tiffany Chang (tic), Rémy Voet (ryv), Gorash, Guillaume (guva), Ricardo Gomes Rodrigues (rigr), william-andre, Louis Wicket (wil), Maximilien (malb), Pablo Montenegro, Antoine Boonen, Dylan Kiss (dyki), Mathieu (mcou), yosa-odoo, gteboul, Julia Elizondo, Antoine Dupuis, Sohail JAIDI (soja), Dirk Douglas
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:02:11
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - account_debit_note
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Functional
----------

In some Latinamerica countries, including Argentina and Chile, some accounting transactions like invoices and vendor bills are classified by a document types defined by the government fiscal authorities (In Argentina case AFIP, Chile case SII).

This module is intended to be extended by localizations in order to manage these document types and is an essential information that needs to be displayed in the printed reports and that needs to be easily identified, within the set of invoices as well of account moves.

Each document type have their own rules and sequence number, this last one is integrated with the invoice number and journal sequence in order to be easy for the localization user. In order to support or not this document types a Journal has a new option that lets to use document or not.

Technical
---------

If your localization needs this logic will then need to add this module as dependency and in your localization module extend:

* extend company's _localization_use_documents() method.
* create the data of the document types that exists for the specific country. The document type has a country field

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
external_layout_bold external_layout_bold ir.ui.view qweb Inherits web.external_layout_bold
external_layout_boxed external_layout_boxed ir.ui.view qweb Inherits web.external_layout_boxed
external_layout_standard external_layout_standard ir.ui.view qweb Inherits web.external_layout_standard
external_layout_striped external_layout_striped ir.ui.view qweb Inherits web.external_layout_striped
view_account_invoice_filter account.move.select account.move field Inherits account.view_account_invoice_filter
view_account_invoice_report_search account.invoice.report.search account.invoice.report search Inherits account.view_account_invoice_report_search
view_account_journal_form account.journal.form account.journal form Inherits account.view_account_journal_form
view_account_move_filter account.move.filter account.move field Inherits account.view_account_move_filter
view_account_move_line_filter account.move.line.filter account.move.line separator Inherits account.view_account_move_line_filter
view_account_move_reversal account.move.reversal.form account.move.reversal form Inherits account.view_account_move_reversal
view_document_type_filter l10n_latam.document.type.filter l10n_latam.document.type search New
view_document_type_form l10n_latam.document.type.form l10n_latam.document.type form New
view_document_type_tree l10n_latam.document.type.tree l10n_latam.document.type tree New
view_move_form account.move.form account.move form Inherits account.view_move_form
Models touched (9)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • create_debit(self)
    Properly compute the latam document type of type debit note.

New fields (1)
  • l10n_latam_document_type_id Many2one → l10n_latam.document.type
    index=True args: 'l10n_latam.document.type', 'Document Type'
Public methods (0)

No public methods.

New fields (2)
  • l10n_latam_company_use_documents Boolean
    compute='_compute_l10n_latam_company_use_documents'
  • l10n_latam_use_documents Boolean
    help='If active: will be using for legal invoicing (invoices, debit/credit notes). If not set means that will be used to register accounting entries not related to invoicing legal documents. For Example: Receipts, Tax Payments, Register journal entries' args: 'Use Documents?'
Public methods (1)
  • check_use_document(self)
    @api.constrains('l10n_latam_use_documents')

New fields (6)
  • l10n_latam_available_document_type_ids Many2many → l10n_latam.document.type
    compute='_compute_l10n_latam_available_document_types' args: 'l10n_latam.document.type'
  • l10n_latam_document_number Char
    compute='_compute_l10n_latam_document_number' inverse='_inverse_l10n_latam_document_number' readonly=False string='Document Number'
  • l10n_latam_document_type_id Many2one → l10n_latam.document.type
    auto_join=True compute='_compute_l10n_latam_document_type' index='btree_not_null' readonly=False store=True string='Document Type' args: 'l10n_latam.document.type'
  • l10n_latam_document_type_id_code Char
    related='l10n_latam_document_type_id.code' string='Doc Type'
  • l10n_latam_manual_document_number Boolean
    compute='_compute_l10n_latam_manual_document_number' string='Manual Number'
  • l10n_latam_use_documents Boolean
    related='journal_id.l10n_latam_use_documents'
Public methods (0)

No public methods.

New fields (1)
  • l10n_latam_document_type_id Many2one
    auto_join=True index='btree_not_null' related='move_id.l10n_latam_document_type_id' store=True
Public methods (0)

No public methods.

New fields (5)
  • l10n_latam_available_document_type_ids Many2many → l10n_latam.document.type
    compute='_compute_documents_info' args: 'l10n_latam.document.type'
  • l10n_latam_document_number Char
    string='Document Number'
  • l10n_latam_document_type_id Many2one → l10n_latam.document.type
    compute='_compute_document_type' domain="[('id', 'in', l10n_latam_available_document_type_ids)]" ondelete='cascade' readonly=False store=True args: 'l10n_latam.document.type', 'Document Type'
  • l10n_latam_manual_document_number Boolean
    compute='_compute_l10n_latam_manual_document_number' string='Manual Number'
  • l10n_latam_use_documents Boolean
    compute='_compute_documents_info'
Public methods (0)

No public methods.

New fields (8)
  • active Boolean
    default=True
  • code Char
    help='Code used by different localizations'
  • country_id Many2one → res.country
    help='Country in which this type of document is valid' index=True required=True args: 'res.country'
  • doc_code_prefix Char
    help="Prefix for Documents Codes on Invoices and Account Moves. For eg. 'FA ' will build 'FA 0001-0000001' Document Number" args: 'Document Code Prefix'
  • internal_type Selection
    help='Analog to odoo account.move.move_type but with more options allowing to identify the kind of document we are working with. (not only related to account.move, could be for documents of other models like stock.picking)' args: [('invoice', 'Invoices'), ('debit_note', 'Debit Notes'), ('credit_note', 'Credit Notes'), ('all', 'All Documents')]
  • name Char
    help='The document name' required=True translate=True
  • report_name Char
    help='Name that will be printed in reports, for example "CREDIT NOTE"' translate=True args: 'Name on Reports'
  • sequence Integer
    default=10 help='To set in which order show the documents type taking into account the most commonly used first' required=True
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/16.0/l10n_latam_invoice_document
VERSION
VERSION 1.0
CATEGORY
CATEGORYAccounting/Localizations
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSADHOC SA
MAINTAINERS
MAINTAINERSADHOC SA
COMMITTERS
COMMITTERSRaphael Collet, Martin Trigaux, Fabien Pinckaers, Josse Colpaert, Andrea Grazioso (agr-odoo), oco-odoo, Katherine Zaoral, Nasreddin Boulif (bon), Ricardo Gomes Rodrigues (rigr), Bruno Zanotti, Juan Jose Scarafia, Daniel Blanco, Stanislas Gueniffey, Pablo Montenegro, yosa-odoo, Maximiliano Mezzavilla, Antoine Dupuis
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:55
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - account_debit_note
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Functional
----------

In some Latinamerica countries, including Argentina and Chile, some accounting transactions like invoices and vendor bills are classified by a document types defined by the government fiscal authorities (In Argentina case AFIP, Chile case SII).

This module is intended to be extended by localizations in order to manage these document types and is an essential information that needs to be displayed in the printed reports and that needs to be easily identified, within the set of invoices as well of account moves.

Each document type have their own rules and sequence number, this last one is integrated with the invoice number and journal sequence in order to be easy for the localization user. In order to support or not this document types a Journal has a new option that lets to use document or not.

Technical
---------

If your localization needs this logic will then need to add this module as dependency and in your localization module extend:

* extend company's _localization_use_documents() method.
* create the data of the document types that exists for the specific country. The document type has a country field

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
external_layout_bold external_layout_bold ir.ui.view qweb Inherits web.external_layout_bold
external_layout_boxed external_layout_boxed ir.ui.view qweb Inherits web.external_layout_boxed
external_layout_standard external_layout_standard ir.ui.view qweb Inherits web.external_layout_standard
external_layout_striped external_layout_striped ir.ui.view qweb Inherits web.external_layout_striped
view_account_invoice_filter account.move.select account.move field Inherits account.view_account_invoice_filter
view_account_invoice_report_search account.invoice.report.search account.invoice.report search Inherits account.view_account_invoice_report_search
view_account_journal_form account.journal.form account.journal form Inherits account.view_account_journal_form
view_account_move_filter account.move.filter account.move field Inherits account.view_account_move_filter
view_account_move_line_filter account.move.line.filter account.move.line separator Inherits account.view_account_move_line_filter
view_account_move_reversal account.move.reversal.form account.move.reversal form Inherits account.view_account_move_reversal
view_document_type_filter l10n_latam.document.type.filter l10n_latam.document.type search New
view_document_type_form l10n_latam.document.type.form l10n_latam.document.type form New
view_document_type_tree l10n_latam.document.type.tree l10n_latam.document.type tree New
view_move_form account.move.form account.move form Inherits account.view_move_form
Models touched (9)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • create_debit(self)
    Properly compute the latam document type of type debit note.

New fields (1)
  • l10n_latam_document_type_id Many2one → l10n_latam.document.type
    index=True args: 'l10n_latam.document.type', 'Document Type'
Public methods (0)

No public methods.

New fields (2)
  • l10n_latam_company_use_documents Boolean
    compute='_compute_l10n_latam_company_use_documents'
  • l10n_latam_use_documents Boolean
    help='If active: will be using for legal invoicing (invoices, debit/credit notes). If not set means that will be used to register accounting entries not related to invoicing legal documents. For Example: Receipts, Tax Payments, Register journal entries' args: 'Use Documents?'
Public methods (1)
  • check_use_document(self)
    @api.constrains('l10n_latam_use_documents')

New fields (6)
  • l10n_latam_available_document_type_ids Many2many → l10n_latam.document.type
    compute='_compute_l10n_latam_available_document_types' args: 'l10n_latam.document.type'
  • l10n_latam_document_number Char
    compute='_compute_l10n_latam_document_number' inverse='_inverse_l10n_latam_document_number' readonly=True states={'draft': [('readonly', False)]} string='Document Number'
  • l10n_latam_document_type_id Many2one → l10n_latam.document.type
    auto_join=True compute='_compute_l10n_latam_document_type' index='btree_not_null' readonly=False states={'posted': [('readonly', True)]} store=True string='Document Type' args: 'l10n_latam.document.type'
  • l10n_latam_document_type_id_code Char
    related='l10n_latam_document_type_id.code' string='Doc Type'
  • l10n_latam_manual_document_number Boolean
    compute='_compute_l10n_latam_manual_document_number' string='Manual Number'
  • l10n_latam_use_documents Boolean
    related='journal_id.l10n_latam_use_documents'
Public methods (0)

No public methods.

New fields (1)
  • l10n_latam_document_type_id Many2one
    auto_join=True index='btree_not_null' related='move_id.l10n_latam_document_type_id' store=True
Public methods (0)

No public methods.

New fields (5)
  • l10n_latam_available_document_type_ids Many2many → l10n_latam.document.type
    compute='_compute_documents_info' args: 'l10n_latam.document.type'
  • l10n_latam_document_number Char
    string='Document Number'
  • l10n_latam_document_type_id Many2one → l10n_latam.document.type
    compute='_compute_document_type' domain="[('id', 'in', l10n_latam_available_document_type_ids)]" ondelete='cascade' readonly=False store=True args: 'l10n_latam.document.type', 'Document Type'
  • l10n_latam_manual_document_number Boolean
    compute='_compute_l10n_latam_manual_document_number' string='Manual Number'
  • l10n_latam_use_documents Boolean
    compute='_compute_documents_info'
Public methods (0)

No public methods.

New fields (8)
  • active Boolean
    default=True
  • code Char
    help='Code used by different localizations'
  • country_id Many2one → res.country
    help='Country in which this type of document is valid' index=True required=True args: 'res.country'
  • doc_code_prefix Char
    help="Prefix for Documents Codes on Invoices and Account Moves. For eg. 'FA ' will build 'FA 0001-0000001' Document Number" args: 'Document Code Prefix'
  • internal_type Selection
    help='Analog to odoo account.move.move_type but with more options allowing to identify the kind of document we are working with. (not only related to account.move, could be for documents of other models like stock.picking)' args: [('invoice', 'Invoices'), ('debit_note', 'Debit Notes'), ('credit_note', 'Credit Notes')]
  • name Char
    help='The document name' required=True
  • report_name Char
    help='Name that will be printed in reports, for example "CREDIT NOTE"' args: 'Name on Reports'
  • sequence Integer
    default=10 help='To set in which order show the documents type taking into account the most commonly used first' required=True
Public methods (1)
  • name_get(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/15.0/l10n_latam_invoice_document
VERSION
VERSION 1.0
CATEGORY
CATEGORYAccounting/Localizations
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSADHOC SA
MAINTAINERS
MAINTAINERSADHOC SA
COMMITTERS
COMMITTERSMartin Trigaux, Josse Colpaert, Denis Ledoux, Nicolas Lempereur, wan, Xavier-Do, Andrea Grazioso (agr-odoo), Nasreddin (bon), oco-odoo, Katherine Zaoral, Nikunj Ladava, Achraf (abz), Nasreddin Boulif (bon), Benjamin Frantzen (bfr), Bruno Zanotti (ADHOC), william-andre, Nicolás Mac Rouillon, Bruno Zanotti, Juan Jose Scarafia, Daniel Blanco, Leonardo Pavan Rocha
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:25:30
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - account_debit_note
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Functional
----------

In some Latinamerica countries, including Argentina and Chile, some accounting transactions like invoices and vendor bills are classified by a document types defined by the government fiscal authorities (In Argentina case AFIP, Chile case SII).

This module is intended to be extended by localizations in order to manage these document types and is an essential information that needs to be displayed in the printed reports and that needs to be easily identified, within the set of invoices as well of account moves.

Each document type have their own rules and sequence number, this last one is integrated with the invoice number and journal sequence in order to be easy for the localization user. In order to support or not this document types a Journal has a new option that lets to use document or not.

Technical
---------

If your localization needs this logic will then need to add this module as dependency and in your localization module extend:

* extend company's _localization_use_documents() method.
* create the data of the document types that exists for the specific country. The document type has a country field

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
external_layout_bold external_layout_bold ir.ui.view qweb Inherits web.external_layout_bold
external_layout_boxed external_layout_boxed ir.ui.view qweb Inherits web.external_layout_boxed
external_layout_standard external_layout_standard ir.ui.view qweb Inherits web.external_layout_standard
external_layout_striped external_layout_striped ir.ui.view qweb Inherits web.external_layout_striped
view_account_invoice_filter account.move.select account.move field Inherits account.view_account_invoice_filter
view_account_invoice_report_search account.invoice.report.search account.invoice.report search Inherits account.view_account_invoice_report_search
view_account_journal_form account.journal.form account.journal form Inherits account.view_account_journal_form
view_account_move_filter account.move.filter account.move field Inherits account.view_account_move_filter
view_account_move_line_filter account.move.line.filter account.move.line separator Inherits account.view_account_move_line_filter
view_account_move_reversal account.move.reversal.form account.move.reversal form Inherits account.view_account_move_reversal
view_document_type_filter l10n_latam.document.type.filter l10n_latam.document.type search New
view_document_type_form l10n_latam.document.type.form l10n_latam.document.type form New
view_document_type_tree l10n_latam.document.type.tree l10n_latam.document.type tree New
view_move_form account.move.form account.move form Inherits account.view_move_form
Models touched (9)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • create_debit(self)
    Properly compute the latam document type of type debit note.

New fields (1)
  • l10n_latam_document_type_id Many2one → l10n_latam.document.type
    index=True args: 'l10n_latam.document.type', 'Document Type'
Public methods (0)

No public methods.

New fields (2)
  • l10n_latam_company_use_documents Boolean
    compute='_compute_l10n_latam_company_use_documents'
  • l10n_latam_use_documents Boolean
    help='If active: will be using for legal invoicing (invoices, debit/credit notes). If not set means that will be used to register accounting entries not related to invoicing legal documents. For Example: Receipts, Tax Payments, Register journal entries' args: 'Use Documents?'
Public methods (1)
  • check_use_document(self)
    @api.constrains('l10n_latam_use_documents')

New fields (6)
  • l10n_latam_available_document_type_ids Many2many → l10n_latam.document.type
    compute='_compute_l10n_latam_available_document_types' args: 'l10n_latam.document.type'
  • l10n_latam_document_number Char
    compute='_compute_l10n_latam_document_number' inverse='_inverse_l10n_latam_document_number' readonly=True states={'draft': [('readonly', False)]} string='Document Number'
  • l10n_latam_document_type_id Many2one → l10n_latam.document.type
    auto_join=True compute='_compute_l10n_latam_document_type' index=True readonly=False states={'posted': [('readonly', True)]} store=True string='Document Type' args: 'l10n_latam.document.type'
  • l10n_latam_document_type_id_code Char
    related='l10n_latam_document_type_id.code' string='Doc Type'
  • l10n_latam_manual_document_number Boolean
    compute='_compute_l10n_latam_manual_document_number' string='Manual Number'
  • l10n_latam_use_documents Boolean
    related='journal_id.l10n_latam_use_documents'
Public methods (0)

No public methods.

New fields (1)
  • l10n_latam_document_type_id Many2one
    auto_join=True index=True related='move_id.l10n_latam_document_type_id' store=True
Public methods (0)

No public methods.

New fields (5)
  • l10n_latam_available_document_type_ids Many2many → l10n_latam.document.type
    compute='_compute_document_type' args: 'l10n_latam.document.type'
  • l10n_latam_document_number Char
    string='Document Number'
  • l10n_latam_document_type_id Many2one → l10n_latam.document.type
    compute='_compute_document_type' domain="[('id', 'in', l10n_latam_available_document_type_ids)]" inverse='_inverse_document_type' ondelete='cascade' readonly=False args: 'l10n_latam.document.type', 'Document Type'
  • l10n_latam_manual_document_number Boolean
    compute='_compute_l10n_latam_manual_document_number' string='Manual Number'
  • l10n_latam_use_documents Boolean
    compute='_compute_document_type'
Public methods (0)

No public methods.

New fields (8)
  • active Boolean
    default=True
  • code Char
    help='Code used by different localizations'
  • country_id Many2one → res.country
    help='Country in which this type of document is valid' index=True required=True args: 'res.country'
  • doc_code_prefix Char
    help="Prefix for Documents Codes on Invoices and Account Moves. For eg. 'FA ' will build 'FA 0001-0000001' Document Number" args: 'Document Code Prefix'
  • internal_type Selection
    help='Analog to odoo account.move.move_type but with more options allowing to identify the kind of document we are working with. (not only related to account.move, could be for documents of other models like stock.picking)' index=True args: [('invoice', 'Invoices'), ('debit_note', 'Debit Notes'), ('credit_note', 'Credit Notes')]
  • name Char
    help='The document name' index=True required=True
  • report_name Char
    help='Name that will be printed in reports, for example "CREDIT NOTE"' args: 'Name on Reports'
  • sequence Integer
    default=10 help='To set in which order show the documents type taking into account the most commonly used first' required=True
Public methods (1)
  • name_get(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/14.0/l10n_latam_invoice_document
VERSION
VERSION 1.0
CATEGORY
CATEGORYAccounting/Localizations
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSADHOC SA
MAINTAINERS
MAINTAINERSADHOC SA
COMMITTERS
COMMITTERSRaphael Collet, Martin Trigaux, Josse Colpaert, Denis Ledoux, Christophe Simonis, Xavier Morel, Ravi Gohil, Nicolas Lempereur, GitHub, Yannick Tivisse, Christophe Monniez, wan, Xavier-Do, Nasreddin (bon), oco-odoo, fw-bot, Katherine Zaoral, Achraf (abz), Carlos Lopez, Nasreddin Boulif (bon), Bruno Zanotti (ADHOC), Jigar Vaghela, Nicolás Mac Rouillon, Juan Jose Scarafia, william
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:14:31
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - account_debit_note
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Functional
----------

In some Latinamerica countries, including Argentina and Chile, some accounting transactions like invoices and vendor bills are classified by a document types defined by the government fiscal authorities (In Argentina case AFIP, Chile case SII).

This module is intended to be extended by localizations in order to manage these document types and is an essential information that needs to be displayed in the printed reports and that needs to be easily identified, within the set of invoices as well of account moves.

Each document type have their own rules and sequence number, this last one is integrated with the invoice number and journal sequence in order to be easy for the localization user. In order to support or not this document types a Journal has a new option that lets to use document or not.

Technical
---------

If your localization needs this logic will then need to add this module as dependency and in your localization module extend:

* extend company's _localization_use_documents() method.
* create the data of the document types that exists for the specific country. The document type has a country field

Code Analysis

Views touched (17)
XML IDNameModelTypeStatus
external_layout_background external_layout_background ir.ui.view qweb Inherits web.external_layout_background
external_layout_boxed external_layout_boxed ir.ui.view qweb Inherits web.external_layout_boxed
external_layout_clean external_layout_clean ir.ui.view qweb Inherits web.external_layout_clean
external_layout_standard external_layout_standard ir.ui.view qweb Inherits web.external_layout_standard
sequence_view ir.sequence.form ir.sequence field Inherits base.sequence_view
sequence_view_tree ir.sequence.tree ir.sequence field Inherits base.sequence_view_tree
view_account_invoice_filter account.move.select account.move field Inherits account.view_account_invoice_filter
view_account_invoice_report_search account.invoice.report.search account.invoice.report search Inherits account.view_account_invoice_report_search
view_account_journal_form account.journal.form account.journal form Inherits account.view_account_journal_form
view_account_move_filter account.move.filter account.move field Inherits account.view_account_move_filter
view_account_move_line_filter account.move.line.filter account.move.line separator Inherits account.view_account_move_line_filter
view_account_move_reversal account.move.reversal.form account.move.reversal form Inherits account.view_account_move_reversal
view_document_type_filter l10n_latam.document.type.filter l10n_latam.document.type search New
view_document_type_form l10n_latam.document.type.form l10n_latam.document.type form New
view_document_type_tree l10n_latam.document.type.tree l10n_latam.document.type tree New
view_move_form account.move.form account.move form Inherits account.view_move_form
view_sequence_search ir.sequence.search ir.sequence field Inherits base.view_sequence_search
Models touched (10)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • create_debit(self)
    Properly compute the latam document type of type debit note.

New fields (1)
  • l10n_latam_document_type_id Many2one → l10n_latam.document.type
    index=True args: 'l10n_latam.document.type', 'Document Type'
Public methods (0)

No public methods.

New fields (2)
  • l10n_latam_company_use_documents Boolean
    compute='_compute_l10n_latam_company_use_documents'
  • l10n_latam_use_documents Boolean
    help='If active: will be using for legal invoicing (invoices, debit/credit notes). If not set means that will be used to register accounting entries not related to invoicing legal documents. For Example: Receipts, Tax Payments, Register journal entries' args: 'Use Documents?'
Public methods (1)
  • check_use_document(self)
    @api.constrains('l10n_latam_use_documents')

New fields (7)
  • l10n_latam_amount_untaxed Monetary
    compute='_compute_l10n_latam_amount_and_taxes'
  • l10n_latam_available_document_type_ids Many2many → l10n_latam.document.type
    compute='_compute_l10n_latam_available_document_types' args: 'l10n_latam.document.type'
  • l10n_latam_document_number Char
    compute='_compute_l10n_latam_document_number' inverse='_inverse_l10n_latam_document_number' readonly=True states={'draft': [('readonly', False)]} string='Document Number'
  • l10n_latam_document_type_id Many2one → l10n_latam.document.type
    auto_join=True compute='_compute_l10n_latam_document_type' index=True readonly=False states={'posted': [('readonly', True)]} store=True string='Document Type' args: 'l10n_latam.document.type'
  • l10n_latam_manual_document_number Boolean
    compute='_compute_l10n_latam_manual_document_number' string='Manual Number'
  • l10n_latam_tax_ids One2many → account.move.line
    comodel_name='account.move.line' compute='_compute_l10n_latam_amount_and_taxes'
  • l10n_latam_use_documents Boolean
    related='journal_id.l10n_latam_use_documents'
Public methods (0)

No public methods.

New fields (5)
  • l10n_latam_document_type_id Many2one
    auto_join=True index=True related='move_id.l10n_latam_document_type_id' store=True
  • l10n_latam_price_net Float
    compute='compute_l10n_latam_prices_and_taxes' digits='Product Price'
  • l10n_latam_price_subtotal Monetary
    compute='compute_l10n_latam_prices_and_taxes'
  • l10n_latam_price_unit Float
    compute='compute_l10n_latam_prices_and_taxes' digits='Product Price'
  • l10n_latam_tax_ids One2many → account.tax
    comodel_name='account.tax' compute='compute_l10n_latam_prices_and_taxes'
Public methods (1)
  • compute_l10n_latam_prices_and_taxes(self)
    @api.depends('price_unit', 'price_subtotal', 'move_id.l10n_latam_document_type_id')

New fields (5)
  • l10n_latam_available_document_type_ids Many2many → l10n_latam.document.type
    compute='_compute_document_type' args: 'l10n_latam.document.type'
  • l10n_latam_document_number Char
    string='Document Number'
  • l10n_latam_document_type_id Many2one → l10n_latam.document.type
    compute='_compute_document_type' domain="[('id', 'in', l10n_latam_available_document_type_ids)]" inverse='_inverse_document_type' ondelete='cascade' readonly=False args: 'l10n_latam.document.type', 'Document Type'
  • l10n_latam_manual_document_number Boolean
    compute='_compute_l10n_latam_manual_document_number' string='Manual Number'
  • l10n_latam_use_documents Boolean
    compute='_compute_document_type'
Public methods (0)

No public methods.

New fields (1)
  • l10n_latam_document_type_id Many2one → l10n_latam.document.type
    args: 'l10n_latam.document.type', 'Document Type'
Public methods (0)

No public methods.

New fields (8)
  • active Boolean
    default=True
  • code Char
    help='Code used by different localizations'
  • country_id Many2one → res.country
    help='Country in which this type of document is valid' index=True required=True args: 'res.country'
  • doc_code_prefix Char
    help="Prefix for Documents Codes on Invoices and Account Moves. For eg. 'FA ' will build 'FA 0001-0000001' Document Number" args: 'Document Code Prefix'
  • internal_type Selection
    help='Analog to odoo account.move.move_type but with more options allowing to identify the kind of document we are working with. (not only related to account.move, could be for documents of other models like stock.picking)' index=True args: [('invoice', 'Invoices'), ('debit_note', 'Debit Notes'), ('credit_note', 'Credit Notes')]
  • name Char
    help='The document name' index=True required=True
  • report_name Char
    help='Name that will be printed in reports, for example "CREDIT NOTE"' args: 'Name on Reports'
  • sequence Integer
    default=10 help='To set in which order show the documents type taking into account the most commonly used first' required=True
Public methods (1)
  • name_get(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/13.0/l10n_latam_invoice_document
VERSION
VERSION 1.0
CATEGORY
CATEGORYLocalization
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSADHOC SA
MAINTAINERS
MAINTAINERSADHOC SA
COMMITTERS
COMMITTERSMartin Trigaux, Josse Colpaert, Denis Ledoux, Christophe Simonis, Nicolas Lempereur, qdp-odoo, GitHub, Xavier-Do, Nasreddin (bon), alt-odoo, Katherine Zaoral, Carlos Lopez, Nasreddin Boulif (bon), Bruno Zanotti (ADHOC), Jigar Vaghela, Nicolás Mac Rouillon, Juan Jose Scarafia
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:06:44
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Functional
----------

In some Latinamerica countries, including Argentina and Chile, some accounting transactions like invoices and vendor bills are classified by a document types defined by the government fiscal authorities (In Argentina case AFIP, Chile case SII).

This module is intended to be extended by localizations in order to manage these document types and is an essential information that needs to be displayed in the printed reports and that needs to be easily identified, within the set of invoices as well of account moves.

Each document type have their own rules and sequence number, this last one is integrated with the invoice number and journal sequence in order to be easy for the localization user. In order to support or not this document types a Journal has a new option that lets to use document or not.

Technical
---------

If your localization needs this logic will then need to add this module as dependency and in your localization module extend:

* extend company's _localization_use_documents() method.
* create the data of the document types that exists for the specific country. The document type has a country field

Code Analysis

Views touched (20)
XML IDNameModelTypeStatus
external_layout_background external_layout_background ir.ui.view qweb Inherits web.external_layout_background
external_layout_boxed external_layout_boxed ir.ui.view qweb Inherits web.external_layout_boxed
external_layout_clean external_layout_clean ir.ui.view qweb Inherits web.external_layout_clean
external_layout_standard external_layout_standard ir.ui.view qweb Inherits web.external_layout_standard
report_invoice report_invoice ir.ui.view qweb Inherits account.report_invoice
report_invoice_document report_invoice_document ir.ui.view qweb Inherits account.report_invoice_document
report_invoice_with_payments report_invoice_with_payments ir.ui.view qweb Inherits account.report_invoice_with_payments
sequence_view ir.sequence.form ir.sequence field Inherits base.sequence_view
sequence_view_tree ir.sequence.tree ir.sequence field Inherits base.sequence_view_tree
view_account_invoice_filter account.move.select account.move field Inherits account.view_account_invoice_filter
view_account_invoice_report_search account.invoice.report.search account.invoice.report search Inherits account.view_account_invoice_report_search
view_account_journal_form account.journal.form account.journal form Inherits account.view_account_journal_form
view_account_move_filter account.move.filter account.move field Inherits account.view_account_move_filter
view_account_move_line_filter account.move.line.filter account.move.line separator Inherits account.view_account_move_line_filter
view_account_move_reversal account.move.reversal.form account.move.reversal form Inherits account.view_account_move_reversal
view_document_type_filter l10n_latam.document.type.filter l10n_latam.document.type search New
view_document_type_form l10n_latam.document.type.form l10n_latam.document.type form New
view_document_type_tree l10n_latam.document.type.tree l10n_latam.document.type tree New
view_move_form account.move.form account.move form Inherits account.view_move_form
view_sequence_search ir.sequence.search ir.sequence field Inherits base.view_sequence_search
Models touched (9)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • l10n_latam_document_type_id Many2one → l10n_latam.document.type
    index=True args: 'l10n_latam.document.type', 'Document Type'
Public methods (0)

No public methods.

New fields (3)
  • l10n_latam_company_use_documents Boolean
    compute='_compute_l10n_latam_company_use_documents'
  • l10n_latam_country_code Char
    help='Technical field used to hide/show fields regarding the localization' related='company_id.country_id.code'
  • l10n_latam_use_documents Boolean
    help='If active: will be using for legal invoicing (invoices, debit/credit notes). If not set means that will be used to register accounting entries not related to invoicing legal documents. For Example: Receipts, Tax Payments, Register journal entries' args: 'Use Documents?'
Public methods (1)
  • check_use_document(self)
    @api.constrains('l10n_latam_use_documents')

New fields (8)
  • l10n_latam_amount_untaxed Monetary
    compute='_compute_l10n_latam_amount_and_taxes'
  • l10n_latam_available_document_type_ids Many2many → l10n_latam.document.type
    compute='_compute_l10n_latam_available_document_types' args: 'l10n_latam.document.type'
  • l10n_latam_country_code Char
    help='Technical field used to hide/show fields regarding the localization' related='company_id.country_id.code' args: 'Country Code (LATAM)'
  • l10n_latam_document_number Char
    compute='_compute_l10n_latam_document_number' inverse='_inverse_l10n_latam_document_number' readonly=True states={'draft': [('readonly', False)]} string='Document Number'
  • l10n_latam_document_type_id Many2one → l10n_latam.document.type
    auto_join=True compute='_compute_l10n_latam_document_type' index=True inverse='_inverse_l10n_latam_document_number' readonly=False states={'posted': [('readonly', True)]} store=True string='Document Type' args: 'l10n_latam.document.type'
  • l10n_latam_sequence_id Many2one → ir.sequence
    compute='_compute_l10n_latam_sequence' args: 'ir.sequence'
  • l10n_latam_tax_ids One2many → account.move.line
    comodel_name='account.move.line' compute='_compute_l10n_latam_amount_and_taxes'
  • l10n_latam_use_documents Boolean
    related='journal_id.l10n_latam_use_documents'
Public methods (2)
  • post(self)
  • unlink(self)
    When using documents, on vendor bills the document_number is set manually by the number given from the vendor, the odoo sequence is not used. In this case We allow to delete vendor bills with document_number/move_name

New fields (5)
  • l10n_latam_document_type_id Many2one
    auto_join=True index=True related='move_id.l10n_latam_document_type_id' store=True
  • l10n_latam_price_net Float
    compute='compute_l10n_latam_prices_and_taxes' digits='Product Price'
  • l10n_latam_price_subtotal Monetary
    compute='compute_l10n_latam_prices_and_taxes'
  • l10n_latam_price_unit Float
    compute='compute_l10n_latam_prices_and_taxes' digits='Product Price'
  • l10n_latam_tax_ids One2many → account.tax
    comodel_name='account.tax' compute='compute_l10n_latam_prices_and_taxes'
Public methods (1)
  • compute_l10n_latam_prices_and_taxes(self)
    @api.depends('price_unit', 'price_subtotal', 'move_id.l10n_latam_document_type_id')

New fields (4)
  • l10n_latam_document_number Char
    string='Document Number'
  • l10n_latam_document_type_id Many2one → l10n_latam.document.type
    ondelete='cascade' args: 'l10n_latam.document.type', 'Document Type'
  • l10n_latam_sequence_id Many2one → ir.sequence
    compute='_compute_l10n_latam_sequence' args: 'ir.sequence'
  • l10n_latam_use_documents Boolean
    readonly=True related='move_id.journal_id.l10n_latam_use_documents'
Public methods (1)
  • default_get(self, fields)
    @api.model

New fields (2)
  • l10n_latam_document_type_id Many2one → l10n_latam.document.type
    args: 'l10n_latam.document.type', 'Document Type'
  • l10n_latam_journal_id Many2one → account.journal
    args: 'account.journal', 'Journal'
Public methods (0)

No public methods.

New fields (8)
  • active Boolean
    default=True
  • code Char
    help='Code used by different localizations'
  • country_id Many2one → res.country
    help='Country in which this type of document is valid' index=True required=True args: 'res.country'
  • doc_code_prefix Char
    help="Prefix for Documents Codes on Invoices and Account Moves. For eg. 'FA ' will build 'FA 0001-0000001' Document Number" args: 'Document Code Prefix'
  • internal_type Selection
    help='Analog to odoo account.move.type but with more options allowing to identify the kind of document we are working with. (not only related to account.move, could be for documents of other models like stock.picking)' index=True args: [('invoice', 'Invoices'), ('debit_note', 'Debit Notes'), ('credit_note', 'Credit Notes')]
  • name Char
    help='The document name' index=True required=True
  • report_name Char
    help='Name that will be printed in reports, for example "CREDIT NOTE"' args: 'Name on Reports'
  • sequence Integer
    default=10 help='To set in which order show the documents type taking into account the most commonly used first' required=True
Public methods (1)
  • name_get(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.