TIP: You can type at any time to perform a new search.
Mexico - CFDI - Account
l10n_mx_cfdi_account · OCA/l10n-mexico
- Repository
- OCA/l10n-mexico · module folder · Try on Runboat
- Module version
- Category
- Accounting
- Folder size
- 0.48 MB
- License
- LGPL-3
- Application
- No
- Auto-installable
- No
- Website
- https://github.com/OCA/l10n-mexico
- Last tracking update
- 2026-08-15 05:29:24
- Authors
- Odoo Community Association (OCA), Alexis López Zubieta <alexis.lopez@augetec.com> (Auge TEC)
- Maintainers
- Odoo Community Association (OCA), Alexis López Zubieta <alexis.lopez@augetec.com> (Auge TEC)
- Committers
- Maxime Chambreuil, Weblate, OCA-git-bot, oca-ci
- Odoo dependencies
- Python dependencies
- satcfdi
- System dependencies
- None
- Required by
- l10n_mx_cfdi_account_addenda_audi, l10n_mx_cfdi_account_addenda_ford, l10n_mx_cfdi_account_addenda_kuehne_nagel, l10n_mx_cfdi_account_addenda_mabe, l10n_mx_cfdi_account_addenda_volkswagen, l10n_mx_cfdi_account_addenda_whirlpool, l10n_mx_cfdi_comex, l10n_mx_cfdi_waybill
- 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.
Code Analysis ⓘ
Views touched (20)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_view_account_invoice_filter_cfdi |
account.invoice.filter.cfdi | account.move | Inherits account.view_account_invoice_filter | |
account_view_out_invoice_tree_cfdi |
account.out.invoice.tree.cfdi | account.move | tree | 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 | form | Inherits l10n_mx.res_config_settings_view_form |
view_account_payment_form_inherit |
Account Payment: Payment Form | account.payment | form | Inherits account.view_account_payment_form |
view_account_payment_register_form_inherit |
Account Move Payment: CFDI generation | account.payment.register | form | Inherits account.view_account_payment_register_form |
view_l10n_mx_edi_ir_ui_view_form_inherit |
l10n_mx_edi.view.form.inherit | ir.ui.view | form | Inherits base.view_view_form |
view_move_form |
account.move.view.form.inherit.cfdi.account | account.move | form | Inherits account.view_move_form |
view_partner_form_addenda |
res.partner.form.l10n_mx_cfdi_account.addenda | res.partner | form | Inherits l10n_mx_cfdi.view_partner_form_inherit |
HTTP endpoints (0)
No HTTP endpoints found for this module.
Models touched (14)
New fields (16)
-
cfdi_data_in_attachmentsBooleancompute='_compute_cfdi_data_in_attachments'string='CFDI data in attachments' -
cfdi_document_idMany2one → l10n_mx_cfdi.documentcompute='_compute_cfdi_document_id'copy=Falsereadonly=Truestore=Truestring='CFDI' args: 'l10n_mx_cfdi.document' -
cfdi_document_nameCharreadonly=Truerelated='cfdi_document_id.name'store=Truestring='Folio CFDI' -
cfdi_document_relation_typeMany2one → l10n_mx_catalogs.c_tipo_relacioncopy=Falsehelp='SAT catalog c_TipoRelacion for CfdiRelacionados.'string='Relation Type' args: 'l10n_mx_catalogs.c_tipo_relacion' -
cfdi_document_relationsMany2many → l10n_mx_cfdi.documentcolumn1='move_id'column2='cfdi_document_id'copy=Falsehelp='Existing CFDIs to relate when issuing this invoice CFDI (e.g. substitution after cancellation).'relation='account_move_cfdi_document_relations'string='Related CFDIs' args: 'l10n_mx_cfdi.document' -
cfdi_document_stateSelectionreadonly=Truerelated='cfdi_document_id.state'string='CFDI Status' -
cfdi_postedBooleancompute='_compute_cfdi_posted'store=Truestring='CFDI Posted' -
cfdi_requiredBooleandefault=Falsestring='Requiere CFDI' -
cfdi_use_idMany2one → l10n_mx_catalogs.c_uso_cfdistring='Uso de CFDI' args: 'l10n_mx_catalogs.c_uso_cfdi' -
issuer_idMany2one → l10n_mx_cfdi.issuerdomain=[('registered', '=', True)]string='Emisor' args: 'l10n_mx_cfdi.issuer' -
l10n_mx_cfdi_autoBooleanreadonly=Truerelated='company_id.l10n_mx_cfdi_auto'string='CFDI Automatico' -
l10n_mx_cfdi_enabledBooleanreadonly=Truerelated='company_id.l10n_mx_cfdi_enabled'string='CFDI Habilitado' -
payment_form_idMany2one → l10n_mx_catalogs.c_forma_pagostring='Forma de pago' args: 'l10n_mx_catalogs.c_forma_pago' -
payment_method_idMany2one → l10n_mx_catalogs.c_metodo_pagostring='Método de pago' args: 'l10n_mx_catalogs.c_metodo_pago' -
receiver_idMany2one → res.partnerreadonly=Truestring='Receptor' args: 'res.partner' -
related_cert_idsMany2many → l10n_mx_cfdi.documentcopy=Falsereadonly=Truestring='Documentos' args: 'l10n_mx_cfdi.document'
-
action_generate_cfdi(self) -
action_load_from_attachment(self) -
action_post(self)Override the action_post method to create the CFDI -
button_draft(self) -
create_invoice_cfdi(self)Create the CFDI -
create_refund_cfdi(self)Create CFDI of type 'E' (Egreso). Manual CFDI relations on the refund (PR #77 style) take precedence. Otherwise, related income CFDIs are inferred from reconciliations with TipoRelacion 01 (credit note). -
default_get(self, field_names)@api.model -
gater_invoice_cfdi_item_data(self, line)Gather the data for a CFDI item. :param line: The invoice line :return: The CFDI item data -
gather_invoice_cfdi_items_data(self)Gather the data for the CFDI items -
prepare_invoice_cfdi_total_taxes(self) -
validate_invoice_items_for_cfdi_generation(self)
New fields (3)
-
cfdi_discountMonetarycompute='_compute_cfdi_fields'store=True -
cfdi_price_unitMonetarycompute='_compute_cfdi_fields'store=True -
cfdi_subtotalMonetarycompute='_compute_cfdi_fields'store=True
No public methods.
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (0)
No new fields.
Public methods (2)-
create(self, vals_list)Create Payments and Credit Note CFDI if required -
unlink(self)Cancel related Payments CFDI if any
New fields (7)
-
cfdi_document_idMany2one → l10n_mx_cfdi.documentcompute='_compute_cfdi_document_id'copy=Falsereadonly=Truestore=Truestring='CFDI' args: 'l10n_mx_cfdi.document' -
cfdi_document_stateSelectionreadonly=Truerelated='cfdi_document_id.state'string='CFDI Status' -
cfdi_use_idMany2one → l10n_mx_catalogs.c_uso_cfdistring='Uso de CFDI' args: 'l10n_mx_catalogs.c_uso_cfdi' -
l10n_mx_cfdi_autoBooleanreadonly=Truerelated='company_id.l10n_mx_cfdi_auto'string='CFDI Automatico' -
l10n_mx_cfdi_enabledBooleanreadonly=Truerelated='company_id.l10n_mx_cfdi_enabled'string='CFDI Habilitado' -
payment_form_idMany2one → l10n_mx_catalogs.c_forma_pagostring='Forma de pago' args: 'l10n_mx_catalogs.c_forma_pago' -
related_cert_idsMany2many → l10n_mx_cfdi.documentcopy=Falsereadonly=Truestring='Documentos' args: 'l10n_mx_cfdi.document'
-
action_generate_cfdi(self) -
cancel_payment_cfdi(self) -
create_payment_cfdi(self)Create payment-type ('P') CFDI matching invoice payments if needed. -
prepare_payment_cfdi(self)
New fields (1)
-
payment_form_idMany2one → l10n_mx_catalogs.c_forma_pagorequired=Truestring='Forma de Pago' args: 'l10n_mx_catalogs.c_forma_pago'
No public methods.
New fields (0)
No new fields.
Public methods (2)-
extract_is_retention(self) -
extract_l10n_mx_tax_code(self)
New fields (1)
-
l10n_mx_edi_addenda_flagBooleandefault=Falsehelp='If True, the view is an addenda for the Mexican EDI invoicing.'string='Is an addenda?'
No public methods.
New fields (2)
-
related_invoice_idMany2one → account.movereadonly=Truestring='Factura relacionada' args: 'account.move' -
related_payment_idMany2one → account.paymentreadonly=Truestring='Pago relacionado' args: 'account.payment'
-
action_check_status(self) -
create(self, vals_list) -
download_files_if_needed(self)
New fields (3)
-
cfdi_document_idsMany2many → l10n_mx_cfdi.documentrelation='l10n_mx_cfdi_download_cfdi_files_wizard_rel'required=Truestring='CFDI Documents' args: 'l10n_mx_cfdi.document' -
invoice_idsMany2many → account.moverequired=Truestring='Facturas' args: 'account.move' -
zip_fileMany2one → ir.attachmentondelete='cascade'readonly=True args: 'ir.attachment'
-
action_download_zip(self) -
default_get(self, field_names)@api.model
New fields (7)
-
cancel_reason_idMany2one → l10n_mx_catalogs.c_motivo_cancelacionrequired=Truestring='Razón' args: 'l10n_mx_catalogs.c_motivo_cancelacion' -
certificate_idsMany2many → l10n_mx_cfdi.documentrequired=Truestring='Certificados' args: 'l10n_mx_cfdi.document' -
related_invoicesMany2many → account.movestring='Facturas Relacionadas' args: 'account.move' -
replacement_certificate_idMany2one → l10n_mx_cfdi.documentstring='Reemplazo' args: 'l10n_mx_cfdi.document' -
requires_replacementBooleancompute='_compute_requires_replacement'store=False -
simulate_operationBooleandefault=Falsegroups='base.group_system'help='Simulate the cancel operation without sending the request to the SAT' -
single_cancelBooleandefault=True
-
cancel_certificate(self) -
default_get(self, field_names)@api.model
New fields (10)
-
cfdi_use_idMany2one → l10n_mx_catalogs.c_uso_cfdireadonly=Truerequired=Truestring='Uso de CFDI' args: 'l10n_mx_catalogs.c_uso_cfdi' -
dateDatedefault=fields.Date.context_todayrequired=Truestring='Fecha' -
fiscal_regime_idMany2one → l10n_mx_catalogs.c_regimen_fiscalcompute='_compute_fiscal_regime_id'readonly=Truerequired=Truestring='Régimen Fiscal' args: 'l10n_mx_catalogs.c_regimen_fiscal' -
issuer_idMany2one → l10n_mx_cfdi.issuerdomain=[('registered', '=', True)]required=Truestring='Emisor' args: 'l10n_mx_cfdi.issuer' -
meses_idMany2one → l10n_mx_catalogs.c_mesesrequired=Truestring='Mes' args: 'l10n_mx_catalogs.c_meses' -
move_idsMany2many → account.moverequired=Truestring='Facturas' args: 'account.move' -
payment_form_idMany2one → l10n_mx_catalogs.c_forma_pagostring='Forma de Pago' args: 'l10n_mx_catalogs.c_forma_pago' -
payment_method_idMany2one → l10n_mx_catalogs.c_metodo_pagoreadonly=Truestring='Metodo de Pago' args: 'l10n_mx_catalogs.c_metodo_pago' -
periodicity_idMany2one → l10n_mx_catalogs.c_periodicidadrequired=Truestring='Periodicity' args: 'l10n_mx_catalogs.c_periodicidad' -
yearTextrequired=Truestring='Año'
-
create_cfdi(self)Emit CFDI 'Al Público en General' -
default_get(self, field_names)@api.model
New fields (1)
-
l10n_mx_cfdi_autoBooleanhelp='Enable to automatically sign CFDI when validating invoices.'readonly=Falserelated='company_id.l10n_mx_cfdi_auto' args: 'Create CFDI on post'
No public methods.
New fields (4)
-
l10n_mx_edi_addendaMany2one → ir.ui.viewcomodel_name='ir.ui.view'domain=[('l10n_mx_edi_addenda_flag', '=', True)]help='A view representing the addenda'string='Addenda' -
l10n_mx_edi_addenda_docHtmlhelp='How should be done the addenda for this customer (try to put human readable information here to help the invoice people to fill properly the fields in the invoice)'string='Addenda Documentation' -
l10n_mx_edi_addenda_is_readonlyBooleancompute='_compute_l10n_mx_edi_addenda_is_readonly' -
l10n_mx_edi_addenda_nameCharrelated='l10n_mx_edi_addenda.name'
No public methods.
Loading…