# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors # License: GNU General Public License v3. See license.txt from __future__ import unicode_literals import json import frappe from erpnext.shopping_cart.cart import get_lead_or_customer, update_cart_address from frappe.desk.form.meta import get_meta no_cache = 1 no_sitemap = 1 def get_context(context): def _get_fields(fieldnames): return [frappe._dict(zip(["label", "fieldname", "fieldtype", "options"], [df.label, df.fieldname, df.fieldtype, df.options])) for df in get_meta("Address").get("fields", {"fieldname": ["in", fieldnames]})] docname = doc = None title = "New Address" if frappe.form_dict.name: doc = frappe.get_doc("Address", frappe.form_dict.name) docname = doc.name title = doc.name return { "doc": doc, "meta": frappe._dict({ "left_fields": _get_fields(["address_title", "address_type", "address_line1", "address_line2", "city", "state", "pincode", "country"]), "right_fields": _get_fields(["email_id", "phone", "fax", "is_primary_address", "is_shipping_address"]) }), "docname": docname, "title": title } @frappe.whitelist() def save_address(fields, address_fieldname=None): party = get_lead_or_customer() fields = json.loads(fields) if fields.get("name"): doc = frappe.get_doc("Address", fields.get("name")) else: doc = frappe.get_doc({"doctype": "Address", "__islocal": 1}) doc.update(fields) party_fieldname = party.doctype.lower() doc.update({ party_fieldname: party.name, (party_fieldname + "_name"): party.get(party_fieldname + "_name") }) doc.ignore_permissions = True doc.save() if address_fieldname: update_cart_address(address_fieldname, doc.name) return doc.name