blob: 7b2df5efd1e10e132012d339b10ab088a173eb84 [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,
Abhishek Balam123eaea2020-09-18 16:30:50 +053021 "Issue": 5,
Ankush Menat4551d7d2021-08-19 13:41:10 +053022 "Item": 5,
23 "Journal Entry": 3,
Abhishek Balam123eaea2020-09-18 16:30:50 +053024 "Lead": 3,
25 "Leave Application": 5,
26 "Material Request": 5,
Ankush Menat4551d7d2021-08-19 13:41:10 +053027 "Opportunity": 5,
28 "Payment Entry": 2,
Abhishek Balam123eaea2020-09-18 16:30:50 +053029 "Project": 5,
Ankush Menat4551d7d2021-08-19 13:41:10 +053030 "Purchase Order": 2,
Abhishek Balam123eaea2020-09-18 16:30:50 +053031 "Purchase Invoice": 5,
32 "Purchase Receipt": 5,
33 "Quotation": 3,
34 "Salary Slip": 5,
35 "Salary Structure": 5,
Ankush Menat4551d7d2021-08-19 13:41:10 +053036 "Sales Order": 2,
37 "Sales Invoice": 2,
Abhishek Balam123eaea2020-09-18 16:30:50 +053038 "Stock Entry": 3,
Abhishek Balam123eaea2020-09-18 16:30:50 +053039 "Supplier": 5,
40 "Task": 5,
Ankush Menat4551d7d2021-08-19 13:41:10 +053041 "User": 5,
Ankush Menat494bd9e2022-03-28 18:52:46 +053042 "Work Order": 5,
Abhishek Balam123eaea2020-09-18 16:30:50 +053043 }
44
Ankush Menat8fe5feb2021-11-04 19:48:32 +053045 for doctype, min_count in doctypes.items():
Sahil Khan73e281d2019-05-09 14:32:15 +053046 count = frappe.db.count(doctype)
47 if count > min_count:
48 activation_level += 1
49 sales_data.append({doctype: count})
50
Ankush Menat494bd9e2022-03-28 18:52:46 +053051 if frappe.db.get_single_value("System Settings", "setup_complete"):
Rushabh Mehta6dd461f2017-02-16 14:51:48 +053052 activation_level += 1
53
Ankush Menat494bd9e2022-03-28 18:52:46 +053054 communication_number = frappe.db.count("Communication", dict(communication_medium="Email"))
Sahil Khan73e281d2019-05-09 14:32:15 +053055 if communication_number > 10:
Rushabh Mehta6dd461f2017-02-16 14:51:48 +053056 activation_level += 1
Sahil Khan73e281d2019-05-09 14:32:15 +053057 sales_data.append({"Communication": communication_number})
Rushabh Mehta05ce7ec2017-02-22 16:15:43 +053058
Rushabh Mehta6dd461f2017-02-16 14:51:48 +053059 # recent login
Ankush Menat494bd9e2022-03-28 18:52:46 +053060 if frappe.db.sql(
61 "select name from tabUser where last_login > date_sub(now(), interval 2 day) limit 1"
62 ):
Rushabh Mehta6dd461f2017-02-16 14:51:48 +053063 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
Ankush Menat494bd9e2022-03-28 18:52:46 +053069
Rushabh Mehta05ce7ec2017-02-22 16:15:43 +053070def get_help_messages():
Ankush Menat494bd9e2022-03-28 18:52:46 +053071 """Returns help messages to be shown on Desktop"""
Rushabh Mehta7067ff02017-03-02 11:14:09 +053072 if get_level() > 6:
73 return []
Rushabh Mehta05ce7ec2017-02-22 16:15:43 +053074
Ankush Menat494bd9e2022-03-28 18:52:46 +053075 domain = frappe.get_cached_value("Company", erpnext.get_default_company(), "domain")
Prateeksha Singh95d8fd32017-09-04 11:14:04 +053076 messages = []
Rushabh Mehta05ce7ec2017-02-22 16:15:43 +053077
Rushabh Mehtae7900b22017-03-02 11:13:18 +053078 message_settings = [
79 frappe._dict(
Ankush Menat494bd9e2022-03-28 18:52:46 +053080 doctype="Lead",
81 title=_("Create Leads"),
82 description=_("Leads help you get business, add all your contacts and more as your leads"),
83 action=_("Create Lead"),
84 route="List/Lead",
85 domain=("Manufacturing", "Retail", "Services", "Distribution"),
86 target=3,
Rushabh Mehtae7900b22017-03-02 11:13:18 +053087 ),
88 frappe._dict(
Ankush Menat494bd9e2022-03-28 18:52:46 +053089 doctype="Quotation",
90 title=_("Create customer quotes"),
91 description=_("Quotations are proposals, bids you have sent to your customers"),
92 action=_("Create Quotation"),
93 route="List/Quotation",
94 domain=("Manufacturing", "Retail", "Services", "Distribution"),
95 target=3,
Rushabh Mehtae7900b22017-03-02 11:13:18 +053096 ),
97 frappe._dict(
Ankush Menat494bd9e2022-03-28 18:52:46 +053098 doctype="Sales Order",
99 title=_("Manage your orders"),
100 description=_("Create Sales Orders to help you plan your work and deliver on-time"),
101 action=_("Create Sales Order"),
102 route="List/Sales Order",
103 domain=("Manufacturing", "Retail", "Services", "Distribution"),
104 target=3,
Rushabh Mehtae7900b22017-03-02 11:13:18 +0530105 ),
106 frappe._dict(
Ankush Menat494bd9e2022-03-28 18:52:46 +0530107 doctype="Purchase Order",
108 title=_("Create Purchase Orders"),
109 description=_("Purchase orders help you plan and follow up on your purchases"),
110 action=_("Create Purchase Order"),
111 route="List/Purchase Order",
112 domain=("Manufacturing", "Retail", "Services", "Distribution"),
113 target=3,
Rushabh Mehtae7900b22017-03-02 11:13:18 +0530114 ),
115 frappe._dict(
Ankush Menat494bd9e2022-03-28 18:52:46 +0530116 doctype="User",
117 title=_("Create Users"),
118 description=_(
119 "Add the rest of your organization as your users. You can also add invite Customers to your portal by adding them from Contacts"
120 ),
121 action=_("Create User"),
122 route="List/User",
123 domain=("Manufacturing", "Retail", "Services", "Distribution"),
124 target=3,
Rushabh Mehtae7900b22017-03-02 11:13:18 +0530125 ),
126 frappe._dict(
Ankush Menat494bd9e2022-03-28 18:52:46 +0530127 doctype="Timesheet",
128 title=_("Add Timesheets"),
129 description=_(
130 "Timesheets help keep track of time, cost and billing for activites done by your team"
131 ),
132 action=_("Create Timesheet"),
133 route="List/Timesheet",
134 domain=("Services",),
135 target=5,
Rushabh Mehtae7900b22017-03-02 11:13:18 +0530136 ),
137 frappe._dict(
Ankush Menat494bd9e2022-03-28 18:52:46 +0530138 doctype="Employee",
139 title=_("Create Employee Records"),
140 description=_("Create Employee records to manage leaves, expense claims and payroll"),
141 action=_("Create Employee"),
142 route="List/Employee",
143 target=3,
144 ),
Rushabh Mehtae7900b22017-03-02 11:13:18 +0530145 ]
146
Rushabh Mehtae7900b22017-03-02 11:13:18 +0530147 for m in message_settings:
148 if not m.domain or domain in m.domain:
149 m.count = frappe.db.count(m.doctype)
150 if m.count < m.target:
151 messages.append(m)
Rushabh Mehta05ce7ec2017-02-22 16:15:43 +0530152
Nabin Haita2afc4e2017-02-27 15:39:29 +0530153 return messages