fix: Currency validation for default company accounts (#21094)

* fix: Currency validation for default company accounts

* fix: Improve message
This commit is contained in:
Deepesh Garg 2020-04-06 12:43:07 +05:30 committed by GitHub
parent b37f0bb052
commit c01ec7606d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -16,6 +16,7 @@ from frappe.utils.nestedset import NestedSet
from past.builtins import cmp from past.builtins import cmp
import functools import functools
from erpnext.accounts.doctype.account.account import get_account_currency
class Company(NestedSet): class Company(NestedSet):
nsm_parent_field = 'parent_company' nsm_parent_field = 'parent_company'
@ -73,18 +74,22 @@ class Company(NestedSet):
def validate_default_accounts(self): def validate_default_accounts(self):
accounts = [ accounts = [
"default_bank_account", "default_cash_account", ["Default Bank Account", "default_bank_account"], ["Default Cash Account", "default_cash_account"],
"default_receivable_account", "default_payable_account", ["Default Receivable Account", "default_receivable_account"], ["Default Payable Account", "default_payable_account"],
"default_expense_account", "default_income_account", ["Default Expense Account", "default_expense_account"], ["Default Income Account", "default_income_account"],
"stock_received_but_not_billed", "stock_adjustment_account", ["Stock Received But Not Billed Account", "stock_received_but_not_billed"], ["Stock Adjustment Account", "stock_adjustment_account"],
"expenses_included_in_valuation", "default_payroll_payable_account" ["Expense Included In Valuation Account", "expenses_included_in_valuation"], ["Default Payroll Payable Account", "default_payroll_payable_account"]
] ]
for field in accounts: for account in accounts:
if self.get(field): if self.get(account[1]):
for_company = frappe.db.get_value("Account", self.get(field), "company") for_company = frappe.db.get_value("Account", self.get(account[1]), "company")
if for_company != self.name: if for_company != self.name:
frappe.throw(_("Account {0} does not belong to company: {1}").format(self.get(field), self.name)) frappe.throw(_("Account {0} does not belong to company: {1}").format(self.get(account[1]), self.name))
if get_account_currency(self.get(account[1])) != self.default_currency:
frappe.throw(_("""{0} currency must be same as company's default currency.
Please select another account""").format(frappe.bold(account[0])))
def validate_currency(self): def validate_currency(self):
if self.is_new(): if self.is_new():