Skip to content

Commit 96e46f2

Browse files
mial-odooStraubCreative
authored andcommitted
[IMP] l1on_mx: update refactored functions in Odoo 19
1 parent 408b8f0 commit 96e46f2

File tree

3 files changed

+110
-56
lines changed

3 files changed

+110
-56
lines changed

content/applications/finance/fiscal_localizations/mexico.rst

Lines changed: 110 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,8 @@ if meeting a specific requirement for the business.
6767
* - :guilabel:`Mexico - Electronic Delivery Guide`
6868
- `l10n_mx_edi_stock`
6969
- Lets you create a *Carta Porte*: A bill of lading that proves to the government you are
70-
sending goods between A & B with a signed electronic document.
70+
sending goods between A & B with a signed electronic document, it will also install the
71+
:doc:`Fleet <../../hr/fleet>` app.
7172
* - :guilabel:`Odoo Mexico Localization for Stock/Landing`
7273
- `l10n_mx_edi_landing`
7374
- Allows managing customs numbers related to landed costs in electronic documents.
@@ -83,10 +84,14 @@ if meeting a specific requirement for the business.
8384
- `l10n_mx_edi_website_sale`
8485
- Adds extra fields to the :doc:`eCommerce <../../websites/ecommerce>` module to comply with
8586
the Mexican electronic invoicing requirements
86-
* - :guilabel:`Employees - Mexico`
87-
- `l10n_mx_hr`
88-
- Adds extra fields to the :doc:`Employees <../../hr/employees>` module to comply with local
89-
information for employees.
87+
* - :guilabel:`Mexico - Payroll`
88+
- `l10n_mx_hr_payroll`
89+
- Adds the fields necessary to manage employee data for :doc:`Payroll <../../hr/payroll>`
90+
and :doc:`Time Off <../../hr/time_off>`
91+
* - :guilabel:`Mexico - Payroll CFDI`
92+
- `l10n_mx_hr_payroll_account_edi`
93+
- Adds technical fuctions to sign CFDI payroll documents with the government learn more on
94+
:doc:`Mexican Payroll <../../hr/payroll>`.
9095
* - :guilabel:`Mexico - Payroll with Accounting`
9196
- `l10n_mx_hr_payroll_account`
9297
- Adds the required rules and parameters to manage local payroll calculation with the
@@ -498,17 +503,26 @@ Credit notes
498503

499504
While an invoice is a document type "I" (Ingreso), a credit note is a document type "E" (Egreso).
500505

501-
The only addition to the :doc:`standard flow for credit notes
506+
An addition to the :doc:`standard flow for credit notes
502507
<../accounting/customer_invoices/credit_notes>` is that, as a requirement of the |SAT|, there has to
503508
be a relation between a credit note and an invoice through the fiscal folio.
504509

505510
Because of this requirement, the field :guilabel:`CFDI Origin` adds this relation with a `01|`,
506-
followed by the fiscal folio of the original invoice.
511+
followed by the fiscal folio of the original UUID.
507512

508513
.. tip::
509514
For the :guilabel:`CFDI Origin` field to be automatically added, use the :guilabel:`Add Credit
510515
Note` button from the invoice, instead of creating it manually.
511516

517+
Generally credit notes reverse the main sales account defined in the journal, but it is also possible
518+
to globally assign an account to all credit notes, to do so go to :menuselection:`Accounting -->
519+
Configuration --> Settings` and set the :guilabel:`Credit notes` account under the
520+
:guilabel:`Default Accounts` section.
521+
522+
.. note::
523+
On the default configuration, the credit notes account is set as :guilabel:`402.01.01 Returns,
524+
discounts or bonuses over sales and/or services at the general rate`
525+
512526
.. _l10n/mx/vendor-bills:
513527

514528
Vendor bills
@@ -521,7 +535,7 @@ bill **Must be in draft state** for the update to happen.
521535

522536
.. tip::
523537
When clicking :guilabel:`Update SAT`, the :guilabel:`SAT status` field on the invoice will
524-
confirm if the XML file is **Validated** in the |SAT|, this is also true for vendor bills.
538+
confirm if the XML file is **Validated** by the |SAT|, this is also true for vendor bills.
525539

526540
See also :doc:`../accounting/vendor_bills`
527541

@@ -815,8 +829,8 @@ product `Discounts`, make sure that it has a valid :guilabel:`Tax` (usually :gui
815829
`16%`).
816830

817831
After this, create and sign the invoice via |CFDI|, and add the `Discounts` product at the bottom.
818-
In the XML the discount should be subtracted from the first invoice line available, Odoo will try to
819-
subtract from each line the total amount in order until all the discount has been applied.
832+
In the XML Odoo will try to distribute the dicount between the lines evenly, while any math
833+
differences will be added in a rounding product.
820834

821835
.. tip::
822836
A `Discount` and `UNSPSC Product Category` for each product variant related to :guilabel:`Gift
@@ -1348,13 +1362,15 @@ and creating global invoices.
13481362
Point of sale flow
13491363
------------------
13501364

1351-
Other than the standard :doc:`Point of Sale configuration
1352-
<../../sales/point_of_sale/configuration>`, the only requirement for the Mexican localization is the
1353-
additional fact that each payment method needs to be configured with a correct :guilabel:`Payment
1354-
Way`.
1365+
On top of the standard :doc:`Point of Sale configuration
1366+
<../../sales/point_of_sale/configuration>`, the Mexican localization requires each
1367+
payment method needs to be configured with a correct :guilabel:`Payment Way` as well as a
1368+
:guilabel:`Re-invoicing account` to handle the accounting for invoices with the :ref:`invoicing
1369+
portal <mx/pos/portal>`.
13551370

13561371
.. tip::
1357-
By default Odoo creates preconfigured payment methods for cash, credit card, and debit card.
1372+
By default Odoo creates preconfigured payment methods for cash, credit card, and debit card
1373+
and assigns the :guilabel:`402.04.01 Re-invoicing` account as default for re-invoicing.
13581374

13591375
While selling on the **Point of Sale**, click the :guilabel:`Customer` button to either create or
13601376
select a customer. Here it is possible to review customer invoicing information (such as the |RFC|
@@ -1407,6 +1423,10 @@ Customers who scan this QR code or follow the URL will access to a menu where th
14071423
fiscal information, including the *Usage* and *Fiscal Regime* once they enter the five digit code
14081424
that is also provided on the receipt.
14091425

1426+
On the journal entries of the session, the previously selected **Re-invoicing account** will be used
1427+
to handle reversals of the sales entries when invoices are requested as well as be used as a sales
1428+
account for the new invoices.
1429+
14101430
.. seealso::
14111431
:doc:`../../sales/point_of_sale/receipts_invoices`
14121432

@@ -1522,7 +1542,7 @@ goods.
15221542
According to the `Annex 20 <http://omawww.sat.gob.mx/tramitesyservicios/Paginas/anexo_20.htm>`_ of
15231543
CFDI 4.0, in documents where the invoiced goods come from a first-hand import operation, the
15241544
:guilabel:`Customs Number` field, needs to be added to all lines of products involved with the
1525-
operation.
1545+
operation as well as the date of the document.
15261546

15271547
.. note::
15281548
To do so, the :guilabel:`Odoo Mexico Localization for Stock/Landing` `l10n_mx_edi_landing` module
@@ -1542,23 +1562,31 @@ In order to track the correct customs number for a specific invoice, Odoo uses :
15421562
:menuselection:`Inventory --> Configuration --> Settings`, and in the :guilabel:`Valuation` section,
15431563
make sure that :guilabel:`Landed Costs` is activated.
15441564

1545-
Begin by creating a **service-type** product called, `Pedimento`. In the :guilabel:`Purchase` tab,
1546-
activate :guilabel:`Is a Landed Cost`, and select a :guilabel:`Default Split Method`.
1565+
.. Tip::
1566+
It is recommended to add a :guilabel:`Default Jorunal` even if the customs numbers do not modify
1567+
the accounting directly.
1568+
1569+
Configure the **goods-type** products that hold the customs numbers. To do so, create the
1570+
products and complete these three requirements:
15471571

1548-
Then, configure the **goods-type** products that hold the customs numbers. To do so, create the
1549-
products, and make sure the :guilabel:`Product Category` has the following configuration:
1572+
- :guilabel:`Tracking` **must** be set to either :guilabel:`By Lots` or :guilabel:`By Unique Serial
1573+
Number`but **not** :guilabel:`By Quantity`.
1574+
- :guilabel:`Invoicing Policy` **must** be set to :guilabel:`Delivered quantities`.
1575+
- :doc:`Valuation by Lot/Serial <../../inventory_valuation/valuation_by_lots>`**must** be enabled.
1576+
1577+
This will make the field :guilabel:`Customs invoicing` available on the :guilabel:`Accounting` tab,
1578+
enable the field to use customs numbers with this product.
1579+
1580+
It is important to make sure the product has a :guilabel:`Product Category` and has the following
1581+
configuration:
15501582

15511583
- :guilabel:`Costing Method`: Either :guilabel:`FIFO` or :guilabel:`AVCO`
15521584
- :guilabel:`Inventory Valuation`: :guilabel:`Automated`
1553-
- :guilabel:`Stock Valuation Account`: :guilabel:`115.01.01 Inventory`
1554-
- :guilabel:`Stock Journal`: :guilabel:`Inventory Valuation`
1555-
- :guilabel:`Stock Input Account`: :guilabel:`115.05.01 Goods in transit`
1556-
- :guilabel:`Stock Output Account`: :guilabel:`115.05.01 Goods in transit`
15571585

15581586
.. note::
1559-
Setting the :guilabel:`Inventory Valuation` to :guilabel:`Automated` requires first enabling the
1560-
feature. Go to :menuselection:`Accounting --> Configuration --> Settings`, and in the
1561-
:guilabel:`Stock Valuation` section, enable :guilabel:`Automatic Accounting`.
1587+
The feature works regardless of whether the :doc:`Valutation
1588+
<../../inventory/product_management/inventory_valuation> is set as
1589+
:guilabel:`Periodic (at closing)`or :guilabel:`Perpetual (at invoicing)`.
15621590

15631591
.. image:: mexico/mx-landing-configuration.png
15641592
:alt: Storable products general configuration.
@@ -1574,28 +1602,37 @@ After configuring the product, follow the standard :doc:`purchase flow
15741602

15751603
Create a purchase order from :menuselection:`Purchase --> Orders --> Purchase Order`. Then, confirm
15761604
the order to display a :guilabel:`Receipt` smart button. Click on the :guilabel:`Receipt` smart
1577-
button and :guilabel:`Validate` the receipt.
1605+
button, add the lots or serial numbers and :guilabel:`Validate` validate.
15781606

15791607
Go to :menuselection:`Inventory --> Operations --> Landed Costs`, and create a new record. In the
1580-
:guilabel:`Transfer`, add the receipt that was just validated, add the :guilabel:`Customs number`
1581-
and in the :guilabel:`Additional Costs` tab, add the :guilabel:`Pedimento` product.
1608+
:guilabel:`Transfer`, add the receipt that was just validated, add the :guilabel:`Customs number`.
15821609

1583-
Optionally, it is possible to add a cost amount. After this, :guilabel:`Validate` the landed cost.
1584-
Once :guilabel:`Posted`, all products related to that receipt have the customs number assigned.
1610+
.. tip::
1611+
While it is possible to add costs related to the customs number on this part of the process, it
1612+
is highly recommended to create a landed cost from a vendor bill from your customs agent. Learn
1613+
more about :doc:`Landed Costs here`
1614+
<../../inventory_and_mrp/inventory/product_management/inventory_valuation/landed_costs>
15851615

15861616
.. warning::
1587-
The :guilabel:`Pedimento Number` field is not editable once it is set, so be careful when
1588-
associating the correct number with the transfer(s).
1617+
The :guilabel:`Pedimento Number` field is not editable once it is set, and cannot be repeated,
1618+
however it is possible to fix the number on the lot later by selecting a different landed cost.
15891619

15901620
.. image:: mexico/mx-landing-inventory.png
15911621
:alt: Customs number on a landed costs Inventory record.
15921622

1623+
The customs number assigned to a specific lot or serial number can be found on the its registry on
1624+
:menuselection:`Inventory --> Products --> Lots/Serial Numbers`, the :guilabel:`L10N Mx Edi Landed Cost`
1625+
field can be edited at any time to fix any mistakes that could ocurr during the landed cost, this
1626+
changes the :guilabel:`Customs number` and the name.
1627+
15931628
Next, create a sales order and confirm it. Click on the :guilabel:`Delivery` smart button that
1594-
appears, and :guilabel:`Validate` the delivery order.
1629+
appears, and carefully review the assigned lots/serial numbers to make sure they are the desired
1630+
values, after that :guilabel:`Validate` the delivery order.
15951631

15961632
Finally, :ref:`create an invoice from the sales order <accounting/inv-process/so>`, and confirm it.
1597-
The invoice line related to the product has a customs number on it. This number matches the customs
1598-
number added in the landed cost record created earlier.
1633+
The invoice lines are created according to the distribution of the delivery order, in cases where
1634+
more than one customs number were selected, Odoo will split the invoice lines by quantity and
1635+
customs numbers.
15991636

16001637
.. image:: mexico/mx-landing-invoice.png
16011638
:alt: Customs number on confirmed sales order product.
@@ -1605,8 +1642,8 @@ number added in the landed cost record created earlier.
16051642
Delivery guide
16061643
--------------
16071644

1608-
A `Carta Porte <https://www.sat.gob.mx/consultas/68823/complemento-carta-porte->`_ is a bill of
1609-
lading: a document that states the type, quantity, and destination of goods being carried.
1645+
A `Carta Porte <https://www.sat.gob.mx/portal/public/tramites/complemento-carta-porte>` is a bill
1646+
of lading: a document that states the type, quantity, and destination of goods being carried.
16101647

16111648
On July 17th, 2024, version 3.1 of this |CFDI| was implemented for all transportation providers,
16121649
intermediaries, and owners of goods. Odoo is able to generate a document type "T" (Traslado), which,
@@ -1618,7 +1655,8 @@ are treated as *Dangerous Hazards*.
16181655
In order to print the PDF, the delivery order must be signed by the government and then it can be
16191656
printed using the :guilabel:`Print Carta Porte` button on the delivery order.
16201657

1621-
The PDF file contains a QR code to verify the CCP code for the authorities.
1658+
.. tip::
1659+
The PDF file contains a QR code to verify the CCP code for the authorities.
16221660

16231661
In order to transport goods between warehouses, the logistic route must contain a **Delivery** type
16241662
of operation, see :doc:`Inter-warehouse replenishment
@@ -1671,22 +1709,29 @@ with the `Official SAT Catalog for Carta Porte
16711709
Configuration --> Warehouses`. While this is set as the company address by default, you can
16721710
change it to your correct warehouse address.
16731711

1674-
Another addition to this feature is the :guilabel:`Vehicle Setups` menu found in
1675-
:menuselection:`Inventory --> Settings --> Vehicle Setups`. This menu lets you add all the
1676-
information related to the vehicle used for the delivery order.
1712+
This feature requires the use of :doc:`Fleet <../../hr/fleet/new_vehicle>` to manage vehicles,
1713+
the vehicle setup is managed directly on the vehicle, all the required fields are only visible
1714+
after checking the :guilabel:`L10N Mx Is Freight Vehicle` field.
16771715

1678-
All fields are mandatory to create a correct delivery guide.
1716+
This adds the :guilabel:`MX Parameters` tab where the mandatory fields are required to create a
1717+
correct delivery guide, additionally the vehicle **must** contain a :guilabel:`License Plate`, a
1718+
:guilabel:`Model Year` and a :guilabel:`Driver`.
16791719

16801720
.. tip::
16811721
The fields, :guilabel:`Vehicle Plate Number` and :guilabel:`Number Plate`, must contain between 5
16821722
and 7 characters.
16831723

1684-
In the :guilabel:`Intermediaries` section, add the operator of the vehicle. The only mandatory
1685-
fields for this contact are the :guilabel:`VAT` and :guilabel:`Operator Licence`.
1724+
The main driver of the vehicle is set directly on the :guilabel:`Driver` field, it is possible to
1725+
add aditional operators of the vehicle directly in the :guilabel:`Intermediaries` section,
1726+
The only mandatory fields for driver contacts are the :guilabel:`VAT` and :guilabel:`Operator Licence`.
16861727

16871728
.. image:: mexico/mx-delivery-guide-vehicle.png
16881729
:alt: Delivery guide vehicle configuration.
16891730

1731+
.. tip::
1732+
If the vehicle is rented or more intermediaries are required, it is possible to add them in the
1733+
:guilabel:`Intermediaries` field.
1734+
16901735
Products
16911736
********
16921737

@@ -1717,17 +1762,26 @@ click :guilabel:`Generate Delivery Guide`. The resulting XML can be found in the
17171762

17181763
.. note::
17191764
Other than the :guilabel:`UNSPSC` on all products, delivery guides that use :guilabel:`No Federal
1720-
Highways` do not require any special configuration to be sent to the government.
1765+
Highways` do not require any special configuration to be sent to the government, this is a type
1766+
"T" CFDI with no delivery guide complement.
1767+
1768+
If using the :guilabel:`Federal Transport` :guilabel:`Transport Type`, the :guilabel:`Vehicle Setup`
1769+
is displayed to be selected.
1770+
The :guilabel:`Gross vehicle weight` is taken from the :guilabel:`Vehicle setup` configuration where
1771+
it is possible to add additional :guilabel:`Extra weight` to account for the drivers and luggage.
17211772

1722-
If using the :guilabel:`Federal Transport` :guilabel:`Transport Type`, the tab :guilabel:`MX EDI`
1723-
appears. There, enter a value in :guilabel:`Distance to Destination (KM)` greater than `0`, and
1724-
select the :guilabel:`Vehicle Setup` used for this delivery.
1773+
.. note::
1774+
Odoo will calculate the :guilabel:`Gross vehicle weight` with the following formula:
1775+
.. math::
1776+
Gross vehicle weight = Vehicle weight + :guilabel:`Weight` * :guilabel:`Extra Weight`/1000
17251777
1726-
Finally, add a :guilabel:`Gross Vehicle Weight` and click :guilabel:`Generate Delivery Guide`.
1778+
Every delivery requires a value in :guilabel:`Distance to Destination (KM)` greater than `0`.
1779+
Finally, enter the :guilabel:`Delivery Date` and click :guilabel:`Generate Delivery Guide`.
17271780

1728-
.. tip::
1729-
Delivery Guides can also be created from :guilabel:`Receipts`, either from the Inventory app or
1730-
by the standard flow of the Purchase app.
1781+
.. warning::
1782+
By default the :guilabel:`Scheduled Date` is filled and represents the time at which the shipment
1783+
leaves the warehouse and the :guilabel:`Delivery Date` is the time that the shipment is expected
1784+
to arrive to its destination, these values are declared in both the XML and PDF.
17311785

17321786
Dangerous hazards
17331787
*****************
@@ -1749,8 +1803,8 @@ First, select the product from :menuselection:`Inventory --> Products --> Produc
17491803
hazard (for example *01010101*). If it is not dangerous, enter `0` in the :guilabel:`Hazardous
17501804
Material Designation Code` field.
17511805

1752-
In :menuselection:`Inventory --> Settings --> Vehicle Setup`, complete the :guilabel:`Environment
1753-
Insurer` and :guilabel:`Environment Insurance Policy` well. After this, continue with the regular
1806+
In :guilabel:`MX Parameters`, complete the :guilabel:`Environment
1807+
Insurer` and :guilabel:`Environment Insurance Policy` as well. After this, continue with the regular
17541808
process to create a delivery guide.
17551809

17561810
Imports and Exports
56.8 KB
Loading
98.8 KB
Loading

0 commit comments

Comments
 (0)