| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/l10n-mexico |
| GIT | |
| GIT | https://github.com/OCA/l10n-mexico.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/l10n-mexico/tree/19.0/l10n_mx_cfdi_account |
| VERSION | |
| VERSION | 1.0.0 |
| CATEGORY | |
| CATEGORY | Accounting |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Alexis López Zubieta <alexis.lopez@augetec.com> (Auge TEC) |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Alexis López Zubieta <alexis.lopez@augetec.com> (Auge TEC) |
| COMMITTERS | |
| COMMITTERS | Maxime Chambreuil, OCA-git-bot, oca-ci |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/l10n-mexico |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:40:50 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/l10n-mexico: - l10n_mx_cfdi - l10n_mx_catalogs odoo/odoo: - base - product - base_setup - web - bus - web_tour - html_editor - uom - l10n_mx - account - onboarding - analytic - portal - http_routing - auth_signup - digest - resource |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
facturama |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | This module provides electronic invoicing for Mexico: - Generation of electronic invoices compliant with the CFDI 4.0 standard. - Customization of fiscal documents according to user needs. - Centralized management of electronic invoices within Odoo. - Tracking and recording of issued and received fiscal documents. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_view_account_invoice_filter_cfdi |
account.invoice.filter.cfdi | account.move | filter | Inherits account.view_account_invoice_filter |
account_view_out_invoice_tree_cfdi |
account.out.invoice.tree.cfdi | account.move | xpath | Inherits account.view_out_invoice_tree |
certificate_cancel_wizard_form |
Cancelar CFDI | l10n_mx_cfdi_account.document_cancel | form | New |
cfdi_invoice_generic_create_form |
Crear CFDI al Público en General | l10n_mx_cfdi_account.generic_invoice_create | form | New |
download_cfdi_files_wizard_form |
Descargar CFDIs | l10n_mx_cfdi_account.dl_cfdi_files_wizard | form | New |
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 |
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 |
report_payment_receipt |
report_payment_receipt | ir.ui.view | qweb | Inherits account.report_payment_receipt |
report_payment_receipt_document_cfdi |
report_payment_receipt_document_cfdi | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.l10n.mx | res.config.settings | xpath | Inherits l10n_mx.res_config_settings_view_form |
view_account_payment_form_inherit |
Account Payment: Payment Form | account.payment | field | Inherits account.view_account_payment_form |
view_account_payment_register_form_inherit |
Account Move Payment: CFDI generation | account.payment.register | group | Inherits account.view_account_payment_register_form |
view_move_form |
account.move.view.form.inherit.cfdi.account | account.move | xpath | Inherits account.view_move_form |
cfdi_data_in_attachments
Boolean
compute='_compute_cfdi_data_in_attachments'
string='CFDI data in attachments'
cfdi_document_id
Many2one → l10n_mx_cfdi.document
compute='_compute_cfdi_document_id'
copy=False
readonly=True
store=True
string='CFDI'
args: 'l10n_mx_cfdi.document'
cfdi_document_name
Char
readonly=True
related='cfdi_document_id.name'
store=True
string='Folio CFDI'
cfdi_document_state
Selection
readonly=True
related='cfdi_document_id.state'
string='CFDI Status'
cfdi_posted
Boolean
compute='_compute_cfdi_posted'
store=True
string='CFDI Posted'
cfdi_required
Boolean
default=False
string='Requiere CFDI'
cfdi_use_id
Many2one → l10n_mx_catalogs.c_uso_cfdi
string='Uso de CFDI'
args: 'l10n_mx_catalogs.c_uso_cfdi'
issuer_id
Many2one → l10n_mx_cfdi.issuer
domain=[('registered', '=', True)]
string='Emisor'
args: 'l10n_mx_cfdi.issuer'
l10n_mx_cfdi_auto
Boolean
readonly=True
related='company_id.l10n_mx_cfdi_auto'
string='CFDI Automatico'
l10n_mx_cfdi_enabled
Boolean
readonly=True
related='company_id.l10n_mx_cfdi_enabled'
string='CFDI Habilitado'
payment_form_id
Many2one → l10n_mx_catalogs.c_forma_pago
string='Forma de pago'
args: 'l10n_mx_catalogs.c_forma_pago'
payment_method_id
Many2one → l10n_mx_catalogs.c_metodo_pago
string='Método de pago'
args: 'l10n_mx_catalogs.c_metodo_pago'
receiver_id
Many2one → res.partner
readonly=True
string='Receptor'
args: 'res.partner'
related_cert_ids
Many2many → l10n_mx_cfdi.document
copy=False
readonly=True
string='Documentos'
args: 'l10n_mx_cfdi.document'
action_generate_cfdi(self)
action_load_from_attachment(self)
action_post(self)
button_draft(self)
create_invoice_cfdi(self)
create_refund_cfdi(self)
default_get(self, field_names)
gater_invoice_cfdi_item_data(self, line)
gather_invoice_cfdi_items_data(self)
prepare_invoice_cfdi_total_taxes(self)
validate_invoice_items_for_cfdi_generation(self)
cfdi_discount
Monetary
compute='_compute_cfdi_fields'
store=True
cfdi_price_unit
Monetary
compute='_compute_cfdi_fields'
store=True
cfdi_subtotal
Monetary
compute='_compute_cfdi_fields'
store=True
No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (2)create(self, vals_list)
unlink(self)
cfdi_document_id
Many2one → l10n_mx_cfdi.document
compute='_compute_cfdi_document_id'
copy=False
readonly=True
store=True
string='CFDI'
args: 'l10n_mx_cfdi.document'
cfdi_document_state
Selection
readonly=True
related='cfdi_document_id.state'
string='CFDI Status'
cfdi_use_id
Many2one → l10n_mx_catalogs.c_uso_cfdi
string='Uso de CFDI'
args: 'l10n_mx_catalogs.c_uso_cfdi'
l10n_mx_cfdi_auto
Boolean
readonly=True
related='company_id.l10n_mx_cfdi_auto'
string='CFDI Automatico'
l10n_mx_cfdi_enabled
Boolean
readonly=True
related='company_id.l10n_mx_cfdi_enabled'
string='CFDI Habilitado'
payment_form_id
Many2one → l10n_mx_catalogs.c_forma_pago
string='Forma de pago'
args: 'l10n_mx_catalogs.c_forma_pago'
related_cert_ids
Many2many → l10n_mx_cfdi.document
copy=False
readonly=True
string='Documentos'
args: 'l10n_mx_cfdi.document'
action_generate_cfdi(self)
cancel_payment_cfdi(self)
create_payment_cfdi(self)
prepare_payment_cfdi(self)
payment_form_id
Many2one → l10n_mx_catalogs.c_forma_pago
required=True
string='Forma de Pago'
args: 'l10n_mx_catalogs.c_forma_pago'
No public methods.
No new fields.
Public methods (2)extract_is_retention(self)
extract_l10n_mx_tax_code(self)
related_invoice_id
Many2one → account.move
readonly=True
string='Factura relacionada'
args: 'account.move'
related_payment_id
Many2one → account.payment
readonly=True
string='Pago relacionado'
args: 'account.payment'
action_check_status(self)
create(self, vals_list)
download_files_if_needed(self)
cfdi_document_ids
Many2many → l10n_mx_cfdi.document
relation='l10n_mx_cfdi_download_cfdi_files_wizard_rel'
required=True
string='CFDI Documents'
args: 'l10n_mx_cfdi.document'
invoice_ids
Many2many → account.move
required=True
string='Facturas'
args: 'account.move'
zip_file
Many2one → ir.attachment
ondelete='cascade'
readonly=True
args: 'ir.attachment'
action_download_zip(self)
default_get(self, field_names)
cancel_reason_id
Many2one → l10n_mx_catalogs.c_motivo_cancelacion
required=True
string='Razón'
args: 'l10n_mx_catalogs.c_motivo_cancelacion'
certificate_ids
Many2many → l10n_mx_cfdi.document
required=True
string='Certificados'
args: 'l10n_mx_cfdi.document'
related_invoices
Many2many → account.move
string='Facturas Relacionadas'
args: 'account.move'
replacement_certificate_id
Many2one → l10n_mx_cfdi.document
string='Reemplazo'
args: 'l10n_mx_cfdi.document'
requires_replacement
Boolean
compute='_compute_requires_replacement'
store=False
simulate_operation
Boolean
default=False
groups='base.group_system'
help='Simulate the cancel operation without sending the request to the SAT'
single_cancel
Boolean
default=True
cancel_certificate(self)
default_get(self, field_names)
cfdi_use_id
Many2one → l10n_mx_catalogs.c_uso_cfdi
readonly=True
required=True
string='Uso de CFDI'
args: 'l10n_mx_catalogs.c_uso_cfdi'
date
Date
default=fields.Date.context_today
required=True
string='Fecha'
fiscal_regime_id
Many2one → l10n_mx_catalogs.c_regimen_fiscal
compute='_compute_fiscal_regime_id'
readonly=True
required=True
string='Régimen Fiscal'
args: 'l10n_mx_catalogs.c_regimen_fiscal'
issuer_id
Many2one → l10n_mx_cfdi.issuer
domain=[('registered', '=', True)]
required=True
string='Emisor'
args: 'l10n_mx_cfdi.issuer'
meses_id
Many2one → l10n_mx_catalogs.c_meses
required=True
string='Mes'
args: 'l10n_mx_catalogs.c_meses'
move_ids
Many2many → account.move
required=True
string='Facturas'
args: 'account.move'
payment_form_id
Many2one → l10n_mx_catalogs.c_forma_pago
string='Forma de Pago'
args: 'l10n_mx_catalogs.c_forma_pago'
payment_method_id
Many2one → l10n_mx_catalogs.c_metodo_pago
readonly=True
string='Metodo de Pago'
args: 'l10n_mx_catalogs.c_metodo_pago'
periodicity_id
Many2one → l10n_mx_catalogs.c_periodicidad
required=True
string='Periodicity'
args: 'l10n_mx_catalogs.c_periodicidad'
year
Text
required=True
string='Año'
create_cfdi(self)
default_get(self, field_names)
l10n_mx_cfdi_auto
Boolean
help='Enable to automatically sign CFDI when validating invoices.'
readonly=False
related='company_id.l10n_mx_cfdi_auto'
args: 'Create CFDI on post'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/l10n-mexico |
| GIT | |
| GIT | https://github.com/OCA/l10n-mexico.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/l10n-mexico/tree/17.0/l10n_mx_cfdi_account |
| VERSION | |
| VERSION | 1.1.0 |
| CATEGORY | |
| CATEGORY | Accounting |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Alexis López Zubieta <alexis.lopez@augetec.com> (Auge TEC) |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Alexis López Zubieta <alexis.lopez@augetec.com> (Auge TEC) |
| COMMITTERS | |
| COMMITTERS | Maxime Chambreuil, GitHub, Jesús Alan Ramos Rodríguez, Weblate, OCA-git-bot, oca-ci, Samuel Macias Oropeza (smo) |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/l10n-mexico |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:20:09 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/l10n-mexico: - l10n_mx_cfdi - l10n_mx_catalogs odoo/odoo: - base - product - base_setup - web - bus - web_tour - uom - l10n_mx - account - onboarding - analytic - portal - web_editor - http_routing - auth_signup - digest - resource |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
facturama |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | This module provides electronic invoicing for Mexico: - Generation of electronic invoices compliant with the CFDI 4.0 standard. - Customization of fiscal documents according to user needs. - Centralized management of electronic invoices within Odoo. - Tracking and recording of issued and received fiscal documents. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_view_account_invoice_filter_cfdi |
account.invoice.filter.cfdi | account.move | filter | Inherits account.view_account_invoice_filter |
account_view_out_invoice_tree_cfdi |
account.out.invoice.tree.cfdi | account.move | xpath | Inherits account.view_out_invoice_tree |
certificate_cancel_wizard_form |
Cancelar CFDI | l10n_mx_cfdi_account.document_cancel | form | New |
cfdi_invoice_generic_create_form |
Crear CFDI al Público en General | l10n_mx_cfdi_account.generic_invoice_create | form | New |
download_cfdi_files_wizard_form |
Descargar CFDIs | l10n_mx_cfdi_account.dl_cfdi_files_wizard | form | New |
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 |
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 |
report_payment_receipt |
report_payment_receipt | ir.ui.view | qweb | Inherits account.report_payment_receipt |
report_payment_receipt_document_cfdi |
report_payment_receipt_document_cfdi | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.l10n.mx | res.config.settings | xpath | Inherits l10n_mx.res_config_settings_view_form |
view_account_invoice_send_wizard_form_inherit |
account.move.send.no_print | account.move.send | div | Inherits account.account_move_send_form |
view_account_payment_form_inherit |
Account Payment: Payment Form | account.payment | field | Inherits account.view_account_payment_form |
view_account_payment_register_form_inherit |
Account Move Payment: CFDI generation | account.payment.register | group | Inherits account.view_account_payment_register_form |
view_move_form |
account.move.view.form.inherit.cfdi.account | account.move | xpath | Inherits account.view_move_form |
cfdi_data_in_attachments
Boolean
compute='_compute_cfdi_data_in_attachments'
string='CFDI data in attachments'
cfdi_document_id
Many2one → l10n_mx_cfdi.document
compute='_compute_cfdi_document_id'
copy=False
readonly=True
store=True
string='CFDI'
args: 'l10n_mx_cfdi.document'
cfdi_document_name
Char
readonly=True
related='cfdi_document_id.name'
store=True
string='Folio CFDI'
cfdi_document_state
Selection
readonly=True
related='cfdi_document_id.state'
string='CFDI Status'
cfdi_posted
Boolean
compute='_compute_cfdi_posted'
store=True
string='Requiere CFDI'
cfdi_required
Boolean
default=False
string='Requiere CFDI'
cfdi_use_id
Many2one → l10n_mx_catalogs.c_uso_cfdi
string='Uso de CFDI'
args: 'l10n_mx_catalogs.c_uso_cfdi'
issuer_id
Many2one → l10n_mx_cfdi.issuer
domain=[('registered', '=', True)]
string='Emisor'
args: 'l10n_mx_cfdi.issuer'
l10n_mx_cfdi_auto
Boolean
readonly=True
related='company_id.l10n_mx_cfdi_auto'
string='CFDI Automatico'
l10n_mx_cfdi_enabled
Boolean
readonly=True
related='company_id.l10n_mx_cfdi_enabled'
string='CFDI Habilitado'
payment_form_id
Many2one → l10n_mx_catalogs.c_forma_pago
string='Forma de pago'
args: 'l10n_mx_catalogs.c_forma_pago'
payment_method_id
Many2one → l10n_mx_catalogs.c_metodo_pago
string='Método de pago'
args: 'l10n_mx_catalogs.c_metodo_pago'
receiver_id
Many2one → res.partner
readonly=True
string='Receptor'
args: 'res.partner'
related_cert_ids
Many2many → l10n_mx_cfdi.document
copy=False
readonly=True
string='Documentos'
args: 'l10n_mx_cfdi.document'
action_generate_cfdi(self)
action_load_from_attachment(self)
action_post(self)
button_draft(self)
copy(self, default=None)
create_invoice_cfdi(self)
create_refund_cfdi(self)
default_get(self, field_names)
gater_invoice_cfdi_item_data(self, line)
gather_invoice_cfdi_items_data(self)
prepare_invoice_cfdi_total_taxes(self)
validate_invoice_items_for_cfdi_generation(self)
cfdi_discount
Monetary
compute='_compute_cfdi_fields'
store=True
cfdi_price_unit
Monetary
compute='_compute_cfdi_fields'
store=True
cfdi_subtotal
Monetary
compute='_compute_cfdi_fields'
store=True
No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (2)create(self, vals_list)
unlink(self)
No new fields.
Public methods (4)action_generate_cfdi(self)
cancel_payment_cfdi(self)
create_payment_cfdi(self)
prepare_payment_cfdi(self)
payment_form_id
Many2one → l10n_mx_catalogs.c_forma_pago
required=True
string='Forma de Pago'
args: 'l10n_mx_catalogs.c_forma_pago'
No public methods.
No new fields.
Public methods (2)extract_is_retention(self)
extract_l10n_mx_tax_code(self)
related_invoice_id
Many2one → account.move
readonly=True
string='Factura relacionada'
args: 'account.move'
related_payment_id
Many2one → account.payment
readonly=True
string='Pago relacionado'
args: 'account.payment'
action_check_status(self)
create(self, vals_list)
cfdi_document_ids
Many2many → l10n_mx_cfdi.document
relation='l10n_mx_cfdi_download_cfdi_files_wizard_rel'
required=True
string='CFDI Documents'
args: 'l10n_mx_cfdi.document'
invoice_ids
Many2many → account.move
required=True
string='Facturas'
args: 'account.move'
zip_file
Many2one → ir.attachment
ondelete='cascade'
readonly=True
args: 'ir.attachment'
action_download_zip(self)
default_get(self, field_names)
cancel_reason_id
Many2one → l10n_mx_catalogs.c_motivo_cancelacion
required=True
string='Razón'
args: 'l10n_mx_catalogs.c_motivo_cancelacion'
certificate_ids
Many2many → l10n_mx_cfdi.document
required=True
string='Certificados'
args: 'l10n_mx_cfdi.document'
related_invoices
Many2many → account.move
string='Facturas Relacionadas'
args: 'account.move'
replacement_certificate_id
Many2one → l10n_mx_cfdi.document
string='Reemplazo'
args: 'l10n_mx_cfdi.document'
requires_replacement
Boolean
compute='_compute_requires_replacement'
store=False
simulate_operation
Boolean
default=False
groups='base.group_system'
help='Simulate the cancel operation without sending the request to the SAT'
single_cancel
Boolean
default=True
cancel_certificate(self)
default_get(self, field_names)
cfdi_use_id
Many2one → l10n_mx_catalogs.c_uso_cfdi
readonly=True
required=True
string='Uso de CFDI'
args: 'l10n_mx_catalogs.c_uso_cfdi'
date
Date
default=fields.Date.context_today
required=True
string='Fecha'
fiscal_regime_id
Many2one → l10n_mx_catalogs.c_regimen_fiscal
compute='_compute_fiscal_regime_id'
readonly=True
required=True
string='Régimen Fiscal'
args: 'l10n_mx_catalogs.c_regimen_fiscal'
issuer_id
Many2one → l10n_mx_cfdi.issuer
domain=[('registered', '=', True)]
required=True
string='Emisor'
args: 'l10n_mx_cfdi.issuer'
meses_id
Many2one → l10n_mx_catalogs.c_meses
required=True
string='Mes'
args: 'l10n_mx_catalogs.c_meses'
move_ids
Many2many → account.move
required=True
string='Facturas'
args: 'account.move'
payment_form_id
Many2one → l10n_mx_catalogs.c_forma_pago
string='Forma de Pago'
args: 'l10n_mx_catalogs.c_forma_pago'
payment_method_id
Many2one → l10n_mx_catalogs.c_metodo_pago
readonly=True
string='Metodo de Pago'
args: 'l10n_mx_catalogs.c_metodo_pago'
periodicity_id
Many2one → l10n_mx_catalogs.c_periodicidad
required=True
string='Periodicity'
args: 'l10n_mx_catalogs.c_periodicidad'
year
Text
required=True
string='Año'
create_cfdi(self)
default_get(self, field_names)
l10n_mx_cfdi_auto
Boolean
help='Enable to automatically sign CFDI when validating invoices.'
readonly=False
related='company_id.l10n_mx_cfdi_auto'
args: 'Create CFDI on post'
No public methods.