Merge pull request #42694 from frappe/mergify/bp/version-14-hotfix/pr-42428
fix: Sort lists before calling itertools.groupby (backport #42428)
This commit is contained in:
@@ -108,7 +108,9 @@ class OpportunitySummaryBySalesStage:
|
|||||||
self.grouped_data = []
|
self.grouped_data = []
|
||||||
|
|
||||||
grouping_key = lambda o: (o["sales_stage"], o[based_on]) # noqa
|
grouping_key = lambda o: (o["sales_stage"], o[based_on]) # noqa
|
||||||
for (sales_stage, _based_on), rows in groupby(self.query_result, grouping_key):
|
for (sales_stage, _based_on), rows in groupby(
|
||||||
|
sorted(self.query_result, key=grouping_key), key=grouping_key
|
||||||
|
):
|
||||||
self.grouped_data.append(
|
self.grouped_data.append(
|
||||||
{
|
{
|
||||||
"sales_stage": sales_stage,
|
"sales_stage": sales_stage,
|
||||||
|
|||||||
@@ -122,7 +122,9 @@ class SalesPipelineAnalytics:
|
|||||||
self.grouped_data = []
|
self.grouped_data = []
|
||||||
|
|
||||||
grouping_key = lambda o: (o.get(self.pipeline_by) or "Not Assigned", o[self.period_by]) # noqa
|
grouping_key = lambda o: (o.get(self.pipeline_by) or "Not Assigned", o[self.period_by]) # noqa
|
||||||
for (pipeline_by, period_by), rows in groupby(self.query_result, grouping_key):
|
for (pipeline_by, period_by), rows in groupby(
|
||||||
|
sorted(self.query_result, key=grouping_key), grouping_key
|
||||||
|
):
|
||||||
self.grouped_data.append(
|
self.grouped_data.append(
|
||||||
{
|
{
|
||||||
self.pipeline_by: pipeline_by,
|
self.pipeline_by: pipeline_by,
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ def get_opp_by_lead_source(from_date, to_date, company):
|
|||||||
summary = {}
|
summary = {}
|
||||||
sales_stages = set()
|
sales_stages = set()
|
||||||
group_key = lambda o: (o["source"], o["sales_stage"]) # noqa
|
group_key = lambda o: (o["source"], o["sales_stage"]) # noqa
|
||||||
for (source, sales_stage), rows in groupby(cp_opportunities, group_key):
|
for (source, sales_stage), rows in groupby(sorted(cp_opportunities, key=group_key), group_key):
|
||||||
summary.setdefault(source, {})[sales_stage] = sum(r["compound_amount"] for r in rows)
|
summary.setdefault(source, {})[sales_stage] = sum(r["compound_amount"] for r in rows)
|
||||||
sales_stages.add(sales_stage)
|
sales_stages.add(sales_stage)
|
||||||
|
|
||||||
|
|||||||
@@ -837,7 +837,8 @@ def create_delivery_note(source_name, target_doc=None):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
for customer, rows in groupby(sales_orders, key=lambda so: so["customer"]):
|
group_key = lambda so: so["customer"] # noqa
|
||||||
|
for customer, rows in groupby(sorted(sales_orders, key=group_key), key=group_key):
|
||||||
sales_dict[customer] = {row.sales_order for row in rows}
|
sales_dict[customer] = {row.sales_order for row in rows}
|
||||||
|
|
||||||
if sales_dict:
|
if sales_dict:
|
||||||
|
|||||||
Reference in New Issue
Block a user