117 lines
3.6 KiB
JavaScript
117 lines
3.6 KiB
JavaScript
// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
|
|
// License: GNU General Public License v3. See license.txt
|
|
|
|
erpnext.SMSManager = function SMSManager(doc) {
|
|
var me = this;
|
|
this.setup = function () {
|
|
var default_msg = {
|
|
Lead: "",
|
|
Opportunity: "Your enquiry has been logged into the system. Ref No: " + doc.name,
|
|
Quotation: "Quotation " + doc.name + " has been sent via email. Thanks!",
|
|
"Sales Order":
|
|
"Sales Order " +
|
|
doc.name +
|
|
" has been created against " +
|
|
(doc.quotation_no ? "Quote No:" + doc.quotation_no : "") +
|
|
(doc.po_no ? " for your PO: " + doc.po_no : ""),
|
|
"Delivery Note":
|
|
"Items has been delivered against delivery note: " +
|
|
doc.name +
|
|
(doc.po_no ? " for your PO: " + doc.po_no : ""),
|
|
"Sales Invoice":
|
|
"Invoice " +
|
|
doc.name +
|
|
" has been sent via email " +
|
|
(doc.po_no ? " for your PO: " + doc.po_no : ""),
|
|
"Material Request": "Material Request " + doc.name + " has been raised in the system",
|
|
"Purchase Order": "Purchase Order " + doc.name + " has been sent via email",
|
|
"Purchase Receipt": "Items has been received against purchase receipt: " + doc.name,
|
|
};
|
|
|
|
if (in_list(["Sales Order", "Delivery Note", "Sales Invoice"], doc.doctype))
|
|
this.show(doc.contact_person, "Customer", doc.customer, "", default_msg[doc.doctype]);
|
|
else if (doc.doctype === "Quotation")
|
|
this.show(doc.contact_person, "Customer", doc.party_name, "", default_msg[doc.doctype]);
|
|
else if (in_list(["Purchase Order", "Purchase Receipt"], doc.doctype))
|
|
this.show(doc.contact_person, "Supplier", doc.supplier, "", default_msg[doc.doctype]);
|
|
else if (doc.doctype == "Lead") this.show("", "", "", doc.mobile_no, default_msg[doc.doctype]);
|
|
else if (doc.doctype == "Opportunity")
|
|
this.show("", "", "", doc.contact_no, default_msg[doc.doctype]);
|
|
else if (doc.doctype == "Material Request") this.show("", "", "", "", default_msg[doc.doctype]);
|
|
};
|
|
|
|
this.get_contact_number = function (contact, ref_doctype, ref_name) {
|
|
frappe.call({
|
|
method: "frappe.core.doctype.sms_settings.sms_settings.get_contact_number",
|
|
args: {
|
|
contact_name: contact,
|
|
ref_doctype: ref_doctype,
|
|
ref_name: ref_name,
|
|
},
|
|
callback: function (r) {
|
|
if (r.exc) {
|
|
frappe.msgprint(r.exc);
|
|
return;
|
|
}
|
|
me.number = r.message;
|
|
me.show_dialog();
|
|
},
|
|
});
|
|
};
|
|
|
|
this.show = function (contact, ref_doctype, ref_name, mobile_nos, message) {
|
|
this.message = message;
|
|
if (mobile_nos) {
|
|
me.number = mobile_nos;
|
|
me.show_dialog();
|
|
} else if (contact) {
|
|
this.get_contact_number(contact, ref_doctype, ref_name);
|
|
} else {
|
|
me.show_dialog();
|
|
}
|
|
};
|
|
this.show_dialog = function () {
|
|
if (!me.dialog) me.make_dialog();
|
|
me.dialog.set_values({
|
|
message: me.message,
|
|
number: me.number,
|
|
});
|
|
me.dialog.show();
|
|
};
|
|
this.make_dialog = function () {
|
|
var d = new frappe.ui.Dialog({
|
|
title: "Send SMS",
|
|
width: 400,
|
|
fields: [
|
|
{ fieldname: "number", fieldtype: "Data", label: "Mobile Number", reqd: 1 },
|
|
{ fieldname: "message", fieldtype: "Text", label: "Message", reqd: 1 },
|
|
{ fieldname: "send", fieldtype: "Button", label: "Send" },
|
|
],
|
|
});
|
|
d.fields_dict.send.input.onclick = function () {
|
|
var btn = d.fields_dict.send.input;
|
|
var v = me.dialog.get_values();
|
|
if (v) {
|
|
$(btn).set_working();
|
|
frappe.call({
|
|
method: "frappe.core.doctype.sms_settings.sms_settings.send_sms",
|
|
args: {
|
|
receiver_list: [v.number],
|
|
msg: v.message,
|
|
},
|
|
callback: function (r) {
|
|
$(btn).done_working();
|
|
if (r.exc) {
|
|
frappe.msgprint(r.exc);
|
|
return;
|
|
}
|
|
me.dialog.hide();
|
|
},
|
|
});
|
|
}
|
|
};
|
|
this.dialog = d;
|
|
};
|
|
this.setup();
|
|
};
|