From 768d39ae4d50afd948ef278b5fa55ff57cf50dd9 Mon Sep 17 00:00:00 2001 From: Saurabh Date: Fri, 17 Jun 2016 16:00:13 +0530 Subject: [PATCH] [fix] set status to document flow --- frappe/desk/form/document_flow.py | 32 +++++++++++++++++++ frappe/public/js/frappe/form/document_flow.js | 26 +++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 frappe/desk/form/document_flow.py diff --git a/frappe/desk/form/document_flow.py b/frappe/desk/form/document_flow.py new file mode 100644 index 0000000000..169b8044c4 --- /dev/null +++ b/frappe/desk/form/document_flow.py @@ -0,0 +1,32 @@ +# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors +# MIT License. See license.txt +from __future__ import unicode_literals + +import frappe +import json +from frappe.desk.form.linked_with import get_linked_docs, get_linked_doctypes + +@frappe.whitelist() +def get_document_completion_status(doctypes, frm_doctype, frm_docname): + if isinstance(doctypes, basestring): + doctypes = json.loads(doctypes) + + doc = frappe.get_doc(frm_doctype, frm_docname) + linkinfo = get_linked_doctypes(frm_doctype) + + flow_completion = {} + + for item in doc.items: + for doctype in doc.prev_link_mapper: + fieldname = doc.prev_link_mapper[doctype]["fieldname"] + if item.as_dict()[fieldname]: + flow_completion[doctype] = True + + for doctype in doctypes: + if doctype not in flow_completion: + links = get_linked_docs(frm_doctype, frm_docname, linkinfo, for_doctype=doctype) + frappe.errprint(links) + if links: + flow_completion[doctype] = True + + return flow_completion \ No newline at end of file diff --git a/frappe/public/js/frappe/form/document_flow.js b/frappe/public/js/frappe/form/document_flow.js index f4ac2832a5..0493879a8d 100644 --- a/frappe/public/js/frappe/form/document_flow.js +++ b/frappe/public/js/frappe/form/document_flow.js @@ -46,6 +46,8 @@ frappe.ui.form.DocumentFlow = Class.extend({ return false; } }); + + this.mark_completed_flow() }, get_linked_docs: function(for_doctype) { @@ -57,5 +59,29 @@ frappe.ui.form.DocumentFlow = Class.extend({ } this.linked_with[for_doctype].show(); + }, + + mark_completed_flow: function() { + var me = this; + + frappe.call({ + method: "frappe.desk.form.document_flow.get_document_completion_status", + args: { + doctypes: me.doctypes, + frm_doctype: me.frm.doctype, + frm_docname: me.frm.docname + }, + callback: function(r){ + if (!r.exc) { + $.each(me.doctypes, function(i, doctype) { + if (r.message[doctype] && me.frm.doctype!=doctype) { + me.wrapper.find("[data-doctype='"+doctype+"']a .indicator") + .removeClass("darkgrey") + .addClass("black") + } + }) + } + } + }) } });