mirror of
https://github.com/frappe/erpnext.git
synced 2026-04-11 19:05:08 +00:00
feat(report): add service start/end date and amount with roll-ups in deferred revenue/expense report
(cherry picked from commit 8e5692d8a3)
This commit is contained in:
@@ -48,6 +48,9 @@ class Deferred_Item:
|
|||||||
Generate report data for output
|
Generate report data for output
|
||||||
"""
|
"""
|
||||||
ret_data = frappe._dict({"name": self.item_name})
|
ret_data = frappe._dict({"name": self.item_name})
|
||||||
|
ret_data.service_start_date = self.service_start_date
|
||||||
|
ret_data.service_end_date = self.service_end_date
|
||||||
|
ret_data.amount = self.base_net_amount
|
||||||
for period in self.period_total:
|
for period in self.period_total:
|
||||||
ret_data[period.key] = period.total
|
ret_data[period.key] = period.total
|
||||||
ret_data.indent = 1
|
ret_data.indent = 1
|
||||||
@@ -205,6 +208,9 @@ class Deferred_Invoice:
|
|||||||
for item in self.uniq_items:
|
for item in self.uniq_items:
|
||||||
self.items.append(Deferred_Item(item, self, [x for x in items if x.item == item]))
|
self.items.append(Deferred_Item(item, self, [x for x in items if x.item == item]))
|
||||||
|
|
||||||
|
# roll-up amount from all deferred items
|
||||||
|
self.amount_total = sum(item.base_net_amount for item in self.items)
|
||||||
|
|
||||||
def calculate_invoice_revenue_expense_for_period(self):
|
def calculate_invoice_revenue_expense_for_period(self):
|
||||||
"""
|
"""
|
||||||
calculate deferred revenue/expense for all items in invoice
|
calculate deferred revenue/expense for all items in invoice
|
||||||
@@ -232,7 +238,7 @@ class Deferred_Invoice:
|
|||||||
generate report data for invoice, includes invoice total
|
generate report data for invoice, includes invoice total
|
||||||
"""
|
"""
|
||||||
ret_data = []
|
ret_data = []
|
||||||
inv_total = frappe._dict({"name": self.name})
|
inv_total = frappe._dict({"name": self.name, "amount": self.amount_total})
|
||||||
for x in self.period_total:
|
for x in self.period_total:
|
||||||
inv_total[x.key] = x.total
|
inv_total[x.key] = x.total
|
||||||
inv_total.indent = 0
|
inv_total.indent = 0
|
||||||
@@ -386,6 +392,24 @@ class Deferred_Revenue_and_Expense_Report:
|
|||||||
def get_columns(self):
|
def get_columns(self):
|
||||||
columns = []
|
columns = []
|
||||||
columns.append({"label": _("Name"), "fieldname": "name", "fieldtype": "Data", "read_only": 1})
|
columns.append({"label": _("Name"), "fieldname": "name", "fieldtype": "Data", "read_only": 1})
|
||||||
|
columns.append(
|
||||||
|
{
|
||||||
|
"label": _("Service Start Date"),
|
||||||
|
"fieldname": "service_start_date",
|
||||||
|
"fieldtype": "Date",
|
||||||
|
"read_only": 1,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
columns.append(
|
||||||
|
{
|
||||||
|
"label": _("Service End Date"),
|
||||||
|
"fieldname": "service_end_date",
|
||||||
|
"fieldtype": "Date",
|
||||||
|
"read_only": 1,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
columns.append({"label": _("Amount"), "fieldname": "amount", "fieldtype": "Currency", "read_only": 1})
|
||||||
|
|
||||||
for period in self.period_list:
|
for period in self.period_list:
|
||||||
columns.append(
|
columns.append(
|
||||||
{
|
{
|
||||||
@@ -415,6 +439,8 @@ class Deferred_Revenue_and_Expense_Report:
|
|||||||
elif self.filters.type == "Expense":
|
elif self.filters.type == "Expense":
|
||||||
total_row = frappe._dict({"name": "Total Deferred Expense"})
|
total_row = frappe._dict({"name": "Total Deferred Expense"})
|
||||||
|
|
||||||
|
total_row["amount"] = sum(inv.amount_total for inv in self.deferred_invoices)
|
||||||
|
|
||||||
for idx, period in enumerate(self.period_list, 0):
|
for idx, period in enumerate(self.period_list, 0):
|
||||||
total_row[period.key] = self.period_total[idx].total
|
total_row[period.key] = self.period_total[idx].total
|
||||||
ret.append(total_row)
|
ret.append(total_row)
|
||||||
|
|||||||
Reference in New Issue
Block a user