| 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 |
| 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), Open Source Integrators, Auge TEC |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Open Source Integrators, 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_catalogs odoo/odoo: - base - product - base_setup - web - bus - web_tour - html_editor - uom |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
facturama |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | This module provides the configuration used by electronic invoicing and payroll for Mexico: - Integration with PAC for the issuance and stamping of documents. - Management of different series for the issuers. - Administration of different CFDI issuers for the same company. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
action_l10n_mx_cfdi_service_form |
CFDI Service Settings | l10n_mx_cfdi.cfdi_service | form | New |
cfdi_id_data |
cfdi_id_data | ir.ui.view | qweb | New |
cfdi_issuer_data |
cfdi_issuer_data | ir.ui.view | qweb | New |
cfdi_payment_data |
cfdi_payment_data | ir.ui.view | qweb | New |
cfdi_receiver_data |
cfdi_receiver_data | ir.ui.view | qweb | New |
cfdi_related_documents |
cfdi_related_documents | ir.ui.view | qweb | New |
cfdi_signature_data |
cfdi_signature_data | ir.ui.view | qweb | New |
default_issuer_data |
default_issuer_data | ir.ui.view | qweb | New |
default_receiver_data |
default_receiver_data | ir.ui.view | qweb | New |
l10n_mx_cfdi_series_form_view |
Serie CFDI | l10n_mx_cfdi.series | form | New |
l10n_mx_cfdi_series_list_view |
Serie CFDI | l10n_mx_cfdi.series | list | New |
product_template_form_view_inherit |
Product Template: CFDI code and measurement unit fields | product.template | xpath | Inherits product.product_template_form_view |
view_cfdi_issuer |
CFDI Issuer | l10n_mx_cfdi.issuer | form | New |
view_l10n_mx_cfdi_document_form |
CFDI Form View | l10n_mx_cfdi.document | form | New |
view_l10n_mx_cfdi_document_list |
CFDI List View | l10n_mx_cfdi.document | list | New |
view_l10n_mx_cfdi_document_search |
CFDI Search View | l10n_mx_cfdi.document | search | New |
view_partner_form_inherit |
Partner: tax regime field | res.partner | xpath | Inherits base.view_partner_form |
company_ids
Many2many → res.company
default=<expr>
string='Companies'
args: 'res.company'
name
Char
required=True
password
Char
groups='base.group_system'
required=True
sandbox_mode
Boolean
default=False
groups='base.group_system'
stamps_available
Integer
readonly=True
string='Stamps available'
user
Char
groups='base.group_system'
required=True
cancel_cfdi(self, cfdi_id: str, reason, uuid_replacement)
check_cfdi_status(self, uudi, issuer_rfc, receiver_rfc, amount_total)
create_cfdi(self, cfdi_data: dict)
get_cancellation_request_proof(self, cfdi_id: str)
get_cfdi_pdf(self, cfdi_id: str)
get_cfdi_xml(self, cfdi_id: str)
get_csd_status(self, rfc: str)
register_csd(self, rfc: str, cert_base64: bytes, key_base64: bytes, key_password: str)
unregister_csd(self, rfc)
currency_id
Many2one → res.currency
default=<expr>
readonly=True
required=True
string='Moneda'
args: 'res.currency'
partner_id
Many2one → res.partner
default=<expr>
ondelete='restrict'
readonly=True
required=True
string='Contacto'
args: 'res.partner'
service_id
Many2one → l10n_mx_cfdi.cfdi_service
ondelete='cascade'
required=True
string='Servicio'
args: 'l10n_mx_cfdi.cfdi_service'
stamp_number
Integer
required=True
string='Cantidad de Folios'
stamp_price
Monetary
currency_field='currency_id'
required=True
string='Precio por Folio'
topup_date
Datetime
default=fields.Datetime.now()
string='Fecha de Adquisición'
total
Monetary
compute='_compute_total'
currency_field='currency_id'
store=True
string='Precio Total'
No public methods.
cancellation_request_proof_file
Binary
attachment=True
readonly=True
string='Acuse de solicitud de cancelación'
cancellation_request_proof_filename
Char
readonly=True
string='Nombre del archivo de acuse de solicitud de cancelación'
cert_data_json
Char
readonly=True
cert_number
Char
compute='_compute_load_json_data'
readonly=True
string='Número de certificado'
cfdi_signature
Char
compute='_compute_load_json_data'
readonly=True
string='Firma del CFDI'
company_id
Many2one → res.company
default=<expr>
required=True
args: 'res.company'
files_in_cache
Boolean
compute='_compute_download_files_if_needed'
readonly=True
store=False
folio
Char
is_global_note
Boolean
default=False
readonly=True
string='Nota global'
issuer_id
Many2one → l10n_mx_cfdi.issuer
domain=[('registered', '=', True)]
required=True
string='Emisor'
args: 'l10n_mx_cfdi.issuer'
issuing_datetime
Datetime
compute='_compute_load_json_data'
readonly=True
string='Fecha de emisión'
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'
name
Char
compute='_compute_name'
readonly=True
store=True
string='Nombre'
original_string
Char
compute='_compute_load_json_data'
readonly=True
string='Cadena original'
pdf_file
Binary
attachment=True
readonly=True
string='Archivo PDF'
pdf_filename
Char
readonly=True
string='Nombre del archivo PDF'
receiver_id
Many2one → res.partner
required=True
string='Receptor'
args: 'res.partner'
related_document_ids
One2many → l10n_mx_cfdi.document_relation
string='Documentos relacionados'
args: 'l10n_mx_cfdi.document_relation', 'source_id'
rfc_prov_certif
Char
compute='_compute_load_json_data'
readonly=True
string='RFC del proveedor de certificación'
sat_cert_number
Char
compute='_compute_load_json_data'
readonly=True
string='Número de certificado del SAT'
sat_signature
Char
compute='_compute_load_json_data'
readonly=True
string='Firma del SAT'
serie
Char
signing_date
Datetime
compute='_compute_load_json_data'
readonly=True
string='Fecha de timbrado'
standalone
Boolean
compute='_compute_standalone'
help='Si está marcado, el certificado no esta relacionado a otros documentos del sistema'
store=True
string='Independiente'
state
Selection
default='draft'
readonly=True
string='Estado'
args: [('draft', 'Borrador'), ('pending', 'Pendiente'), ('published', 'Publicada'), ('pending_cancel', 'Cancelación pendiente'), ('canceled', 'Cancelada'), ('unknown', 'Desconocido')]
tax_codes
Char
compute='_compute_load_json_data'
readonly=True
string='Código de impuesto'
tracking_id
Char
readonly=True
string='ID del documento en el API'
type
Selection
readonly=True
args: [('I', 'Ingreso'), ('E', 'Egreso'), ('P', 'Pago'), ('T', 'Traslado')]
uuid
Char
help='UUID asignado por el SAT'
readonly=True
string='UUID'
verification_qr_code
Binary
compute='_compute_load_json_data'
readonly=True
string='Código QR de Verificación'
verification_url
Char
compute='_compute_load_json_data'
readonly=True
string='URL de verificación'
version
Char
default='4.0'
xml_file
Binary
attachment=True
readonly=True
string='Archivo XML'
xml_filename
Char
readonly=True
string='Nombre del archivo XML'
action_cancel(self)
action_check_status(self)
action_get_cancellation_request_proof(self)
cancel(self, reason: str, replacement=None, simulate=False)
publish(self, cfdi_data)
relation_type_id
Many2one → l10n_mx_catalogs.c_tipo_relacion
required=True
args: 'l10n_mx_catalogs.c_tipo_relacion'
source_id
Many2one → l10n_mx_cfdi.document
ondelete='cascade'
required=True
args: 'l10n_mx_cfdi.document'
target_id
Many2one → l10n_mx_cfdi.document
ondelete='cascade'
required=True
args: 'l10n_mx_cfdi.document'
No public methods.
certificate_file
Binary
groups='base.group_system'
company_id
Many2one → res.company
default=<expr>
args: 'res.company'
fiscal_name
Char
help='Razón Social del Emisor'
key_file
Binary
groups='base.group_system'
key_password
Char
groups='base.group_system'
string='Password'
logo_url
Char
string='URL del logo'
partner_id
Many2one → res.partner
delegate=True
ondelete='cascade'
required=True
args: 'res.partner'
registered
Boolean
store=True
service_id
Many2one → l10n_mx_cfdi.cfdi_service
default_get(self, fields_list)
register_issuer(self)
unregister_issuer(self)
code
Char
copy=False
create(self, vals_list)
l10n_mx_cfdi_product_code_id
Many2one → l10n_mx_catalogs.c_clave_prod_serv
string='Código de Producto'
args: 'l10n_mx_catalogs.c_clave_prod_serv'
l10n_mx_cfdi_product_measurement_unit_id
Many2one → l10n_mx_catalogs.c_clave_unidad
string='Unidad de Medida'
args: 'l10n_mx_catalogs.c_clave_unidad'
No public methods.
l10n_mx_cfdi_auto
Boolean
default=True
help='Enable to automatically sign CFDI when validating invoices.'
args: 'Create CFDI on post'
l10n_mx_cfdi_enabled
Boolean
compute='_compute_l10n_mx_cfdi_enabled'
help='Enable CFDI for this company.'
args: 'Enable CFDI'
No public methods.
cfdi_use_id
Many2one → l10n_mx_catalogs.c_uso_cfdi
string='CFDI Usage'
args: 'l10n_mx_catalogs.c_uso_cfdi'
payment_form_id
Many2one → l10n_mx_catalogs.c_forma_pago
string='Payment Form'
args: 'l10n_mx_catalogs.c_forma_pago'
payment_method_id
Many2one → l10n_mx_catalogs.c_metodo_pago
string='Payment Method'
args: 'l10n_mx_catalogs.c_metodo_pago'
tax_regime
Many2one → l10n_mx_catalogs.c_regimen_fiscal
string='Fiscal Regime'
args: 'l10n_mx_catalogs.c_regimen_fiscal'
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 |
| 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, Weblate, OCA-git-bot, oca-ci, Samuel Macias Oropeza (smo), Santiago Rodriguez |
| 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_catalogs odoo/odoo: - base - product - base_setup - web - bus - web_tour - uom |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
facturama |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | This module provides the configuration used by electronic invoicing and payroll for Mexico: - Integration with PAC for the issuance and stamping of documents. - Management of different series for the issuers. - Administration of different CFDI issuers for the same company. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
action_l10n_mx_cfdi_service_form |
Configuración del Servicio CFDI | l10n_mx_cfdi.cfdi_service | form | New |
cfdi_id_data |
cfdi_id_data | ir.ui.view | qweb | New |
cfdi_issuer_data |
cfdi_issuer_data | ir.ui.view | qweb | New |
cfdi_payment_data |
cfdi_payment_data | ir.ui.view | qweb | New |
cfdi_receiver_data |
cfdi_receiver_data | ir.ui.view | qweb | New |
cfdi_related_documents |
cfdi_related_documents | ir.ui.view | qweb | New |
cfdi_signature_data |
cfdi_signature_data | ir.ui.view | qweb | New |
default_issuer_data |
default_issuer_data | ir.ui.view | qweb | New |
default_receiver_data |
default_receiver_data | ir.ui.view | qweb | New |
l10n_mx_cfdi_series_form_view |
Serie CFDI | l10n_mx_cfdi.series | form | New |
l10n_mx_cfdi_series_list_view |
Serie CFDI | l10n_mx_cfdi.series | tree | New |
product_template_form_view_inherit |
Product Template: CFDI code and measurement unit fields | product.template | xpath | Inherits product.product_template_form_view |
view_cfdi_issuer |
Emisor de CFDIs | l10n_mx_cfdi.issuer | form | New |
view_l10n_mx_cfdi_document_form |
Documentos CFDI | l10n_mx_cfdi.document | form | New |
view_l10n_mx_cfdi_document_search |
Documentos CFDI | l10n_mx_cfdi.document | search | New |
view_l10n_mx_cfdi_document_tree |
Documentos CFDI | l10n_mx_cfdi.document | tree | New |
view_partner_form_inherit |
Partner: tax regime field | res.partner | xpath | Inherits base.view_partner_form |
company_ids
Many2many → res.company
default=<expr>
string='Compañías'
args: 'res.company'
name
Char
required=True
string='Nombre'
password
Char
groups='base.group_system'
required=True
sandbox_mode
Boolean
default=False
groups='base.group_system'
stamps_available
Integer
compute='_compute_stamps_available'
readonly=True
string='Folios Disponibles'
stamps_used
Integer
compute='_compute_stamps_used'
readonly=True
topup_ids
One2many → l10n_mx_cfdi.cfdi_service.topup
string='Recargas'
args: 'l10n_mx_cfdi.cfdi_service.topup', 'service_id'
usage_sequence_id
Many2one → ir.sequence
default=_create_usage_sequence
ondelete='cascade'
string='Secuencia de uso de Folios'
args: 'ir.sequence'
user
Char
groups='base.group_system'
required=True
cancel_cfdi(self, cfdi_id: str, reason, uuid_replacement)
check_cfdi_status(self, uudi, issuer_rfc, receiver_rfc, amount_total)
create_cfdi(self, cfdi_data: dict)
get_cancellation_request_proof(self, cfdi_id: str)
get_cfdi_pdf(self, cfdi_id: str)
get_cfdi_xml(self, cfdi_id: str)
get_csd_status(self, rfc: str)
register_csd(self, rfc: str, cert_base64: bytes, key_base64: bytes, key_password: str)
unregister_csd(self, rfc)
currency_id
Many2one → res.currency
default=<expr>
readonly=True
required=True
string='Moneda'
args: 'res.currency'
partner_id
Many2one → res.partner
default=<expr>
ondelete='restrict'
readonly=True
required=True
string='Contacto'
args: 'res.partner'
service_id
Many2one → l10n_mx_cfdi.cfdi_service
ondelete='cascade'
required=True
string='Servicio'
args: 'l10n_mx_cfdi.cfdi_service'
stamp_number
Integer
required=True
string='Cantidad de Folios'
stamp_price
Monetary
currency_field='currency_id'
required=True
string='Precio por Folio'
topup_date
Datetime
default=fields.Datetime.now()
string='Fecha de Adquisición'
total
Monetary
compute='_compute_total'
currency_field='currency_id'
store=True
string='Precio Total'
No public methods.
cancellation_request_proof_file
Binary
attachment=True
readonly=True
string='Acuse de solicitud de cancelación'
cancellation_request_proof_filename
Char
readonly=True
string='Nombre del archivo de acuse de solicitud de cancelación'
cert_data_json
Char
readonly=True
cert_number
Char
compute='_compute_load_json_data'
readonly=True
string='Número de certificado'
cfdi_signature
Char
compute='_compute_load_json_data'
readonly=True
string='Firma del CFDI'
company_id
Many2one → res.company
default=<expr>
required=True
args: 'res.company'
files_in_cache
Boolean
compute='_compute_download_files_if_needed'
readonly=True
store=False
folio
Char
is_global_note
Boolean
default=False
readonly=True
string='Nota global'
issuer_id
Many2one → l10n_mx_cfdi.issuer
domain=[('registered', '=', True)]
required=True
string='Emisor'
args: 'l10n_mx_cfdi.issuer'
issuing_datetime
Datetime
compute='_compute_load_json_data'
readonly=True
string='Fecha de emisión'
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'
name
Char
compute='_compute_name'
readonly=True
store=True
string='Nombre'
original_string
Char
compute='_compute_load_json_data'
readonly=True
string='Cadena original'
pdf_file
Binary
attachment=True
readonly=True
string='Archivo PDF'
pdf_filename
Char
readonly=True
string='Nombre del archivo PDF'
receiver_id
Many2one → res.partner
required=True
string='Receptor'
args: 'res.partner'
related_document_ids
One2many → l10n_mx_cfdi.document_relation
string='Documentos relacionados'
args: 'l10n_mx_cfdi.document_relation', 'source_id'
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'
rfc_prov_certif
Char
compute='_compute_load_json_data'
readonly=True
string='RFC del proveedor de certificación'
sat_cert_number
Char
compute='_compute_load_json_data'
readonly=True
string='Número de certificado del SAT'
sat_signature
Char
compute='_compute_load_json_data'
readonly=True
string='Firma del SAT'
serie
Char
signing_date
Datetime
compute='_compute_load_json_data'
readonly=True
string='Fecha de timbrado'
standalone
Boolean
compute='_compute_standalone'
help='Si está marcado, el certificado no esta relacionado a otros documentos del sistema'
store=True
string='Independiente'
state
Selection
default='draft'
readonly=True
string='Estado'
args: [('draft', 'Borrador'), ('pending', 'Pendiente'), ('published', 'Publicada'), ('pending_cancel', 'Cancelación pendiente'), ('canceled', 'Cancelada'), ('unknown', 'Desconocido')]
tax_codes
Char
compute='_compute_load_json_data'
readonly=True
string='Código de impuesto'
tracking_id
Char
readonly=True
string='ID del documento en el API'
type
Selection
readonly=True
args: [('I', 'Ingreso'), ('E', 'Egreso'), ('P', 'Pago'), ('T', 'Traslado')]
uuid
Char
help='UUID asignado por el SAT'
readonly=True
string='UUID'
verification_qr_code
Binary
compute='_compute_load_json_data'
readonly=True
string='Código QR de Verificación'
verification_url
Char
compute='_compute_load_json_data'
readonly=True
string='URL de verificación'
version
Char
default='4.0'
xml_file
Binary
attachment=True
readonly=True
string='Archivo XML'
xml_filename
Char
readonly=True
string='Nombre del archivo XML'
action_cancel(self)
action_check_status(self)
action_get_cancellation_request_proof(self)
cancel(self, reason: str, replacement=None, simulate=False)
create(self, vals_list)
download_files_if_needed(self)
get_sequence_for_cfdi_type(self, vals_list)
publish(self, cfdi_data)
relation_type_id
Many2one → l10n_mx_catalogs.c_tipo_relacion
required=True
args: 'l10n_mx_catalogs.c_tipo_relacion'
source_id
Many2one → l10n_mx_cfdi.document
ondelete='cascade'
required=True
args: 'l10n_mx_cfdi.document'
target_id
Many2one → l10n_mx_cfdi.document
ondelete='cascade'
required=True
args: 'l10n_mx_cfdi.document'
No public methods.
certificate_file
Binary
groups='account.group_account_manager'
company_id
Many2one → res.company
default=<expr>
args: 'res.company'
fiscal_name
Char
help='Razón Social del Emisor'
invoice_sequence_id
Many2one → l10n_mx_cfdi.series
default=<expr>
string='Serie Ingresos'
args: 'l10n_mx_cfdi.series'
key_file
Binary
groups='account.group_account_manager'
key_password
Char
groups='account.group_account_manager'
string='Password'
logo_url
Char
string='URL del logo'
partner_id
Many2one → res.partner
delegate=True
ondelete='cascade'
required=True
args: 'res.partner'
payment_sequence_id
Many2one → l10n_mx_cfdi.series
default=<expr>
string='Serie Pagos'
args: 'l10n_mx_cfdi.series'
refund_sequence_id
Many2one → l10n_mx_cfdi.series
default=<expr>
string='Serie Egresos'
args: 'l10n_mx_cfdi.series'
registered
Boolean
store=True
service_id
Many2one → l10n_mx_cfdi.cfdi_service
transfer_sequence_id
Many2one → l10n_mx_cfdi.series
default=<expr>
string='Serie Traslados'
args: 'l10n_mx_cfdi.series'
use_origin_document_sequence
Boolean
help='Usar serie del documento de origen para los CFDI generados'
string='Usar Serie de Origen'
default_get(self, fields_list)
register_issuer(self)
unregister_issuer(self)
code
Char
copy=False
create(self, vals)
l10n_mx_cfdi_product_code_id
Many2one → l10n_mx_catalogs.c_clave_prod_serv
string='Código de Producto'
args: 'l10n_mx_catalogs.c_clave_prod_serv'
l10n_mx_cfdi_product_measurement_unit_id
Many2one → l10n_mx_catalogs.c_clave_unidad
string='Unidad de Medida'
args: 'l10n_mx_catalogs.c_clave_unidad'
No public methods.
l10n_mx_cfdi_auto
Boolean
default=True
help='Enable to automatically sign CFDI when validating invoices.'
args: 'Create CFDI on post'
l10n_mx_cfdi_enabled
Boolean
compute='_compute_l10n_mx_cfdi_enabled'
help='Enable CFDI for this company.'
args: 'Enable CFDI'
No public methods.
cfdi_use_id
Many2one → l10n_mx_catalogs.c_uso_cfdi
string='CFDI Usage'
args: 'l10n_mx_catalogs.c_uso_cfdi'
payment_form_id
Many2one → l10n_mx_catalogs.c_forma_pago
string='Payment Form'
args: 'l10n_mx_catalogs.c_forma_pago'
payment_method_id
Many2one → l10n_mx_catalogs.c_metodo_pago
string='Payment Method'
args: 'l10n_mx_catalogs.c_metodo_pago'
tax_regime
Many2one → l10n_mx_catalogs.c_regimen_fiscal
string='Fiscal Regime'
args: 'l10n_mx_catalogs.c_regimen_fiscal'
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/15.0/l10n_mx_cfdi |
| 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 | GitHub, OCA-git-bot, oca-ci |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/l10n-mexico |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:46:41 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/l10n-mexico: - l10n_mx_catalogs odoo/odoo: - account - base_setup - base - web - product - bus - web_tour - uom - analytic - portal - web_editor - http_routing - auth_signup - digest - resource - l10n_mx |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
facturama |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| 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 |
action_l10n_mx_cfdi_service_form |
Configuración del Servicio CFDI | l10n_mx_cfdi.cfdi_service | form | New |
certificate_cancel_wizard_form |
Cancelar CFDI | l10n_mx_cfdi.document_cancel | form | New |
cfdi_id_data |
cfdi_id_data | ir.ui.view | qweb | New |
cfdi_invoice_generic_create_form |
Crear CFDI al Público en General | l10n_mx_cfdi.generic_invoice_create | form | New |
cfdi_issuer_data |
cfdi_issuer_data | ir.ui.view | qweb | New |
cfdi_payment_data |
cfdi_payment_data | ir.ui.view | qweb | New |
cfdi_receiver_data |
cfdi_receiver_data | ir.ui.view | qweb | New |
cfdi_related_documents |
cfdi_related_documents | ir.ui.view | qweb | New |
cfdi_signature_data |
cfdi_signature_data | ir.ui.view | qweb | New |
default_issuer_data |
default_issuer_data | ir.ui.view | qweb | New |
default_receiver_data |
default_receiver_data | ir.ui.view | qweb | New |
download_cfdi_files_wizard_form |
Descargar CFDIs | l10n_mx_cfdi.download_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 |
l10n_mx_cfdi_series_form_view |
Serie CFDI | l10n_mx_cfdi.series | form | New |
l10n_mx_cfdi_series_list_view |
Serie CFDI | l10n_mx_cfdi.series | tree | New |
product_template_form_view_inherit |
Product Template: CFDI code and measurement unit fields | product.template | xpath | Inherits product.product_template_form_view |
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.invoice.send.no_print | account.invoice.send | div | Inherits account.account_invoice_send_wizard_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_cfdi_issuer |
Emisor de CFDIs | l10n_mx_cfdi.issuer | form | New |
view_l10n_mx_cfdi_document_form |
Documentos CFDI | l10n_mx_cfdi.document | form | New |
view_l10n_mx_cfdi_document_search |
Documentos CFDI | l10n_mx_cfdi.document | search | New |
view_l10n_mx_cfdi_document_tree |
Documentos CFDI | l10n_mx_cfdi.document | tree | New |
view_partner_form_inherit |
Partner: tax regime field | res.partner | field | Inherits base.view_partner_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 (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)
company_ids
Many2many → res.company
default=<expr>
string='Compañías'
args: 'res.company'
name
Char
required=True
string='Nombre'
password
Char
groups='base.group_system'
required=True
sandbox_mode
Boolean
default=False
groups='base.group_system'
stamps_available
Integer
compute='_compute_stamps_available'
readonly=True
string='Folios Disponibles'
stamps_used
Integer
compute='_compute_stamps_used'
readonly=True
topup_ids
One2many → l10n_mx_cfdi.cfdi_service.topup
string='Recargas'
args: 'l10n_mx_cfdi.cfdi_service.topup', 'service_id'
usage_sequence_id
Many2one → ir.sequence
default=_create_usage_sequence
ondelete='cascade'
string='Secuencia de uso de Folios'
args: 'ir.sequence'
user
Char
groups='base.group_system'
required=True
cancel_cfdi(self, cfdi_id: str, reason, uuid_replacement)
check_cfdi_status(self, uudi, issuer_rfc, receiver_rfc, amount_total)
create_cfdi(self, cfdi_data: dict)
get_cancellation_request_proof(self, cfdi_id: str)
get_cfdi_pdf(self, cfdi_id: str)
get_cfdi_xml(self, cfdi_id: str)
get_csd_status(self, rfc: str)
register_csd(self, rfc: str, cert_base64: bytes, key_base64: bytes, key_password: str)
unregister_csd(self, rfc)
currency_id
Many2one → res.currency
default=<expr>
readonly=True
required=True
string='Moneda'
args: 'res.currency'
partner_id
Many2one → res.partner
default=<expr>
ondelete='restrict'
readonly=True
required=True
string='Contacto'
args: 'res.partner'
service_id
Many2one → l10n_mx_cfdi.cfdi_service
ondelete='cascade'
required=True
string='Servicio'
args: 'l10n_mx_cfdi.cfdi_service'
stamp_number
Integer
required=True
string='Cantidad de Folios'
stamp_price
Monetary
currency_field='currency_id'
required=True
string='Precio por Folio'
topup_date
Datetime
default=fields.Datetime.now()
string='Fecha de Adquisición'
total
Monetary
compute='_compute_total'
currency_field='currency_id'
store=True
string='Precio Total'
No public methods.
cancellation_request_proof_file
Binary
attachment=True
readonly=True
string='Acuse de solicitud de cancelación'
cancellation_request_proof_filename
Char
readonly=True
string='Nombre del archivo de acuse de solicitud de cancelación'
cert_data_json
Char
readonly=True
cert_number
Char
compute='_compute_load_json_data'
readonly=True
string='Número de certificado'
cfdi_signature
Char
compute='_compute_load_json_data'
readonly=True
string='Firma del CFDI'
company_id
Many2one → res.company
default=<expr>
required=True
args: 'res.company'
files_in_cache
Boolean
compute='_compute_download_files_if_needed'
readonly=True
store=False
folio
Char
is_global_note
Boolean
default=False
readonly=True
string='Nota global'
issuer_id
Many2one → l10n_mx_cfdi.issuer
domain=[('registered', '=', True)]
required=True
string='Emisor'
args: 'l10n_mx_cfdi.issuer'
issuing_datetime
Datetime
compute='_compute_load_json_data'
readonly=True
string='Fecha de emisión'
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'
name
Char
compute='_compute_name'
readonly=True
store=True
string='Nombre'
original_string
Char
compute='_compute_load_json_data'
readonly=True
string='Cadena original'
pdf_file
Binary
attachment=True
readonly=True
string='Archivo PDF'
pdf_filename
Char
readonly=True
string='Nombre del archivo PDF'
receiver_id
Many2one → res.partner
required=True
string='Receptor'
args: 'res.partner'
related_document_ids
One2many → l10n_mx_cfdi.document_relation
string='Documentos relacionados'
args: 'l10n_mx_cfdi.document_relation', 'source_id'
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'
rfc_prov_certif
Char
compute='_compute_load_json_data'
readonly=True
string='RFC del proveedor de certificación'
sat_cert_number
Char
compute='_compute_load_json_data'
readonly=True
string='Número de certificado del SAT'
sat_signature
Char
compute='_compute_load_json_data'
readonly=True
string='Firma del SAT'
serie
Char
signing_date
Datetime
compute='_compute_load_json_data'
readonly=True
string='Fecha de timbrado'
standalone
Boolean
compute='_compute_standalone'
help='Si está marcado, el certificado no esta relacionado a otros documentos del sistema'
store=True
string='Independiente'
state
Selection
default='draft'
readonly=True
string='Estado'
args: [('draft', 'Borrador'), ('pending', 'Pendiente'), ('published', 'Publicada'), ('pending_cancel', 'Cancelación pendiente'), ('canceled', 'Cancelada'), ('unknown', 'Desconocido')]
tax_codes
Char
compute='_compute_load_json_data'
readonly=True
string='Código de impuesto'
tracking_id
Char
readonly=True
string='ID del documento en el API'
type
Selection
readonly=True
args: [('I', 'Ingreso'), ('E', 'Egreso'), ('P', 'Pago'), ('T', 'Traslado')]
uuid
Char
help='UUID asignado por el SAT'
readonly=True
string='UUID'
verification_qr_code
Binary
compute='_compute_load_json_data'
readonly=True
string='Código QR de Verificación'
verification_url
Char
compute='_compute_load_json_data'
readonly=True
string='URL de verificación'
version
Char
default='4.0'
xml_file
Binary
attachment=True
readonly=True
string='Archivo XML'
xml_filename
Char
readonly=True
string='Nombre del archivo XML'
action_cancel(self)
action_check_status(self)
action_get_cancellation_request_proof(self)
cancel(self, reason: str, replacement=None, simulate=False)
create(self, vals_list)
get_sequence_for_cfdi_type(self, vals_list)
publish(self, cfdi_data)
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)
relation_type_id
Many2one → l10n_mx_catalogs.c_tipo_relacion
required=True
args: 'l10n_mx_catalogs.c_tipo_relacion'
source_id
Many2one → l10n_mx_cfdi.document
ondelete='cascade'
required=True
args: 'l10n_mx_cfdi.document'
target_id
Many2one → l10n_mx_cfdi.document
ondelete='cascade'
required=True
args: 'l10n_mx_cfdi.document'
No public methods.
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)
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)
certificate_file
Binary
groups='account.group_account_manager'
company_id
Many2one → res.company
default=<expr>
args: 'res.company'
fiscal_name
Char
help='Razón Social del Emisor'
invoice_sequence_id
Many2one → l10n_mx_cfdi.series
default=<expr>
string='Serie Ingresos'
args: 'l10n_mx_cfdi.series'
key_file
Binary
groups='account.group_account_manager'
key_password
Char
groups='account.group_account_manager'
string='Password'
logo_url
Char
string='URL del logo'
partner_id
Many2one → res.partner
delegate=True
ondelete='cascade'
required=True
args: 'res.partner'
payment_sequence_id
Many2one → l10n_mx_cfdi.series
default=<expr>
string='Serie Pagos'
args: 'l10n_mx_cfdi.series'
refund_sequence_id
Many2one → l10n_mx_cfdi.series
default=<expr>
string='Serie Egresos'
args: 'l10n_mx_cfdi.series'
registered
Boolean
store=True
service_id
Many2one → l10n_mx_cfdi.cfdi_service
transfer_sequence_id
Many2one → l10n_mx_cfdi.series
default=<expr>
string='Serie Traslados'
args: 'l10n_mx_cfdi.series'
use_origin_document_sequence
Boolean
help='Usar serie del documento de origen para los CFDI generados'
string='Usar Serie de Origen'
default_get(self, fields_list)
register_issuer(self)
unregister_issuer(self)
code
Char
copy=False
create(self, vals)
l10n_mx_cfdi_product_code_id
Many2one → l10n_mx_catalogs.c_clave_prod_serv
string='Código de Producto'
args: 'l10n_mx_catalogs.c_clave_prod_serv'
l10n_mx_cfdi_product_measurement_unit_id
Many2one → l10n_mx_catalogs.c_clave_unidad
string='Unidad de Medida'
args: 'l10n_mx_catalogs.c_clave_unidad'
No public methods.
l10n_mx_cfdi_auto
Boolean
default=True
help='Enable to automatically sign CFDI when validating invoices.'
args: 'Create CFDI on post'
l10n_mx_cfdi_enabled
Boolean
compute='_compute_l10n_mx_cfdi_enabled'
help='Enable CFDI for this company.'
args: 'Enable CFDI'
No public methods.
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.
cfdi_use_id
Many2one → l10n_mx_catalogs.c_uso_cfdi
string='CFDI Usage'
args: 'l10n_mx_catalogs.c_uso_cfdi'
payment_form_id
Many2one → l10n_mx_catalogs.c_forma_pago
string='Payment Form'
args: 'l10n_mx_catalogs.c_forma_pago'
payment_method_id
Many2one → l10n_mx_catalogs.c_metodo_pago
string='Payment Method'
args: 'l10n_mx_catalogs.c_metodo_pago'
tax_regime
Many2one → l10n_mx_catalogs.c_regimen_fiscal
string='Fiscal Regime'
args: 'l10n_mx_catalogs.c_regimen_fiscal'
No public methods.