151 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			151 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
 | |
| # License: GNU General Public License v3. See license.txt
 | |
| 
 | |
| 
 | |
| import frappe
 | |
| from frappe import _
 | |
| 
 | |
| import erpnext
 | |
| 
 | |
| 
 | |
| def get_level():
 | |
| 	activation_level = 0
 | |
| 	sales_data = []
 | |
| 	min_count = 0
 | |
| 	doctypes = {
 | |
| 		"Asset": 5,
 | |
| 		"BOM": 3,
 | |
| 		"Customer": 5,
 | |
| 		"Delivery Note": 5,
 | |
| 		"Employee": 3,
 | |
| 		"Issue": 5,
 | |
| 		"Item": 5,
 | |
| 		"Journal Entry": 3,
 | |
| 		"Lead": 3,
 | |
| 		"Material Request": 5,
 | |
| 		"Opportunity": 5,
 | |
| 		"Payment Entry": 2,
 | |
| 		"Project": 5,
 | |
| 		"Purchase Order": 2,
 | |
| 		"Purchase Invoice": 5,
 | |
| 		"Purchase Receipt": 5,
 | |
| 		"Quotation": 3,
 | |
| 		"Sales Order": 2,
 | |
| 		"Sales Invoice": 2,
 | |
| 		"Stock Entry": 3,
 | |
| 		"Supplier": 5,
 | |
| 		"Task": 5,
 | |
| 		"User": 5,
 | |
| 		"Work Order": 5,
 | |
| 	}
 | |
| 
 | |
| 	for doctype, min_count in doctypes.items():
 | |
| 		count = frappe.db.count(doctype)
 | |
| 		if count > min_count:
 | |
| 			activation_level += 1
 | |
| 		sales_data.append({doctype: count})
 | |
| 
 | |
| 	if frappe.db.get_single_value("System Settings", "setup_complete"):
 | |
| 		activation_level += 1
 | |
| 
 | |
| 	communication_number = frappe.db.count("Communication", dict(communication_medium="Email"))
 | |
| 	if communication_number > 10:
 | |
| 		activation_level += 1
 | |
| 	sales_data.append({"Communication": communication_number})
 | |
| 
 | |
| 	# recent login
 | |
| 	if frappe.db.sql(
 | |
| 		"select name from tabUser where last_login > date_sub(now(), interval 2 day) limit 1"
 | |
| 	):
 | |
| 		activation_level += 1
 | |
| 
 | |
| 	level = {"activation_level": activation_level, "sales_data": sales_data}
 | |
| 
 | |
| 	return level
 | |
| 
 | |
| 
 | |
| def get_help_messages():
 | |
| 	"""Returns help messages to be shown on Desktop"""
 | |
| 	if get_level() > 6:
 | |
| 		return []
 | |
| 
 | |
| 	domain = frappe.get_cached_value("Company", erpnext.get_default_company(), "domain")
 | |
| 	messages = []
 | |
| 
 | |
| 	message_settings = [
 | |
| 		frappe._dict(
 | |
| 			doctype="Lead",
 | |
| 			title=_("Create Leads"),
 | |
| 			description=_("Leads help you get business, add all your contacts and more as your leads"),
 | |
| 			action=_("Create Lead"),
 | |
| 			route="List/Lead",
 | |
| 			domain=("Manufacturing", "Retail", "Services", "Distribution"),
 | |
| 			target=3,
 | |
| 		),
 | |
| 		frappe._dict(
 | |
| 			doctype="Quotation",
 | |
| 			title=_("Create customer quotes"),
 | |
| 			description=_("Quotations are proposals, bids you have sent to your customers"),
 | |
| 			action=_("Create Quotation"),
 | |
| 			route="List/Quotation",
 | |
| 			domain=("Manufacturing", "Retail", "Services", "Distribution"),
 | |
| 			target=3,
 | |
| 		),
 | |
| 		frappe._dict(
 | |
| 			doctype="Sales Order",
 | |
| 			title=_("Manage your orders"),
 | |
| 			description=_("Create Sales Orders to help you plan your work and deliver on-time"),
 | |
| 			action=_("Create Sales Order"),
 | |
| 			route="List/Sales Order",
 | |
| 			domain=("Manufacturing", "Retail", "Services", "Distribution"),
 | |
| 			target=3,
 | |
| 		),
 | |
| 		frappe._dict(
 | |
| 			doctype="Purchase Order",
 | |
| 			title=_("Create Purchase Orders"),
 | |
| 			description=_("Purchase orders help you plan and follow up on your purchases"),
 | |
| 			action=_("Create Purchase Order"),
 | |
| 			route="List/Purchase Order",
 | |
| 			domain=("Manufacturing", "Retail", "Services", "Distribution"),
 | |
| 			target=3,
 | |
| 		),
 | |
| 		frappe._dict(
 | |
| 			doctype="User",
 | |
| 			title=_("Create Users"),
 | |
| 			description=_(
 | |
| 				"Add the rest of your organization as your users. You can also add invite Customers to your portal by adding them from Contacts"
 | |
| 			),
 | |
| 			action=_("Create User"),
 | |
| 			route="List/User",
 | |
| 			domain=("Manufacturing", "Retail", "Services", "Distribution"),
 | |
| 			target=3,
 | |
| 		),
 | |
| 		frappe._dict(
 | |
| 			doctype="Timesheet",
 | |
| 			title=_("Add Timesheets"),
 | |
| 			description=_(
 | |
| 				"Timesheets help keep track of time, cost and billing for activites done by your team"
 | |
| 			),
 | |
| 			action=_("Create Timesheet"),
 | |
| 			route="List/Timesheet",
 | |
| 			domain=("Services",),
 | |
| 			target=5,
 | |
| 		),
 | |
| 		frappe._dict(
 | |
| 			doctype="Employee",
 | |
| 			title=_("Create Employee Records"),
 | |
| 			description=_("Create Employee records."),
 | |
| 			action=_("Create Employee"),
 | |
| 			route="List/Employee",
 | |
| 			target=3,
 | |
| 		),
 | |
| 	]
 | |
| 
 | |
| 	for m in message_settings:
 | |
| 		if not m.domain or domain in m.domain:
 | |
| 			m.count = frappe.db.count(m.doctype)
 | |
| 			if m.count < m.target:
 | |
| 				messages.append(m)
 | |
| 
 | |
| 	return messages
 |