fix: use most reliable section reference per report line
This commit is contained in:
parent
62bbcbc7ef
commit
b5be17c6df
@ -46,12 +46,10 @@ def get_result(
|
|||||||
|
|
||||||
out = []
|
out = []
|
||||||
for name, details in gle_map.items():
|
for name, details in gle_map.items():
|
||||||
tax_amount, total_amount, grand_total, base_total = 0, 0, 0, 0
|
|
||||||
bill_no, bill_date = "", ""
|
|
||||||
tax_withholding_category = tax_category_map.get(name)
|
|
||||||
rate = tax_rate_map.get(tax_withholding_category)
|
|
||||||
|
|
||||||
for entry in details:
|
for entry in details:
|
||||||
|
tax_amount, total_amount, grand_total, base_total = 0, 0, 0, 0
|
||||||
|
tax_withholding_category, rate = None, None
|
||||||
|
bill_no, bill_date = "", ""
|
||||||
party = entry.party or entry.against
|
party = entry.party or entry.against
|
||||||
posting_date = entry.posting_date
|
posting_date = entry.posting_date
|
||||||
voucher_type = entry.voucher_type
|
voucher_type = entry.voucher_type
|
||||||
@ -61,13 +59,20 @@ def get_result(
|
|||||||
if party_list:
|
if party_list:
|
||||||
party = party_list[0]
|
party = party_list[0]
|
||||||
|
|
||||||
|
if entry.account in tds_accounts.keys():
|
||||||
|
tax_amount += entry.credit - entry.debit
|
||||||
|
# infer tax withholding category from the account if it's the single account for this category
|
||||||
|
tax_withholding_category = tds_accounts.get(entry.account)
|
||||||
|
rate = tax_rate_map.get(tax_withholding_category)
|
||||||
|
# or else the consolidated value from the voucher document
|
||||||
|
if not tax_withholding_category:
|
||||||
|
# or else from the party default
|
||||||
|
tax_withholding_category = tax_category_map.get(name)
|
||||||
|
rate = tax_rate_map.get(tax_withholding_category)
|
||||||
if not tax_withholding_category:
|
if not tax_withholding_category:
|
||||||
tax_withholding_category = party_map.get(party, {}).get("tax_withholding_category")
|
tax_withholding_category = party_map.get(party, {}).get("tax_withholding_category")
|
||||||
rate = tax_rate_map.get(tax_withholding_category)
|
rate = tax_rate_map.get(tax_withholding_category)
|
||||||
|
|
||||||
if entry.account in tds_accounts:
|
|
||||||
tax_amount += entry.credit - entry.debit
|
|
||||||
|
|
||||||
if net_total_map.get(name):
|
if net_total_map.get(name):
|
||||||
if voucher_type == "Journal Entry" and tax_amount and rate:
|
if voucher_type == "Journal Entry" and tax_amount and rate:
|
||||||
# back calcalute total amount from rate and tax_amount
|
# back calcalute total amount from rate and tax_amount
|
||||||
@ -282,11 +287,20 @@ def get_tds_docs(filters):
|
|||||||
journal_entry_party_map = frappe._dict()
|
journal_entry_party_map = frappe._dict()
|
||||||
bank_accounts = frappe.get_all("Account", {"is_group": 0, "account_type": "Bank"}, pluck="name")
|
bank_accounts = frappe.get_all("Account", {"is_group": 0, "account_type": "Bank"}, pluck="name")
|
||||||
|
|
||||||
tds_accounts = frappe.get_all(
|
_tds_accounts = frappe.get_all(
|
||||||
"Tax Withholding Account", {"company": filters.get("company")}, pluck="account"
|
"Tax Withholding Account",
|
||||||
|
{"company": filters.get("company")},
|
||||||
|
["account", "parent"],
|
||||||
)
|
)
|
||||||
|
tds_accounts = {}
|
||||||
|
for tds_acc in _tds_accounts:
|
||||||
|
# if it turns out not to be the only tax withholding category, then don't include in the map
|
||||||
|
if tds_accounts.get(tds_acc["account"]):
|
||||||
|
tds_accounts[tds_acc["account"]] = None
|
||||||
|
else:
|
||||||
|
tds_accounts[tds_acc["account"]] = tds_acc["parent"]
|
||||||
|
|
||||||
tds_docs = get_tds_docs_query(filters, bank_accounts, tds_accounts).run(as_dict=True)
|
tds_docs = get_tds_docs_query(filters, bank_accounts, list(tds_accounts.keys())).run(as_dict=True)
|
||||||
|
|
||||||
for d in tds_docs:
|
for d in tds_docs:
|
||||||
if d.voucher_type == "Purchase Invoice":
|
if d.voucher_type == "Purchase Invoice":
|
||||||
|
Loading…
x
Reference in New Issue
Block a user