fix: range 4 for ageing filter added in the AP/AR report (#17715)
diff --git a/erpnext/accounts/report/accounts_payable/accounts_payable.js b/erpnext/accounts/report/accounts_payable/accounts_payable.js
index 9dd552f..9560b2a 100644
--- a/erpnext/accounts/report/accounts_payable/accounts_payable.js
+++ b/erpnext/accounts/report/accounts_payable/accounts_payable.js
@@ -45,6 +45,13 @@
"reqd": 1
},
{
+ "fieldname":"range4",
+ "label": __("Ageing Range 4"),
+ "fieldtype": "Int",
+ "default": "120",
+ "reqd": 1
+ },
+ {
"fieldname":"finance_book",
"label": __("Finance Book"),
"fieldtype": "Link",
diff --git a/erpnext/accounts/report/accounts_payable_summary/accounts_payable_summary.js b/erpnext/accounts/report/accounts_payable_summary/accounts_payable_summary.js
index 31c0193..06499ad 100644
--- a/erpnext/accounts/report/accounts_payable_summary/accounts_payable_summary.js
+++ b/erpnext/accounts/report/accounts_payable_summary/accounts_payable_summary.js
@@ -45,6 +45,13 @@
"reqd": 1
},
{
+ "fieldname":"range4",
+ "label": __("Ageing Range 4"),
+ "fieldtype": "Int",
+ "default": "120",
+ "reqd": 1
+ },
+ {
"fieldname":"finance_book",
"label": __("Finance Book"),
"fieldtype": "Link",
diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.js b/erpnext/accounts/report/accounts_receivable/accounts_receivable.js
index 3d19402..27c7993 100644
--- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.js
+++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.js
@@ -45,6 +45,13 @@
"reqd": 1
},
{
+ "fieldname":"range4",
+ "label": __("Ageing Range 4"),
+ "fieldtype": "Int",
+ "default": "120",
+ "reqd": 1
+ },
+ {
"fieldname":"finance_book",
"label": __("Finance Book"),
"fieldtype": "Link",
diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
index eb41ef6..f277a8b 100755
--- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
+++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py
@@ -100,11 +100,14 @@
self.filters["range2"] = "60"
if not "range3" in self.filters:
self.filters["range3"] = "90"
+ if not "range4" in self.filters:
+ self.filters["range4"] = "120"
for label in ("0-{range1}".format(range1=self.filters["range1"]),
"{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"]),
- "{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({
"label": label,
"fieldname":label,
@@ -329,18 +332,17 @@
entry_date = gle.posting_date
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
if self.filters.ageing_based_on == "Due 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" \
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"))):
row.append(gle.account_currency)
@@ -586,13 +588,13 @@
return payment_term_map
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 = []
for d in data:
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 @@
}
return ReceivablePayableReport(filters).run(args)
-def get_ageing_data(first_range, second_range, third_range, age_as_on, entry_date, outstanding_amount):
- # [0-30, 30-60, 60-90, 90-above]
- outstanding_range = [0.0, 0.0, 0.0, 0.0]
+def get_ageing_data(first_range, second_range, third_range,
+ fourth_range, age_as_on, entry_date, outstanding_amount):
+ # [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):
return [0] + outstanding_range
age = (getdate(age_as_on) - getdate(entry_date)).days or 0
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:
index = i
break
- if index is None: index = 3
+ if index is None: index = 4
outstanding_range[index] = outstanding_amount
return [age] + outstanding_range
diff --git a/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.js b/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.js
index 47b087d..f9162ad 100644
--- a/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.js
+++ b/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.js
@@ -45,6 +45,13 @@
"reqd": 1
},
{
+ "fieldname":"range4",
+ "label": __("Ageing Range 4"),
+ "fieldtype": "Int",
+ "default": "120",
+ "reqd": 1
+ },
+ {
"fieldname":"finance_book",
"label": __("Finance Book"),
"fieldtype": "Link",
diff --git a/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.py b/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.py
index 244aa8a..ec24aec 100644
--- a/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.py
+++ b/erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.py
@@ -82,8 +82,15 @@
"width": 160
},
{
- "label": _(str(self.filters.range3) + _("-Above")),
- "fieldname": scrub(str(self.filters.range3) + _("-Above")),
+ "label": _(str(self.filters.range3) + "-" + str(self.filters.range4)),
+ "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",
"options": "currency",
"width": 160
@@ -152,7 +159,7 @@
row += [
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":
@@ -178,6 +185,7 @@
"range2": 0,
"range3": 0,
"range4": 0,
+ "range5": 0,
"sales_person": []
})
)
@@ -209,7 +217,7 @@
cols += ["bill_no", "bill_date"]
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"]
if args.get("party_type") == "Supplier":