blob: 1896f88884ceb10615c970225e329352d42dc6ea [file] [log] [blame]
Anand Doshi885e0742015-03-03 14:55:30 +05301// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
Rushabh Mehtab09d9da2014-01-02 11:47:23 +05302// License: GNU General Public License v3. See license.txt
3
Rushabh Mehta793ba6b2014-02-14 15:47:51 +05304frappe.provide("erpnext.utils");
Nabin Haita3dd72a2014-05-28 12:49:20 +05305erpnext.utils.get_party_details = function(frm, method, args, callback) {
Rushabh Mehta49dd7be2014-01-28 17:43:10 +05306 if(!method) {
Rushabh Mehtacc008cc2014-02-03 16:14:56 +05307 method = "erpnext.accounts.party.get_party_details";
Rushabh Mehta49dd7be2014-01-28 17:43:10 +05308 }
9 if(!args) {
Saurabhc306b212015-10-19 16:32:24 +053010 if(frm.doctype != "Purchase Order" && frm.doc.customer) {
Anand Doshi78eeacb2014-04-23 19:15:15 +053011 args = {
Rushabh Mehtacc008cc2014-02-03 16:14:56 +053012 party: frm.doc.customer,
13 party_type: "Customer",
Rushabh Mehta24da7612014-01-29 15:26:04 +053014 price_list: frm.doc.selling_price_list
15 };
Anand Doshi78eeacb2014-04-23 19:15:15 +053016 } else if(frm.doc.supplier) {
17 args = {
Rushabh Mehtacc008cc2014-02-03 16:14:56 +053018 party: frm.doc.supplier,
19 party_type: "Supplier",
Rushabh Mehta24da7612014-01-29 15:26:04 +053020 price_list: frm.doc.buying_price_list
21 };
Rushabh Mehta49dd7be2014-01-28 17:43:10 +053022 }
shreyas22d26a12016-02-01 15:32:32 +053023
Anand Doshi9a4d1652015-10-12 16:23:51 +053024 if (args) {
Nabin Hait83e68bb2015-10-26 17:40:31 +053025 args.posting_date = frm.doc.posting_date || frm.doc.transaction_date;
Anand Doshi9a4d1652015-10-12 16:23:51 +053026 }
Rushabh Mehta49dd7be2014-01-28 17:43:10 +053027 }
Anand Doshi78eeacb2014-04-23 19:15:15 +053028 if(!args) return;
shreyas22d26a12016-02-01 15:32:32 +053029
Nabin Hait00818bf2015-10-23 16:10:56 +053030 if(frappe.meta.get_docfield(frm.doc.doctype, "taxes")) {
shreyas22d26a12016-02-01 15:32:32 +053031 if(!erpnext.utils.validate_mandatory(frm, "Posting/Transaction Date",
Nabin Hait00818bf2015-10-23 16:10:56 +053032 args.posting_date, args.party_type=="Customer" ? "customer": "supplier")) return;
33 }
shreyas22d26a12016-02-01 15:32:32 +053034
Rushabh Mehtacc008cc2014-02-03 16:14:56 +053035 args.currency = frm.doc.currency;
36 args.company = frm.doc.company;
Nabin Hait4d7c4fc2014-06-18 16:40:27 +053037 args.doctype = frm.doc.doctype;
Rushabh Mehta793ba6b2014-02-14 15:47:51 +053038 frappe.call({
Rushabh Mehtab09d9da2014-01-02 11:47:23 +053039 method: method,
40 args: args,
41 callback: function(r) {
42 if(r.message) {
Rushabh Mehta49dd7be2014-01-28 17:43:10 +053043 frm.updating_party_details = true;
Rushabh Mehtab09d9da2014-01-02 11:47:23 +053044 frm.set_value(r.message);
Rushabh Mehta49dd7be2014-01-28 17:43:10 +053045 frm.updating_party_details = false;
Nabin Haitc1367d92014-05-30 11:43:00 +053046 if(callback) callback();
Rushabh Mehtab09d9da2014-01-02 11:47:23 +053047 }
48 }
49 });
50}
51
Nabin Hait62211172016-03-16 16:22:03 +053052erpnext.utils.get_address_display = function(frm, address_field, display_field, is_your_company_address) {
Rushabh Mehta49dd7be2014-01-28 17:43:10 +053053 if(frm.updating_party_details) return;
shreyas22d26a12016-02-01 15:32:32 +053054
Rushabh Mehta49dd7be2014-01-28 17:43:10 +053055 if(!address_field) {
Saurabh2e65aad2015-10-28 11:40:14 +053056 if(frm.doctype != "Purchase Order" && frm.doc.customer) {
Rushabh Mehta49dd7be2014-01-28 17:43:10 +053057 address_field = "customer_address";
Nabin Hait9d1f0772014-02-19 17:43:24 +053058 } else if(frm.doc.supplier) {
Rushabh Mehta49dd7be2014-01-28 17:43:10 +053059 address_field = "supplier_address";
Nabin Hait9d1f0772014-02-19 17:43:24 +053060 } else return;
Anand Doshi78eeacb2014-04-23 19:15:15 +053061 }
shreyas22d26a12016-02-01 15:32:32 +053062
Nabin Hait9d1f0772014-02-19 17:43:24 +053063 if(!display_field) display_field = "address_display";
Nabin Haitb87e9f22014-01-29 19:51:36 +053064 if(frm.doc[address_field]) {
Rushabh Mehta793ba6b2014-02-14 15:47:51 +053065 frappe.call({
Nabin Haitb87e9f22014-01-29 19:51:36 +053066 method: "erpnext.utilities.doctype.address.address.get_address_display",
Nabin Hait9d1f0772014-02-19 17:43:24 +053067 args: {"address_dict": frm.doc[address_field] },
Nabin Haitb87e9f22014-01-29 19:51:36 +053068 callback: function(r) {
Nabin Hait62211172016-03-16 16:22:03 +053069 if(r.message) {
Nabin Hait9d1f0772014-02-19 17:43:24 +053070 frm.set_value(display_field, r.message)
Neil Trini Lasrado09f9c962015-08-26 10:41:31 +053071 }
Nabin Hait62211172016-03-16 16:22:03 +053072
73 if(frappe.meta.get_docfield(frm.doc.doctype, "taxes") && !is_your_company_address) {
shreyas22d26a12016-02-01 15:32:32 +053074 if(!erpnext.utils.validate_mandatory(frm, "Customer/Supplier",
Nabin Hait00818bf2015-10-23 16:10:56 +053075 frm.doc.customer || frm.doc.supplier, address_field)) return;
shreyas22d26a12016-02-01 15:32:32 +053076
77 if(!erpnext.utils.validate_mandatory(frm, "Posting/Transaction Date",
Nabin Hait00818bf2015-10-23 16:10:56 +053078 frm.doc.posting_date || frm.doc.transaction_date, address_field)) return;
79 } else return;
shreyas22d26a12016-02-01 15:32:32 +053080
Neil Trini Lasrado09f9c962015-08-26 10:41:31 +053081 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 Haitb87e9f22014-01-29 19:51:36 +053097 }
98 })
Nabin Hait62211172016-03-16 16:22:03 +053099 } else {
100 frm.set_value(display_field, null);
Nabin Haitb87e9f22014-01-29 19:51:36 +0530101 }
Nabin Hait62211172016-03-16 16:22:03 +0530102
Rushabh Mehtab09d9da2014-01-02 11:47:23 +0530103}
104
105erpnext.utils.get_contact_details = function(frm) {
Rushabh Mehta49dd7be2014-01-28 17:43:10 +0530106 if(frm.updating_party_details) return;
Anand Doshi78eeacb2014-04-23 19:15:15 +0530107
Nabin Hait9d1f0772014-02-19 17:43:24 +0530108 if(frm.doc["contact_person"]) {
Rushabh Mehta793ba6b2014-02-14 15:47:51 +0530109 frappe.call({
Nabin Haitb87e9f22014-01-29 19:51:36 +0530110 method: "erpnext.utilities.doctype.contact.contact.get_contact_details",
111 args: {contact: frm.doc.contact_person },
112 callback: function(r) {
113 if(r.message)
114 frm.set_value(r.message);
115 }
116 })
117 }
Anand Doshi78eeacb2014-04-23 19:15:15 +0530118}
Nabin Hait00818bf2015-10-23 16:10:56 +0530119
120erpnext.utils.validate_mandatory = function(frm, label, value, trigger_on) {
121 if(!value) {
122 frm.doc[trigger_on] = "";
123 refresh_field(trigger_on);
124 frappe.msgprint(__("Please enter {0} first", [label]));
125 return false;
126 }
127 return true;
shreyas22d26a12016-02-01 15:32:32 +0530128}
129
Saurabh14d646f2016-03-07 20:50:21 +0530130erpnext.utils.get_shipping_address = function(frm){
131 frappe.call({
132 method: "erpnext.utilities.doctype.address.address.get_shipping_address",
133 args: {company: frm.doc.company},
134 callback: function(r){
135 if(r.message){
136 frm.set_value("shipping_address", r.message[0]) //Address title or name
137 frm.set_value("shipping_address_display", r.message[1]) //Address to be displayed on the page
shreyas22d26a12016-02-01 15:32:32 +0530138 }
Saurabh14d646f2016-03-07 20:50:21 +0530139 }
140 });
shreyas22d26a12016-02-01 15:32:32 +0530141}