Merge pull request #38257 from ruthra-kumar/optimize_ple_outstanding_query
refactor: optmize outstanding amount query
This commit is contained in:
commit
efd31a429c
@ -1833,6 +1833,28 @@ class QueryPaymentLedger(object):
|
|||||||
Table("outstanding").amount_in_account_currency >= self.max_outstanding
|
Table("outstanding").amount_in_account_currency >= self.max_outstanding
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if self.limit and self.get_invoices:
|
||||||
|
outstanding_vouchers = (
|
||||||
|
qb.from_(ple)
|
||||||
|
.select(
|
||||||
|
ple.against_voucher_no.as_("voucher_no"),
|
||||||
|
Sum(ple.amount_in_account_currency).as_("amount_in_account_currency"),
|
||||||
|
)
|
||||||
|
.where(ple.delinked == 0)
|
||||||
|
.where(Criterion.all(filter_on_against_voucher_no))
|
||||||
|
.where(Criterion.all(self.common_filter))
|
||||||
|
.groupby(ple.against_voucher_type, ple.against_voucher_no, ple.party_type, ple.party)
|
||||||
|
.orderby(ple.posting_date, ple.voucher_no)
|
||||||
|
.having(qb.Field("amount_in_account_currency") > 0)
|
||||||
|
.limit(self.limit)
|
||||||
|
.run()
|
||||||
|
)
|
||||||
|
if outstanding_vouchers:
|
||||||
|
filter_on_voucher_no.append(ple.voucher_no.isin([x[0] for x in outstanding_vouchers]))
|
||||||
|
filter_on_against_voucher_no.append(
|
||||||
|
ple.against_voucher_no.isin([x[0] for x in outstanding_vouchers])
|
||||||
|
)
|
||||||
|
|
||||||
# build query for voucher amount
|
# build query for voucher amount
|
||||||
query_voucher_amount = (
|
query_voucher_amount = (
|
||||||
qb.from_(ple)
|
qb.from_(ple)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user