blob: 63833da5af3f5406267db856a95fb33dbca3c483 [file] [log] [blame]
// 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 (["Sales Order", "Delivery Note", "Sales Invoice"].includes(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 (["Purchase Order", "Purchase Receipt"].includes(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();
};