Fix: Logic bug (#19692)

account_groups = [accounts[d]["account_type"] for d in accounts if accounts[d]['is_group'] not in ('', 1)]
  - if accounts[d]['is_group'] not in ('', 1) is wrong because it returns false even if the account is a group.
  - should be if accounts[d]['is_group'] not in ('', 0)

However, the correction provided here:

    account_groups = [accounts[d]["account_type"] for d in accounts if accounts[d]['is_group'] == 1]

is more consistent with the prior statement that extracts ledger (and not group) accounts.
    account_types = [accounts[d]["account_type"] for d in accounts if not accounts[d]['is_group'] == 1]
This commit is contained in:
Joseph Marie Alba 2019-11-28 21:03:20 +08:00 committed by Nabin Hait
parent 9f3276046f
commit 5c2ba0ef9c

View File

@ -185,7 +185,8 @@ def validate_account_types(accounts):
return _("Please identify/create Account (Ledger) for type - {0}").format(' , '.join(missing))
account_types_for_group = ["Bank", "Cash", "Stock"]
account_groups = [accounts[d]["account_type"] for d in accounts if accounts[d]['is_group'] not in ('', 1)]
# fix logic bug
account_groups = [accounts[d]["account_type"] for d in accounts if accounts[d]['is_group'] == 1]
missing = list(set(account_types_for_group) - set(account_groups))
if missing: