new parent updating logic, made requested changes
diff --git a/erpnext/selling/report/customer_acquisition_and_loyalty/customer_acquisition_and_loyalty.py b/erpnext/selling/report/customer_acquisition_and_loyalty/customer_acquisition_and_loyalty.py
index 38fbd60..88bd9c1 100644
--- a/erpnext/selling/report/customer_acquisition_and_loyalty/customer_acquisition_and_loyalty.py
+++ b/erpnext/selling/report/customer_acquisition_and_loyalty/customer_acquisition_and_loyalty.py
@@ -61,13 +61,13 @@
# key yyyy-mm
columns = [
{
- 'label': 'Year',
+ 'label': _('Year'),
'fieldname': 'year',
'fieldtype': 'Data',
'width': 100
},
{
- 'label': 'Month',
+ 'label': _('Month'),
'fieldname': 'month',
'fieldtype': 'Data',
'width': 100
@@ -136,6 +136,7 @@
repeat = customers_in[name]['repeat'] if condition else [0, 0.0]
temp = {
'territory': name,
+ 'parent_territory': territory_dict[name]['parent'],
'indent': indent,
'new_customers': new[0],
'repeat_customers': repeat[0],
@@ -146,34 +147,18 @@
'bold': 0 if indent else 1
}
data.append(temp)
- node_list = [x for x in territory_dict.keys() if territory_dict[x]['is_group'] == 0]
- root_node = [x for x in territory_dict.keys() if territory_dict[x]['parent'] is None][0]
- root_data = [x for x in data if x['territory'] == root_node][0]
- for node in node_list:
- data = update_groups(node, data, root_node, territory_dict)
+ loop_data = sorted(data, key=lambda k: k['indent'], reverse=True)
- for group in [x for x in territory_dict.keys() if territory_dict[x]['parent'] == root_node]:
- group_data = [x for x in data if x['territory'] == group][0]
- for key in group_data.keys():
- if key not in ['indent', 'territory', 'bold']:
- root_data[key] += group_data[key]
+ for ld in loop_data:
+ if ld['parent_territory']:
+ parent_data = [x for x in data if x['territory'] == ld['parent_territory']][0]
+ for key in parent_data.keys():
+ if key not in ['indent', 'territory', 'parent_territory', 'bold']:
+ parent_data[key] += ld[key]
return columns, data, None, None, None, 1
-def update_groups(node, data, root_node, territory_dict):
- """ Adds values of child territories to parent node except root. """
- parent_node = territory_dict[node]['parent']
- if parent_node != root_node and parent_node:
- node_data = [x for x in data if x['territory'] == node][0]
- parent_data = [x for x in data if x['territory'] == parent_node][0]
- for key in parent_data.keys():
- if key not in ['indent', 'territory', 'bold']:
- parent_data[key] += node_data[key]
- return update_groups(parent_node, data, root_node, territory_dict)
- else:
- return data
-
def get_customer_stats(filters, tree_view=False):
""" Calculates number of new and repeated customers. """
company_condition = ''