blob: 4894c64a1f705d44929840d38481b747a73199fd [file] [log] [blame]
Abhishek Balam6e9e7b42020-10-14 19:31:37 +05301import frappe
Abhishek Balam2f528c12020-10-14 19:48:57 +05302from frappe import _
Abhishek Balam6e9e7b42020-10-14 19:31:37 +05303from frappe.contacts.doctype.address.address import Address
Abhishek Balam89419c92020-10-14 20:09:05 +05304from frappe.contacts.doctype.address.address import get_address_templates
Abhishek Balam6e9e7b42020-10-14 19:31:37 +05305
Faris Ansari22bcad92020-10-16 15:28:12 +05306class ERPNextAddress(Address):
Abhishek Balam6e9e7b42020-10-14 19:31:37 +05307 def validate(self):
Abhishek Balam6e9e7b42020-10-14 19:31:37 +05308 self.validate_reference()
Faris Ansari22bcad92020-10-16 15:28:12 +05309 super(ERPNextAddress, self).validate()
Abhishek Balam6e9e7b42020-10-14 19:31:37 +053010
Abhishek Balam6e9e7b42020-10-14 19:31:37 +053011 def link_address(self):
12 """Link address based on owner"""
Faris Ansari22bcad92020-10-16 15:28:12 +053013 if not self.is_your_company_address:
14 return
15
16 return super(ERPNextAddress, self).link_address()
Abhishek Balam6e9e7b42020-10-14 19:31:37 +053017
Abhishek Balam2f528c12020-10-14 19:48:57 +053018 def validate_reference(self):
Faris Ansari22bcad92020-10-16 15:28:12 +053019 if self.is_your_company_address and not [
20 row for row in self.links if row.link_doctype == "Company"
21 ]:
22 frappe.throw(_("Address needs to be linked to a Company. Please add a row for Company in the Links table."),
23 title=_("Company Not Linked"))
24
Abhishek Balam89419c92020-10-14 20:09:05 +053025@frappe.whitelist()
26def get_shipping_address(company, address = None):
27 filters = [
28 ["Dynamic Link", "link_doctype", "=", "Company"],
29 ["Dynamic Link", "link_name", "=", company],
30 ["Address", "is_your_company_address", "=", 1]
31 ]
32 fields = ["*"]
33 if address and frappe.db.get_value('Dynamic Link',
34 {'parent': address, 'link_name': company}):
35 filters.append(["Address", "name", "=", address])
36
37 address = frappe.get_all("Address", filters=filters, fields=fields) or {}
38
39 if address:
40 address_as_dict = address[0]
41 name, address_template = get_address_templates(address_as_dict)
42 return address_as_dict.get("name"), frappe.render_template(address_template, address_as_dict)