// 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(); };