From 57a49ce168f3f37039d49c32ef76b0d0090a9bb3 Mon Sep 17 00:00:00 2001 From: Poovitha Palanivelu Date: Tue, 14 Jul 2026 15:08:59 +0530 Subject: [PATCH] feat: add on hold status to project (cherry picked from commit 672fadaa78befee144cc81895698b7ae86226085) --- erpnext/projects/doctype/project/project.json | 4 ++-- erpnext/projects/doctype/project/project.py | 6 +++--- erpnext/projects/doctype/project/project_list.js | 2 ++ 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/erpnext/projects/doctype/project/project.json b/erpnext/projects/doctype/project/project.json index 8f5a9b03813..d40bb75595b 100644 --- a/erpnext/projects/doctype/project/project.json +++ b/erpnext/projects/doctype/project/project.json @@ -86,7 +86,7 @@ "no_copy": 1, "oldfieldname": "status", "oldfieldtype": "Select", - "options": "Open\nCompleted\nCancelled", + "options": "Open\nOn hold\nCompleted\nCancelled", "search_index": 1 }, { @@ -482,7 +482,7 @@ "index_web_pages_for_search": 1, "links": [], "max_attachments": 4, - "modified": "2026-05-22 16:45:50.762759", + "modified": "2026-07-14 14:20:50.418911", "modified_by": "Administrator", "module": "Projects", "name": "Project", diff --git a/erpnext/projects/doctype/project/project.py b/erpnext/projects/doctype/project/project.py index fda2c1d1bb3..f84b49e4c20 100644 --- a/erpnext/projects/doctype/project/project.py +++ b/erpnext/projects/doctype/project/project.py @@ -61,7 +61,7 @@ class Project(Document): project_type: DF.Link | None sales_order: DF.Link | None second_email: DF.Time | None - status: DF.Literal["Open", "Completed", "Cancelled"] + status: DF.Literal["Open", "On hold", "Completed", "Cancelled"] subject: DF.Data | None to_time: DF.Time | None total_billable_amount: DF.Currency @@ -262,8 +262,8 @@ class Project(Document): pct_complete += row["progress"] * frappe.utils.safe_div(row["task_weight"], weight_sum) self.percent_complete = flt(flt(pct_complete), 2) - # don't update status if it is cancelled - if self.status == "Cancelled": + # don't update status if it is manually set to cancelled or on hold + if self.status in ("Cancelled", "On hold"): return self.status = "Completed" if self.percent_complete == 100 else "Open" diff --git a/erpnext/projects/doctype/project/project_list.js b/erpnext/projects/doctype/project/project_list.js index 1503b1ee5d3..28a774524d4 100644 --- a/erpnext/projects/doctype/project/project_list.js +++ b/erpnext/projects/doctype/project/project_list.js @@ -4,6 +4,8 @@ frappe.listview_settings["Project"] = { get_indicator: function (doc) { if (doc.status == "Open" && doc.percent_complete) { return [__("{0}%", [cint(doc.percent_complete)]), "orange", "percent_complete,>,0|status,=,Open"]; + } else if (doc.status == "On hold") { + return [__("On hold"), "blue", "status,=,On hold"]; } else { return [__(doc.status), frappe.utils.guess_colour(doc.status), "status,=," + doc.status]; }