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