Anand Doshi | 885e074 | 2015-03-03 14:55:30 +0530 | [diff] [blame] | 1 | // Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors |
Rushabh Mehta | ba83e9c | 2014-06-05 17:56:12 +0530 | [diff] [blame] | 2 | // License: GNU General Public License v3. See license.txt |
| 3 | |
Faris Ansari | ab74ca7 | 2017-05-30 12:54:42 +0530 | [diff] [blame] | 4 | erpnext.SMSManager = function SMSManager(doc) { |
Rushabh Mehta | ba83e9c | 2014-06-05 17:56:12 +0530 | [diff] [blame] | 5 | var me = this; |
| 6 | this.setup = function() { |
| 7 | var default_msg = { |
| 8 | 'Lead' : '', |
| 9 | 'Opportunity' : 'Your enquiry has been logged into the system. Ref No: ' + doc.name, |
| 10 | 'Quotation' : 'Quotation ' + doc.name + ' has been sent via email. Thanks!', |
| 11 | 'Sales Order' : 'Sales Order ' + doc.name + ' has been created against ' |
| 12 | + (doc.quotation_no ? ('Quote No:' + doc.quotation_no) : '') |
| 13 | + (doc.po_no ? (' for your PO: ' + doc.po_no) : ''), |
| 14 | 'Delivery Note' : 'Items has been delivered against delivery note: ' + doc.name |
| 15 | + (doc.po_no ? (' for your PO: ' + doc.po_no) : ''), |
| 16 | 'Sales Invoice': 'Invoice ' + doc.name + ' has been sent via email ' |
| 17 | + (doc.po_no ? (' for your PO: ' + doc.po_no) : ''), |
| 18 | 'Material Request' : 'Material Request ' + doc.name + ' has been raised in the system', |
| 19 | 'Purchase Order' : 'Purchase Order ' + doc.name + ' has been sent via email', |
| 20 | 'Purchase Receipt' : 'Items has been received against purchase receipt: ' + doc.name |
| 21 | } |
| 22 | |
| 23 | if (in_list(['Quotation', 'Sales Order', 'Delivery Note', 'Sales Invoice'], doc.doctype)) |
Nabin Hait | fcc0246 | 2017-05-04 12:11:48 +0530 | [diff] [blame] | 24 | this.show(doc.contact_person, 'Customer', doc.customer, '', default_msg[doc.doctype]); |
Rushabh Mehta | ba83e9c | 2014-06-05 17:56:12 +0530 | [diff] [blame] | 25 | else if (in_list(['Purchase Order', 'Purchase Receipt'], doc.doctype)) |
Nabin Hait | fcc0246 | 2017-05-04 12:11:48 +0530 | [diff] [blame] | 26 | this.show(doc.contact_person, 'Supplier', doc.supplier, '', default_msg[doc.doctype]); |
Rushabh Mehta | ba83e9c | 2014-06-05 17:56:12 +0530 | [diff] [blame] | 27 | else if (doc.doctype == 'Lead') |
| 28 | this.show('', '', '', doc.mobile_no, default_msg[doc.doctype]); |
| 29 | else if (doc.doctype == 'Opportunity') |
| 30 | this.show('', '', '', doc.contact_no, default_msg[doc.doctype]); |
| 31 | else if (doc.doctype == 'Material Request') |
| 32 | this.show('', '', '', '', default_msg[doc.doctype]); |
| 33 | |
| 34 | }; |
| 35 | |
Nabin Hait | fcc0246 | 2017-05-04 12:11:48 +0530 | [diff] [blame] | 36 | this.get_contact_number = function(contact, ref_doctype, ref_name) { |
Rushabh Mehta | ba83e9c | 2014-06-05 17:56:12 +0530 | [diff] [blame] | 37 | frappe.call({ |
| 38 | method: "erpnext.setup.doctype.sms_settings.sms_settings.get_contact_number", |
| 39 | args: { |
Nabin Hait | fcc0246 | 2017-05-04 12:11:48 +0530 | [diff] [blame] | 40 | contact_name: contact, |
| 41 | ref_doctype: ref_doctype, |
| 42 | ref_name: ref_name |
Rushabh Mehta | ba83e9c | 2014-06-05 17:56:12 +0530 | [diff] [blame] | 43 | }, |
| 44 | callback: function(r) { |
Faris Ansari | ab74ca7 | 2017-05-30 12:54:42 +0530 | [diff] [blame] | 45 | if(r.exc) { frappe.msgprint(r.exc); return; } |
Rushabh Mehta | ba83e9c | 2014-06-05 17:56:12 +0530 | [diff] [blame] | 46 | me.number = r.message; |
| 47 | me.show_dialog(); |
| 48 | } |
| 49 | }); |
| 50 | }; |
| 51 | |
Nabin Hait | fcc0246 | 2017-05-04 12:11:48 +0530 | [diff] [blame] | 52 | this.show = function(contact, ref_doctype, ref_name, mobile_nos, message) { |
Rushabh Mehta | ba83e9c | 2014-06-05 17:56:12 +0530 | [diff] [blame] | 53 | this.message = message; |
| 54 | if (mobile_nos) { |
| 55 | me.number = mobile_nos; |
| 56 | me.show_dialog(); |
| 57 | } else if (contact){ |
Nabin Hait | fcc0246 | 2017-05-04 12:11:48 +0530 | [diff] [blame] | 58 | this.get_contact_number(contact, ref_doctype, ref_name) |
Rushabh Mehta | ba83e9c | 2014-06-05 17:56:12 +0530 | [diff] [blame] | 59 | } else { |
| 60 | me.show_dialog(); |
| 61 | } |
| 62 | } |
| 63 | this.show_dialog = function() { |
| 64 | if(!me.dialog) |
| 65 | me.make_dialog(); |
| 66 | me.dialog.set_values({ |
| 67 | 'message': me.message, |
| 68 | 'number': me.number |
| 69 | }) |
| 70 | me.dialog.show(); |
| 71 | } |
| 72 | this.make_dialog = function() { |
| 73 | var d = new frappe.ui.Dialog({ |
| 74 | title: 'Send SMS', |
| 75 | width: 400, |
| 76 | fields: [ |
| 77 | {fieldname:'number', fieldtype:'Data', label:'Mobile Number', reqd:1}, |
| 78 | {fieldname:'message', fieldtype:'Text', label:'Message', reqd:1}, |
| 79 | {fieldname:'send', fieldtype:'Button', label:'Send'} |
| 80 | ] |
| 81 | }) |
| 82 | d.fields_dict.send.input.onclick = function() { |
| 83 | var btn = d.fields_dict.send.input; |
| 84 | var v = me.dialog.get_values(); |
| 85 | if(v) { |
| 86 | $(btn).set_working(); |
| 87 | frappe.call({ |
| 88 | method: "erpnext.setup.doctype.sms_settings.sms_settings.send_sms", |
| 89 | args: { |
| 90 | receiver_list: [v.number], |
| 91 | msg: v.message |
| 92 | }, |
| 93 | callback: function(r) { |
| 94 | $(btn).done_working(); |
Faris Ansari | ab74ca7 | 2017-05-30 12:54:42 +0530 | [diff] [blame] | 95 | if(r.exc) {frappe.msgprint(r.exc); return; } |
Rushabh Mehta | ba83e9c | 2014-06-05 17:56:12 +0530 | [diff] [blame] | 96 | me.dialog.hide(); |
| 97 | } |
| 98 | }); |
| 99 | } |
| 100 | } |
| 101 | this.dialog = d; |
| 102 | } |
| 103 | this.setup(); |
| 104 | } |