Merge branch 'crm-onboarding' of https://github.com/anupamvs/erpnext into anupamvs-crm-onboarding
diff --git a/erpnext/crm/dashboard_fixtures.py b/erpnext/crm/dashboard_fixtures.py
new file mode 100644
index 0000000..5b1ac9b
--- /dev/null
+++ b/erpnext/crm/dashboard_fixtures.py
@@ -0,0 +1,203 @@
+# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+import frappe, erpnext, json
+
+def get_data():
+ return frappe._dict({
+ "dashboards": get_dashboards(),
+ "charts": get_charts(),
+ "number_cards": get_number_cards()
+ })
+
+def get_dashboards():
+ return [{
+ "doctype": "Dashboard",
+ "name": "CRM",
+ "dashboard_name": "CRM",
+ "charts": [
+ { "chart": "Lead", "width": "Full" },
+ { "chart": "Opportunity", "width": "Full"},
+ { "chart": "Campaign", "width": "Half" },
+ { "chart": "Opportunities Won", "width": "Half" },
+ { "chart": "Territory Wise Opportunity", "width": "Half"},
+ { "chart": "Territory Wise Sales", "width": "Half"},
+ { "chart": "Qualified For Call", "width": "Full"},
+ { "chart": "Lead Source", "width": "Half"}
+ ],
+ "cards": [
+ { "card": "New Lead" },
+ { "card": "New Opportunity" },
+ { "card": "Won Opportunity" },
+ ]
+ }]
+
+def get_company_for_dashboards():
+ company = frappe.defaults.get_defaults().company
+ if company:
+ return company
+ else:
+ company_list = frappe.get_list("Company")
+ if company_list:
+ return company_list[0].name
+ return None
+
+def get_charts():
+ company = get_company_for_dashboards()
+
+ return [{
+ "name": "Lead",
+ "doctype": "Dashboard Chart",
+ "time_interval": "Yearly",
+ "chart_type": "Count",
+ "chart_name": "Lead",
+ "timespan": "Last Quarter",
+ "time_interval": "Weekly",
+ "document_type": "Lead",
+ "based_on": "creation",
+ 'is_public': 1,
+ 'timeseries': 1,
+ "owner": "Administrator",
+ "filters_json": json.dumps([["Opportunity", "company", "=", company, False]]),
+ "type": "Bar"
+ },
+ {
+ "name": "Opportunity",
+ "doctype": "Dashboard Chart",
+ "time_interval": "Yearly",
+ "chart_type": "Count",
+ "chart_name": "Opportunity",
+ "timespan": "Last Quarter",
+ "time_interval": "Weekly",
+ "document_type": "Opportunity",
+ "based_on": "creation",
+ 'is_public': 1,
+ 'timeseries': 1,
+ "owner": "Administrator",
+ "filters_json": json.dumps([["Opportunity", "company", "=", company, False]]),
+ "type": "Bar"
+ },
+ {
+ "name": "Campaign",
+ "doctype": "Dashboard Chart",
+ "time_interval": "Yearly",
+ "chart_type": "Count",
+ "chart_name": "Campaign",
+ "timespan": "Last Year",
+ "time_interval": "Monthly",
+ "document_type": "Campaign",
+ "based_on": "creation",
+ 'is_public': 1,
+ 'timeseries': 1,
+ "owner": "Administrator",
+ "filters_json": json.dumps([["Opportunity", "company", "=", company, False]]),
+ "type": "Line",
+ "color": "#428b46"
+ },
+ {
+ "name": "Opportunities Won",
+ "doctype": "Dashboard Chart",
+ "time_interval": "Yearly",
+ "chart_type": "Count",
+ "chart_name": "Opportunities Won",
+ "timespan": "Last Year",
+ "time_interval": "Monthly",
+ "document_type": "Opportunity",
+ "based_on": "modified",
+ 'is_public': 1,
+ 'timeseries': 1,
+ "owner": "Administrator",
+ "filters_json": json.dumps([["Opportunity", "company", "=", company, False],["Opportunity", "sales_stage", "=", "Converted", False]]),
+ "type": "Bar"
+ },
+ {
+ "name": "Territory Wise Opportunity",
+ "doctype": "Dashboard Chart",
+ "chart_type": "Group By",
+ "group_by_type": "Count",
+ "group_by_based_on": "territory",
+ "chart_name": "Territory Wise Opportunity",
+ "document_type": "Opportunity",
+ 'is_public': 1,
+ "owner": "Administrator",
+ "type": "Line"
+ },
+ {
+ "name": "Territory Wise Sales",
+ "doctype": "Dashboard Chart",
+ "chart_type": "Group By",
+ "group_by_type": "Sum",
+ "group_by_based_on": "territory",
+ "chart_name": "Territory Wise Sales",
+ "aggregate_function_based_on": "opportunity_amount",
+ "document_type": "Opportunity",
+ 'is_public': 1,
+ "owner": "Administrator",
+ "filters_json": json.dumps([["Opportunity", "company", "=", company, False],["Opportunity", "sales_stage", "=", "Converted", False]]),
+ "type": "Bar",
+ "color": "#7575ff"
+ },
+ {
+ "name": "Qualified For Call",
+ "doctype": "Dashboard Chart",
+ "time_interval": "Yearly",
+ "chart_type": "Count",
+ "chart_name": "Qualified For Call",
+ "timespan": "Last Quarter",
+ "time_interval": "Weekly",
+ "document_type": "Opportunity",
+ "based_on": "modified",
+ 'is_public': 1,
+ 'timeseries': 1,
+ "owner": "Administrator",
+ "filters_json": json.dumps([["Opportunity", "company", "=", company, False],["Opportunity", "sales_stage", "=", "Qualification", False]]),
+ "type": "Line",
+ "color": "#fff168"
+ },
+ {
+ "name": "Lead Source",
+ "doctype": "Dashboard Chart",
+ "chart_type": "Group By",
+ "group_by_type": "Count",
+ "group_by_based_on": "source",
+ "chart_name": "Lead Source",
+ "document_type": "Lead",
+ 'is_public': 1,
+ "owner": "Administrator",
+ "type": "Donut"
+ }]
+
+def get_number_cards():
+ return [{
+ "doctype": "Number Card",
+ "document_type": "Lead",
+ "name": "New Lead",
+ "filters_json": json.dumps([["Lead","status","=","Lead",False]]),
+ "function": "Count",
+ "is_public": 1,
+ "label": "New Lead",
+ "show_percentage_stats": 1,
+ "stats_time_interval": "Daily"
+ },
+ {
+ "doctype": "Number Card",
+ "document_type": "Opportunity",
+ "name": "New Opportunity",
+ "filters_json": json.dumps([["Opportunity","status","=","Open",False]]),
+ "function": "Count",
+ "is_public": 1,
+ "label": "New Opportunity",
+ "show_percentage_stats": 1,
+ "stats_time_interval": "Daily"
+ },
+ {
+ "doctype": "Number Card",
+ "document_type": "Opportunity",
+ "name": "Won Opportunity",
+ "filters_json": json.dumps([["Opportunity","status","=","Converted",False]]),
+ "function": "Count",
+ "is_public": 1,
+ "label": "Won Opportunity",
+ "show_percentage_stats": 1,
+ "stats_time_interval": "Daily"
+ }]
\ No newline at end of file
diff --git a/erpnext/crm/desk_page/crm/crm.json b/erpnext/crm/desk_page/crm/crm.json
index ca13d6a..80d3d18 100644
--- a/erpnext/crm/desk_page/crm/crm.json
+++ b/erpnext/crm/desk_page/crm/crm.json
@@ -27,21 +27,25 @@
}
],
"category": "Modules",
- "charts": [],
+ "charts": [
+ {
+ "chart_name": "Territory Wise Sales"
+ }
+ ],
"creation": "2020-01-23 14:48:30.183272",
"developer_mode_only": 0,
"disable_user_customization": 0,
"docstatus": 0,
"doctype": "Desk Page",
"extends_another_page": 0,
- "icon": "",
"idx": 0,
"is_standard": 1,
"label": "CRM",
- "modified": "2020-04-27 22:32:26.682911",
+ "modified": "2020-05-14 17:20:07.636751",
"modified_by": "Administrator",
"module": "CRM",
"name": "CRM",
+ "onboarding": "CRM",
"owner": "Administrator",
"pin_to_bottom": 0,
"pin_to_top": 0,
diff --git a/erpnext/crm/module_onboarding/crm/crm.json b/erpnext/crm/module_onboarding/crm/crm.json
new file mode 100644
index 0000000..9129c26
--- /dev/null
+++ b/erpnext/crm/module_onboarding/crm/crm.json
@@ -0,0 +1,45 @@
+{
+ "allow_roles": [
+ {
+ "role": "Sales Master Manager"
+ },
+ {
+ "role": "Administrator"
+ },
+ {
+ "role": "Sales Manager"
+ }
+ ],
+ "creation": "2020-05-09 23:42:50.901548",
+ "docstatus": 0,
+ "doctype": "Module Onboarding",
+ "documentation_url": "https://docs.erpnext.com/docs/user/manual/en/CRM",
+ "idx": 0,
+ "is_complete": 0,
+ "modified": "2020-05-14 17:41:11.083917",
+ "modified_by": "Administrator",
+ "module": "CRM",
+ "name": "CRM",
+ "owner": "Administrator",
+ "steps": [
+ {
+ "step": "Introduction to CRM"
+ },
+ {
+ "step": "Start Campaign"
+ },
+ {
+ "step": "Create Lead"
+ },
+ {
+ "step": "Create Opportunity"
+ },
+ {
+ "step": "Create and Send Quotation"
+ }
+ ],
+ "subtitle": "Campaign, Lead, Opportunity, Customer and more",
+ "success_message": "CRM Module is all setup!",
+ "title": "Let's Setup Your CRM",
+ "user_can_dismiss": 1
+}
\ No newline at end of file
diff --git a/erpnext/crm/onboarding/crm/crm.json b/erpnext/crm/onboarding/crm/crm.json
new file mode 100644
index 0000000..016a830
--- /dev/null
+++ b/erpnext/crm/onboarding/crm/crm.json
@@ -0,0 +1,45 @@
+{
+ "allow_roles": [
+ {
+ "role": "Sales Master Manager"
+ },
+ {
+ "role": "Administrator"
+ },
+ {
+ "role": "Sales Manager"
+ }
+ ],
+ "creation": "2020-05-09 23:42:50.901548",
+ "docstatus": 0,
+ "doctype": "Onboarding",
+ "documentation_url": "https://docs.erpnext.com/docs/user/manual/en/CRM",
+ "idx": 0,
+ "is_complete": 0,
+ "modified": "2020-05-09 23:42:50.901548",
+ "modified_by": "Administrator",
+ "module": "CRM",
+ "name": "CRM",
+ "owner": "Administrator",
+ "steps": [
+ {
+ "step": "Introduction to CRM"
+ },
+ {
+ "step": "Start Campaign"
+ },
+ {
+ "step": "Create Lead"
+ },
+ {
+ "step": "Convert Lead to Customer"
+ },
+ {
+ "step": "Create and Send Quotation"
+ }
+ ],
+ "subtitle": "Campaign, Lead, Opportunity, Customer and more",
+ "success_message": "CRM Module is all setup!",
+ "title": "Let's Setup Your CRM",
+ "user_can_dismiss": 1
+}
\ No newline at end of file
diff --git a/erpnext/crm/onboarding_step/create_and_send_quotation/create_and_send_quotation.json b/erpnext/crm/onboarding_step/create_and_send_quotation/create_and_send_quotation.json
new file mode 100644
index 0000000..0997017
--- /dev/null
+++ b/erpnext/crm/onboarding_step/create_and_send_quotation/create_and_send_quotation.json
@@ -0,0 +1,17 @@
+{
+ "action": "Create Entry",
+ "creation": "2020-05-09 23:42:46.592075",
+ "docstatus": 0,
+ "doctype": "Onboarding Step",
+ "idx": 0,
+ "is_complete": 0,
+ "is_mandatory": 0,
+ "is_single": 0,
+ "is_skipped": 0,
+ "modified": "2020-05-14 17:30:07.887411",
+ "modified_by": "Administrator",
+ "name": "Create and Send Quotation",
+ "owner": "Administrator",
+ "reference_document": "Quotation",
+ "title": "Create and Send Quotation"
+}
\ No newline at end of file
diff --git a/erpnext/crm/onboarding_step/create_lead/create_lead.json b/erpnext/crm/onboarding_step/create_lead/create_lead.json
new file mode 100644
index 0000000..b1076e0
--- /dev/null
+++ b/erpnext/crm/onboarding_step/create_lead/create_lead.json
@@ -0,0 +1,17 @@
+{
+ "action": "Create Entry",
+ "creation": "2020-05-09 23:40:25.192503",
+ "docstatus": 0,
+ "doctype": "Onboarding Step",
+ "idx": 0,
+ "is_complete": 0,
+ "is_mandatory": 0,
+ "is_single": 0,
+ "is_skipped": 0,
+ "modified": "2020-05-14 17:28:36.441387",
+ "modified_by": "Administrator",
+ "name": "Create Lead",
+ "owner": "Administrator",
+ "reference_document": "Lead",
+ "title": "Create Lead"
+}
\ No newline at end of file
diff --git a/erpnext/crm/onboarding_step/create_opportunity/create_opportunity.json b/erpnext/crm/onboarding_step/create_opportunity/create_opportunity.json
new file mode 100644
index 0000000..20949a4
--- /dev/null
+++ b/erpnext/crm/onboarding_step/create_opportunity/create_opportunity.json
@@ -0,0 +1,17 @@
+{
+ "action": "Create Entry",
+ "creation": "2020-05-14 17:38:27.496696",
+ "docstatus": 0,
+ "doctype": "Onboarding Step",
+ "idx": 0,
+ "is_complete": 0,
+ "is_mandatory": 0,
+ "is_single": 0,
+ "is_skipped": 0,
+ "modified": "2020-05-14 17:38:27.496696",
+ "modified_by": "Administrator",
+ "name": "Create Opportunity",
+ "owner": "Administrator",
+ "reference_document": "Opportunity",
+ "title": "Create Opportunity"
+}
\ No newline at end of file
diff --git a/erpnext/crm/onboarding_step/introduction_to_crm/introduction_to_crm.json b/erpnext/crm/onboarding_step/introduction_to_crm/introduction_to_crm.json
new file mode 100644
index 0000000..c923a77
--- /dev/null
+++ b/erpnext/crm/onboarding_step/introduction_to_crm/introduction_to_crm.json
@@ -0,0 +1,17 @@
+{
+ "action": "Watch Video",
+ "creation": "2020-05-09 23:37:08.926812",
+ "docstatus": 0,
+ "doctype": "Onboarding Step",
+ "idx": 0,
+ "is_complete": 0,
+ "is_mandatory": 0,
+ "is_single": 0,
+ "is_skipped": 0,
+ "modified": "2020-05-14 17:28:16.448676",
+ "modified_by": "Administrator",
+ "name": "Introduction to CRM",
+ "owner": "Administrator",
+ "title": "Introduction to CRM",
+ "video_url": "https://www.youtube.com/watch?v=o9XCSZHJfpA"
+}
\ No newline at end of file
diff --git a/erpnext/crm/onboarding_step/start_campaign/start_campaign.json b/erpnext/crm/onboarding_step/start_campaign/start_campaign.json
new file mode 100644
index 0000000..53c3bec
--- /dev/null
+++ b/erpnext/crm/onboarding_step/start_campaign/start_campaign.json
@@ -0,0 +1,17 @@
+{
+ "action": "Create Entry",
+ "creation": "2020-05-09 23:38:10.284957",
+ "docstatus": 0,
+ "doctype": "Onboarding Step",
+ "idx": 0,
+ "is_complete": 0,
+ "is_mandatory": 0,
+ "is_single": 0,
+ "is_skipped": 0,
+ "modified": "2020-05-14 17:28:54.285958",
+ "modified_by": "Administrator",
+ "name": "Start Campaign",
+ "owner": "Administrator",
+ "reference_document": "Campaign",
+ "title": "Start Campaign"
+}
\ No newline at end of file