blob: 46dde92c8f2820c2d70b339adaf93be0234d770c [file] [log] [blame]
Rushabh Mehta3daa49a2014-10-21 16:16:30 +05301# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
2# License: GNU General Public License v3. See license.txt
3
4from __future__ import unicode_literals
5import json
6
7import frappe
8from erpnext.shopping_cart.cart import get_lead_or_customer, update_cart_address
9from frappe.desk.form.meta import get_meta
10
11no_cache = 1
12no_sitemap = 1
13
14def get_context(context):
15 def _get_fields(fieldnames):
16 return [frappe._dict(zip(["label", "fieldname", "fieldtype", "options"],
17 [df.label, df.fieldname, df.fieldtype, df.options]))
18 for df in get_meta("Address").get("fields", {"fieldname": ["in", fieldnames]})]
19
20 docname = doc = None
21 title = "New Address"
22 if frappe.form_dict.name:
23 doc = frappe.get_doc("Address", frappe.form_dict.name)
24 docname = doc.name
25 title = doc.name
26
27 return {
28 "doc": doc,
29 "meta": frappe._dict({
30 "left_fields": _get_fields(["address_title", "address_type", "address_line1", "address_line2",
31 "city", "state", "pincode", "country"]),
32 "right_fields": _get_fields(["email_id", "phone", "fax", "is_primary_address",
33 "is_shipping_address"])
34 }),
35 "docname": docname,
36 "title": title
37 }
38
39@frappe.whitelist()
40def save_address(fields, address_fieldname=None):
41 party = get_lead_or_customer()
42 fields = json.loads(fields)
43
44 if fields.get("name"):
45 doc = frappe.get_doc("Address", fields.get("name"))
46 else:
47 doc = frappe.get_doc({"doctype": "Address", "__islocal": 1})
48
49 doc.update(fields)
50
51 party_fieldname = party.doctype.lower()
52 doc.update({
53 party_fieldname: party.name,
54 (party_fieldname + "_name"): party.get(party_fieldname + "_name")
55 })
56 doc.ignore_permissions = True
57 doc.save()
58
59 if address_fieldname:
60 update_cart_address(address_fieldname, doc.name)
61
62 return doc.name