Merge pull request #37869 from ruthra-kumar/reconcile_only_on_voucher

refactor: 'group only by voucher' flag in AR/AP report
This commit is contained in:
ruthra kumar 2023-11-03 12:29:33 +05:30 committed by GitHub
commit a9372c42cd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 32 additions and 6 deletions

View File

@ -143,7 +143,13 @@ frappe.query_reports["Accounts Payable"] = {
"fieldname": "show_future_payments", "fieldname": "show_future_payments",
"label": __("Show Future Payments"), "label": __("Show Future Payments"),
"fieldtype": "Check", "fieldtype": "Check",
},
{
"fieldname": "ignore_accounts",
"label": __("Group by Voucher"),
"fieldtype": "Check",
} }
], ],
"formatter": function(value, row, column, data, default_formatter) { "formatter": function(value, row, column, data, default_formatter) {

View File

@ -172,7 +172,13 @@ frappe.query_reports["Accounts Receivable"] = {
"fieldname": "show_remarks", "fieldname": "show_remarks",
"label": __("Show Remarks"), "label": __("Show Remarks"),
"fieldtype": "Check", "fieldtype": "Check",
},
{
"fieldname": "ignore_accounts",
"label": __("Group by Voucher"),
"fieldtype": "Check",
} }
], ],
"formatter": function(value, row, column, data, default_formatter) { "formatter": function(value, row, column, data, default_formatter) {

View File

@ -116,7 +116,12 @@ class ReceivablePayableReport(object):
# build all keys, since we want to exclude vouchers beyond the report date # build all keys, since we want to exclude vouchers beyond the report date
for ple in self.ple_entries: for ple in self.ple_entries:
# get the balance object for voucher_type # get the balance object for voucher_type
if self.filters.get("ingore_accounts"):
key = (ple.voucher_type, ple.voucher_no, ple.party)
else:
key = (ple.account, ple.voucher_type, ple.voucher_no, ple.party) key = (ple.account, ple.voucher_type, ple.voucher_no, ple.party)
if not key in self.voucher_balance: if not key in self.voucher_balance:
self.voucher_balance[key] = frappe._dict( self.voucher_balance[key] = frappe._dict(
voucher_type=ple.voucher_type, voucher_type=ple.voucher_type,
@ -183,6 +188,9 @@ class ReceivablePayableReport(object):
): ):
return return
if self.filters.get("ingore_accounts"):
key = (ple.against_voucher_type, ple.against_voucher_no, ple.party)
else:
key = (ple.account, ple.against_voucher_type, ple.against_voucher_no, ple.party) key = (ple.account, ple.against_voucher_type, ple.against_voucher_no, ple.party)
# If payment is made against credit note # If payment is made against credit note
@ -192,12 +200,18 @@ class ReceivablePayableReport(object):
if ple.against_voucher_no in self.return_entries: if ple.against_voucher_no in self.return_entries:
return_against = self.return_entries.get(ple.against_voucher_no) return_against = self.return_entries.get(ple.against_voucher_no)
if return_against: if return_against:
if self.filters.get("ingore_accounts"):
key = (ple.against_voucher_type, return_against, ple.party)
else:
key = (ple.account, ple.against_voucher_type, return_against, ple.party) key = (ple.account, ple.against_voucher_type, return_against, ple.party)
row = self.voucher_balance.get(key) row = self.voucher_balance.get(key)
if not row: if not row:
# no invoice, this is an invoice / stand-alone payment / credit note # no invoice, this is an invoice / stand-alone payment / credit note
if self.filters.get("ingore_accounts"):
row = self.voucher_balance.get((ple.voucher_type, ple.voucher_no, ple.party))
else:
row = self.voucher_balance.get((ple.account, ple.voucher_type, ple.voucher_no, ple.party)) row = self.voucher_balance.get((ple.account, ple.voucher_type, ple.voucher_no, ple.party))
row.party_type = ple.party_type row.party_type = ple.party_type