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