brotherton-erpnext/erpnext/utilities/user_progress.py
2017-09-26 13:07:24 +05:30

267 lines
9.0 KiB
Python

# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
import frappe, erpnext
from frappe import _
from erpnext.setup.doctype.setup_progress.setup_progress import get_action_completed_state
def get_slide_settings():
defaults = frappe.defaults.get_defaults()
domain = frappe.db.get_value('Company', erpnext.get_default_company(), 'domain')
company = defaults.get("company") or ''
currency = defaults.get("currency") or ''
doc = frappe.get_doc("Setup Progress")
item = [d for d in doc.get("actions") if d.action_name == "Set Sales Target"][0]
item.action_document = company
item.save()
doc.save()
# Initial state of slides
return [
frappe._dict(
action_name='Add Company',
title=_("Setup Company") if domain != 'Education' else _("Setup Institution"),
help=_('Setup your ' + ('company' if domain != 'Education' else 'institution') + ' and brand.'),
# image_src="/assets/erpnext/images/illustrations/shop.jpg",
fields=[],
done_state_title=_("You added " + company),
done_state_title_route=["Form", "Company", company],
help_links=[
{
"label": _("Chart of Accounts"),
"url": ["https://erpnext.org/docs/user/manual/en/accounts/chart-of-accounts"]
},
{
"label": _("Opening Balances"),
"video_id": "U5wPIvEn-0c"
}
]
),
frappe._dict(
action_name='Set Sales Target',
domains=('Manufacturing', 'Services', 'Retail', 'Distribution'),
title=_("Set a Target"),
help=_("Set a sales goal you'd like to achieve for your company."),
fields=[
{"fieldtype":"Currency", "fieldname":"monthly_sales_target",
"label":_("Monthly Sales Target (" + currency + ")")},
],
submit_method="erpnext.utilities.user_progress_utils.set_sales_target",
done_state_title=_("Go to " + company),
done_state_title_route=["Form", "Company", company],
help_links=[
{
"label": _('Learn More'),
"url": ["https://erpnext.org/docs/user/manual/en/setting-up/setting-company-sales-goal"]
}
]
),
frappe._dict(
action_name='Add Customers',
domains=('Manufacturing', 'Services', 'Retail', 'Distribution'),
title=_("Add Customers"),
help=_("List a few of your customers. They could be organizations or individuals."),
fields=[
{"fieldtype":"Section Break"},
{"fieldtype":"Data", "fieldname":"customer", "label":_("Customer"),
"placeholder":_("Customer Name")},
{"fieldtype":"Column Break"},
{"fieldtype":"Data", "fieldname":"customer_contact",
"label":_("Contact Name"), "placeholder":_("Contact Name")}
],
add_more=1, max_count=3, mandatory_entry=1,
submit_method="erpnext.utilities.user_progress_utils.create_customers",
done_state_title=_("Go to Customers"),
done_state_title_route=["List", "Customer"],
help_links=[
{
"label": _('Learn More'),
"url": ["https://erpnext.org/docs/user/manual/en/CRM/customer.html"]
}
]
),
frappe._dict(
action_name='Add Suppliers',
domains=('Manufacturing', 'Services', 'Retail', 'Distribution'),
icon="fa fa-group",
title=_("Your Suppliers"),
help=_("List a few of your suppliers. They could be organizations or individuals."),
fields=[
{"fieldtype":"Section Break"},
{"fieldtype":"Data", "fieldname":"supplier", "label":_("Supplier"),
"placeholder":_("Supplier Name")},
{"fieldtype":"Column Break"},
{"fieldtype":"Data", "fieldname":"supplier_contact",
"label":_("Contact Name"), "placeholder":_("Contact Name")},
],
add_more=1, max_count=3, mandatory_entry=1,
submit_method="erpnext.utilities.user_progress_utils.create_suppliers",
done_state_title=_("Go to Suppliers"),
done_state_title_route=["List", "Supplier"],
help_links=[
{
"label": _('Learn More'),
"url": ["https://erpnext.org/docs/user/manual/en/buying/supplier"]
},
{
"label": _('Customers and Suppliers'),
"video_id": "zsrrVDk6VBs"
},
]
),
frappe._dict(
action_name='Add Products',
domains=['Manufacturing', 'Services', 'Retail', 'Distribution'],
icon="fa fa-barcode",
title=_("Your Products or Services"),
help=_("List your products or services that you buy or sell."),
fields=[
{"fieldtype":"Section Break", "show_section_border": 1},
{"fieldtype":"Data", "fieldname":"item", "label":_("Item"),
"placeholder":_("A Product")},
{"fieldtype":"Column Break"},
{"fieldtype":"Select", "fieldname":"item_uom", "label":_("UOM"),
"options":[_("Unit"), _("Nos"), _("Box"), _("Pair"), _("Kg"), _("Set"),
_("Hour"), _("Minute"), _("Litre"), _("Meter"), _("Gram")],
"default": _("Unit"), "static": 1},
{"fieldtype":"Column Break"},
{"fieldtype":"Currency", "fieldname":"item_price", "label":_("Rate"), "static": 1}
],
add_more=1, max_count=3, mandatory_entry=1,
submit_method="erpnext.utilities.user_progress_utils.create_items",
done_state_title=_("Go to Items"),
done_state_title_route=["List", "Item"],
help_links=[
{
"label": _("Explore Sales Cycle"),
"video_id": "1eP90MWoDQM"
},
]
),
# School slides begin
frappe._dict(
action_name='Add Programs',
domains=("Education"),
title=_("Program"),
help=_("Example: Masters in Computer Science"),
fields=[
{"fieldtype":"Section Break", "show_section_border": 1},
{"fieldtype":"Data", "fieldname":"program", "label":_("Program"), "placeholder": _("Program Name")},
],
add_more=1, max_count=3, mandatory_entry=1,
submit_method="erpnext.utilities.user_progress_utils.create_program",
done_state_title=_("Go to Programs"),
done_state_title_route=["List", "Program"],
help_links=[
{
"label": _("Student Application"),
"video_id": "l8PUACusN3E"
},
]
),
frappe._dict(
action_name='Add Courses',
domains=["Education"],
title=_("Course"),
help=_("Example: Basic Mathematics"),
fields=[
{"fieldtype":"Section Break", "show_section_border": 1},
{"fieldtype":"Data", "fieldname":"course", "label":_("Course"), "placeholder": _("Course Name")},
],
add_more=1, max_count=3, mandatory_entry=1,
submit_method="erpnext.utilities.user_progress_utils.create_course",
done_state_title=_("Go to Courses"),
done_state_title_route=["List", "Course"],
help_links=[
{
"label": _('Add Students'),
"route": ["List", "Student"]
}
]
),
frappe._dict(
action_name='Add Instructors',
domains=["Education"],
title=_("Instructor"),
help=_("People who teach at your organisation"),
fields=[
{"fieldtype":"Section Break", "show_section_border": 1},
{"fieldtype":"Data", "fieldname":"instructor", "label":_("Instructor"), "placeholder": _("Instructor Name")},
],
add_more=1, max_count=3, mandatory_entry=1,
submit_method="erpnext.utilities.user_progress_utils.create_instructor",
done_state_title=_("Go to Instructors"),
done_state_title_route=["List", "Instructor"],
help_links=[
{
"label": _('Student Batches'),
"route": ["List", "Student Batch"]
}
]
),
frappe._dict(
action_name='Add Rooms',
domains=["Education"],
title=_("Room"),
help=_("Classrooms/ Laboratories etc where lectures can be scheduled."),
fields=[
{"fieldtype":"Section Break", "show_section_border": 1},
{"fieldtype":"Data", "fieldname":"room", "label":_("Room")},
{"fieldtype":"Column Break"},
{"fieldtype":"Int", "fieldname":"room_capacity", "label":_("Room Capacity"), "static": 1},
],
add_more=1, max_count=3, mandatory_entry=1,
submit_method="erpnext.utilities.user_progress_utils.create_room",
done_state_title=_("Go to Rooms"),
done_state_title_route=["List", "Room"],
help_links=[]
),
# School slides end
frappe._dict(
action_name='Add Users',
title=_("Add Users"),
help=_("Add users to your organization, other than yourself."),
fields=[
{"fieldtype":"Section Break"},
{"fieldtype":"Data", "fieldname":"user_email", "label":_("Email ID"),
"placeholder":_("user@example.com"), "options": "Email", "static": 1},
{"fieldtype":"Column Break"},
{"fieldtype":"Data", "fieldname":"user_fullname",
"label":_("Full Name"), "static": 1},
],
add_more=1, max_count=3, mandatory_entry=1,
submit_method="erpnext.utilities.user_progress_utils.create_users",
done_state_title=_("Go to Users"),
done_state_title_route=["List", "User"],
help_links=[
{
"label": _('Learn More'),
"url": ["https://erpnext.org/docs/user/manual/en/setting-up/users-and-permissions"]
},
{
"label": _('Users and Permissions'),
"video_id": "8Slw1hsTmUI"
},
]
)
]
def get_user_progress_slides():
slides = []
slide_settings = get_slide_settings()
domain = frappe.db.get_value('Company', erpnext.get_default_company(), 'domain')
for s in slide_settings:
if not s.domains or (domain and domain in s.domains):
s.mark_as_done_method = "erpnext.setup.doctype.setup_progress.setup_progress.set_action_completed_state"
s.done = get_action_completed_state(s.action_name) or 0
slides.append(s)
return slides