Skip to Content
Menu
This question has been flagged
1 Reply
1772 Views

.

Avatar
Discard

This is not the behavior currently observed in Odoo (as of July 1, 2025):

  1. Initially, when this change was implemented, Odoo generated an exchange rate difference journal entry (type EXCH) for the discrepancy in foreign currency (in this case, 6.91 euros) between the STJ (stock journal) and the BILL (vendor bill). This caused an improper journal entry that left a residual balance in the interim account.
  2. Recently, this was corrected: now, both the STJ and the BILL record the same amount in both foreign and company currency, eliminating the previously generated EXCH entry.
  3. However, we are now observing that when the vendor bill is created after the receipt, the valuation adjustment is recorded using an EXCH journal entry, instead of an STJ entry, which was the previously expected behavior.

Could you please update the example used to document this behavior, and clarify from which version or date these changes were introduced?

Can you clarify in which version you are observing what you are reporting?

We currently support three LTS releases - 16.0, 17.0 and 18.0 - and three intermediate releases - 18.1, 18.2 and 18.3.

Author Best Answer

In Odoo 18.0, using automatic valuation, when creating a purchase order in a foreign currency (different from the company’s main currency), Odoo ensures that stock valuation layers align with the vendor bill by adjusting for foreign exchange rate differences. The valuation layers and journal items will always be computed with the main currency of the company. 

  • If the vendor bill is created before the receipt, Odoo applies the exchange rate from the bill date to calculate stock valuation layers.
  • If the receipt occurs before the vendor bill, Odoo initially applies the exchange rate from the receipt date, but later creates an adjustment valuation layer when the vendor bill is confirmed to align the total stock valuation with the vendor bill.

This approach guarantees that inventory valuation always matches the vendor bill journal items, ensuring consistency across financial reporting and stock valuation, regardless of exchange rate fluctuations.


Example

  1. In our company, the main currency is in USD, but we have created a purchase order in EUR. For the example, we have two currency rates.
  2. We create a purchase order for 10 EUR, we can now see the vendor bill and how is generated.


When making the vendor bill before the receipt.

The valuation STJ/2025/01/00001 was created the date of the receipt of the product 01/31/2025, even tho the receipt date should be made with another FX rate, it will take same rate of the bill date (12/31/2024) as the vendor bill was confirmed first, this to match the balances of the stock interim (received) account. In the main currency the amounts will match and will modify the amount in FX currency.


When making the vendor bill after the receipt.

The receipt was created on 01/31/2025, generating the valuation layer STJ/2025/01/00002. Initially, Odoo applies the exchange rate from the receipt date (01/31/2025). However, when the vendor bill is confirmed, an adjustment valuation layer (STJ/2024/12/0001) is created to align the total balance for the Stock Interim (Received) account. The stock valuation is then adjusted to match the vendor bill journal items, which are based on the bill date (12/31/2024).


You can find the related commit implementing this behavior in Odoo here: https://github.com/odoo/odoo/commit/717c0df9e761dbfad452cc8f2c65430cc0bf6b4d

This commit provides further technical details on how Odoo handles foreign exchange rate adjustments for stock valuation layers.

If you have a specific issue with the valuation, or you need further assistance, do not hesitate to create a ticket with the support team in the next link https://www.odoo.com/help

Avatar
Discard
Related Posts Replies Views Activity
1
Jul 25
883
1
Feb 23
4840
1
Mar 15
4748
0
Jan 25
872
1
Oct 24
1759