Skip to content

Commit 407c3cd

Browse files
Shllokkkmergify[bot]
authored andcommitted
feat(report): add service start/end date and amount with roll-ups in deferred revenue/expense report
(cherry picked from commit 8e5692d)
1 parent 3d79dce commit 407c3cd

1 file changed

Lines changed: 27 additions & 1 deletion

File tree

erpnext/accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.py

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ def report_data(self):
4848
Generate report data for output
4949
"""
5050
ret_data = frappe._dict({"name": self.item_name})
51+
ret_data.service_start_date = self.service_start_date
52+
ret_data.service_end_date = self.service_end_date
53+
ret_data.amount = self.base_net_amount
5154
for period in self.period_total:
5255
ret_data[period.key] = period.total
5356
ret_data.indent = 1
@@ -205,6 +208,9 @@ def __init__(self, invoice, items, filters, period_list):
205208
for item in self.uniq_items:
206209
self.items.append(Deferred_Item(item, self, [x for x in items if x.item == item]))
207210

211+
# roll-up amount from all deferred items
212+
self.amount_total = sum(item.base_net_amount for item in self.items)
213+
208214
def calculate_invoice_revenue_expense_for_period(self):
209215
"""
210216
calculate deferred revenue/expense for all items in invoice
@@ -232,7 +238,7 @@ def report_data(self):
232238
generate report data for invoice, includes invoice total
233239
"""
234240
ret_data = []
235-
inv_total = frappe._dict({"name": self.name})
241+
inv_total = frappe._dict({"name": self.name, "amount": self.amount_total})
236242
for x in self.period_total:
237243
inv_total[x.key] = x.total
238244
inv_total.indent = 0
@@ -386,6 +392,24 @@ def calculate_revenue_and_expense(self):
386392
def get_columns(self):
387393
columns = []
388394
columns.append({"label": _("Name"), "fieldname": "name", "fieldtype": "Data", "read_only": 1})
395+
columns.append(
396+
{
397+
"label": _("Service Start Date"),
398+
"fieldname": "service_start_date",
399+
"fieldtype": "Date",
400+
"read_only": 1,
401+
}
402+
)
403+
columns.append(
404+
{
405+
"label": _("Service End Date"),
406+
"fieldname": "service_end_date",
407+
"fieldtype": "Date",
408+
"read_only": 1,
409+
}
410+
)
411+
columns.append({"label": _("Amount"), "fieldname": "amount", "fieldtype": "Currency", "read_only": 1})
412+
389413
for period in self.period_list:
390414
columns.append(
391415
{
@@ -415,6 +439,8 @@ def generate_report_data(self):
415439
elif self.filters.type == "Expense":
416440
total_row = frappe._dict({"name": "Total Deferred Expense"})
417441

442+
total_row["amount"] = sum(inv.amount_total for inv in self.deferred_invoices)
443+
418444
for idx, period in enumerate(self.period_list, 0):
419445
total_row[period.key] = self.period_total[idx].total
420446
ret.append(total_row)

0 commit comments

Comments
 (0)