diff --git a/frappe/public/js/frappe/model/indicator.js b/frappe/public/js/frappe/model/indicator.js index d5c42c3799..6ae40c1f05 100644 --- a/frappe/public/js/frappe/model/indicator.js +++ b/frappe/public/js/frappe/model/indicator.js @@ -36,11 +36,18 @@ frappe.get_indicator = function (doc, doctype, show_workflow_state) { var settings = frappe.listview_settings[doctype] || {}; - var is_submittable = frappe.model.is_submittable(doctype), - workflow_fieldname = frappe.workflow.get_state_fieldname(doctype); + var is_submittable = frappe.model.is_submittable(doctype); + let workflow_fieldname = frappe.workflow.get_state_fieldname(doctype); + let avoid_status_override = (frappe.workflow.avoid_status_override[doctype] || []).includes( + doc[workflow_fieldname] + ); // workflow - if (workflow_fieldname && (!without_workflow || show_workflow_state)) { + if ( + workflow_fieldname && + (!without_workflow || show_workflow_state) && + !avoid_status_override + ) { var value = doc[workflow_fieldname]; if (value) { let colour = ""; diff --git a/frappe/public/js/frappe/model/workflow.js b/frappe/public/js/frappe/model/workflow.js index db4c2b25ae..359b9ba310 100644 --- a/frappe/public/js/frappe/model/workflow.js +++ b/frappe/public/js/frappe/model/workflow.js @@ -6,11 +6,15 @@ frappe.provide("frappe.workflow"); frappe.workflow = { state_fields: {}, workflows: {}, + avoid_status_override: {}, setup: function (doctype) { var wf = frappe.get_list("Workflow", { document_type: doctype }); if (wf.length) { frappe.workflow.workflows[doctype] = wf[0]; frappe.workflow.state_fields[doctype] = wf[0].workflow_state_field; + frappe.workflow.avoid_status_override[doctype] = wf[0].states + .filter((row) => row.avoid_status_override) + .map((d) => d.state); } else { frappe.workflow.state_fields[doctype] = null; } diff --git a/frappe/workflow/doctype/workflow_document_state/workflow_document_state.json b/frappe/workflow/doctype/workflow_document_state/workflow_document_state.json index 9318cec308..4d19080497 100644 --- a/frappe/workflow/doctype/workflow_document_state/workflow_document_state.json +++ b/frappe/workflow/doctype/workflow_document_state/workflow_document_state.json @@ -13,6 +13,7 @@ "update_value", "column_break_4", "is_optional_state", + "avoid_status_override", "next_action_email_template", "allow_edit", "section_break_9", @@ -97,12 +98,19 @@ "fieldtype": "Data", "hidden": 1, "label": "Workflow Builder ID" + }, + { + "default": "0", + "description": "If Checked workflow status will not override status in list view", + "fieldname": "avoid_status_override", + "fieldtype": "Check", + "label": "Don't Override Status" } ], "idx": 1, "istable": 1, "links": [], - "modified": "2023-11-16 12:10:15.472947", + "modified": "2023-11-13 18:27:08.633239", "modified_by": "Administrator", "module": "Workflow", "name": "Workflow Document State", diff --git a/frappe/workflow/doctype/workflow_document_state/workflow_document_state.py b/frappe/workflow/doctype/workflow_document_state/workflow_document_state.py index ed65665c87..d1644578d8 100644 --- a/frappe/workflow/doctype/workflow_document_state/workflow_document_state.py +++ b/frappe/workflow/doctype/workflow_document_state/workflow_document_state.py @@ -15,6 +15,7 @@ class WorkflowDocumentState(Document): from frappe.types import DF allow_edit: DF.Link + avoid_status_override: DF.Check doc_status: DF.Literal["0", "1", "2"] is_optional_state: DF.Check message: DF.Text | None