diff --git a/frappe/desk/doctype/auto_repeat/auto_repeat.js b/frappe/desk/doctype/auto_repeat/auto_repeat.js index c52711ba23..0afed7c6aa 100644 --- a/frappe/desk/doctype/auto_repeat/auto_repeat.js +++ b/frappe/desk/doctype/auto_repeat/auto_repeat.js @@ -51,14 +51,14 @@ frappe.ui.form.on('Auto Repeat', { } if(frm.doc.status == 'Stopped') { - frm.add_custom_button(__("Resume"), + frm.add_custom_button(__("Restart"), function() { frm.events.stop_resume_auto_repeat(frm, "Resumed"); } ); } - if(frm.doc.status!= 0){ + if(frm.doc.docstatus!= 0 && !frm.doc.status.includes('Stopped', 'Cancelled') && frm.doc.next_schedule_date >= frappe.datetime.get_today()){ frappe.auto_repeat.render_schedule(frm); } } @@ -107,10 +107,31 @@ frappe.ui.form.on('Auto Repeat', { } } }); + }, + + preview_message: function(frm) { + if (frm.doc.message) { + frappe.call({ + method: "frappe.desk.doctype.auto_repeat.auto_repeat.generate_message_preview", + args: { + reference_dt: frm.doc.reference_doctype, + reference_doc: frm.doc.reference_document, + subject: frm.doc.subject, + message: frm.doc.message + }, + callback: function(r) { + if(r.message) { + frappe.msgprint(r.message.message, r.message.subject) + } + } + }); + } else { + frappe.msgprint(__("Please setup a message first"), __("Message not setup")) + } } }); -frappe.auto_repeat.render_schedule = function(frm) { +frappe.auto_repeat.render_schedule = function(frm) { frappe.call({ method: "get_auto_repeat_schedule", doc: frm.doc diff --git a/frappe/desk/doctype/auto_repeat/auto_repeat.json b/frappe/desk/doctype/auto_repeat/auto_repeat.json index 1a0fba42a5..1ab601ab41 100644 --- a/frappe/desk/doctype/auto_repeat/auto_repeat.json +++ b/frappe/desk/doctype/auto_repeat/auto_repeat.json @@ -143,6 +143,72 @@ "translatable": 0, "unique": 0 }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "reference_party_doctype", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Reference Party Doctype", + "length": 0, + "no_copy": 0, + "options": "DocType", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "reference_party", + "fieldtype": "Dynamic Link", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Reference Party", + "length": 0, + "no_copy": 0, + "options": "reference_party_doctype", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, + "unique": 0 + }, { "allow_bulk_edit": 0, "allow_in_quick_entry": 0, @@ -563,7 +629,7 @@ { "allow_bulk_edit": 0, "allow_in_quick_entry": 0, - "allow_on_submit": 0, + "allow_on_submit": 1, "bold": 0, "collapsible": 0, "columns": 0, @@ -595,7 +661,7 @@ { "allow_bulk_edit": 0, "allow_in_quick_entry": 0, - "allow_on_submit": 0, + "allow_on_submit": 1, "bold": 0, "collapsible": 0, "columns": 0, @@ -629,7 +695,7 @@ { "allow_bulk_edit": 0, "allow_in_quick_entry": 0, - "allow_on_submit": 0, + "allow_on_submit": 1, "bold": 0, "collapsible": 0, "columns": 0, @@ -694,7 +760,7 @@ { "allow_bulk_edit": 0, "allow_in_quick_entry": 0, - "allow_on_submit": 0, + "allow_on_submit": 1, "bold": 0, "collapsible": 0, "columns": 0, @@ -727,7 +793,7 @@ { "allow_bulk_edit": 0, "allow_in_quick_entry": 0, - "allow_on_submit": 0, + "allow_on_submit": 1, "bold": 0, "collapsible": 0, "columns": 0, @@ -827,7 +893,7 @@ { "allow_bulk_edit": 0, "allow_in_quick_entry": 0, - "allow_on_submit": 0, + "allow_on_submit": 1, "bold": 0, "collapsible": 0, "columns": 0, @@ -857,6 +923,38 @@ "translatable": 0, "unique": 0 }, + { + "allow_bulk_edit": 0, + "allow_in_quick_entry": 0, + "allow_on_submit": 1, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "preview_message", + "fieldtype": "Button", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Preview Message", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "translatable": 0, + "unique": 0 + }, { "allow_bulk_edit": 0, "allow_in_quick_entry": 0, @@ -965,7 +1063,7 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2018-07-13 15:14:34.524098", + "modified": "2018-09-10 14:11:56.389734", "modified_by": "Administrator", "module": "Desk", "name": "Auto Repeat", diff --git a/frappe/desk/doctype/auto_repeat/auto_repeat.py b/frappe/desk/doctype/auto_repeat/auto_repeat.py index c0a3339b94..92fd8be257 100644 --- a/frappe/desk/doctype/auto_repeat/auto_repeat.py +++ b/frappe/desk/doctype/auto_repeat/auto_repeat.py @@ -26,6 +26,7 @@ class AutoRepeat(Document): self.validate_dates() self.validate_next_schedule_date() self.validate_email_id() + self.link_party() validate_template(self.subject or "") validate_template(self.message or "") @@ -124,6 +125,14 @@ class AutoRepeat(Document): return schedule_details + def link_party(self): + reference = frappe.get_meta(self.reference_doctype) + for field in reference.fields: + if field.options in ['Customer', 'Supplier', 'Employee']: + self.reference_party_doctype = field.options + self.reference_party = frappe.db.get_value(self.reference_doctype, self.reference_document, field.fieldname) + break + def get_next_schedule_date(start_date, frequency, repeat_on_day): mcount = month_map.get(frequency) if mcount: @@ -376,3 +385,13 @@ def update_reference(docname, reference): except Exception as e: raise e return "error" + +@frappe.whitelist() +def generate_message_preview(reference_dt, reference_doc, message=None, subject=None): + doc = frappe.get_doc(reference_dt, reference_doc) + subject_preview = _("Please add a subject to your email") + msg_preview = frappe.render_template(message, {'doc': doc}) + if subject: + subject_preview = frappe.render_template(subject, {'doc': doc}) + + return {'message': msg_preview, 'subject': subject_preview}