fix: range 4 for ageing filter added in the AP/AR report (#17715)
This commit is contained in:
parent
fd4815da53
commit
0c2e3c77a3
@ -44,6 +44,13 @@ frappe.query_reports["Accounts Payable"] = {
|
|||||||
"default": "90",
|
"default": "90",
|
||||||
"reqd": 1
|
"reqd": 1
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"fieldname":"range4",
|
||||||
|
"label": __("Ageing Range 4"),
|
||||||
|
"fieldtype": "Int",
|
||||||
|
"default": "120",
|
||||||
|
"reqd": 1
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"fieldname":"finance_book",
|
"fieldname":"finance_book",
|
||||||
"label": __("Finance Book"),
|
"label": __("Finance Book"),
|
||||||
|
@ -44,6 +44,13 @@ frappe.query_reports["Accounts Payable Summary"] = {
|
|||||||
"default": "90",
|
"default": "90",
|
||||||
"reqd": 1
|
"reqd": 1
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"fieldname":"range4",
|
||||||
|
"label": __("Ageing Range 4"),
|
||||||
|
"fieldtype": "Int",
|
||||||
|
"default": "120",
|
||||||
|
"reqd": 1
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"fieldname":"finance_book",
|
"fieldname":"finance_book",
|
||||||
"label": __("Finance Book"),
|
"label": __("Finance Book"),
|
||||||
|
@ -44,6 +44,13 @@ frappe.query_reports["Accounts Receivable"] = {
|
|||||||
"default": "90",
|
"default": "90",
|
||||||
"reqd": 1
|
"reqd": 1
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"fieldname":"range4",
|
||||||
|
"label": __("Ageing Range 4"),
|
||||||
|
"fieldtype": "Int",
|
||||||
|
"default": "120",
|
||||||
|
"reqd": 1
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"fieldname":"finance_book",
|
"fieldname":"finance_book",
|
||||||
"label": __("Finance Book"),
|
"label": __("Finance Book"),
|
||||||
|
@ -100,11 +100,14 @@ class ReceivablePayableReport(object):
|
|||||||
self.filters["range2"] = "60"
|
self.filters["range2"] = "60"
|
||||||
if not "range3" in self.filters:
|
if not "range3" in self.filters:
|
||||||
self.filters["range3"] = "90"
|
self.filters["range3"] = "90"
|
||||||
|
if not "range4" in self.filters:
|
||||||
|
self.filters["range4"] = "120"
|
||||||
|
|
||||||
for label in ("0-{range1}".format(range1=self.filters["range1"]),
|
for label in ("0-{range1}".format(range1=self.filters["range1"]),
|
||||||
"{range1}-{range2}".format(range1=cint(self.filters["range1"])+ 1, range2=self.filters["range2"]),
|
"{range1}-{range2}".format(range1=cint(self.filters["range1"])+ 1, range2=self.filters["range2"]),
|
||||||
"{range2}-{range3}".format(range2=cint(self.filters["range2"])+ 1, range3=self.filters["range3"]),
|
"{range2}-{range3}".format(range2=cint(self.filters["range2"])+ 1, range3=self.filters["range3"]),
|
||||||
"{range3}-{above}".format(range3=cint(self.filters["range3"])+ 1, above=_("Above"))):
|
"{range3}-{range4}".format(range3=cint(self.filters["range3"])+ 1, range4=self.filters["range4"]),
|
||||||
|
"{range4}-{above}".format(range4=cint(self.filters["range4"])+ 1, above=_("Above"))):
|
||||||
columns.append({
|
columns.append({
|
||||||
"label": label,
|
"label": label,
|
||||||
"fieldname":label,
|
"fieldname":label,
|
||||||
@ -329,18 +332,17 @@ class ReceivablePayableReport(object):
|
|||||||
entry_date = gle.posting_date
|
entry_date = gle.posting_date
|
||||||
|
|
||||||
row += get_ageing_data(cint(self.filters.range1), cint(self.filters.range2),
|
row += get_ageing_data(cint(self.filters.range1), cint(self.filters.range2),
|
||||||
cint(self.filters.range3), self.age_as_on, entry_date, outstanding_amount)
|
cint(self.filters.range3), cint(self.filters.range4), self.age_as_on, entry_date, outstanding_amount)
|
||||||
|
|
||||||
|
|
||||||
# issue 6371-Ageing buckets should not have amounts if due date is not reached
|
# issue 6371-Ageing buckets should not have amounts if due date is not reached
|
||||||
if self.filters.ageing_based_on == "Due Date" \
|
if self.filters.ageing_based_on == "Due Date" \
|
||||||
and getdate(due_date) > getdate(self.filters.report_date):
|
and getdate(due_date) > getdate(self.filters.report_date):
|
||||||
row[-1]=row[-2]=row[-3]=row[-4]=0
|
row[-1]=row[-2]=row[-3]=row[-4]=row[-5]=0
|
||||||
|
|
||||||
if self.filters.ageing_based_on == "Supplier Invoice Date" \
|
if self.filters.ageing_based_on == "Supplier Invoice Date" \
|
||||||
and getdate(bill_date) > getdate(self.filters.report_date):
|
and getdate(bill_date) > getdate(self.filters.report_date):
|
||||||
|
|
||||||
row[-1]=row[-2]=row[-3]=row[-4]=0
|
row[-1]=row[-2]=row[-3]=row[-4]=row[-5]=0
|
||||||
|
|
||||||
if self.filters.get(scrub(args.get("party_type"))):
|
if self.filters.get(scrub(args.get("party_type"))):
|
||||||
row.append(gle.account_currency)
|
row.append(gle.account_currency)
|
||||||
@ -586,13 +588,13 @@ class ReceivablePayableReport(object):
|
|||||||
return payment_term_map
|
return payment_term_map
|
||||||
|
|
||||||
def get_chart_data(self, columns, data):
|
def get_chart_data(self, columns, data):
|
||||||
ageing_columns = columns[self.ageing_col_idx_start : self.ageing_col_idx_start+4]
|
ageing_columns = columns[self.ageing_col_idx_start : self.ageing_col_idx_start+5]
|
||||||
|
|
||||||
rows = []
|
rows = []
|
||||||
for d in data:
|
for d in data:
|
||||||
rows.append(
|
rows.append(
|
||||||
{
|
{
|
||||||
'values': d[self.ageing_col_idx_start : self.ageing_col_idx_start+4]
|
'values': d[self.ageing_col_idx_start : self.ageing_col_idx_start+5]
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -611,21 +613,22 @@ def execute(filters=None):
|
|||||||
}
|
}
|
||||||
return ReceivablePayableReport(filters).run(args)
|
return ReceivablePayableReport(filters).run(args)
|
||||||
|
|
||||||
def get_ageing_data(first_range, second_range, third_range, age_as_on, entry_date, outstanding_amount):
|
def get_ageing_data(first_range, second_range, third_range,
|
||||||
# [0-30, 30-60, 60-90, 90-above]
|
fourth_range, age_as_on, entry_date, outstanding_amount):
|
||||||
outstanding_range = [0.0, 0.0, 0.0, 0.0]
|
# [0-30, 30-60, 60-90, 90-120, 120-above]
|
||||||
|
outstanding_range = [0.0, 0.0, 0.0, 0.0, 0.0]
|
||||||
|
|
||||||
if not (age_as_on and entry_date):
|
if not (age_as_on and entry_date):
|
||||||
return [0] + outstanding_range
|
return [0] + outstanding_range
|
||||||
|
|
||||||
age = (getdate(age_as_on) - getdate(entry_date)).days or 0
|
age = (getdate(age_as_on) - getdate(entry_date)).days or 0
|
||||||
index = None
|
index = None
|
||||||
for i, days in enumerate([first_range, second_range, third_range]):
|
for i, days in enumerate([first_range, second_range, third_range, fourth_range]):
|
||||||
if age <= days:
|
if age <= days:
|
||||||
index = i
|
index = i
|
||||||
break
|
break
|
||||||
|
|
||||||
if index is None: index = 3
|
if index is None: index = 4
|
||||||
outstanding_range[index] = outstanding_amount
|
outstanding_range[index] = outstanding_amount
|
||||||
|
|
||||||
return [age] + outstanding_range
|
return [age] + outstanding_range
|
||||||
|
@ -44,6 +44,13 @@ frappe.query_reports["Accounts Receivable Summary"] = {
|
|||||||
"default": "90",
|
"default": "90",
|
||||||
"reqd": 1
|
"reqd": 1
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"fieldname":"range4",
|
||||||
|
"label": __("Ageing Range 4"),
|
||||||
|
"fieldtype": "Int",
|
||||||
|
"default": "120",
|
||||||
|
"reqd": 1
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"fieldname":"finance_book",
|
"fieldname":"finance_book",
|
||||||
"label": __("Finance Book"),
|
"label": __("Finance Book"),
|
||||||
|
@ -82,8 +82,15 @@ class AccountsReceivableSummary(ReceivablePayableReport):
|
|||||||
"width": 160
|
"width": 160
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label": _(str(self.filters.range3) + _("-Above")),
|
"label": _(str(self.filters.range3) + "-" + str(self.filters.range4)),
|
||||||
"fieldname": scrub(str(self.filters.range3) + _("-Above")),
|
"fieldname": scrub(str(self.filters.range3) + "-" + str(self.filters.range4)),
|
||||||
|
"fieldtype": "Currency",
|
||||||
|
"options": "currency",
|
||||||
|
"width": 160
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": _(str(self.filters.range4) + _("-Above")),
|
||||||
|
"fieldname": scrub(str(self.filters.range4) + _("-Above")),
|
||||||
"fieldtype": "Currency",
|
"fieldtype": "Currency",
|
||||||
"options": "currency",
|
"options": "currency",
|
||||||
"width": 160
|
"width": 160
|
||||||
@ -152,7 +159,7 @@ class AccountsReceivableSummary(ReceivablePayableReport):
|
|||||||
|
|
||||||
row += [
|
row += [
|
||||||
party_dict.invoiced_amt, paid_amt, party_dict.credit_amt, party_dict.outstanding_amt,
|
party_dict.invoiced_amt, paid_amt, party_dict.credit_amt, party_dict.outstanding_amt,
|
||||||
party_dict.range1, party_dict.range2, party_dict.range3, party_dict.range4,
|
party_dict.range1, party_dict.range2, party_dict.range3, party_dict.range4, party_dict.range5
|
||||||
]
|
]
|
||||||
|
|
||||||
if args.get("party_type") == "Customer":
|
if args.get("party_type") == "Customer":
|
||||||
@ -178,6 +185,7 @@ class AccountsReceivableSummary(ReceivablePayableReport):
|
|||||||
"range2": 0,
|
"range2": 0,
|
||||||
"range3": 0,
|
"range3": 0,
|
||||||
"range4": 0,
|
"range4": 0,
|
||||||
|
"range5": 0,
|
||||||
"sales_person": []
|
"sales_person": []
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
@ -209,7 +217,7 @@ class AccountsReceivableSummary(ReceivablePayableReport):
|
|||||||
cols += ["bill_no", "bill_date"]
|
cols += ["bill_no", "bill_date"]
|
||||||
|
|
||||||
cols += ["invoiced_amt", "paid_amt", "credit_amt",
|
cols += ["invoiced_amt", "paid_amt", "credit_amt",
|
||||||
"outstanding_amt", "age", "range1", "range2", "range3", "range4", "currency", "pdc/lc_date", "pdc/lc_ref",
|
"outstanding_amt", "age", "range1", "range2", "range3", "range4", "range5", "currency", "pdc/lc_date", "pdc/lc_ref",
|
||||||
"pdc/lc_amount"]
|
"pdc/lc_amount"]
|
||||||
|
|
||||||
if args.get("party_type") == "Supplier":
|
if args.get("party_type") == "Supplier":
|
||||||
|
Loading…
x
Reference in New Issue
Block a user