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