blob: 08dd7efe19146641dafbbdf5897072e1a4ae9824 [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()
21 for i in xrange(1,4):
22 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)
43 letterhead = args.get("letterhead")
44 if letterhead:
45 try:
46 frappe.get_doc({
47 "doctype":"Letter Head",
48 "content":"""<div><img src="{0}" style='max-width: 100%%;'><br></div>""".format(letterhead),
49 "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()
59 for i in xrange(1,4):
60 supplier = args.get("supplier_" + str(i))
61 if supplier:
62 try:
63 doc = frappe.get_doc({
64 "doctype":"Supplier",
65 "supplier_name": supplier,
66 "supplier_type": _("Local"),
67 "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()
92 for i in xrange(1,4):
93 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,
111 "item_group": "Products",
112 "stock_uom": _(args.get("item_uom_" + str(i))),
113 "default_warehouse": default_warehouse
114 }).insert()
115
116 if args.get("item_price_" + str(i)):
117 item_price = flt(args.get("item_price_" + str(i)))
118
119 price_list_name = frappe.db.get_value("Price List", {"selling": 1})
120 make_item_price(item, price_list_name, item_price)
121 price_list_name = frappe.db.get_value("Price List", {"buying": 1})
122 make_item_price(item, price_list_name, item_price)
123
124 except frappe.NameError:
125 pass
126
127def make_item_price(item, price_list_name, item_price):
128 frappe.get_doc({
129 "doctype": "Item Price",
130 "price_list": price_list_name,
131 "item_code": item,
132 "price_list_rate": item_price
133 }).insert()
134
Manas Solanki966f1412017-11-23 15:22:10 +0530135# Education
Prateeksha Singh95d8fd32017-09-04 11:14:04 +0530136@frappe.whitelist()
137def create_program(args_data):
138 args = json.loads(args_data)
139 for i in xrange(1,4):
140 if args.get("program_" + str(i)):
141 program = frappe.new_doc("Program")
142 program.program_code = args.get("program_" + str(i))
143 program.program_name = args.get("program_" + str(i))
144 try:
145 program.save()
146 except frappe.DuplicateEntryError:
147 pass
148
149@frappe.whitelist()
150def create_course(args_data):
151 args = json.loads(args_data)
152 for i in xrange(1,4):
153 if args.get("course_" + str(i)):
154 course = frappe.new_doc("Course")
155 course.course_code = args.get("course_" + str(i))
156 course.course_name = args.get("course_" + str(i))
157 try:
158 course.save()
159 except frappe.DuplicateEntryError:
160 pass
161
162@frappe.whitelist()
163def create_instructor(args_data):
164 args = json.loads(args_data)
165 for i in xrange(1,4):
166 if args.get("instructor_" + str(i)):
167 instructor = frappe.new_doc("Instructor")
168 instructor.instructor_name = args.get("instructor_" + str(i))
169 try:
170 instructor.save()
171 except frappe.DuplicateEntryError:
172 pass
173
174@frappe.whitelist()
175def create_room(args_data):
176 args = json.loads(args_data)
177 for i in xrange(1,4):
178 if args.get("room_" + str(i)):
179 room = frappe.new_doc("Room")
180 room.room_name = args.get("room_" + str(i))
181 room.seating_capacity = args.get("room_capacity_" + str(i))
182 try:
183 room.save()
184 except frappe.DuplicateEntryError:
185 pass
186
187@frappe.whitelist()
188def create_users(args_data):
189 if frappe.session.user == 'Administrator':
190 return
191 args = json.loads(args_data)
192 defaults = frappe.defaults.get_defaults()
193 for i in xrange(1,4):
194 email = args.get("user_email_" + str(i))
195 fullname = args.get("user_fullname_" + str(i))
196 if email:
197 if not fullname:
198 fullname = email.split("@")[0]
199
200 parts = fullname.split(" ", 1)
201
202 user = frappe.get_doc({
203 "doctype": "User",
204 "email": email,
205 "first_name": parts[0],
206 "last_name": parts[1] if len(parts) > 1 else "",
207 "enabled": 1,
208 "user_type": "System User"
209 })
210
211 # default roles
212 user.append_roles("Projects User", "Stock User", "Support Team")
213 user.flags.delay_emails = True
214
215 if not frappe.db.get_value("User", email):
216 user.insert(ignore_permissions=True)
217
218 # create employee
219 emp = frappe.get_doc({
220 "doctype": "Employee",
221 "employee_name": fullname,
222 "user_id": email,
223 "status": "Active",
224 "company": defaults.get("company")
225 })
226 emp.flags.ignore_mandatory = True
227 emp.insert(ignore_permissions = True)
228
229# Ennumerate the setup hooks you're going to need, apart from the slides
230
231@frappe.whitelist()
232def update_default_domain_actions_and_get_state():
233 domain = frappe.db.get_value('Company', erpnext.get_default_company(), 'domain')
234 update_domain_actions(domain)
235 return get_domain_actions_state(domain)