diff --git a/crm/install.py b/crm/install.py index 6dc50be9..a37bd824 100644 --- a/crm/install.py +++ b/crm/install.py @@ -120,53 +120,53 @@ def add_default_fields_layout(force=False): quick_entry_layouts = { "CRM Lead-Quick Entry": { "doctype": "CRM Lead", - "layout": '[{"label":"Person","fields":["salutation","first_name","last_name","email","mobile_no", "gender"],"hideLabel":true},{"label":"Organization","fields":["organization","website","no_of_employees","territory","annual_revenue","industry"],"hideLabel":true,"hideBorder":false},{"label":"Other","columns":2,"fields":["status","lead_owner"],"hideLabel":true,"hideBorder":false}]', + "layout": '[{"name": "person_section", "columns": [{"name": "column_5jrk", "fields": ["salutation", "email"]}, {"name": "column_5CPV", "fields": ["first_name", "mobile_no", ]}, {"name": "column_gXOy", "fields": ["last_name", "gender"]}]}, {"name": "organization_section", "columns": [{"name": "column_GHfX", "fields": ["organization", "territory"]}, {"name": "column_hXjS", "fields": ["website", "annual_revenue"]}, {"name": "column_RDNA", "fields": ["no_of_employees", "industry"]}]}, {"name": "lead_section", "columns": [{"name": "column_EO1H", "fields": ["status"]}, {"name": "column_RWBe", "fields": ["lead_owner"]}]}]', }, "CRM Deal-Quick Entry": { "doctype": "CRM Deal", - "layout": '[{"label": "Select Organization", "fields": ["organization"], "hideLabel": true, "editable": true}, {"label": "Organization Details", "fields": ["organization_name", "website", "no_of_employees", "territory", "annual_revenue", "industry"], "hideLabel": true, "editable": true}, {"label": "Select Contact", "fields": ["contact"], "hideLabel": true, "editable": true}, {"label": "Contact Details", "fields": ["salutation", "first_name", "last_name", "email", "mobile_no", "gender"], "hideLabel": true, "editable": true}, {"label": "Other", "columns": 2, "fields": ["status", "deal_owner"], "hideLabel": true}]', + "layout": '[{"name": "organization_section", "columns": [{"name": "column_GpMP", "fields": ["organization"]}, {"name": "column_FPTn", "fields": []}]}, {"name": "organization_details_section", "columns": [{"name": "column_S3tQ", "fields": ["organization_name", "territory"]}, {"name": "column_KqV1", "fields": ["website", "annual_revenue"]}, {"name": "column_1r67", "fields": ["no_of_employees", "industry"]}]}, {"name": "contact_section", "columns": [{"name": "column_CeXr", "fields": ["contact"]}, {"name": "column_yHbk", "fields": []}]}, {"name": "contact_details_section", "columns": [{"name": "column_ZTWr", "fields": ["salutation", "email"]}, {"name": "column_tabr", "fields": ["first_name", "mobile_no"]}, {"name": "column_Qjdx", "fields": ["last_name", "gender"]}]}, {"name": "deal_section", "columns": [{"name": "column_mdps", "fields": ["status"]}, {"name": "column_H40H", "fields": ["deal_owner"]}]}]', }, "Contact-Quick Entry": { "doctype": "Contact", - "layout": '[{"label":"Salutation","columns":1,"fields":["salutation"],"hideLabel":true},{"label":"Full Name","columns":2,"hideBorder":true,"fields":["first_name","last_name"],"hideLabel":true},{"label":"Email","columns":1,"hideBorder":true,"fields":["email_id"],"hideLabel":true},{"label":"Mobile No. & Gender","columns":2,"hideBorder":true,"fields":["mobile_no","gender"],"hideLabel":true},{"label":"Organization","columns":1,"hideBorder":true,"fields":["company_name"],"hideLabel":true},{"label":"Designation","columns":1,"hideBorder":true,"fields":["designation"],"hideLabel":true},{"label":"Address","columns":1,"hideBorder":true,"fields":["address"],"hideLabel":true}]', + "layout": '[{"name": "salutation_section", "columns": [{"name": "column_eXks", "fields": ["salutation"]}]}, {"name": "full_name_section", "hideBorder": true, "columns": [{"name": "column_cSxf", "fields": ["first_name"]}, {"name": "column_yBc7", "fields": ["last_name"]}]}, {"name": "email_section", "hideBorder": true, "columns": [{"name": "column_tH3L", "fields": ["email_id"]}]}, {"name": "mobile_gender_section", "hideBorder": true, "columns": [{"name": "column_lrfI", "fields": ["mobile_no"]}, {"name": "column_Tx3n", "fields": ["gender"]}]}, {"name": "organization_section", "hideBorder": true, "columns": [{"name": "column_S0J8", "fields": ["company_name"]}]}, {"name": "designation_section", "hideBorder": true, "columns": [{"name": "column_bsO8", "fields": ["designation"]}]}, {"name": "address_section", "hideBorder": true, "columns": [{"name": "column_W3VY", "fields": ["address"]}]}]', }, "CRM Organization-Quick Entry": { "doctype": "CRM Organization", - "layout": '[{"label":"Organization Name","columns":1,"fields":["organization_name"],"hideLabel":true},{"label":"Website & Revenue","columns":2,"hideBorder":true,"fields":["website","annual_revenue"],"hideLabel":true},{"label":"Territory","columns":1,"hideBorder":true,"fields":["territory"],"hideLabel":true},{"label":"No of Employees & Industry","columns":2,"hideBorder":true,"fields":["no_of_employees","industry"],"hideLabel":true},{"label":"Address","columns":1,"hideBorder":true,"fields":["address"],"hideLabel":true}]', + "layout": '[{"name": "organization_section", "columns": [{"name": "column_zOuv", "fields": ["organization_name"]}]}, {"name": "website_revenue_section", "hideBorder": true, "columns": [{"name": "column_I5Dy", "fields": ["website"]}, {"name": "column_Rgss", "fields": ["annual_revenue"]}]}, {"name": "territory_section", "hideBorder": true, "columns": [{"name": "column_w6ap", "fields": ["territory"]}]}, {"name": "employee_industry_section", "hideBorder": true, "columns": [{"name": "column_u5tZ", "fields": ["no_of_employees"]}, {"name": "column_FFrT", "fields": ["industry"]}]}, {"name": "address_section", "hideBorder": true, "columns": [{"name": "column_O2dk", "fields": ["address"]}]}]', }, "Address-Quick Entry": { "doctype": "Address", - "layout": '[{"label":"Address","columns":1,"fields":["address_title","address_type","address_line1","address_line2","city","state","country","pincode"],"hideLabel":true}]', + "layout": '[{"name": "details_section", "columns": [{"name": "column_uSSG", "fields": ["address_title", "address_type", "address_line1", "address_line2", "city", "state", "country", "pincode"]}]}]', }, } sidebar_fields_layouts = { "CRM Lead-Side Panel": { "doctype": "CRM Lead", - "layout": '[{"label": "Details", "name": "details", "opened": true, "fields": ["organization", "website", "territory", "industry", "job_title", "source", "lead_owner"]}, {"label": "Person", "name": "person_tab", "opened": true, "fields": ["salutation", "first_name", "last_name", "email", "mobile_no"]}]', + "layout": '[{"label": "Details", "name": "details_section", "opened": true, "columns": [{"name": "column_kl92", "fields": ["organization", "website", "territory"]}, {"name": "column_IC6F", "fields": ["industry", "job_title", "source"]}, {"name": "column_asu6", "fields": ["lead_owner"]}]}, {"label": "Person", "name": "person_section", "opened": true, "columns": [{"name": "column_XmW2", "fields": ["salutation", "first_name"]}, {"name": "column_nOVL", "fields": ["last_name", "email"]}, {"name": "column_JFWS", "fields": ["mobile_no"]}]}]', }, "CRM Deal-Side Panel": { "doctype": "CRM Deal", - "layout": '[{"label":"Contacts","name":"contacts_section","opened":true,"editable":false,"contacts":[]},{"label":"Organization Details","name":"organization_tab","opened":true,"fields":["organization","website","territory","annual_revenue","close_date","probability","next_step","deal_owner"]}]', + "layout": '[{"label": "Contacts", "name": "contacts_section", "opened": true, "editable": false, "contacts": []}, {"label": "Organization Details", "name": "organization_section", "opened": true, "columns": [{"name": "column_na2Q", "fields": ["organization", "website", "territory"]}, {"name": "column_JeJX", "fields": ["annual_revenue", "close_date", "probability"]}, {"name": "column_BnmW", "fields": ["next_step", "deal_owner"]}]}]', }, "Contact-Side Panel": { "doctype": "Contact", - "layout": '[{"label":"Details","name":"details","opened":true,"fields":["salutation","first_name","last_name","email_id","mobile_no","gender","company_name","designation","address"]}]', + "layout": '[{"label": "Details", "name": "details_section", "opened": true, "columns": [{"name": "column_eIWl", "fields": ["salutation", "first_name", "last_name"]}, {"name": "column_mcIl", "fields": ["email_id", "mobile_no", "gender"]}, {"name": "column_vv4R", "fields": ["company_name", "designation", "address"]}]}]', }, "CRM Organization-Side Panel": { "doctype": "CRM Organization", - "layout": '[{"label":"Details","name":"details","opened":true,"fields":["organization_name","website","territory","industry","no_of_employees","address"]}]', + "layout": '[{"label": "Details", "name": "details_section", "opened": true, "columns": [{"name": "column_IJOV", "fields": ["organization_name", "website"]}, {"name": "column_eZY3", "fields": ["territory", "industry"]}, {"name": "column_HD2a", "fields": ["no_of_employees", "address"]}]}]', }, } data_fields_layouts = { "CRM Lead-Data Fields": { "doctype": "CRM Lead", - "layout": '[{"no_tabs":true,"sections":[{"label": "Details", "name": "details", "opened": true, "fields": ["organization", "website", "territory", "industry", "job_title", "source", "lead_owner"]}, {"label": "Person", "name": "person_tab", "opened": true, "fields": ["salutation", "first_name", "last_name", "email", "mobile_no"]}]}]', + "layout": '[{"label": "Details", "name": "details_section", "opened": true, "columns": [{"name": "column_ZgLG", "fields": ["organization", "website", "territory"]}, {"name": "column_TbYq", "fields": ["industry", "job_title", "source"]}, {"name": "column_OKSX", "fields": ["lead_owner"]}]}, {"label": "Person", "name": "person_section", "opened": true, "columns": [{"name": "column_6c5g", "fields": ["salutation", "first_name"]}, {"name": "column_1n7Q", "fields": ["last_name", "email"]}, {"name": "column_cT6C", "fields": ["mobile_no"]}]}]', }, "CRM Deal-Data Fields": { "doctype": "CRM Deal", - "layout": '[{"no_tabs":true,"sections":[{"label":"Organization Details","name":"organization_tab","opened":true,"fields":["organization","website","territory","annual_revenue","close_date","probability","next_step","deal_owner"]}]}]', + "layout": '[{"label": "Details", "name": "details_section", "opened": true, "columns": [{"name": "column_z9XL", "fields": ["organization", "website", "territory"]}, {"name": "column_gM4w", "fields": ["annual_revenue", "close_date", "probability"]}, {"name": "column_gWmE", "fields": ["next_step", "deal_owner"]}]}]', }, } diff --git a/crm/patches/v1_0/update_fields_layout_to_new_format.py b/crm/patches/v1_0/update_fields_layout_to_new_format.py index 1f01c209..70501e4d 100644 --- a/crm/patches/v1_0/update_fields_layout_to_new_format.py +++ b/crm/patches/v1_0/update_fields_layout_to_new_format.py @@ -2,6 +2,7 @@ import json from math import ceil import frappe +from frappe.utils import random_string def execute(): @@ -33,7 +34,9 @@ def get_new_layout(old_layout, type): if "no_tabs" in new_tab: new_tab.pop("no_tabs") new_tab["sections"] = [] + new_tab["name"] = "tab_" + str(random_string(4)) for section in tab.get("sections"): + section["name"] = section.get("name") or "section_" + str(random_string(4)) if "contacts" in section: new_tab["sections"].append(section) continue @@ -52,20 +55,23 @@ def get_new_layout(old_layout, type): new_section["columns"] = [] if len(fields) == 0: - new_section["columns"].append({"fields": []}) + new_section["columns"].append({"name": "column_" + str(random_string(4)), "fields": []}) new_tab["sections"].append(new_section) continue if len(fields) == 1 and column_count > 1: - new_section["columns"].append({"fields": [fields[0]]}) - new_section["columns"].append({"fields": []}) + new_section["columns"].append( + {"name": "column_" + str(random_string(4)), "fields": [fields[0]]} + ) + new_section["columns"].append({"name": "column_" + str(random_string(4)), "fields": []}) new_tab["sections"].append(new_section) continue fields_per_column = ceil(len(fields) / column_count) for i in range(column_count): new_column = { - "fields": fields[i * fields_per_column: (i + 1) * fields_per_column] + "name": "column_" + str(random_string(4)), + "fields": fields[i * fields_per_column : (i + 1) * fields_per_column], } new_section["columns"].append(new_column) new_tab["sections"].append(new_section)