blob: cd7910ce4386c7e045d9003197279301b025933d [file] [log] [blame]
Prateeksha Singh95d8fd32017-09-04 11:14:04 +05301# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
2# License: GNU General Public License v3. See license.txt
3
Rushabh Mehta05ce7ec2017-02-22 16:15:43 +05304
Chillar Anand915b3432021-09-02 16:44:59 +05305import frappe
Rushabh Mehta05ce7ec2017-02-22 16:15:43 +05306from frappe import _
Rushabh Mehta6dd461f2017-02-16 14:51:48 +05307
Chillar Anand915b3432021-09-02 16:44:59 +05308import erpnext
9
10
Rushabh Mehta6dd461f2017-02-16 14:51:48 +053011def get_level():
12 activation_level = 0
Sahil Khan73e281d2019-05-09 14:32:15 +053013 sales_data = []
14 min_count = 0
Abhishek Balam123eaea2020-09-18 16:30:50 +053015 doctypes = {
16 "Asset": 5,
Ankush Menat4551d7d2021-08-19 13:41:10 +053017 "BOM": 3,
18 "Customer": 5,
Abhishek Balam123eaea2020-09-18 16:30:50 +053019 "Delivery Note": 5,
Ankush Menat4551d7d2021-08-19 13:41:10 +053020 "Employee": 3,
21 "Instructor": 5,
Abhishek Balam123eaea2020-09-18 16:30:50 +053022 "Issue": 5,
Ankush Menat4551d7d2021-08-19 13:41:10 +053023 "Item": 5,
24 "Journal Entry": 3,
Abhishek Balam123eaea2020-09-18 16:30:50 +053025 "Lead": 3,
26 "Leave Application": 5,
27 "Material Request": 5,
Ankush Menat4551d7d2021-08-19 13:41:10 +053028 "Opportunity": 5,
29 "Payment Entry": 2,
Abhishek Balam123eaea2020-09-18 16:30:50 +053030 "Project": 5,
Ankush Menat4551d7d2021-08-19 13:41:10 +053031 "Purchase Order": 2,
Abhishek Balam123eaea2020-09-18 16:30:50 +053032 "Purchase Invoice": 5,
33 "Purchase Receipt": 5,
34 "Quotation": 3,
35 "Salary Slip": 5,
36 "Salary Structure": 5,
Ankush Menat4551d7d2021-08-19 13:41:10 +053037 "Sales Order": 2,
38 "Sales Invoice": 2,
Abhishek Balam123eaea2020-09-18 16:30:50 +053039 "Stock Entry": 3,
Abhishek Balam123eaea2020-09-18 16:30:50 +053040 "Supplier": 5,
41 "Task": 5,
Ankush Menat4551d7d2021-08-19 13:41:10 +053042 "User": 5,
Ankush Menat494bd9e2022-03-28 18:52:46 +053043 "Work Order": 5,
Abhishek Balam123eaea2020-09-18 16:30:50 +053044 }
45
Ankush Menat8fe5feb2021-11-04 19:48:32 +053046 for doctype, min_count in doctypes.items():
Sahil Khan73e281d2019-05-09 14:32:15 +053047 count = frappe.db.count(doctype)
48 if count > min_count:
49 activation_level += 1
50 sales_data.append({doctype: count})
51
Ankush Menat494bd9e2022-03-28 18:52:46 +053052 if frappe.db.get_single_value("System Settings", "setup_complete"):
Rushabh Mehta6dd461f2017-02-16 14:51:48 +053053 activation_level += 1
54
Ankush Menat494bd9e2022-03-28 18:52:46 +053055 communication_number = frappe.db.count("Communication", dict(communication_medium="Email"))
Sahil Khan73e281d2019-05-09 14:32:15 +053056 if communication_number > 10:
Rushabh Mehta6dd461f2017-02-16 14:51:48 +053057 activation_level += 1
Sahil Khan73e281d2019-05-09 14:32:15 +053058 sales_data.append({"Communication": communication_number})
Rushabh Mehta05ce7ec2017-02-22 16:15:43 +053059
Rushabh Mehta6dd461f2017-02-16 14:51:48 +053060 # recent login
Ankush Menat494bd9e2022-03-28 18:52:46 +053061 if frappe.db.sql(
62 "select name from tabUser where last_login > date_sub(now(), interval 2 day) limit 1"
63 ):
Rushabh Mehta6dd461f2017-02-16 14:51:48 +053064 activation_level += 1
65
Sahil Khan73e281d2019-05-09 14:32:15 +053066 level = {"activation_level": activation_level, "sales_data": sales_data}
67
68 return level
Rushabh Mehta05ce7ec2017-02-22 16:15:43 +053069
Ankush Menat494bd9e2022-03-28 18:52:46 +053070
Rushabh Mehta05ce7ec2017-02-22 16:15:43 +053071def get_help_messages():
Ankush Menat494bd9e2022-03-28 18:52:46 +053072 """Returns help messages to be shown on Desktop"""
Rushabh Mehta7067ff02017-03-02 11:14:09 +053073 if get_level() > 6:
74 return []
Rushabh Mehta05ce7ec2017-02-22 16:15:43 +053075
Ankush Menat494bd9e2022-03-28 18:52:46 +053076 domain = frappe.get_cached_value("Company", erpnext.get_default_company(), "domain")
Prateeksha Singh95d8fd32017-09-04 11:14:04 +053077 messages = []
Rushabh Mehta05ce7ec2017-02-22 16:15:43 +053078
Rushabh Mehtae7900b22017-03-02 11:13:18 +053079 message_settings = [
80 frappe._dict(
Ankush Menat494bd9e2022-03-28 18:52:46 +053081 doctype="Lead",
82 title=_("Create Leads"),
83 description=_("Leads help you get business, add all your contacts and more as your leads"),
84 action=_("Create Lead"),
85 route="List/Lead",
86 domain=("Manufacturing", "Retail", "Services", "Distribution"),
87 target=3,
Rushabh Mehtae7900b22017-03-02 11:13:18 +053088 ),
89 frappe._dict(
Ankush Menat494bd9e2022-03-28 18:52:46 +053090 doctype="Quotation",
91 title=_("Create customer quotes"),
92 description=_("Quotations are proposals, bids you have sent to your customers"),
93 action=_("Create Quotation"),
94 route="List/Quotation",
95 domain=("Manufacturing", "Retail", "Services", "Distribution"),
96 target=3,
Rushabh Mehtae7900b22017-03-02 11:13:18 +053097 ),
98 frappe._dict(
Ankush Menat494bd9e2022-03-28 18:52:46 +053099 doctype="Sales Order",
100 title=_("Manage your orders"),
101 description=_("Create Sales Orders to help you plan your work and deliver on-time"),
102 action=_("Create Sales Order"),
103 route="List/Sales Order",
104 domain=("Manufacturing", "Retail", "Services", "Distribution"),
105 target=3,
Rushabh Mehtae7900b22017-03-02 11:13:18 +0530106 ),
107 frappe._dict(
Ankush Menat494bd9e2022-03-28 18:52:46 +0530108 doctype="Purchase Order",
109 title=_("Create Purchase Orders"),
110 description=_("Purchase orders help you plan and follow up on your purchases"),
111 action=_("Create Purchase Order"),
112 route="List/Purchase Order",
113 domain=("Manufacturing", "Retail", "Services", "Distribution"),
114 target=3,
Rushabh Mehtae7900b22017-03-02 11:13:18 +0530115 ),
116 frappe._dict(
Ankush Menat494bd9e2022-03-28 18:52:46 +0530117 doctype="User",
118 title=_("Create Users"),
119 description=_(
120 "Add the rest of your organization as your users. You can also add invite Customers to your portal by adding them from Contacts"
121 ),
122 action=_("Create User"),
123 route="List/User",
124 domain=("Manufacturing", "Retail", "Services", "Distribution"),
125 target=3,
Rushabh Mehtae7900b22017-03-02 11:13:18 +0530126 ),
127 frappe._dict(
Ankush Menat494bd9e2022-03-28 18:52:46 +0530128 doctype="Timesheet",
129 title=_("Add Timesheets"),
130 description=_(
131 "Timesheets help keep track of time, cost and billing for activites done by your team"
132 ),
133 action=_("Create Timesheet"),
134 route="List/Timesheet",
135 domain=("Services",),
136 target=5,
Rushabh Mehtae7900b22017-03-02 11:13:18 +0530137 ),
138 frappe._dict(
Ankush Menat494bd9e2022-03-28 18:52:46 +0530139 doctype="Employee",
140 title=_("Create Employee Records"),
141 description=_("Create Employee records to manage leaves, expense claims and payroll"),
142 action=_("Create Employee"),
143 route="List/Employee",
144 target=3,
145 ),
Rushabh Mehtae7900b22017-03-02 11:13:18 +0530146 ]
147
Rushabh Mehtae7900b22017-03-02 11:13:18 +0530148 for m in message_settings:
149 if not m.domain or domain in m.domain:
150 m.count = frappe.db.count(m.doctype)
151 if m.count < m.target:
152 messages.append(m)
Rushabh Mehta05ce7ec2017-02-22 16:15:43 +0530153
Nabin Haita2afc4e2017-02-27 15:39:29 +0530154 return messages