fix(Company): Do not set default account if left blank (#19131)

* chore: use dict to set_default_account

* fix: dont override expense account if left empty

* fix: set accounts only if new company

* chore: fix alignment

* fix: test cases
This commit is contained in:
Himanshu 2019-09-30 14:56:08 +05:30 committed by Nabin Hait
parent 7d6f52f4ab
commit 201bcaf2ca

View File

@ -64,16 +64,19 @@ class Company(NestedSet):
}) })
def validate_default_accounts(self): def validate_default_accounts(self):
for field in ["default_bank_account", "default_cash_account", accounts = [
"default_bank_account", "default_cash_account",
"default_receivable_account", "default_payable_account", "default_receivable_account", "default_payable_account",
"default_expense_account", "default_income_account", "default_expense_account", "default_income_account",
"stock_received_but_not_billed", "stock_adjustment_account", "stock_received_but_not_billed", "stock_adjustment_account",
"expenses_included_in_valuation", "default_payroll_payable_account"]: "expenses_included_in_valuation", "default_payroll_payable_account"
]
for field in accounts:
if self.get(field): if self.get(field):
for_company = frappe.db.get_value("Account", self.get(field), "company") for_company = frappe.db.get_value("Account", self.get(field), "company")
if for_company != self.name: if for_company != self.name:
frappe.throw(_("Account {0} does not belong to company: {1}") frappe.throw(_("Account {0} does not belong to company: {1}").format(self.get(field), self.name))
.format(self.get(field), self.name))
def validate_currency(self): def validate_currency(self):
if self.is_new(): if self.is_new():
@ -180,21 +183,29 @@ class Company(NestedSet):
self.existing_company = self.parent_company self.existing_company = self.parent_company
def set_default_accounts(self): def set_default_accounts(self):
self._set_default_account("default_cash_account", "Cash") default_accounts = {
self._set_default_account("default_bank_account", "Bank") "default_cash_account": "Cash",
self._set_default_account("round_off_account", "Round Off") "default_bank_account": "Bank",
self._set_default_account("accumulated_depreciation_account", "Accumulated Depreciation") "round_off_account": "Round Off",
self._set_default_account("depreciation_expense_account", "Depreciation") "accumulated_depreciation_account": "Accumulated Depreciation",
self._set_default_account("capital_work_in_progress_account", "Capital Work in Progress") "depreciation_expense_account": "Depreciation",
self._set_default_account("asset_received_but_not_billed", "Asset Received But Not Billed") "capital_work_in_progress_account": "Capital Work in Progress",
self._set_default_account("expenses_included_in_asset_valuation", "Expenses Included In Asset Valuation") "asset_received_but_not_billed": "Asset Received But Not Billed",
"expenses_included_in_asset_valuation": "Expenses Included In Asset Valuation"
}
if self.enable_perpetual_inventory: if self.enable_perpetual_inventory:
self._set_default_account("stock_received_but_not_billed", "Stock Received But Not Billed") default_accounts.update({
self._set_default_account("default_inventory_account", "Stock") "stock_received_but_not_billed": "Stock Received But Not Billed",
self._set_default_account("stock_adjustment_account", "Stock Adjustment") "default_inventory_account": "Stock",
self._set_default_account("expenses_included_in_valuation", "Expenses Included In Valuation") "stock_adjustment_account": "Stock Adjustment",
self._set_default_account("default_expense_account", "Cost of Goods Sold") "expenses_included_in_valuation": "Expenses Included In Valuation",
"default_expense_account": "Cost of Goods Sold"
})
for default_account in default_accounts:
if self.is_new() or frappe.flags.in_test:
self._set_default_account(default_account, default_accounts.get(default_account))
if not self.default_income_account: if not self.default_income_account:
income_account = frappe.db.get_value("Account", income_account = frappe.db.get_value("Account",
@ -243,8 +254,7 @@ class Company(NestedSet):
if self.get(fieldname): if self.get(fieldname):
return return
account = frappe.db.get_value("Account", {"account_type": account_type, account = frappe.db.get_value("Account", {"account_type": account_type, "is_group": 0, "company": self.name})
"is_group": 0, "company": self.name})
if account: if account:
self.db_set(fieldname, account) self.db_set(fieldname, account)