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

I am just wondering how does unrealized/realized gain/loss works in Odoo?

Any documentation or any expert on this?


Avatar
Discard

Best is to check it out in a test database yourself. This is depending on your setup.

Best Answer

Automagically.


If you hold Assets or Liabilities (and sometimes Income) in other currencies, you might need to report (or measure) the changes in value of these amounts of value over time, due to currency fluctuations.


Take the case of a Global Company that purchases Inventory in two locations and uses two Companies to model this.  AmCo and the EuCo both purchase the equivalent of $USD 10,000 of Products.  For EuCo this equates to $8,969 (with rounding of 32 euro cents). 


The (partial – Equity is left out since it has no value in this example) Balance Sheet at 1/15 now looks like this (left $USD, right €) :


 

Now let’s pause the operations of the Company (we don’t pay for this Inventory, we don’t sell any) and look at the impact of unrealized gains (losses) on the value of that Inventory. 


The example will be from the perspective of the $ USD – how will the value of the $10.000.89 worth of Inventory change over time?


By the end of January, the exchange rate changed from 1.115 to 1.1096, meaning Inventory worth $10,000.89 *could* be worth $9,951.073 if sold at full market value.  This example of a loss (on paper) is what people mean by an unrealized currency loss.


Let’s look at the partial Balance Sheet at 1/31:



Notice that NOTHING has changed value in the real world – just “on paper”.  The $10,000 in US Inventory held by AmCo is still “worth” $USD 10,000 (if sold there at full price) and the € 8,969 in European Inventory help by EuCo is still “worth” € 8,969 (if sold there at full price).


Odoo automagically updated the Balance Sheet based on the currency exchange rates that were automatically updated (or manually entered).


By the middle of February, the exchange rate changed from 1.1096 to 1.0831, meaning Inventory worth $10,000.89, later *potentially* worth $9,951.73 *could* be now worth $9,714.28 if sold at market value.  This example of a loss (on paper) is what people mean by an unrealized currency loss.


Let’s look at the partial Balance Sheet now at 2/15:



You can see that Odoo “just works” by updating the Balance Sheet over time.  There are no Journal Entries booked.


Think of what is happening as "revaluating on the fly" without you needing to manage it.


The impact of this change in your Balance Sheet does have the potential to affect your Profit and Loss statement - some, but not all, companies need to account for unrealized gains (losses).


Please also see:

https://www.odoo.com/forum/help-1/question/how-does-odoo-handle-realized-currency-gains-or-losses-167047

https://www.odoo.com/documentation/user/13.0/accounting/others/multicurrencies/how_it_works.html


 
Avatar
Discard

Ray, what are you using to generate the balance sheet ? The consolidation APP or the regular financial report?

Please provide steps to generate the report you have above.

Thanks,

JJ

Hi Ray,

Thank you for replying. This is awesome to be able to group and filter like that. It is very powerful.

I am still not clear though on the example you provided above and mentioned that it automagically recalculates the balance.

Or Do we need to book the revaluation entries ?

Can you please provide instructions how does it work. For example if the bank account balance had 10000 Euro at the end of January, and now we are in November. If the balance sheet is in USD, would the amounts translate correctly? I tested that, and I must be missing something,.

If you review what I posted above: [AmCo and the EuCo both purchase the equivalent of $USD 10,000 of Products. For EuCo this equates to € $8,969 (with rounding of 32 euro cents)] - Step 1 is to create and receive two purchase orders, one for each company, one in USD and the other in EUR. Have exchange rates in the both companies when you do this. Next I posted: [Now let’s pause the operations of the Company (we don’t pay for this Inventory, we don’t sell any) and look at the impact of unrealized gains (losses) on the value of that Inventory.] so Step 2 is to do nothing. Next I posted: [By the end of January, the exchange rate changed from 1.115 to 1.1096, meaning Inventory worth $10,000.89 *could* be worth $9,951.073 if sold at full market value.] so Step 3 is to wait until the exchange rate changes (or simulate that by forward entering a rate and running your report at that future date). Finally I posted: [You can see that Odoo “just works” by updating the Balance Sheet over time. There are no Journal Entries booked. Think of what is happening as "revaluating on the fly" without you needing to manage it.] so Step 4 is to realize that Odoo is not booking Journal Entries because, as I posted above, "There are no Journal Entries booked" and that the amounts would translate becaise, as I posted above, Odoo is "revaluating on the fly". If you need further help, post your steps in a new question and I will review them. Be sure to post a screenshot of your initial exchange rates for each currency, as well as the dates of your invoices/bills, then your balance sheet, then your updated exchange rates, then your balance sheet at a future date, so that I have enough information to expand "missing something" into something helpful for you. Even better would be a video that shows your complete process from start to finish.

As Always helpful. I will post screen shots & Video tomorrow. In summary. I booked I transaction into a new Bank account 100,000 Euro in a EURO bank account .. for a US company (USD) .. I used Exchange Rate 1.1 for Jan, 1.2 for Feb, 1.3 for March, 1.4 for April, 1.5 for May, 1.6 for June. The transaction date for the deposit was January 06, exchange rate was 1:1.

Deposit 100K Euro = 100K USD

Jan you would expect 110K USD

Feb 120K USD

March 130K USD

April 140K USD

May 150K USD

(would you agree based on your comments above, that should be the expected calculation)?

The balance sheet shows 100K across all months. Which is the transaction rate.

Environment Odoo 13. (I am stating that as Odoo 14 has a revaluation APP to book entries, we have been testing for the past 2 weeks and sent comments on it earlier today).

The comment about missing something, for better clarity (as you are right, it is too broad, apology for that).

1- Is there a setting to toggle to enable that revaluation?

2- Is there an account configuration or it seems to be on the transaction currency.

- may be there is a toggle or setting on the account?

3- Is there setting in the financial report, similar to adding a filter ?

Ray, here is the link to the video as requested. Thanks for looking into this. https://drive.google.com/file/d/1DsJjhviiPAM-8n0sr5Gdo0OmQbVciAF7/view?usp=sharing

I should have pointed this out earlier, I apologize for not doing so. The example I have given is when the balance sheet is made up of two different GL's from two different companies with two different currencies. There is no revaluation of a single GL in a single company with a single base currency. We capture realized gains or losses when payments are posted against receivables and payables, since everything is recorded in the base currency with the "as of that date" equivalent in the secondary currency, allowing us to know whether the difference between that same amount of base currency "as of another date" is a loss or a gain. Please review https://www.odoo.com/forum/help-1/what-options-do-i-have-to-revalue-foreign-currency-holdings-179987 and https://www.odoo.com/forum/help-1/what-is-the-best-way-to-revalue-foreign-currency-receivables-and-payables-held-in-other-currencies-home-currency-euro-foreign-in-usd-178969 for other options.