63 lines
1.7 KiB
Python
63 lines
1.7 KiB
Python
# 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
|