diff --git a/frappe/model/rename_doc.py b/frappe/model/rename_doc.py index 8e21e0cfe6..f3a6605eb0 100644 --- a/frappe/model/rename_doc.py +++ b/frappe/model/rename_doc.py @@ -78,9 +78,8 @@ def rename_versions(doctype, old, new): def rename_parent_and_child(doctype, old, new, meta): # rename the doc - frappe.db.sql("update `tab%s` set name=%s where name=%s" \ - % (doctype, '%s', '%s'), (new, old)) - + frappe.db.sql("update `tab%s` set name=%s where name=%s" % (doctype, '%s', '%s'), + (new, old)) update_child_docs(old, new, meta) def validate_rename(doctype, new, meta, merge, force, ignore_permissions): diff --git a/frappe/public/js/frappe/form/workflow.js b/frappe/public/js/frappe/form/workflow.js index a7dd7e2ea3..1c258eca4c 100644 --- a/frappe/public/js/frappe/form/workflow.js +++ b/frappe/public/js/frappe/form/workflow.js @@ -129,7 +129,7 @@ frappe.ui.form.States = Class.extend({ }, set_default_state: function() { - var default_state = frappe.workflow.get_default_state(this.frm.doctype); + var default_state = frappe.workflow.get_default_state(this.frm.doctype, this.frm.doc.docstatus); if(default_state) { this.frm.set_value(this.state_fieldname, default_state); } diff --git a/frappe/public/js/frappe/model/indicator.js b/frappe/public/js/frappe/model/indicator.js index d87d3962fb..28abbcd79d 100644 --- a/frappe/public/js/frappe/model/indicator.js +++ b/frappe/public/js/frappe/model/indicator.js @@ -12,6 +12,20 @@ frappe.get_indicator = function(doc, doctype) { is_submittable = frappe.model.is_submittable(doctype), workflow_fieldname = frappe.workflow.get_state_fieldname(doctype); + // workflow + if(workflow_fieldname) { + var value = doc[workflow_fieldname]; + if(value) { + var colour = { + "Success": "green", + "Warning": "orange", + "Danger": "red", + "Primary": "blue", + }[locals["Workflow State"][value].style] || "darkgrey"; + return [__(value), colour, workflow_fieldname + ',=,' + value]; + } + } + if(is_submittable && doc.docstatus==0) { return [__("Draft"), "red", "docstatus,=,0"]; } @@ -20,18 +34,6 @@ frappe.get_indicator = function(doc, doctype) { return [__("Cancelled"), "red", "docstatus,=,2"]; } - // workflow - if(workflow_fieldname) { - var value = doc[workflow_fieldname]; - var colour = { - "Success": "green", - "Warning": "orange", - "Danger": "red", - "Primary": "blue", - }[locals["Workflow State"][value].style] || "darkgrey"; - return [__(value), colour, workflow_fieldname + ',=,' + value]; - } - if(_get_indicator) { var indicator = _get_indicator(doc); if(indicator) return indicator; diff --git a/frappe/public/js/frappe/model/workflow.js b/frappe/public/js/frappe/model/workflow.js index 13f979aa60..712e662c33 100644 --- a/frappe/public/js/frappe/model/workflow.js +++ b/frappe/public/js/frappe/model/workflow.js @@ -1,5 +1,5 @@ // Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors -// MIT License. See license.txt +// MIT License. See license.txt frappe.provide("frappe.workflow"); @@ -13,7 +13,7 @@ frappe.workflow = { frappe.workflow.state_fields[doctype] = wf[0].workflow_state_field; } else { frappe.workflow.state_fields[doctype] = null; - } + } }, get_state_fieldname: function(doctype) { if(frappe.workflow.state_fields[doctype]===undefined) { @@ -21,9 +21,16 @@ frappe.workflow = { } return frappe.workflow.state_fields[doctype]; }, - get_default_state: function(doctype) { + get_default_state: function(doctype, docstatus) { frappe.workflow.setup(doctype); - return frappe.workflow.workflows[doctype].states[0].state; + var value = null; + $.each(frappe.workflow.workflows[doctype].states, function(i, workflow_state) { + if(cint(workflow_state.doc_status)===cint(docstatus)) { + value = workflow_state.state; + return false; + } + }); + return value; }, get_transitions: function(doctype, state) { frappe.workflow.setup(doctype); @@ -40,13 +47,14 @@ frappe.workflow = { is_read_only: function(doctype, name) { var state_fieldname = frappe.workflow.get_state_fieldname(doctype); if(state_fieldname) { - if(!locals[doctype][name]) + var doc = locals[doctype][name]; + if(!doc) return false; - if(locals[doctype][name].__islocal) + if(doc.__islocal) return false; - - var state = locals[doctype][name][state_fieldname] || - frappe.workflow.get_default_state(doctype); + + var state = doc[state_fieldname] || + frappe.workflow.get_default_state(doctype, doc.docstatus); var allow_edit = state ? frappe.workflow.get_document_state(doctype, state).allow_edit : null; @@ -57,10 +65,10 @@ frappe.workflow = { return false; }, get_update_fields: function(doctype) { - var update_fields = $.unique($.map(frappe.workflow.workflows[doctype].states || [], + var update_fields = $.unique($.map(frappe.workflow.workflows[doctype].states || [], function(d) { return d.update_field; })); return update_fields; } -}; \ No newline at end of file +};