Anand Doshi | 885e074 | 2015-03-03 14:55:30 +0530 | [diff] [blame] | 1 | // Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors |
Rushabh Mehta | b09d9da | 2014-01-02 11:47:23 +0530 | [diff] [blame] | 2 | // License: GNU General Public License v3. See license.txt |
| 3 | |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 4 | frappe.provide("erpnext.utils"); |
Nabin Hait | a3dd72a | 2014-05-28 12:49:20 +0530 | [diff] [blame] | 5 | erpnext.utils.get_party_details = function(frm, method, args, callback) { |
Rushabh Mehta | 49dd7be | 2014-01-28 17:43:10 +0530 | [diff] [blame] | 6 | if(!method) { |
Rushabh Mehta | cc008cc | 2014-02-03 16:14:56 +0530 | [diff] [blame] | 7 | method = "erpnext.accounts.party.get_party_details"; |
Rushabh Mehta | 49dd7be | 2014-01-28 17:43:10 +0530 | [diff] [blame] | 8 | } |
| 9 | if(!args) { |
| 10 | if(frm.doc.customer) { |
Anand Doshi | 78eeacb | 2014-04-23 19:15:15 +0530 | [diff] [blame] | 11 | args = { |
Rushabh Mehta | cc008cc | 2014-02-03 16:14:56 +0530 | [diff] [blame] | 12 | party: frm.doc.customer, |
| 13 | party_type: "Customer", |
Rushabh Mehta | 24da761 | 2014-01-29 15:26:04 +0530 | [diff] [blame] | 14 | price_list: frm.doc.selling_price_list |
| 15 | }; |
Anand Doshi | 78eeacb | 2014-04-23 19:15:15 +0530 | [diff] [blame] | 16 | } else if(frm.doc.supplier) { |
| 17 | args = { |
Rushabh Mehta | cc008cc | 2014-02-03 16:14:56 +0530 | [diff] [blame] | 18 | party: frm.doc.supplier, |
| 19 | party_type: "Supplier", |
Rushabh Mehta | 24da761 | 2014-01-29 15:26:04 +0530 | [diff] [blame] | 20 | price_list: frm.doc.buying_price_list |
| 21 | }; |
Rushabh Mehta | 49dd7be | 2014-01-28 17:43:10 +0530 | [diff] [blame] | 22 | } |
Anand Doshi | 9a4d165 | 2015-10-12 16:23:51 +0530 | [diff] [blame] | 23 | |
| 24 | if (args) { |
| 25 | args.posting_date = frm.doc.transaction_date; |
| 26 | } |
Rushabh Mehta | 49dd7be | 2014-01-28 17:43:10 +0530 | [diff] [blame] | 27 | } |
Anand Doshi | 78eeacb | 2014-04-23 19:15:15 +0530 | [diff] [blame] | 28 | if(!args) return; |
Nabin Hait | 00818bf | 2015-10-23 16:10:56 +0530 | [diff] [blame] | 29 | |
| 30 | if(frappe.meta.get_docfield(frm.doc.doctype, "taxes")) { |
| 31 | if(!erpnext.utils.validate_mandatory(frm, "Posting/Transaction Date", |
| 32 | args.posting_date, args.party_type=="Customer" ? "customer": "supplier")) return; |
| 33 | } |
| 34 | |
Rushabh Mehta | cc008cc | 2014-02-03 16:14:56 +0530 | [diff] [blame] | 35 | args.currency = frm.doc.currency; |
| 36 | args.company = frm.doc.company; |
Nabin Hait | 4d7c4fc | 2014-06-18 16:40:27 +0530 | [diff] [blame] | 37 | args.doctype = frm.doc.doctype; |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 38 | frappe.call({ |
Rushabh Mehta | b09d9da | 2014-01-02 11:47:23 +0530 | [diff] [blame] | 39 | method: method, |
| 40 | args: args, |
| 41 | callback: function(r) { |
| 42 | if(r.message) { |
Rushabh Mehta | 49dd7be | 2014-01-28 17:43:10 +0530 | [diff] [blame] | 43 | frm.updating_party_details = true; |
Rushabh Mehta | b09d9da | 2014-01-02 11:47:23 +0530 | [diff] [blame] | 44 | frm.set_value(r.message); |
Rushabh Mehta | 49dd7be | 2014-01-28 17:43:10 +0530 | [diff] [blame] | 45 | frm.updating_party_details = false; |
Nabin Hait | c1367d9 | 2014-05-30 11:43:00 +0530 | [diff] [blame] | 46 | if(callback) callback(); |
Rushabh Mehta | b09d9da | 2014-01-02 11:47:23 +0530 | [diff] [blame] | 47 | } |
| 48 | } |
| 49 | }); |
| 50 | } |
| 51 | |
Nabin Hait | 9d1f077 | 2014-02-19 17:43:24 +0530 | [diff] [blame] | 52 | erpnext.utils.get_address_display = function(frm, address_field, display_field) { |
Rushabh Mehta | 49dd7be | 2014-01-28 17:43:10 +0530 | [diff] [blame] | 53 | if(frm.updating_party_details) return; |
Neil Trini Lasrado | 09f9c96 | 2015-08-26 10:41:31 +0530 | [diff] [blame] | 54 | |
Rushabh Mehta | 49dd7be | 2014-01-28 17:43:10 +0530 | [diff] [blame] | 55 | if(!address_field) { |
| 56 | if(frm.doc.customer) { |
| 57 | address_field = "customer_address"; |
Nabin Hait | 9d1f077 | 2014-02-19 17:43:24 +0530 | [diff] [blame] | 58 | } else if(frm.doc.supplier) { |
Rushabh Mehta | 49dd7be | 2014-01-28 17:43:10 +0530 | [diff] [blame] | 59 | address_field = "supplier_address"; |
Nabin Hait | 9d1f077 | 2014-02-19 17:43:24 +0530 | [diff] [blame] | 60 | } else return; |
Anand Doshi | 78eeacb | 2014-04-23 19:15:15 +0530 | [diff] [blame] | 61 | } |
Neil Trini Lasrado | 09f9c96 | 2015-08-26 10:41:31 +0530 | [diff] [blame] | 62 | |
Nabin Hait | 9d1f077 | 2014-02-19 17:43:24 +0530 | [diff] [blame] | 63 | if(!display_field) display_field = "address_display"; |
Nabin Hait | b87e9f2 | 2014-01-29 19:51:36 +0530 | [diff] [blame] | 64 | if(frm.doc[address_field]) { |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 65 | frappe.call({ |
Nabin Hait | b87e9f2 | 2014-01-29 19:51:36 +0530 | [diff] [blame] | 66 | method: "erpnext.utilities.doctype.address.address.get_address_display", |
Nabin Hait | 9d1f077 | 2014-02-19 17:43:24 +0530 | [diff] [blame] | 67 | args: {"address_dict": frm.doc[address_field] }, |
Nabin Hait | b87e9f2 | 2014-01-29 19:51:36 +0530 | [diff] [blame] | 68 | callback: function(r) { |
Neil Trini Lasrado | 09f9c96 | 2015-08-26 10:41:31 +0530 | [diff] [blame] | 69 | if(r.message){ |
Nabin Hait | 9d1f077 | 2014-02-19 17:43:24 +0530 | [diff] [blame] | 70 | frm.set_value(display_field, r.message) |
Neil Trini Lasrado | 09f9c96 | 2015-08-26 10:41:31 +0530 | [diff] [blame] | 71 | } |
Nabin Hait | 00818bf | 2015-10-23 16:10:56 +0530 | [diff] [blame] | 72 | |
| 73 | if(frappe.meta.get_docfield(frm.doc.doctype, "taxes")) { |
| 74 | if(!erpnext.utils.validate_mandatory(frm, "Customer/Supplier", |
| 75 | frm.doc.customer || frm.doc.supplier, address_field)) return; |
| 76 | |
| 77 | if(!erpnext.utils.validate_mandatory(frm, "Posting/Transaction Date", |
| 78 | frm.doc.posting_date || frm.doc.transaction_date, address_field)) return; |
| 79 | } else return; |
| 80 | |
Neil Trini Lasrado | 09f9c96 | 2015-08-26 10:41:31 +0530 | [diff] [blame] | 81 | frappe.call({ |
| 82 | method: "erpnext.accounts.party.set_taxes", |
| 83 | args: { |
| 84 | "party": frm.doc.customer || frm.doc.supplier, |
| 85 | "party_type": (frm.doc.customer ? "Customer" : "Supplier"), |
| 86 | "posting_date": frm.doc.posting_date || frm.doc.transaction_date, |
| 87 | "company": frm.doc.company, |
| 88 | "billing_address": ((frm.doc.customer) ? (frm.doc.customer_address) : (frm.doc.supplier_address)), |
| 89 | "shipping_address": frm.doc.shipping_address_name |
| 90 | }, |
| 91 | callback: function(r) { |
| 92 | if(r.message){ |
| 93 | frm.set_value("taxes_and_charges", r.message) |
| 94 | } |
| 95 | } |
| 96 | }); |
Nabin Hait | b87e9f2 | 2014-01-29 19:51:36 +0530 | [diff] [blame] | 97 | } |
| 98 | }) |
| 99 | } |
Rushabh Mehta | b09d9da | 2014-01-02 11:47:23 +0530 | [diff] [blame] | 100 | } |
| 101 | |
| 102 | erpnext.utils.get_contact_details = function(frm) { |
Rushabh Mehta | 49dd7be | 2014-01-28 17:43:10 +0530 | [diff] [blame] | 103 | if(frm.updating_party_details) return; |
Anand Doshi | 78eeacb | 2014-04-23 19:15:15 +0530 | [diff] [blame] | 104 | |
Nabin Hait | 9d1f077 | 2014-02-19 17:43:24 +0530 | [diff] [blame] | 105 | if(frm.doc["contact_person"]) { |
Rushabh Mehta | 793ba6b | 2014-02-14 15:47:51 +0530 | [diff] [blame] | 106 | frappe.call({ |
Nabin Hait | b87e9f2 | 2014-01-29 19:51:36 +0530 | [diff] [blame] | 107 | method: "erpnext.utilities.doctype.contact.contact.get_contact_details", |
| 108 | args: {contact: frm.doc.contact_person }, |
| 109 | callback: function(r) { |
| 110 | if(r.message) |
| 111 | frm.set_value(r.message); |
| 112 | } |
| 113 | }) |
| 114 | } |
Anand Doshi | 78eeacb | 2014-04-23 19:15:15 +0530 | [diff] [blame] | 115 | } |
Nabin Hait | 00818bf | 2015-10-23 16:10:56 +0530 | [diff] [blame] | 116 | |
| 117 | erpnext.utils.validate_mandatory = function(frm, label, value, trigger_on) { |
| 118 | if(!value) { |
| 119 | frm.doc[trigger_on] = ""; |
| 120 | refresh_field(trigger_on); |
| 121 | frappe.msgprint(__("Please enter {0} first", [label])); |
| 122 | return false; |
| 123 | } |
| 124 | return true; |
| 125 | } |