Use different Sales invoice currency than Sales order currency

We use multi currency setup and we have a Standard Price List in Euro we use for offers and Sales orders. When we deliver the goods and issue the Sales invoice we should write the invoice in local currency (RON), but we get an error message “Incorrect value: Currency must be = EUR”. Is it possible to have the SO in Euro and the SI in RON?

Tried to replicate it. SO was in INR and tried to make SI from it in USD but I got the error message. It’s a validation put in.

You can make a sales invoice separately which would be allowed but not from a Sales Order since it is validating the currency.

@kennethsequeira, I tried your solution, but if I get the items from the SO, same message appears. If I don’t connect the invoice with the SO it is very difficult to find SOs that were not invoiced. For the moment we keep the accounting in a different software, but this could be an improvement for ERPNext in the future. It would be helpful to have a setting or configuration option to have different currencies for SI than SO. Thank you for the prompt reply.

@Ambiflux I understand your situation. I think it’s best to raise a Github issue for this as a feature request. The validation was there for a reason and perhaps you’ll get more clarity on it.

@Ambiflux,
I fully agree that it should be possible to invoice in a different currency… Have you considered to locally remove the validation to see if it works fine? erpnext/accounts/doctype/sales_invoice/sales_invoice.py line 372ff

def validate_with_previous_doc(self):
	super(SalesInvoice, self).validate_with_previous_doc({
		"Sales Order": {
			"ref_dn_field": "sales_order",
			"compare_fields": [["customer", "="], ["company", "="], ["project", "="], ["currency", "="]]

(remove [“currency”, “=”])

I have quickly tried it and it seems to work (I have also removed the currency check for delivery notes)…

2 Likes

@lasalesi
Thank you for the solution. It’s exactly what we need. We have installed the VM version on our server and I cannot locate the “accounts” folder.

Hi @Ambiflux,

the full path is /home/frappe/frappe-bench/apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py

It works. Thanks lasalesi!

Hi, did you report this on github? If so, can you pass me the link for the follow-up?

Thank you!

As we update “Billed Amount” in Sales Order based on the invoice amount in invoice currency, it will update incorrect value in SO. Also there can be other similar issues like that.

In my opinion, if you want to raise invoice in other currency, then don’t link the invoice with Sales Order or amend the Sales Order to change the currency. It is really not a good idea to create an invoice in different currency.

You can stop/close the Sales Order manually to update the status.

And can you give some more information, why are you not maintain multiple price list against multiple currency. That can be a proper solution.