blob: faf3fd4a20c8aa558ac88be1294bc0a4db4b5c52 [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,
Ankush Menat4551d7d2021-08-19 13:41:10 +053040 "Student": 5,
Abhishek Balam123eaea2020-09-18 16:30:50 +053041 "Supplier": 5,
42 "Task": 5,
Ankush Menat4551d7d2021-08-19 13:41:10 +053043 "User": 5,
Abhishek Balam123eaea2020-09-18 16:30:50 +053044 "Work Order": 5
45 }
46
Ankush Menat8fe5feb2021-11-04 19:48:32 +053047 for doctype, min_count in doctypes.items():
Sahil Khan73e281d2019-05-09 14:32:15 +053048 count = frappe.db.count(doctype)
49 if count > min_count:
50 activation_level += 1
51 sales_data.append({doctype: count})
52
Rushabh Mehta6dd461f2017-02-16 14:51:48 +053053 if frappe.db.get_single_value('System Settings', 'setup_complete'):
Rushabh Mehta6dd461f2017-02-16 14:51:48 +053054 activation_level += 1
55
Sahil Khan73e281d2019-05-09 14:32:15 +053056 communication_number = frappe.db.count('Communication', dict(communication_medium='Email'))
57 if communication_number > 10:
Rushabh Mehta6dd461f2017-02-16 14:51:48 +053058 activation_level += 1
Sahil Khan73e281d2019-05-09 14:32:15 +053059 sales_data.append({"Communication": communication_number})
Rushabh Mehta05ce7ec2017-02-22 16:15:43 +053060
Rushabh Mehta6dd461f2017-02-16 14:51:48 +053061 # recent login
62 if frappe.db.sql('select name from tabUser where last_login > date_sub(now(), interval 2 day) limit 1'):
63 activation_level += 1
64
Sahil Khan73e281d2019-05-09 14:32:15 +053065 level = {"activation_level": activation_level, "sales_data": sales_data}
66
67 return level
Rushabh Mehta05ce7ec2017-02-22 16:15:43 +053068
69def get_help_messages():
70 '''Returns help messages to be shown on Desktop'''
Rushabh Mehta7067ff02017-03-02 11:14:09 +053071 if get_level() > 6:
72 return []
Rushabh Mehta05ce7ec2017-02-22 16:15:43 +053073
Rushabh Mehta708e47a2018-08-08 16:37:31 +053074 domain = frappe.get_cached_value('Company', erpnext.get_default_company(), 'domain')
Prateeksha Singh95d8fd32017-09-04 11:14:04 +053075 messages = []
Rushabh Mehta05ce7ec2017-02-22 16:15:43 +053076
Rushabh Mehtae7900b22017-03-02 11:13:18 +053077 message_settings = [
78 frappe._dict(
79 doctype='Lead',
80 title=_('Create Leads'),
81 description=_('Leads help you get business, add all your contacts and more as your leads'),
Suraj Shettyb2965002018-12-23 13:25:58 +053082 action=_('Create Lead'),
Rushabh Mehtae7900b22017-03-02 11:13:18 +053083 route='List/Lead',
84 domain=('Manufacturing', 'Retail', 'Services', 'Distribution'),
85 target=3
86 ),
87 frappe._dict(
88 doctype='Quotation',
89 title=_('Create customer quotes'),
90 description=_('Quotations are proposals, bids you have sent to your customers'),
Suraj Shettyb2965002018-12-23 13:25:58 +053091 action=_('Create Quotation'),
Rushabh Mehtae7900b22017-03-02 11:13:18 +053092 route='List/Quotation',
93 domain=('Manufacturing', 'Retail', 'Services', 'Distribution'),
Rushabh Mehta7067ff02017-03-02 11:14:09 +053094 target=3
Rushabh Mehtae7900b22017-03-02 11:13:18 +053095 ),
96 frappe._dict(
97 doctype='Sales Order',
98 title=_('Manage your orders'),
Suraj Shettyb2965002018-12-23 13:25:58 +053099 description=_('Create Sales Orders to help you plan your work and deliver on-time'),
100 action=_('Create Sales Order'),
Rushabh Mehtae7900b22017-03-02 11:13:18 +0530101 route='List/Sales Order',
102 domain=('Manufacturing', 'Retail', 'Services', 'Distribution'),
103 target=3
104 ),
105 frappe._dict(
106 doctype='Purchase Order',
107 title=_('Create Purchase Orders'),
108 description=_('Purchase orders help you plan and follow up on your purchases'),
Suraj Shettyb2965002018-12-23 13:25:58 +0530109 action=_('Create Purchase Order'),
Rushabh Mehtae7900b22017-03-02 11:13:18 +0530110 route='List/Purchase Order',
111 domain=('Manufacturing', 'Retail', 'Services', 'Distribution'),
112 target=3
113 ),
114 frappe._dict(
115 doctype='User',
116 title=_('Create Users'),
117 description=_('Add the rest of your organization as your users. You can also add invite Customers to your portal by adding them from Contacts'),
Suraj Shettyb2965002018-12-23 13:25:58 +0530118 action=_('Create User'),
Rushabh Mehtae7900b22017-03-02 11:13:18 +0530119 route='List/User',
120 domain=('Manufacturing', 'Retail', 'Services', 'Distribution'),
121 target=3
122 ),
123 frappe._dict(
124 doctype='Timesheet',
125 title=_('Add Timesheets'),
126 description=_('Timesheets help keep track of time, cost and billing for activites done by your team'),
Suraj Shettyb2965002018-12-23 13:25:58 +0530127 action=_('Create Timesheet'),
Rushabh Mehtae7900b22017-03-02 11:13:18 +0530128 route='List/Timesheet',
129 domain=('Services',),
130 target=5
131 ),
132 frappe._dict(
133 doctype='Student',
134 title=_('Add Students'),
135 description=_('Students are at the heart of the system, add all your students'),
Suraj Shettyb2965002018-12-23 13:25:58 +0530136 action=_('Create Student'),
Rushabh Mehtae7900b22017-03-02 11:13:18 +0530137 route='List/Student',
138 domain=('Education',),
139 target=5
140 ),
141 frappe._dict(
142 doctype='Student Batch',
143 title=_('Group your students in batches'),
144 description=_('Student Batches help you track attendance, assessments and fees for students'),
Suraj Shettyb2965002018-12-23 13:25:58 +0530145 action=_('Create Student Batch'),
Rushabh Mehtae7900b22017-03-02 11:13:18 +0530146 route='List/Student Batch',
147 domain=('Education',),
148 target=3
149 ),
150 frappe._dict(
151 doctype='Employee',
Rushabh Mehta05ce7ec2017-02-22 16:15:43 +0530152 title=_('Create Employee Records'),
153 description=_('Create Employee records to manage leaves, expense claims and payroll'),
Suraj Shettyb2965002018-12-23 13:25:58 +0530154 action=_('Create Employee'),
Rushabh Mehtae7900b22017-03-02 11:13:18 +0530155 route='List/Employee',
156 target=3
157 )
158 ]
159
Rushabh Mehtae7900b22017-03-02 11:13:18 +0530160 for m in message_settings:
161 if not m.domain or domain in m.domain:
162 m.count = frappe.db.count(m.doctype)
163 if m.count < m.target:
164 messages.append(m)
Rushabh Mehta05ce7ec2017-02-22 16:15:43 +0530165
Nabin Haita2afc4e2017-02-27 15:39:29 +0530166 return messages