Closed rtdany10 closed 2 years ago
@deepeshgarg007 please look into this
This looks intentional by this PR: https://github.com/frappe/erpnext/pull/26916
It makes sense to maintain separate accounts if the customer/supplier uses multi currency.
Example: Customer A This customer will be billed in the base currency. (CAD)
Customer A - USD This customer will not use the default receivable account but a receivable account in the USD currency.
Is there a case this approach isn't valid ?
This looks intentional by this PR: #26916
It makes sense to maintain separate accounts if the customer/supplier uses multi currency.
Yes, it's an intentional change. Although I disagree to keeping separate accounts for multi-currency. Why the need?
Example: Customer A This customer will be billed in the base currency. (CAD)
Customer A - USD This customer will not use the default receivable account but a receivable account in the USD currency.
Is there a case this approach isn't valid ?
You mean splitting the customer based on currency and setting defaults for each? I have customers who deal in 4 or 5 currencies. Splitting them would make reports like Accounts Receivable/Payable, General Ledger etc useless. ERP is meant to ease up things :disappointed:
This is a big change, and should have been optional, maybe a checkbox in Accounts Settings.
I have customers who deal in 4 or 5 currencies. Splitting them would make reports like Accounts Receivable/Payable, General Ledger etc useless.
Since the beginning of using ERP we have a separate account for all customers/suppliers for each currency they bill or we bill them with.
I've not tried using a single party account to book invoices against multiple currencies, I'd like to test this out. In my head I'm thinking it would be more difficult. My reasonings are:
Let's say the company base currency is USD and so is the receivables account currency. | Invoice # | Currency | Exc. | Debit | Credit | debit_in_account_currency (USD) | credit_in_account_currency (USD) |
---|---|---|---|---|---|---|---|
0001 | EUR | 1.07 | 300.00 | 0.0 | 321.00 | 0.0 | |
0002 | GBP | 1.26 | 76.50 | 0.0 | 96.39 | 0.00 | |
0003 | CAD | 0.80 | 100 | 0.0 | 80.00 | 0.00 |
I've not tested this, but I'm thinking ERP will generate the Accounts receivable report in USD because that is currency of the receivable account. Therefor a statement will be sent to the customer owing a balance of $497.39 USD.
This surely should not be correct, you'll want to collect in the currency being billed. Not the currency of the receivable account.
This is my thoughts. I'm hoping I can test this out some time tomorrow. I'm curious to see how it actually works in the system.
I've not tested this, but I'm thinking ERP will generate the Accounts receivable report in USD because that is currency of the receivable account. Therefor a statement will be sent to the customer owing a balance of $497.39 USD.
This surely should not be correct, you'll want to collect in the currency being billed. Not the currency of the receivable account.
Accounts Receivable report doesn't show currency, it shows only figures.
I've setup a test where the base currency of the company is USD
I've also setup a customer setup on the default receivable account. (Also USD)
I've added the below invoices exactly.
Invoice # | Currency | Exc. | Debit | Credit | debit_in_account_currency (USD) | credit_in_account_currency (USD) |
---|---|---|---|---|---|---|
0001 | EUR | 1.07 | 300.00 | 0.0 | 321.00 | 0.0 |
0002 | GBP | 1.26 | 76.50 | 0.0 | 96.39 | 0.00 |
0003 | CAD | 0.80 | 100 | 0.0 | 80.00 | 0.00 |
In the first invoice you will see it is booked as € 300.00 and the company currency is booked as $ 321.00. So, we've billed the customer € 300.00 as such they should pay in Euro.
Now, let's check the customer statement. It is shows in USD instead of the billed currency of EUR.
Now, let's check the GL (EUR) balances You will see the amount is € 1.07 off balance.
I think if ERPNext wanted to use this method of billing multiple currencies, the whole multi-currency system will need to be re-written as there are currently too many bugs with this approach.
This is why I opted to create individual Receivable/Payable accounts for my parties that use many currencies.
Still maybe @deepeshgarg007 can weigh in.
Hello @rtdany10,
As per your need we added generic solution for to segregated account receivable entries currency wise in Report. See the Reference : #31278
@nextchamp-saqib I hope it will be helpful for all ERPNext community.
Thanks
@Solufyin As per my understanding this won't solve the issue.
The account currency in @rtdany10 scenario will always be the company base currency for example INR. Therefor, filtering by currency on the accounts receivable report won't be effective as there is only 1 accounts receivable account.
I believe if we want to implement this, the accounts receivable report should show the document billed currency and not the converted amount booked in the receivable account. Even that approach might not be legal, as it is not the "officially" booked amount in the ledger. Probably best to consult an accountant on the matter.
I am okay with this change and have no issues because I was able to convince my clients to change to the new flow of billing, but my concern arises of how such disruptive changes are pushed without communicating it with the community in prior.
When my client raised the issue, my support team couldn't understand the reason behind the issue, because it worked without any issue on their dev instance. By the time the issue was escalated and the developer team was assigned to it, the client had lost a business day. We then had to meet with their accounts team, explain the scenario and had them create separate ledgers.
I hope future changes like these are communicated with the community so that we can prepare ourselves and clients beforehand.
@dj12djdjs @deepeshgarg007 @Solufyin
@dj12djdjs Thank you for explaining the issues exactly in a detailed manner. To add to it as you have already pointed out ERPNext is not yet designed to handle multiple currencies for the same account, all the financial reports are built based on GLEs, and when invoicing is done in the company's account currency that multicurrency value with that exact exchange rate never goes to the GLE
This was only allowed for backward compatibility when multicurrency was introduced for the first time. This had to be stopped at some point, so we decided to do this for the newly created customer masters to soften the blow.
@rtdany10 Point well taken, further, we will communicate beforehand pushing such changes. I will close this issue now
@deepeshgarg007
we decided to do this for the newly created customer masters to soften the blow
Good intentions, but this means that staff will need to remember at what point in time a party was created to choose the correct procedure. To do this change in a major release would have been more appropriate.
Apart from that, I don't see the problem that “had to be stopped”. We've been entering Purchase Invoices in foreign currencies for a while now. Accounting happens in our company currency only. The GL Entries and AP report show the correct value in our company currency.
Basically, we've been able to enter line items in invoice currency, while accounting in company currency only. ERPNext would convert the totals to company currency and create correct GL Entries. This is no longer possible now.
Feel free to reach out for a detailed explanation / proof that our scenario worked before this change.
We just encountered this today and have spent some time trying to figure out the issue. Thank God I searched the forums and found this reference! I absolutely agree with @barredterra and @rtdany10 that this should have been done in a major release (like V14) and should also be optional
This new update is really annoying. We've been using erpnext for many years and now after an update we need to search and figure out what is the problem because everything was working fine until now. You should clearly indicate the issue in the releases notes or on the forum because those kinds of problem are really annoying for non developer users that just want to use the software like it was.
I am using ERPNext through API, so my frontend needs to change to accommodate this which would take time and i have already updated ERPNext to this version.
I have bypassed below functions in the production code to fix this issue temporarily. Will it impact anywhere else?
We've been entering Purchase Invoices in foreign currencies for a while now. Accounting happens in our company currency only. The GL Entries and AP report show the correct value in our company currency.
Basically, we've been able to enter line items in invoice currency, while accounting in company currency only. ERPNext would convert the totals to company currency and create correct GL Entries. This is no longer possible now.
This is exactly the issue that we are facing now.
Closing as https://github.com/frappe/erpnext/pull/31572 is merged.
I am using ERPNext through API, so my frontend needs to change to accommodate this which would take time and i have already updated ERPNext to this version.
I have bypassed below functions in the production code to fix this issue temporarily. Will it impact anywhere else?
https://github.com/frappe/erpnext/blob/832a863d1e1af0a0def8a2305a4376abcc003962/erpnext/accounts/party.py#L391 Is it okkay to bypass party currency validation? I have the same issue. So I want to know the result of this bypass. Please let me know the result.
@yuntan0 don't bypass, enable the allow multi-currency invoices against single party account in Accounts Settings
@yuntan0 don't bypass, enable the allow multi-currency invoices against single party account in Accounts Settings
I have tried already.
But above validation logic block the foreign currency transaction.
Company Currency is CAD Supplier A default currency is USD. But sometimes we have to pay CAD.
I know we can create purchase invoice currency CAD but debit account can be USD. But accounting team said the CAD transaction should not be in currency evaluation.
So I changed debit currency to CAD. Then I can see this message ("Accounting Entry for {0}: {1} can only be made in currency: {2}").format(party_type, party, party_account_currency
Because th supplier already has USD transaction. But my client does not want to seperate the supplier.
Not only supplier but also customer.
Any Idea?
An account can have only 1 base currency. From what I understood, you want to have multiple currency entries in the same account? I'm not very sure of how you are going to manage it.
Normally, if you do a CAD transaction against a USD account, system would calculate the USD value based on exchange rate and post ledger entries in USD only. You can't have both CAD and USD entries in a single account.
If you enable allow multi-currency invoices against single party account in Accounts Settings, all you have to do is select the currency in invoice and change nothing else.
From what I understood, you want to have multiple currency entries in the same account? I'm not very sure of how you are going to manage it.
Yes I know. So in erpnext we can change debit to account or credit to account. Only one chart of account code use one currency. But it should not be belong to Customer and Supplier.
Like a below account code are different. But system does not allow multi currency in same customer.
Customer A (1100111 - Account Receivable - USD) / Sales 4100111 CAD Customer A (1100112 - Account Receivable - CAD) / Sales 4100111 CAD
Information about bug
On first invoice of a new customer, if the currency is different from the ledger currency, system throws error:
Party Account <account name here> currency and document currency should be same
Caused by https://github.com/frappe/erpnext/commit/80c85dd17cf0c0fdcf07d2e0c2151b2852a0c611
Module
accounts
Version
ERPNext: v13.31.1 (HEAD) Frappe Framework: v13.30.0 (HEAD)
Installation method
FrappeCloud
Relevant log output / Stack trace / Full Error Message.