跳至內容
選單
此問題已被標幟

Exchange difference is supposed to be recorded automatically when reconciling vendor bills with counterpart payments, but I noticed if the reconciliation is with a miscellaneous-type journal entry, it causes partial reconciliation despite the Exchange Difference journal entry being automatically created on bill reconciliation. The exchange difference is only for the FX difference between billing date and payment date, NOT the difference with actual final payment (and whatever its actual FX rate was based on).

For example:

  1. Create Vendor bill for $100, at P57.50/$ on Sept. 15. This is P5,750 in Accounts Payable.
  2. Create a MISC journal entry for its payment (i.e. reversal of Accounts Payable) in local currency on Sept. 16, totaling P5,800 (at P58/$ actual FX). NOTE: Assume on Sept. 16, FX recorded by Odoo is P57.80/$.
  3. Reconcile the Vendor Bill with the MISC journal entry (outstanding credit) to mark it as fully paid. This triggers an additional Exchange Difference journal entry of P30 FX loss (not actual FX loss of P50). P30 is the difference based on FX rates recorded by Odoo on the transaction dates (9/15 - P57.50/$, 9/16 - P57.80).
  4. On viewing the Accounting >> Reconcile list, I see that the reconciled transactions are just partial (Match numbering with "P" prefix). Clicking on the Matching number opens the list partially reconciled.
  5. I thought that if I select all partially reconciled transactions and click RECONCILE button to enter the "write-off" (for the additional exchange difference), it will only create 1 entry. Instead, two entries appear: (1) a manual write-off entry is recorded as zero (or some small difference), and (2) automatic recording of the actual difference added in the default Exchange Difference journal.
  6. Workaround I'm thinking is instead of doing #5 above, I check the residual and manually create the Exchange Difference journal entry, then go back to #4 and reconcile everything.

Is this a bug or by design? If payment was done using a bank journal instead, this wouldn't be happening.

頭像
捨棄
最佳答案

Hi,


What you are seeing is expected behavior in Odoo rather than a bug. When payments are made through a proper Bank or Cash journal, Odoo recognizes these as settlement events. In that case, the system automatically calculates the realized foreign exchange difference between the bill date and the payment date, posts a single adjustment entry to the Exchange Difference journal, and marks the reconciliation as fully closed.


However, when you use a Miscellaneous journal to clear a vendor bill, Odoo does not treat this as an actual payment. Instead, it only posts an unrealized exchange difference based on Odoo’s daily rates at the transaction dates, and then leaves the reconciliation as partial. If you try to finalize it by reconciling the residual, Odoo adds an extra adjustment: one for the manual write-off and another in the Exchange Difference journal. This is why you end up with two entries instead of one.


The partial reconciliation you see (the “P…” number) is Odoo’s safeguard to show that in its logic, the transaction is not fully settled in foreign currency terms. To avoid this, the recommended approach is to use Bank journals for payments whenever possible. If you must use a Miscellaneous journal, you need to either manually create the exchange difference entry before reconciliation or customize the reconciliation behavior so that Misc journals are treated like Bank journals.


Hope it helps

頭像
捨棄
作者

Thanks for this. Yeah, I have a very specific use case where I need to use a miscellaneous type of entry to recognize payment of a bill (e.g., for start-up situation where a shareholder directly pays for an expense and "charges" it to pending additional paid capital while company is still in the process of setting up a corporate bank account).

From what you mentioned about having two entries instead of one when doing final reconciliation of residual, actually there would be three additional... The first one would be the automatic entry once payment and bill are reconciled, and the other two would be the final reconciliation of residual (one the manual write-off, and the other the additional automatic exchange difference entry for some reason... Weirdly enough, sometimes even if the manual write-off has value before saving it, it ends up with ZERO value and the simultaneous automatic entry gets all the value). I've been trying to test this behavior in a test DB over and over and having somewhat inconsistent behavior.

相關帖文 回覆 瀏覽次數 活動
3
10月 25
122
3
10月 25
218
0
10月 25
4
0
10月 25
3
2
10月 25
279