mirror of
https://github.com/frappe/erpnext.git
synced 2026-04-12 19:35:09 +00:00
feat: add accounting dimensions in ledger summary reports
This commit is contained in:
@@ -92,5 +92,27 @@ frappe.query_reports["Customer Ledger Summary"] = {
|
||||
fieldtype: "Data",
|
||||
hidden: 1,
|
||||
},
|
||||
{
|
||||
fieldname: "cost_center",
|
||||
label: __("Cost Center"),
|
||||
fieldtype: "MultiSelectList",
|
||||
get_data: function (txt) {
|
||||
return frappe.db.get_link_options("Cost Center", txt, {
|
||||
company: frappe.query_report.get_filter_value("company"),
|
||||
});
|
||||
},
|
||||
},
|
||||
{
|
||||
fieldname: "project",
|
||||
label: __("Project"),
|
||||
fieldtype: "MultiSelectList",
|
||||
get_data: function (txt) {
|
||||
return frappe.db.get_link_options("Project", txt, {
|
||||
company: frappe.query_report.get_filter_value("company"),
|
||||
});
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
erpnext.utils.add_dimensions("Customer Ledger Summary", 14);
|
||||
|
||||
@@ -6,6 +6,12 @@ import frappe
|
||||
from frappe import _, qb, scrub
|
||||
from frappe.utils import getdate, nowdate
|
||||
|
||||
from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import (
|
||||
get_accounting_dimensions,
|
||||
get_dimension_with_children,
|
||||
)
|
||||
from erpnext.accounts.report.financial_statements import get_cost_centers_with_children
|
||||
|
||||
|
||||
class PartyLedgerSummaryReport:
|
||||
def __init__(self, filters=None):
|
||||
@@ -13,6 +19,12 @@ class PartyLedgerSummaryReport:
|
||||
self.filters.from_date = getdate(self.filters.from_date or nowdate())
|
||||
self.filters.to_date = getdate(self.filters.to_date or nowdate())
|
||||
|
||||
if self.filters.get("cost_center"):
|
||||
self.filters.cost_center = frappe.parse_json(self.filters.get("cost_center"))
|
||||
|
||||
if self.filters.get("project"):
|
||||
self.filters.project = frappe.parse_json(self.filters.get("project"))
|
||||
|
||||
if not self.filters.get("company"):
|
||||
self.filters["company"] = frappe.db.get_single_value("Global Defaults", "default_company")
|
||||
|
||||
@@ -259,7 +271,7 @@ class PartyLedgerSummaryReport:
|
||||
f"""
|
||||
select
|
||||
gle.posting_date, gle.party, gle.voucher_type, gle.voucher_no, gle.against_voucher_type,
|
||||
gle.against_voucher, gle.debit, gle.credit, gle.is_opening {join_field}
|
||||
gle.against_voucher, gle.cost_center, gle.project, gle.debit, gle.credit, gle.is_opening {join_field}
|
||||
from `tabGL Entry` gle
|
||||
{join}
|
||||
where
|
||||
@@ -334,6 +346,27 @@ class PartyLedgerSummaryReport:
|
||||
where supplier_group=%(supplier_group)s)"""
|
||||
)
|
||||
|
||||
if self.filters.get("cost_center"):
|
||||
self.filters.cost_center = get_cost_centers_with_children(self.filters.cost_center)
|
||||
conditions.append("gle.cost_center in %(cost_center)s")
|
||||
|
||||
if self.filters.get("project"):
|
||||
conditions.append("gle.project in %(project)s")
|
||||
|
||||
accounting_dimensions = get_accounting_dimensions(as_list=False)
|
||||
|
||||
if accounting_dimensions:
|
||||
for dimension in accounting_dimensions:
|
||||
if not dimension.disabled and dimension.document_type != "Finance Book":
|
||||
if self.filters.get(dimension.fieldname):
|
||||
if frappe.get_cached_value("DocType", dimension.document_type, "is_tree"):
|
||||
self.filters[dimension.fieldname] = get_dimension_with_children(
|
||||
dimension.document_type, self.filters.get(dimension.fieldname)
|
||||
)
|
||||
conditions.append(f"{dimension.fieldname} in %({dimension.fieldname})s")
|
||||
else:
|
||||
conditions.append(f"{dimension.fieldname} in %({dimension.fieldname})s")
|
||||
|
||||
return " and ".join(conditions)
|
||||
|
||||
def get_return_invoices(self):
|
||||
|
||||
@@ -74,5 +74,27 @@ frappe.query_reports["Supplier Ledger Summary"] = {
|
||||
fieldtype: "Data",
|
||||
hidden: 1,
|
||||
},
|
||||
{
|
||||
fieldname: "cost_center",
|
||||
label: __("Cost Center"),
|
||||
fieldtype: "MultiSelectList",
|
||||
get_data: function (txt) {
|
||||
return frappe.db.get_link_options("Cost Center", txt, {
|
||||
company: frappe.query_report.get_filter_value("company"),
|
||||
});
|
||||
},
|
||||
},
|
||||
{
|
||||
fieldname: "project",
|
||||
label: __("Project"),
|
||||
fieldtype: "MultiSelectList",
|
||||
get_data: function (txt) {
|
||||
return frappe.db.get_link_options("Project", txt, {
|
||||
company: frappe.query_report.get_filter_value("company"),
|
||||
});
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
erpnext.utils.add_dimensions("Supplier Ledger Summary", 11);
|
||||
|
||||
Reference in New Issue
Block a user