mirror of
https://github.com/frappe/erpnext.git
synced 2026-06-02 19:59:12 +00:00
Merge pull request #55359 from frappe/mergify/bp/version-16-hotfix/pr-55137
fix: use get_query instead of get_all for data fetching (backport #55137)
This commit is contained in:
@@ -191,12 +191,30 @@ class Analytics:
|
|||||||
self.get_sales_transactions_based_on_project()
|
self.get_sales_transactions_based_on_project()
|
||||||
self.get_rows()
|
self.get_rows()
|
||||||
|
|
||||||
|
def _get_permitted_parent_names(self):
|
||||||
|
return frappe.qb.get_query(
|
||||||
|
table=self.filters.doc_type,
|
||||||
|
fields=["name"],
|
||||||
|
filters={
|
||||||
|
"docstatus": 1,
|
||||||
|
"company": ["in", self.filters.company],
|
||||||
|
self.date_field: ("between", [self.filters.from_date, self.filters.to_date]),
|
||||||
|
},
|
||||||
|
ignore_permissions=False,
|
||||||
|
).run(pluck="name")
|
||||||
|
|
||||||
def get_sales_transactions_based_on_order_type(self):
|
def get_sales_transactions_based_on_order_type(self):
|
||||||
if self.filters["value_quantity"] == "Value":
|
if self.filters["value_quantity"] == "Value":
|
||||||
value_field = "base_net_total"
|
value_field = "base_net_total"
|
||||||
else:
|
else:
|
||||||
value_field = "total_qty"
|
value_field = "total_qty"
|
||||||
|
|
||||||
|
permitted_names = self._get_permitted_parent_names()
|
||||||
|
if not permitted_names:
|
||||||
|
self.entries = []
|
||||||
|
self.get_teams()
|
||||||
|
return
|
||||||
|
|
||||||
doctype = DocType(self.filters.doc_type)
|
doctype = DocType(self.filters.doc_type)
|
||||||
|
|
||||||
self.entries = (
|
self.entries = (
|
||||||
@@ -206,12 +224,7 @@ class Analytics:
|
|||||||
doctype[self.date_field],
|
doctype[self.date_field],
|
||||||
doctype[value_field].as_("value_field"),
|
doctype[value_field].as_("value_field"),
|
||||||
)
|
)
|
||||||
.where(
|
.where((doctype.name.isin(permitted_names)) & (IfNull(doctype.order_type, "") != ""))
|
||||||
(doctype.docstatus == 1)
|
|
||||||
& (doctype.company.isin(self.filters.company))
|
|
||||||
& (doctype[self.date_field].between(self.filters.from_date, self.filters.to_date))
|
|
||||||
& (IfNull(doctype.order_type, "") != "")
|
|
||||||
)
|
|
||||||
.orderby(doctype.order_type)
|
.orderby(doctype.order_type)
|
||||||
).run(as_dict=True)
|
).run(as_dict=True)
|
||||||
|
|
||||||
@@ -250,9 +263,12 @@ class Analytics:
|
|||||||
if self.filters.doc_type in ["Sales Invoice", "Purchase Invoice", "Payment Entry"]:
|
if self.filters.doc_type in ["Sales Invoice", "Purchase Invoice", "Payment Entry"]:
|
||||||
filters.update({"is_opening": "No"})
|
filters.update({"is_opening": "No"})
|
||||||
|
|
||||||
self.entries = frappe.get_all(
|
self.entries = frappe.qb.get_query(
|
||||||
self.filters.doc_type, fields=[entity, entity_name, value_field, self.date_field], filters=filters
|
table=self.filters.doc_type,
|
||||||
)
|
fields=[entity, entity_name, value_field, self.date_field],
|
||||||
|
filters=filters,
|
||||||
|
ignore_permissions=False,
|
||||||
|
).run(as_dict=True)
|
||||||
|
|
||||||
self.entity_names = {}
|
self.entity_names = {}
|
||||||
for d in self.entries:
|
for d in self.entries:
|
||||||
@@ -264,6 +280,12 @@ class Analytics:
|
|||||||
else:
|
else:
|
||||||
value_field = "stock_qty"
|
value_field = "stock_qty"
|
||||||
|
|
||||||
|
permitted_names = self._get_permitted_parent_names()
|
||||||
|
if not permitted_names:
|
||||||
|
self.entries = []
|
||||||
|
self.entity_names = {}
|
||||||
|
return
|
||||||
|
|
||||||
doctype = DocType(self.filters.doc_type)
|
doctype = DocType(self.filters.doc_type)
|
||||||
doctype_item = DocType(f"{self.filters.doc_type} Item")
|
doctype_item = DocType(f"{self.filters.doc_type} Item")
|
||||||
|
|
||||||
@@ -278,11 +300,7 @@ class Analytics:
|
|||||||
doctype_item[value_field].as_("value_field"),
|
doctype_item[value_field].as_("value_field"),
|
||||||
doctype[self.date_field],
|
doctype[self.date_field],
|
||||||
)
|
)
|
||||||
.where(
|
.where((doctype_item.docstatus == 1) & (doctype.name.isin(permitted_names)))
|
||||||
(doctype_item.docstatus == 1)
|
|
||||||
& (doctype.company.isin(self.filters.company))
|
|
||||||
& (doctype[self.date_field].between(self.filters.from_date, self.filters.to_date))
|
|
||||||
)
|
|
||||||
).run(as_dict=True)
|
).run(as_dict=True)
|
||||||
|
|
||||||
self.entity_names = {}
|
self.entity_names = {}
|
||||||
@@ -312,11 +330,12 @@ class Analytics:
|
|||||||
if self.filters.doc_type in ["Sales Invoice", "Purchase Invoice", "Payment Entry"]:
|
if self.filters.doc_type in ["Sales Invoice", "Purchase Invoice", "Payment Entry"]:
|
||||||
filters.update({"is_opening": "No"})
|
filters.update({"is_opening": "No"})
|
||||||
|
|
||||||
self.entries = frappe.get_all(
|
self.entries = frappe.qb.get_query(
|
||||||
self.filters.doc_type,
|
table=self.filters.doc_type,
|
||||||
fields=[entity_field, value_field, self.date_field],
|
fields=[entity_field, value_field, self.date_field],
|
||||||
filters=filters,
|
filters=filters,
|
||||||
)
|
ignore_permissions=False,
|
||||||
|
).run(as_dict=True)
|
||||||
self.get_groups()
|
self.get_groups()
|
||||||
|
|
||||||
def get_sales_transactions_based_on_item_group(self):
|
def get_sales_transactions_based_on_item_group(self):
|
||||||
@@ -325,6 +344,12 @@ class Analytics:
|
|||||||
else:
|
else:
|
||||||
value_field = "qty"
|
value_field = "qty"
|
||||||
|
|
||||||
|
permitted_names = self._get_permitted_parent_names()
|
||||||
|
if not permitted_names:
|
||||||
|
self.entries = []
|
||||||
|
self.get_groups()
|
||||||
|
return
|
||||||
|
|
||||||
doctype = DocType(self.filters.doc_type)
|
doctype = DocType(self.filters.doc_type)
|
||||||
doctype_item = DocType(f"{self.filters.doc_type} Item")
|
doctype_item = DocType(f"{self.filters.doc_type} Item")
|
||||||
|
|
||||||
@@ -337,11 +362,7 @@ class Analytics:
|
|||||||
doctype_item[value_field].as_("value_field"),
|
doctype_item[value_field].as_("value_field"),
|
||||||
doctype[self.date_field],
|
doctype[self.date_field],
|
||||||
)
|
)
|
||||||
.where(
|
.where((doctype_item.docstatus == 1) & (doctype.name.isin(permitted_names)))
|
||||||
(doctype_item.docstatus == 1)
|
|
||||||
& (doctype.company.isin(self.filters.company))
|
|
||||||
& (doctype[self.date_field].between(self.filters.from_date, self.filters.to_date))
|
|
||||||
)
|
|
||||||
).run(as_dict=True)
|
).run(as_dict=True)
|
||||||
|
|
||||||
self.get_groups()
|
self.get_groups()
|
||||||
@@ -367,9 +388,12 @@ class Analytics:
|
|||||||
if self.filters.doc_type in ["Sales Invoice", "Purchase Invoice", "Payment Entry"]:
|
if self.filters.doc_type in ["Sales Invoice", "Purchase Invoice", "Payment Entry"]:
|
||||||
filters.update({"is_opening": "No"})
|
filters.update({"is_opening": "No"})
|
||||||
|
|
||||||
self.entries = frappe.get_all(
|
self.entries = frappe.qb.get_query(
|
||||||
self.filters.doc_type, fields=[entity, value_field, self.date_field], filters=filters
|
table=self.filters.doc_type,
|
||||||
)
|
fields=[entity, value_field, self.date_field],
|
||||||
|
filters=filters,
|
||||||
|
ignore_permissions=False,
|
||||||
|
).run(as_dict=True)
|
||||||
|
|
||||||
def get_rows(self):
|
def get_rows(self):
|
||||||
self.data = []
|
self.data = []
|
||||||
|
|||||||
Reference in New Issue
Block a user