Skip to content

[IMP] update mexico l10n to version 18 #14164

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: 18.0
Choose a base branch
from
Open

Conversation

dade-odoo
Copy link
Contributor

New PR to replace PR12323 since its branch was incorrectly named

@robodoo
Copy link
Collaborator

robodoo commented Jul 25, 2025

Pull request status dashboard

@dade-odoo dade-odoo force-pushed the 18.0-l10n-mx-mial branch from 850be86 to a1ed018 Compare July 30, 2025 07:28
@C3POdoo C3POdoo requested a review from a team July 30, 2025 07:33
@dade-odoo dade-odoo force-pushed the 18.0-l10n-mx-mial branch 5 times, most recently from bf3b2a4 to 8eed9c3 Compare August 1, 2025 14:16
@auva-odoo auva-odoo removed the request for review from a team August 12, 2025 13:32
@C3POdoo C3POdoo requested a review from a team August 14, 2025 07:47
@dade-odoo dade-odoo removed the request for review from a team August 14, 2025 09:39
Copy link
Contributor Author

@dade-odoo dade-odoo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @mial-odoo ,

Thanks again for your patience. I've edited the content for grammar and to better fit our fiscal localization guidelines. Here are a few questions I have:

  • I removed several screenshots that were unnecessary and retook a few others to remove the markup/crop the images. I haven't finished retaking the rest of them, but we need to decide if we want them in Spanish or English. I think it makes the most sense to have screenshots in the language of the localization.
  • The following module doesn't exist in 18.0: Mexico - Electronic Delivery Guide Comex l10n_mx_edi_stock_extended. Has this been combined with Mexico - Electronic Delivery Guide l10n_mx_edi_stock?

A few other points about the changes I've made:

  • As I mentioned before, the Payroll localization information can be included in a separate doc in the Payroll localization section of the doc whenever you're ready. When we do that we'll add a link on each side to the other document.
  • I rearranged the first few sections to better fit our guidelines
  • I removed the "Workflows" H2 and shifted everything below it up
  • I removed the note about Payment Policy being selectable from 18.1. We'll add that in the documentation from 18.1 with the forward-port.
  • I changed the title of the Payment Complements section to just Payments, as you said payment complements only apply to PPD invoices. I also edited that section to make it more clear what the payment complement actually is.

Finally, I made comments on areas I have specific questions about. Can you please respond to those and then we'll get this thing wrapped up :)

Comment on lines +113 to +114
of January 1, 2022. These modules also add relevant accounting reports including the |DIOT|, which
enables foreign trade and the creation of delivery guides.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I rephrased it, but I want to confirm that it's worded correctly. Does the DIOT enable foreign trade and the creation of delivery guides? Or do the modules do three separate things (add reports like the DIOT, enable foreign trade, and enable the creation of delivery guides)?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Those three things are three separate modules, so the modules do three separate things.

Other tax configurations
~~~~~~~~~~~~~~~~~~~~~~~~

When registering a payment, Odoo will carry out the movement of taxes from the *Cash Basis
The Mexican Localization uses :doc:`cash basis taxes <../../finance/accounting/taxes/cash_basis>`.
So, when registering a payment, Odoo carries out the movement of taxes from the *Cash Basis
Transition Account* to the account set in the :guilabel:`Definition` tab. For such movement, a tax
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wasn't able to find this Definition tab. Where is it exactly?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it is poorly worded and that's why it is confusing. The tab it is referring to is in the tax configs.
image


If a fully-reconciled payment is related to an invoice with a :guilabel:`Fiscal Folio`, the
:guilabel:`Update Payments` appears. Click the :guilabel:`Update Payments` button to send the
**payment complement** XML file to the government automatically and display it in the |CFDI| tab in
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wanted to have some brief explanation of what a payment complement is. I added "XML file" to try to make it clear, but if you want to add a sentence explaining what it is at the beginning of the section, that could help too.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it is perfect.

:alt: CFDI (4.0) E-invoicing service process payment now message.
Similar to an invoice or credit note, the PDF and XML can be sent to the final customer. To do so,
click the :icon:`fa-cog` :guilabel:`(gear)` icon to open the actions drop-down menu and select
:guilabel:`Send receipt by email`.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I removed the warning that said "Bank reconciliation direct payments can't create a PDF, this feature was added in v18.1". We can include that in the 18.1 forward-port, but I'm actually not sure what that is. Can you explain it to me?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Legal files are always the bundle of XML+PDF, 18.0 only created the xml as you are correctly pointing out in the last comment, but the PDF was not added until v18.1 on this button that says print:

image

The new print button can print the PDF regardless of how the payment was made (with or without reconciliation).
But in 18.0 we didn't have this feature :(

I learnt later that the doc also had 18.1, that's why included that at first :p

Comment on lines +536 to +539
When using the :guilabel:`01 - Invoice issued with errors (with related document)` cancellation
reason, the `04|` prefix may appear in the :guilabel:`Fiscal Folio` field. This is an internal
prefix used by Odoo to complete the cancellation and **does not** mean that the cancellation
reason was :guilabel:`04 - Nominative operation related to the global invoice`.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

About the "04|" prefix possibly appearing - when I tested, it did not appear. Whenever possible, we should be clear about when things do happen and when they don't. Do you know what determines if this prefix is added or not?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It always happens, that's weird.
I tested it, pressed the cancellation button with 01 and it did:
image

I can only think that it won't work if the invoice isn't signed.

.. image:: mexico/mx-pos.png
:alt: Invoice Configuration for Point of Sale.

To sign a credit note automatically, tick the :icon:`fa-file-text-o` :guilabel:`Invoice` checkbox
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

similarly to the last point, are we "signing" credit notes or "sending" them?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Both :p It is one process.
image

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I know this is POS, but it does the same thing, when it gets signed it is automatically sent via email.


If the final customer is not sure if they want to have their invoice generated at the exact moment
of the sale, it is possible to give them the option of creating a receipt with either a QR code or a
five digit code. To do so, follow these steps:
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

does the "URL" option provide a 5 digit code? Or has that option changed?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes it does, I hate it, it is getting changed for v19.
Screenshot (80)

This one is from 18.3 and the layout is different but the code is very much the same thing.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh I should mention that even IF you scan the QR code it still asks for the code.

The difference is that the QR takes you to the url with Pre-filled data and the "code" requires the user to go to the website and fill all the data.
But the code is required either way.

Comment on lines +1425 to +1426
:guilabel:`Deliveries` for exports), some additional fields needs to be taken into account if the
:guilabel:`Delivery Address` country is not Mexico.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should we remove "if the Delivery Address is not Mexico" since for an international receipt, the delivery address would be Mexico? I think the first half of the sentence is clear enough in explaining when this applies.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is worded weird and it could look redundant.

But the point is that if it is for an export the Delivery Address wouldn't be mexico.

Perhaps
"If your Carta Porte is for international operations (for exports), some additional fields need to be taken into account."

Carta porte would not be used for imports so that can be omitted and I also left "need" in plural :(

.. note::
To do so, the :guilabel:`Odoo Mexico Localization for Stock/Landing` `l10n_mx_edi_landing` module
must be installed, in addition to the :doc:`Inventory <../../inventory_and_mrp/inventory>`,
:doc:`Purchase <../../inventory_and_mrp/purchase>`, and :doc:`Sales <../../sales/sales>` apps.

.. important::
Do not confuse this feature with external trade. The customs numbers are directly related to
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we say not to confuse this with external trade because this is about imports, not exports, but on line 1456, we said this is for import/export. Should we remove "/export" from the intro section of Custom Numbers?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Customs numbers are required on imports and exports, but this feature only covers national customs numbers.
For context both make sense as both exist.

Talking about Odoo we only cover import numbers as exports are handled outside of Odoo.

7n7


.. warning::
You can only add the *Pedimentos* number **once**, so be careful when associating the correct
number with the transfer(s).
The :guilabel:`Pedimento Number` field is not editable once it is set, so be careful when
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is the Pedimentos Number you mention here the customs number on the landed cost or the pedimentos number on the receipt? I would think the one on the receipt, but the placement of this line makes it unclear. Are you okay with me moving it up by the pedimentos number tip on line 1446?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All three are the same thing, since I usually read this doc in spanish I didn't realise that it had different words in english.

It would probably make more sense to have this customs number section before the delivery guide (carta porte) so that the user understands first what is a customs number before talking to them about making international delivery guides.

Because in a regular flow the user would first sell the goods and the transport them.

Copy link
Contributor

@mial-odoo mial-odoo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think I reviewed all of them, you make very good points.
Sorry for the terrible redaction, I tried fixing the draft that FEAV left but I failed :p

Thanks for your help 😃 Cheers!

Comment on lines +113 to +114
of January 1, 2022. These modules also add relevant accounting reports including the |DIOT|, which
enables foreign trade and the creation of delivery guides.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Those three things are three separate modules, so the modules do three separate things.

Other tax configurations
~~~~~~~~~~~~~~~~~~~~~~~~

When registering a payment, Odoo will carry out the movement of taxes from the *Cash Basis
The Mexican Localization uses :doc:`cash basis taxes <../../finance/accounting/taxes/cash_basis>`.
So, when registering a payment, Odoo carries out the movement of taxes from the *Cash Basis
Transition Account* to the account set in the :guilabel:`Definition` tab. For such movement, a tax
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it is poorly worded and that's why it is confusing. The tab it is referring to is in the tax configs.
image


If a fully-reconciled payment is related to an invoice with a :guilabel:`Fiscal Folio`, the
:guilabel:`Update Payments` appears. Click the :guilabel:`Update Payments` button to send the
**payment complement** XML file to the government automatically and display it in the |CFDI| tab in
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it is perfect.

:alt: CFDI (4.0) E-invoicing service process payment now message.
Similar to an invoice or credit note, the PDF and XML can be sent to the final customer. To do so,
click the :icon:`fa-cog` :guilabel:`(gear)` icon to open the actions drop-down menu and select
:guilabel:`Send receipt by email`.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Legal files are always the bundle of XML+PDF, 18.0 only created the xml as you are correctly pointing out in the last comment, but the PDF was not added until v18.1 on this button that says print:

image

The new print button can print the PDF regardless of how the payment was made (with or without reconciliation).
But in 18.0 we didn't have this feature :(

I learnt later that the doc also had 18.1, that's why included that at first :p

Comment on lines +536 to +539
When using the :guilabel:`01 - Invoice issued with errors (with related document)` cancellation
reason, the `04|` prefix may appear in the :guilabel:`Fiscal Folio` field. This is an internal
prefix used by Odoo to complete the cancellation and **does not** mean that the cancellation
reason was :guilabel:`04 - Nominative operation related to the global invoice`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It always happens, that's weird.
I tested it, pressed the cancellation button with 01 and it did:
image

I can only think that it won't work if the invoice isn't signed.


If the final customer is not sure if they want to have their invoice generated at the exact moment
of the sale, it is possible to give them the option of creating a receipt with either a QR code or a
five digit code. To do so, follow these steps:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes it does, I hate it, it is getting changed for v19.
Screenshot (80)

This one is from 18.3 and the layout is different but the code is very much the same thing.


If the final customer is not sure if they want to have their invoice generated at the exact moment
of the sale, it is possible to give them the option of creating a receipt with either a QR code or a
five digit code. To do so, follow these steps:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh I should mention that even IF you scan the QR code it still asks for the code.

The difference is that the QR takes you to the url with Pre-filled data and the "code" requires the user to go to the website and fill all the data.
But the code is required either way.

Comment on lines +1425 to +1426
:guilabel:`Deliveries` for exports), some additional fields needs to be taken into account if the
:guilabel:`Delivery Address` country is not Mexico.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is worded weird and it could look redundant.

But the point is that if it is for an export the Delivery Address wouldn't be mexico.

Perhaps
"If your Carta Porte is for international operations (for exports), some additional fields need to be taken into account."

Carta porte would not be used for imports so that can be omitted and I also left "need" in plural :(

.. note::
To do so, the :guilabel:`Odoo Mexico Localization for Stock/Landing` `l10n_mx_edi_landing` module
must be installed, in addition to the :doc:`Inventory <../../inventory_and_mrp/inventory>`,
:doc:`Purchase <../../inventory_and_mrp/purchase>`, and :doc:`Sales <../../sales/sales>` apps.

.. important::
Do not confuse this feature with external trade. The customs numbers are directly related to
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Customs numbers are required on imports and exports, but this feature only covers national customs numbers.
For context both make sense as both exist.

Talking about Odoo we only cover import numbers as exports are handled outside of Odoo.

7n7


.. warning::
You can only add the *Pedimentos* number **once**, so be careful when associating the correct
number with the transfer(s).
The :guilabel:`Pedimento Number` field is not editable once it is set, so be careful when
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All three are the same thing, since I usually read this doc in spanish I didn't realise that it had different words in english.

It would probably make more sense to have this customs number section before the delivery guide (carta porte) so that the user understands first what is a customs number before talking to them about making international delivery guides.

Because in a regular flow the user would first sell the goods and the transport them.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants