107 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			107 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();
 | |
| }
 |