2017-09-04 05:44:04 +00:00
|
|
|
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
|
|
|
|
# License: GNU General Public License v3. See license.txt
|
|
|
|
|
|
|
|
import frappe, erpnext
|
|
|
|
|
|
|
|
import json
|
|
|
|
from frappe import _
|
|
|
|
from frappe.utils import flt
|
|
|
|
from erpnext.setup.doctype.setup_progress.setup_progress import update_domain_actions, get_domain_actions_state
|
|
|
|
|
2017-09-13 13:11:01 +00:00
|
|
|
@frappe.whitelist()
|
|
|
|
def set_sales_target(args_data):
|
|
|
|
args = json.loads(args_data)
|
|
|
|
defaults = frappe.defaults.get_defaults()
|
|
|
|
frappe.db.set_value("Company", defaults.get("company"), "monthly_sales_target", args.get('monthly_sales_target'))
|
|
|
|
|
2017-09-04 05:44:04 +00:00
|
|
|
@frappe.whitelist()
|
|
|
|
def create_customers(args_data):
|
|
|
|
args = json.loads(args_data)
|
|
|
|
defaults = frappe.defaults.get_defaults()
|
2018-02-28 10:42:51 +00:00
|
|
|
for i in range(1,4):
|
2017-09-04 05:44:04 +00:00
|
|
|
customer = args.get("customer_" + str(i))
|
|
|
|
if customer:
|
|
|
|
try:
|
|
|
|
doc = frappe.get_doc({
|
|
|
|
"doctype":"Customer",
|
|
|
|
"customer_name": customer,
|
|
|
|
"customer_type": "Company",
|
|
|
|
"customer_group": _("Commercial"),
|
|
|
|
"territory": defaults.get("country"),
|
|
|
|
"company": defaults.get("company")
|
|
|
|
}).insert()
|
|
|
|
|
|
|
|
if args.get("customer_contact_" + str(i)):
|
|
|
|
create_contact(args.get("customer_contact_" + str(i)),
|
|
|
|
"Customer", doc.name)
|
|
|
|
except frappe.NameError:
|
|
|
|
pass
|
|
|
|
|
2017-11-28 10:39:58 +00:00
|
|
|
@frappe.whitelist()
|
|
|
|
def create_letterhead(args_data):
|
|
|
|
args = json.loads(args_data)
|
2018-01-25 11:59:57 +00:00
|
|
|
letterhead = args.get("letterhead")
|
2017-11-28 10:39:58 +00:00
|
|
|
if letterhead:
|
|
|
|
try:
|
|
|
|
frappe.get_doc({
|
|
|
|
"doctype":"Letter Head",
|
2018-01-25 11:59:57 +00:00
|
|
|
"content":"""<div><img src="{0}" style='max-width: 100%%;'><br></div>""".format(letterhead.encode('utf-8')),
|
2017-11-28 10:39:58 +00:00
|
|
|
"letter_head_name": _("Standard"),
|
|
|
|
"is_default": 1
|
|
|
|
}).insert()
|
|
|
|
except frappe.NameError:
|
|
|
|
pass
|
|
|
|
|
2017-09-04 05:44:04 +00:00
|
|
|
@frappe.whitelist()
|
|
|
|
def create_suppliers(args_data):
|
|
|
|
args = json.loads(args_data)
|
|
|
|
defaults = frappe.defaults.get_defaults()
|
2018-02-28 10:42:51 +00:00
|
|
|
for i in range(1,4):
|
2017-09-04 05:44:04 +00:00
|
|
|
supplier = args.get("supplier_" + str(i))
|
|
|
|
if supplier:
|
|
|
|
try:
|
|
|
|
doc = frappe.get_doc({
|
|
|
|
"doctype":"Supplier",
|
|
|
|
"supplier_name": supplier,
|
|
|
|
"supplier_type": _("Local"),
|
|
|
|
"company": defaults.get("company")
|
|
|
|
}).insert()
|
|
|
|
|
|
|
|
if args.get("supplier_contact_" + str(i)):
|
|
|
|
create_contact(args.get("supplier_contact_" + str(i)),
|
|
|
|
"Supplier", doc.name)
|
|
|
|
except frappe.NameError:
|
|
|
|
pass
|
|
|
|
|
|
|
|
def create_contact(contact, party_type, party):
|
|
|
|
"""Create contact based on given contact name"""
|
|
|
|
contact = contact .split(" ")
|
|
|
|
|
|
|
|
contact = frappe.get_doc({
|
|
|
|
"doctype":"Contact",
|
|
|
|
"first_name":contact[0],
|
|
|
|
"last_name": len(contact) > 1 and contact[1] or ""
|
|
|
|
})
|
|
|
|
contact.append('links', dict(link_doctype=party_type, link_name=party))
|
|
|
|
contact.insert()
|
|
|
|
|
|
|
|
@frappe.whitelist()
|
|
|
|
def create_items(args_data):
|
|
|
|
args = json.loads(args_data)
|
|
|
|
defaults = frappe.defaults.get_defaults()
|
2018-02-28 10:42:51 +00:00
|
|
|
for i in range(1,4):
|
2017-09-04 05:44:04 +00:00
|
|
|
item = args.get("item_" + str(i))
|
|
|
|
if item:
|
|
|
|
default_warehouse = ""
|
|
|
|
default_warehouse = frappe.db.get_value("Warehouse", filters={
|
|
|
|
"warehouse_name": _("Finished Goods"),
|
|
|
|
"company": defaults.get("company_name")
|
|
|
|
})
|
|
|
|
|
|
|
|
try:
|
|
|
|
frappe.get_doc({
|
|
|
|
"doctype":"Item",
|
|
|
|
"item_code": item,
|
|
|
|
"item_name": item,
|
|
|
|
"description": item,
|
|
|
|
"show_in_website": 1,
|
|
|
|
"is_sales_item": 1,
|
|
|
|
"is_purchase_item": 1,
|
|
|
|
"is_stock_item": 1,
|
|
|
|
"item_group": "Products",
|
|
|
|
"stock_uom": _(args.get("item_uom_" + str(i))),
|
|
|
|
"default_warehouse": default_warehouse
|
|
|
|
}).insert()
|
|
|
|
|
2017-12-19 07:18:27 +00:00
|
|
|
except frappe.NameError:
|
|
|
|
pass
|
|
|
|
else:
|
2017-09-04 05:44:04 +00:00
|
|
|
if args.get("item_price_" + str(i)):
|
|
|
|
item_price = flt(args.get("item_price_" + str(i)))
|
|
|
|
|
|
|
|
price_list_name = frappe.db.get_value("Price List", {"selling": 1})
|
|
|
|
make_item_price(item, price_list_name, item_price)
|
|
|
|
price_list_name = frappe.db.get_value("Price List", {"buying": 1})
|
|
|
|
make_item_price(item, price_list_name, item_price)
|
|
|
|
|
|
|
|
|
|
|
|
def make_item_price(item, price_list_name, item_price):
|
|
|
|
frappe.get_doc({
|
|
|
|
"doctype": "Item Price",
|
|
|
|
"price_list": price_list_name,
|
|
|
|
"item_code": item,
|
|
|
|
"price_list_rate": item_price
|
|
|
|
}).insert()
|
|
|
|
|
2017-11-23 09:52:10 +00:00
|
|
|
# Education
|
2017-09-04 05:44:04 +00:00
|
|
|
@frappe.whitelist()
|
|
|
|
def create_program(args_data):
|
|
|
|
args = json.loads(args_data)
|
2018-02-28 10:42:51 +00:00
|
|
|
for i in range(1,4):
|
2017-09-04 05:44:04 +00:00
|
|
|
if args.get("program_" + str(i)):
|
|
|
|
program = frappe.new_doc("Program")
|
|
|
|
program.program_code = args.get("program_" + str(i))
|
|
|
|
program.program_name = args.get("program_" + str(i))
|
|
|
|
try:
|
|
|
|
program.save()
|
|
|
|
except frappe.DuplicateEntryError:
|
|
|
|
pass
|
|
|
|
|
|
|
|
@frappe.whitelist()
|
|
|
|
def create_course(args_data):
|
|
|
|
args = json.loads(args_data)
|
2018-02-28 10:42:51 +00:00
|
|
|
for i in range(1,4):
|
2017-09-04 05:44:04 +00:00
|
|
|
if args.get("course_" + str(i)):
|
|
|
|
course = frappe.new_doc("Course")
|
|
|
|
course.course_code = args.get("course_" + str(i))
|
|
|
|
course.course_name = args.get("course_" + str(i))
|
|
|
|
try:
|
|
|
|
course.save()
|
|
|
|
except frappe.DuplicateEntryError:
|
|
|
|
pass
|
|
|
|
|
|
|
|
@frappe.whitelist()
|
|
|
|
def create_instructor(args_data):
|
|
|
|
args = json.loads(args_data)
|
2018-02-28 10:42:51 +00:00
|
|
|
for i in range(1,4):
|
2017-09-04 05:44:04 +00:00
|
|
|
if args.get("instructor_" + str(i)):
|
|
|
|
instructor = frappe.new_doc("Instructor")
|
|
|
|
instructor.instructor_name = args.get("instructor_" + str(i))
|
|
|
|
try:
|
|
|
|
instructor.save()
|
|
|
|
except frappe.DuplicateEntryError:
|
|
|
|
pass
|
|
|
|
|
|
|
|
@frappe.whitelist()
|
|
|
|
def create_room(args_data):
|
|
|
|
args = json.loads(args_data)
|
2018-02-28 10:42:51 +00:00
|
|
|
for i in range(1,4):
|
2017-09-04 05:44:04 +00:00
|
|
|
if args.get("room_" + str(i)):
|
|
|
|
room = frappe.new_doc("Room")
|
|
|
|
room.room_name = args.get("room_" + str(i))
|
|
|
|
room.seating_capacity = args.get("room_capacity_" + str(i))
|
|
|
|
try:
|
|
|
|
room.save()
|
|
|
|
except frappe.DuplicateEntryError:
|
|
|
|
pass
|
|
|
|
|
|
|
|
@frappe.whitelist()
|
|
|
|
def create_users(args_data):
|
|
|
|
if frappe.session.user == 'Administrator':
|
|
|
|
return
|
|
|
|
args = json.loads(args_data)
|
|
|
|
defaults = frappe.defaults.get_defaults()
|
2018-02-28 10:42:51 +00:00
|
|
|
for i in range(1,4):
|
2017-09-04 05:44:04 +00:00
|
|
|
email = args.get("user_email_" + str(i))
|
|
|
|
fullname = args.get("user_fullname_" + str(i))
|
|
|
|
if email:
|
|
|
|
if not fullname:
|
|
|
|
fullname = email.split("@")[0]
|
|
|
|
|
|
|
|
parts = fullname.split(" ", 1)
|
|
|
|
|
|
|
|
user = frappe.get_doc({
|
|
|
|
"doctype": "User",
|
|
|
|
"email": email,
|
|
|
|
"first_name": parts[0],
|
|
|
|
"last_name": parts[1] if len(parts) > 1 else "",
|
|
|
|
"enabled": 1,
|
|
|
|
"user_type": "System User"
|
|
|
|
})
|
|
|
|
|
|
|
|
# default roles
|
|
|
|
user.append_roles("Projects User", "Stock User", "Support Team")
|
|
|
|
user.flags.delay_emails = True
|
|
|
|
|
|
|
|
if not frappe.db.get_value("User", email):
|
|
|
|
user.insert(ignore_permissions=True)
|
|
|
|
|
|
|
|
# create employee
|
|
|
|
emp = frappe.get_doc({
|
|
|
|
"doctype": "Employee",
|
|
|
|
"employee_name": fullname,
|
|
|
|
"user_id": email,
|
|
|
|
"status": "Active",
|
|
|
|
"company": defaults.get("company")
|
|
|
|
})
|
|
|
|
emp.flags.ignore_mandatory = True
|
|
|
|
emp.insert(ignore_permissions = True)
|
|
|
|
|
|
|
|
# Ennumerate the setup hooks you're going to need, apart from the slides
|
|
|
|
|
|
|
|
@frappe.whitelist()
|
|
|
|
def update_default_domain_actions_and_get_state():
|
|
|
|
domain = frappe.db.get_value('Company', erpnext.get_default_company(), 'domain')
|
|
|
|
update_domain_actions(domain)
|
|
|
|
return get_domain_actions_state(domain)
|