# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors # License: GNU General Public License v3. See license.txt from __future__ import unicode_literals import frappe, erpnext import json from frappe import _ from frappe.utils import flt @frappe.whitelist() def create_customers(args_data): args = json.loads(args_data) defaults = frappe.defaults.get_defaults() for i in range(1,args.get('max_count')): customer = args.get("customer_name_" + 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_email_" + str(i)): create_contact(customer, "Customer", doc.name, args.get("customer_email_" + str(i))) except frappe.NameError: pass @frappe.whitelist() def create_letterhead(args_data): args = json.loads(args_data) letterhead = args.get("letterhead") if letterhead: try: frappe.get_doc({ "doctype": "Letter Head", "image": letterhead, "letter_head_name": _("Standard"), "is_default": 1 }).insert() except frappe.NameError: pass @frappe.whitelist() def create_suppliers(args_data): args = json.loads(args_data) defaults = frappe.defaults.get_defaults() for i in range(1,args.get('max_count')): supplier = args.get("supplier_name_" + str(i)) if supplier: try: doc = frappe.get_doc({ "doctype":"Supplier", "supplier_name": supplier, "supplier_group": _("Local"), "company": defaults.get("company") }).insert() if args.get("supplier_email_" + str(i)): create_contact(supplier, "Supplier", doc.name, args.get("supplier_email_" + str(i))) except frappe.NameError: pass def create_contact(contact, party_type, party, email): """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('email_ids', dict(email_id=email, is_primary=1)) 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() for i in range(1, args.get('max_count')): 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))), "item_defaults": [{ "default_warehouse": default_warehouse, "company": defaults.get("company_name") }] }).insert() except frappe.NameError: pass else: 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() # Education @frappe.whitelist() def create_program(args_data): args = json.loads(args_data) for i in range(1,args.get('max_count')): 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) for i in range(1,args.get('max_count')): 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) for i in range(1,args.get('max_count')): 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) for i in range(1,args.get('max_count')): 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() for i in range(1,args.get('max_count')): 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) # Enumerate the setup hooks you're going to need, apart from the slides