blob: b7c24a71ba6c5609c050a960b29b2583ec909015 [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
Aditya Hasef3c22f32019-01-22 18:22:20 +05304from __future__ import unicode_literals
Prateeksha Singh95d8fd32017-09-04 11:14:04 +05305import frappe, erpnext
6
7import json
8from frappe import _
9from frappe.utils import flt
10from erpnext.setup.doctype.setup_progress.setup_progress import update_domain_actions, get_domain_actions_state
11
12@frappe.whitelist()
Prateeksha Singh242218d2017-09-13 18:41:01 +053013def set_sales_target(args_data):
14 args = json.loads(args_data)
15 defaults = frappe.defaults.get_defaults()
16 frappe.db.set_value("Company", defaults.get("company"), "monthly_sales_target", args.get('monthly_sales_target'))
17
18@frappe.whitelist()
Prateeksha Singh95d8fd32017-09-04 11:14:04 +053019def create_customers(args_data):
20 args = json.loads(args_data)
21 defaults = frappe.defaults.get_defaults()
Achilles Rasquinha96698c92018-02-28 16:12:51 +053022 for i in range(1,4):
Prateeksha Singh95d8fd32017-09-04 11:14:04 +053023 customer = args.get("customer_" + str(i))
24 if customer:
25 try:
26 doc = frappe.get_doc({
27 "doctype":"Customer",
28 "customer_name": customer,
29 "customer_type": "Company",
30 "customer_group": _("Commercial"),
31 "territory": defaults.get("country"),
32 "company": defaults.get("company")
33 }).insert()
34
35 if args.get("customer_contact_" + str(i)):
36 create_contact(args.get("customer_contact_" + str(i)),
37 "Customer", doc.name)
38 except frappe.NameError:
39 pass
40
41@frappe.whitelist()
Shreya Shah8d9edbf2017-11-28 16:09:58 +053042def create_letterhead(args_data):
43 args = json.loads(args_data)
Prateeksha Singh4c582992018-01-25 17:29:57 +053044 letterhead = args.get("letterhead")
Shreya Shah8d9edbf2017-11-28 16:09:58 +053045 if letterhead:
46 try:
47 frappe.get_doc({
48 "doctype":"Letter Head",
Prateeksha Singh4c582992018-01-25 17:29:57 +053049 "content":"""<div><img src="{0}" style='max-width: 100%%;'><br></div>""".format(letterhead.encode('utf-8')),
Shreya Shah8d9edbf2017-11-28 16:09:58 +053050 "letter_head_name": _("Standard"),
51 "is_default": 1
52 }).insert()
53 except frappe.NameError:
54 pass
55
56@frappe.whitelist()
Prateeksha Singh95d8fd32017-09-04 11:14:04 +053057def create_suppliers(args_data):
58 args = json.loads(args_data)
59 defaults = frappe.defaults.get_defaults()
Achilles Rasquinha96698c92018-02-28 16:12:51 +053060 for i in range(1,4):
Prateeksha Singh95d8fd32017-09-04 11:14:04 +053061 supplier = args.get("supplier_" + str(i))
62 if supplier:
63 try:
64 doc = frappe.get_doc({
65 "doctype":"Supplier",
66 "supplier_name": supplier,
Zlash6589070782018-04-19 18:37:29 +053067 "supplier_group": _("Local"),
Prateeksha Singh95d8fd32017-09-04 11:14:04 +053068 "company": defaults.get("company")
69 }).insert()
70
71 if args.get("supplier_contact_" + str(i)):
72 create_contact(args.get("supplier_contact_" + str(i)),
73 "Supplier", doc.name)
74 except frappe.NameError:
75 pass
76
77def create_contact(contact, party_type, party):
78 """Create contact based on given contact name"""
79 contact = contact .split(" ")
80
81 contact = frappe.get_doc({
82 "doctype":"Contact",
83 "first_name":contact[0],
84 "last_name": len(contact) > 1 and contact[1] or ""
85 })
86 contact.append('links', dict(link_doctype=party_type, link_name=party))
87 contact.insert()
88
89@frappe.whitelist()
90def create_items(args_data):
91 args = json.loads(args_data)
92 defaults = frappe.defaults.get_defaults()
Achilles Rasquinha96698c92018-02-28 16:12:51 +053093 for i in range(1,4):
Prateeksha Singh95d8fd32017-09-04 11:14:04 +053094 item = args.get("item_" + str(i))
95 if item:
96 default_warehouse = ""
97 default_warehouse = frappe.db.get_value("Warehouse", filters={
98 "warehouse_name": _("Finished Goods"),
99 "company": defaults.get("company_name")
100 })
101
102 try:
103 frappe.get_doc({
104 "doctype":"Item",
105 "item_code": item,
106 "item_name": item,
107 "description": item,
108 "show_in_website": 1,
109 "is_sales_item": 1,
110 "is_purchase_item": 1,
111 "is_stock_item": 1,
Zarrar92109b02018-04-06 10:27:55 +0530112 "item_group": _("Products"),
Prateeksha Singh95d8fd32017-09-04 11:14:04 +0530113 "stock_uom": _(args.get("item_uom_" + str(i))),
Manas Solanki087a2252018-05-04 16:02:38 +0530114 "item_defaults": [{
115 "default_warehouse": default_warehouse,
116 "company": defaults.get("company_name")
117 }]
Prateeksha Singh95d8fd32017-09-04 11:14:04 +0530118 }).insert()
119
Prateeksha Singh3942cd32017-12-19 12:48:27 +0530120 except frappe.NameError:
121 pass
122 else:
Prateeksha Singh95d8fd32017-09-04 11:14:04 +0530123 if args.get("item_price_" + str(i)):
124 item_price = flt(args.get("item_price_" + str(i)))
125
126 price_list_name = frappe.db.get_value("Price List", {"selling": 1})
127 make_item_price(item, price_list_name, item_price)
128 price_list_name = frappe.db.get_value("Price List", {"buying": 1})
129 make_item_price(item, price_list_name, item_price)
130
Prateeksha Singh95d8fd32017-09-04 11:14:04 +0530131
132def make_item_price(item, price_list_name, item_price):
133 frappe.get_doc({
134 "doctype": "Item Price",
135 "price_list": price_list_name,
136 "item_code": item,
137 "price_list_rate": item_price
138 }).insert()
139
Manas Solanki966f1412017-11-23 15:22:10 +0530140# Education
Prateeksha Singh95d8fd32017-09-04 11:14:04 +0530141@frappe.whitelist()
142def create_program(args_data):
143 args = json.loads(args_data)
Achilles Rasquinha96698c92018-02-28 16:12:51 +0530144 for i in range(1,4):
Prateeksha Singh95d8fd32017-09-04 11:14:04 +0530145 if args.get("program_" + str(i)):
146 program = frappe.new_doc("Program")
147 program.program_code = args.get("program_" + str(i))
148 program.program_name = args.get("program_" + str(i))
149 try:
150 program.save()
151 except frappe.DuplicateEntryError:
152 pass
153
154@frappe.whitelist()
155def create_course(args_data):
156 args = json.loads(args_data)
Achilles Rasquinha96698c92018-02-28 16:12:51 +0530157 for i in range(1,4):
Prateeksha Singh95d8fd32017-09-04 11:14:04 +0530158 if args.get("course_" + str(i)):
159 course = frappe.new_doc("Course")
160 course.course_code = args.get("course_" + str(i))
161 course.course_name = args.get("course_" + str(i))
162 try:
163 course.save()
164 except frappe.DuplicateEntryError:
165 pass
166
167@frappe.whitelist()
168def create_instructor(args_data):
169 args = json.loads(args_data)
Achilles Rasquinha96698c92018-02-28 16:12:51 +0530170 for i in range(1,4):
Prateeksha Singh95d8fd32017-09-04 11:14:04 +0530171 if args.get("instructor_" + str(i)):
172 instructor = frappe.new_doc("Instructor")
173 instructor.instructor_name = args.get("instructor_" + str(i))
174 try:
175 instructor.save()
176 except frappe.DuplicateEntryError:
177 pass
178
179@frappe.whitelist()
180def create_room(args_data):
181 args = json.loads(args_data)
Achilles Rasquinha96698c92018-02-28 16:12:51 +0530182 for i in range(1,4):
Prateeksha Singh95d8fd32017-09-04 11:14:04 +0530183 if args.get("room_" + str(i)):
184 room = frappe.new_doc("Room")
185 room.room_name = args.get("room_" + str(i))
186 room.seating_capacity = args.get("room_capacity_" + str(i))
187 try:
188 room.save()
189 except frappe.DuplicateEntryError:
190 pass
191
192@frappe.whitelist()
193def create_users(args_data):
194 if frappe.session.user == 'Administrator':
195 return
196 args = json.loads(args_data)
197 defaults = frappe.defaults.get_defaults()
Achilles Rasquinha96698c92018-02-28 16:12:51 +0530198 for i in range(1,4):
Prateeksha Singh95d8fd32017-09-04 11:14:04 +0530199 email = args.get("user_email_" + str(i))
200 fullname = args.get("user_fullname_" + str(i))
201 if email:
202 if not fullname:
203 fullname = email.split("@")[0]
204
205 parts = fullname.split(" ", 1)
206
207 user = frappe.get_doc({
208 "doctype": "User",
209 "email": email,
210 "first_name": parts[0],
211 "last_name": parts[1] if len(parts) > 1 else "",
212 "enabled": 1,
213 "user_type": "System User"
214 })
215
216 # default roles
217 user.append_roles("Projects User", "Stock User", "Support Team")
218 user.flags.delay_emails = True
219
220 if not frappe.db.get_value("User", email):
221 user.insert(ignore_permissions=True)
222
223 # create employee
224 emp = frappe.get_doc({
225 "doctype": "Employee",
226 "employee_name": fullname,
227 "user_id": email,
228 "status": "Active",
229 "company": defaults.get("company")
230 })
231 emp.flags.ignore_mandatory = True
232 emp.insert(ignore_permissions = True)
233
234# Ennumerate the setup hooks you're going to need, apart from the slides
235
236@frappe.whitelist()
237def update_default_domain_actions_and_get_state():
Rushabh Mehta708e47a2018-08-08 16:37:31 +0530238 domain = frappe.get_cached_value('Company', erpnext.get_default_company(), 'domain')
Prateeksha Singh95d8fd32017-09-04 11:14:04 +0530239 update_domain_actions(domain)
240 return get_domain_actions_state(domain)