refactor: avoid relying only on against in tds docs query
(cherry picked from commit 705dadae8e3b49e751184b14323ba2686e5342cc)
This commit is contained in:
parent
9675da6f38
commit
7abe5d9905
@ -70,6 +70,7 @@ def get_result(
|
|||||||
if net_total_map.get(name):
|
if net_total_map.get(name):
|
||||||
if voucher_type == "Journal Entry":
|
if voucher_type == "Journal Entry":
|
||||||
# back calcalute total amount from rate and tax_amount
|
# back calcalute total amount from rate and tax_amount
|
||||||
|
if rate:
|
||||||
total_amount = grand_total = base_total = tax_amount / (rate / 100)
|
total_amount = grand_total = base_total = tax_amount / (rate / 100)
|
||||||
else:
|
else:
|
||||||
total_amount, grand_total, base_total = net_total_map.get(name)
|
total_amount, grand_total, base_total = net_total_map.get(name)
|
||||||
@ -253,27 +254,7 @@ def get_tds_docs(filters):
|
|||||||
"Tax Withholding Account", {"company": filters.get("company")}, pluck="account"
|
"Tax Withholding Account", {"company": filters.get("company")}, pluck="account"
|
||||||
)
|
)
|
||||||
|
|
||||||
query_filters = {
|
tds_docs = get_tds_docs_query(filters, bank_accounts, tds_accounts).run(as_dict=True)
|
||||||
"account": ("in", tds_accounts),
|
|
||||||
"posting_date": ("between", [filters.get("from_date"), filters.get("to_date")]),
|
|
||||||
"is_cancelled": 0,
|
|
||||||
"against": ("not in", bank_accounts),
|
|
||||||
}
|
|
||||||
|
|
||||||
party = frappe.get_all(filters.get("party_type"), pluck="name")
|
|
||||||
or_filters.update({"against": ("in", party), "voucher_type": "Journal Entry"})
|
|
||||||
|
|
||||||
if filters.get("party"):
|
|
||||||
del query_filters["account"]
|
|
||||||
del query_filters["against"]
|
|
||||||
or_filters = {"against": filters.get("party"), "party": filters.get("party")}
|
|
||||||
|
|
||||||
tds_docs = frappe.get_all(
|
|
||||||
"GL Entry",
|
|
||||||
filters=query_filters,
|
|
||||||
or_filters=or_filters,
|
|
||||||
fields=["voucher_no", "voucher_type", "against", "party"],
|
|
||||||
)
|
|
||||||
|
|
||||||
for d in tds_docs:
|
for d in tds_docs:
|
||||||
if d.voucher_type == "Purchase Invoice":
|
if d.voucher_type == "Purchase Invoice":
|
||||||
@ -309,6 +290,47 @@ def get_tds_docs(filters):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def get_tds_docs_query(filters, bank_accounts, tds_accounts):
|
||||||
|
if not tds_accounts:
|
||||||
|
frappe.throw(
|
||||||
|
_("No {} Accounts found for this company.".format(frappe.bold("Tax Withholding"))),
|
||||||
|
title="Accounts Missing Error",
|
||||||
|
)
|
||||||
|
gle = frappe.qb.DocType("GL Entry")
|
||||||
|
query = (
|
||||||
|
frappe.qb.from_(gle)
|
||||||
|
.select("voucher_no", "voucher_type", "against", "party")
|
||||||
|
.where((gle.is_cancelled == 0))
|
||||||
|
)
|
||||||
|
|
||||||
|
if filters.get("from_date"):
|
||||||
|
query = query.where(gle.posting_date >= filters.get("from_date"))
|
||||||
|
if filters.get("to_date"):
|
||||||
|
query = query.where(gle.posting_date <= filters.get("to_date"))
|
||||||
|
|
||||||
|
if bank_accounts:
|
||||||
|
query = query.where(gle.against.notin(bank_accounts))
|
||||||
|
|
||||||
|
if filters.get("party"):
|
||||||
|
party = [filters.get("party")]
|
||||||
|
query = query.where(
|
||||||
|
((gle.account.isin(tds_accounts) & gle.against.isin(party)))
|
||||||
|
| ((gle.voucher_type == "Journal Entry") & (gle.party == filters.get("party")))
|
||||||
|
| gle.party.isin(party)
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
party = frappe.get_all(filters.get("party_type"), pluck="name")
|
||||||
|
query = query.where(
|
||||||
|
((gle.account.isin(tds_accounts) & gle.against.isin(party)))
|
||||||
|
| (
|
||||||
|
(gle.voucher_type == "Journal Entry")
|
||||||
|
& ((gle.party_type == filters.get("party_type")) | (gle.party_type == ""))
|
||||||
|
)
|
||||||
|
| gle.party.isin(party)
|
||||||
|
)
|
||||||
|
return query
|
||||||
|
|
||||||
|
|
||||||
def get_journal_entry_party_map(journal_entries):
|
def get_journal_entry_party_map(journal_entries):
|
||||||
journal_entry_party_map = {}
|
journal_entry_party_map = {}
|
||||||
for d in frappe.db.get_all(
|
for d in frappe.db.get_all(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user