Rushabh Mehta | 3daa49a | 2014-10-21 16:16:30 +0530 | [diff] [blame] | 1 | # Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors |
| 2 | # License: GNU General Public License v3. See license.txt |
| 3 | |
| 4 | from __future__ import unicode_literals |
| 5 | import json |
| 6 | |
| 7 | import frappe |
| 8 | from erpnext.shopping_cart.cart import get_lead_or_customer, update_cart_address |
| 9 | from frappe.desk.form.meta import get_meta |
| 10 | |
| 11 | no_cache = 1 |
| 12 | no_sitemap = 1 |
| 13 | |
| 14 | def 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() |
| 40 | def 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 |