blob: 709da574c2baba8607a69d12a5420eba40d2f2a7 [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()
41def create_suppliers(args_data):
42 args = json.loads(args_data)
43 defaults = frappe.defaults.get_defaults()
44 for i in xrange(1,4):
45 supplier = args.get("supplier_" + str(i))
46 if supplier:
47 try:
48 doc = frappe.get_doc({
49 "doctype":"Supplier",
50 "supplier_name": supplier,
51 "supplier_type": _("Local"),
52 "company": defaults.get("company")
53 }).insert()
54
55 if args.get("supplier_contact_" + str(i)):
56 create_contact(args.get("supplier_contact_" + str(i)),
57 "Supplier", doc.name)
58 except frappe.NameError:
59 pass
60
61def create_contact(contact, party_type, party):
62 """Create contact based on given contact name"""
63 contact = contact .split(" ")
64
65 contact = frappe.get_doc({
66 "doctype":"Contact",
67 "first_name":contact[0],
68 "last_name": len(contact) > 1 and contact[1] or ""
69 })
70 contact.append('links', dict(link_doctype=party_type, link_name=party))
71 contact.insert()
72
73@frappe.whitelist()
74def create_items(args_data):
75 args = json.loads(args_data)
76 defaults = frappe.defaults.get_defaults()
77 for i in xrange(1,4):
78 item = args.get("item_" + str(i))
79 if item:
80 default_warehouse = ""
81 default_warehouse = frappe.db.get_value("Warehouse", filters={
82 "warehouse_name": _("Finished Goods"),
83 "company": defaults.get("company_name")
84 })
85
86 try:
87 frappe.get_doc({
88 "doctype":"Item",
89 "item_code": item,
90 "item_name": item,
91 "description": item,
92 "show_in_website": 1,
93 "is_sales_item": 1,
94 "is_purchase_item": 1,
95 "is_stock_item": 1,
96 "item_group": "Products",
97 "stock_uom": _(args.get("item_uom_" + str(i))),
98 "default_warehouse": default_warehouse
99 }).insert()
100
101 if args.get("item_price_" + str(i)):
102 item_price = flt(args.get("item_price_" + str(i)))
103
104 price_list_name = frappe.db.get_value("Price List", {"selling": 1})
105 make_item_price(item, price_list_name, item_price)
106 price_list_name = frappe.db.get_value("Price List", {"buying": 1})
107 make_item_price(item, price_list_name, item_price)
108
109 except frappe.NameError:
110 pass
111
112def make_item_price(item, price_list_name, item_price):
113 frappe.get_doc({
114 "doctype": "Item Price",
115 "price_list": price_list_name,
116 "item_code": item,
117 "price_list_rate": item_price
118 }).insert()
119
120# Schools
121@frappe.whitelist()
122def create_program(args_data):
123 args = json.loads(args_data)
124 for i in xrange(1,4):
125 if args.get("program_" + str(i)):
126 program = frappe.new_doc("Program")
127 program.program_code = args.get("program_" + str(i))
128 program.program_name = args.get("program_" + str(i))
129 try:
130 program.save()
131 except frappe.DuplicateEntryError:
132 pass
133
134@frappe.whitelist()
135def create_course(args_data):
136 args = json.loads(args_data)
137 for i in xrange(1,4):
138 if args.get("course_" + str(i)):
139 course = frappe.new_doc("Course")
140 course.course_code = args.get("course_" + str(i))
141 course.course_name = args.get("course_" + str(i))
142 try:
143 course.save()
144 except frappe.DuplicateEntryError:
145 pass
146
147@frappe.whitelist()
148def create_instructor(args_data):
149 args = json.loads(args_data)
150 for i in xrange(1,4):
151 if args.get("instructor_" + str(i)):
152 instructor = frappe.new_doc("Instructor")
153 instructor.instructor_name = args.get("instructor_" + str(i))
154 try:
155 instructor.save()
156 except frappe.DuplicateEntryError:
157 pass
158
159@frappe.whitelist()
160def create_room(args_data):
161 args = json.loads(args_data)
162 for i in xrange(1,4):
163 if args.get("room_" + str(i)):
164 room = frappe.new_doc("Room")
165 room.room_name = args.get("room_" + str(i))
166 room.seating_capacity = args.get("room_capacity_" + str(i))
167 try:
168 room.save()
169 except frappe.DuplicateEntryError:
170 pass
171
172@frappe.whitelist()
173def create_users(args_data):
174 if frappe.session.user == 'Administrator':
175 return
176 args = json.loads(args_data)
177 defaults = frappe.defaults.get_defaults()
178 for i in xrange(1,4):
179 email = args.get("user_email_" + str(i))
180 fullname = args.get("user_fullname_" + str(i))
181 if email:
182 if not fullname:
183 fullname = email.split("@")[0]
184
185 parts = fullname.split(" ", 1)
186
187 user = frappe.get_doc({
188 "doctype": "User",
189 "email": email,
190 "first_name": parts[0],
191 "last_name": parts[1] if len(parts) > 1 else "",
192 "enabled": 1,
193 "user_type": "System User"
194 })
195
196 # default roles
197 user.append_roles("Projects User", "Stock User", "Support Team")
198 user.flags.delay_emails = True
199
200 if not frappe.db.get_value("User", email):
201 user.insert(ignore_permissions=True)
202
203 # create employee
204 emp = frappe.get_doc({
205 "doctype": "Employee",
206 "employee_name": fullname,
207 "user_id": email,
208 "status": "Active",
209 "company": defaults.get("company")
210 })
211 emp.flags.ignore_mandatory = True
212 emp.insert(ignore_permissions = True)
213
214# Ennumerate the setup hooks you're going to need, apart from the slides
215
216@frappe.whitelist()
217def update_default_domain_actions_and_get_state():
218 domain = frappe.db.get_value('Company', erpnext.get_default_company(), 'domain')
219 update_domain_actions(domain)
220 return get_domain_actions_state(domain)