brotherton-erpnext/erpnext/public/js/utils/party.js

233 lines
6.2 KiB
JavaScript
Raw Normal View History

// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
// License: GNU General Public License v3. See license.txt
2014-02-14 10:17:51 +00:00
frappe.provide("erpnext.utils");
2014-05-28 07:19:20 +00:00
erpnext.utils.get_party_details = function(frm, method, args, callback) {
if(!method) {
2014-02-03 10:44:56 +00:00
method = "erpnext.accounts.party.get_party_details";
}
if(!args) {
2015-10-19 11:02:24 +00:00
if(frm.doctype != "Purchase Order" && frm.doc.customer) {
args = {
2014-02-03 10:44:56 +00:00
party: frm.doc.customer,
party_type: "Customer",
2014-01-29 09:56:04 +00:00
price_list: frm.doc.selling_price_list
};
} else if(frm.doc.supplier) {
args = {
2014-02-03 10:44:56 +00:00
party: frm.doc.supplier,
party_type: "Supplier",
bill_date: frm.doc.bill_date,
2014-01-29 09:56:04 +00:00
price_list: frm.doc.buying_price_list
};
}
if (args) {
2015-10-26 12:10:31 +00:00
args.posting_date = frm.doc.posting_date || frm.doc.transaction_date;
}
}
if(!args || !args.party) return;
2015-10-23 10:40:56 +00:00
if(frappe.meta.get_docfield(frm.doc.doctype, "taxes")) {
if(!erpnext.utils.validate_mandatory(frm, "Posting/Transaction Date",
2015-10-23 10:40:56 +00:00
args.posting_date, args.party_type=="Customer" ? "customer": "supplier")) return;
}
2014-02-03 10:44:56 +00:00
args.currency = frm.doc.currency;
args.company = frm.doc.company;
2014-06-18 11:10:27 +00:00
args.doctype = frm.doc.doctype;
2014-02-14 10:17:51 +00:00
frappe.call({
method: method,
args: args,
callback: function(r) {
if(r.message) {
frm.supplier_tds = r.message.supplier_tds;
frm.updating_party_details = true;
frappe.run_serially([
() => frm.set_value(r.message),
() => {
frm.updating_party_details = false;
if(callback) callback();
frm.refresh();
erpnext.utils.add_item(frm);
}
]);
}
}
});
}
erpnext.utils.add_item = function(frm) {
if(frm.is_new()) {
var prev_route = frappe.get_prev_route();
if(prev_route[1]==='Item' && !(frm.doc.items && frm.doc.items.length)) {
// add row
2017-05-30 07:24:42 +00:00
var item = frm.add_child('items');
frm.refresh_field('items');
// set item
frappe.model.set_value(item.doctype, item.name, 'item_code', prev_route[2]);
}
}
}
erpnext.utils.get_address_display = function(frm, address_field, display_field, is_your_company_address) {
if(frm.updating_party_details) return;
if(!address_field) {
if(frm.doctype != "Purchase Order" && frm.doc.customer) {
address_field = "customer_address";
2014-02-19 12:13:24 +00:00
} else if(frm.doc.supplier) {
address_field = "supplier_address";
2014-02-19 12:13:24 +00:00
} else return;
}
2014-02-19 12:13:24 +00:00
if(!display_field) display_field = "address_display";
2014-01-29 14:21:36 +00:00
if(frm.doc[address_field]) {
2014-02-14 10:17:51 +00:00
frappe.call({
method: "frappe.contacts.doctype.address.address.get_address_display",
2014-02-19 12:13:24 +00:00
args: {"address_dict": frm.doc[address_field] },
2014-01-29 14:21:36 +00:00
callback: function(r) {
if(r.message) {
2014-02-19 12:13:24 +00:00
frm.set_value(display_field, r.message)
2015-08-26 05:11:31 +00:00
}
2014-01-29 14:21:36 +00:00
}
})
} else {
frm.set_value(display_field, '');
2014-01-29 14:21:36 +00:00
}
2016-04-08 12:06:10 +00:00
};
2018-12-28 20:49:11 +00:00
erpnext.utils.set_taxes_from_address = function(frm, triggered_from_field, billing_address_field, shipping_address_field) {
if(frm.updating_party_details) return;
if(frappe.meta.get_docfield(frm.doc.doctype, "taxes")) {
if(!erpnext.utils.validate_mandatory(frm, "Lead/Customer/Supplier",
frm.doc.customer || frm.doc.supplier || frm.doc.lead, triggered_from_field)) {
return;
}
if(!erpnext.utils.validate_mandatory(frm, "Posting/Transaction Date",
frm.doc.posting_date || frm.doc.transaction_date, triggered_from_field)) {
return;
}
} else {
return;
}
frappe.call({
method: "erpnext.accounts.party.get_address_tax_category",
args: {
"tax_category": frm.doc.tax_category,
"billing_address": frm.doc[billing_address_field],
"shipping_address": frm.doc[shipping_address_field]
},
callback: function(r) {
if(!r.exc){
if(frm.doc.tax_category != r.message) {
frm.set_value("tax_category", r.message);
} else {
erpnext.utils.set_taxes(frm, triggered_from_field);
}
}
}
});
};
erpnext.utils.set_taxes = function(frm, triggered_from_field) {
if(frappe.meta.get_docfield(frm.doc.doctype, "taxes")) {
2016-04-08 12:06:10 +00:00
if(!erpnext.utils.validate_mandatory(frm, "Lead/Customer/Supplier",
frm.doc.customer || frm.doc.supplier || frm.doc.lead, triggered_from_field)) {
2017-05-30 07:24:42 +00:00
return;
}
2016-04-11 06:40:20 +00:00
2016-04-08 12:06:10 +00:00
if(!erpnext.utils.validate_mandatory(frm, "Posting/Transaction Date",
frm.doc.posting_date || frm.doc.transaction_date, triggered_from_field)) {
2016-04-08 12:06:10 +00:00
return;
}
} else {
return;
}
var party_type, party;
if (frm.doc.lead) {
party_type = 'Lead';
party = frm.doc.lead;
} else if (frm.doc.customer) {
party_type = 'Customer';
party = frm.doc.customer;
} else if (frm.doc.supplier) {
party_type = 'Supplier';
party = frm.doc.supplier;
}
2016-04-11 12:04:25 +00:00
2016-04-08 12:06:10 +00:00
frappe.call({
method: "erpnext.accounts.party.set_taxes",
args: {
"party": party,
"party_type": party_type,
"posting_date": frm.doc.posting_date || frm.doc.transaction_date,
"company": frm.doc.company,
2019-01-06 13:14:18 +00:00
"customer_group": frm.doc.customer_group,
"supplier_group": frm.doc.supplier_group,
"tax_category": frm.doc.tax_category,
2016-04-08 12:06:10 +00:00
"billing_address": ((frm.doc.customer || frm.doc.lead) ? (frm.doc.customer_address) : (frm.doc.supplier_address)),
"shipping_address": frm.doc.shipping_address_name
},
callback: function(r) {
if(r.message){
frm.set_value("taxes_and_charges", r.message)
}
}
});
};
erpnext.utils.get_contact_details = function(frm) {
if(frm.updating_party_details) return;
2014-02-19 12:13:24 +00:00
if(frm.doc["contact_person"]) {
2014-02-14 10:17:51 +00:00
frappe.call({
method: "frappe.contacts.doctype.contact.contact.get_contact_details",
2014-01-29 14:21:36 +00:00
args: {contact: frm.doc.contact_person },
callback: function(r) {
if(r.message)
frm.set_value(r.message);
}
})
}
}
2015-10-23 10:40:56 +00:00
erpnext.utils.validate_mandatory = function(frm, label, value, trigger_on) {
if(!value) {
frm.doc[trigger_on] = "";
refresh_field(trigger_on);
frappe.msgprint(__("Please enter {0} first", [label]));
return false;
}
return true;
}
2016-04-11 06:40:20 +00:00
erpnext.utils.get_shipping_address = function(frm, callback){
if (frm.doc.company) {
frappe.call({
method: "frappe.contacts.doctype.address.address.get_shipping_address",
args: {
company: frm.doc.company,
address: frm.doc.shipping_address
},
callback: function(r){
if(r.message){
frm.set_value("shipping_address", r.message[0]) //Address title or name
frm.set_value("shipping_address_display", r.message[1]) //Address to be displayed on the page
}
2016-04-11 06:40:20 +00:00
if(callback){
return callback();
}
2016-04-11 06:40:20 +00:00
}
});
} else {
frappe.msgprint(__("Select company first"));
}
}