fix: A project without tasks should be able to complete

(cherry picked from commit 268962c25f)
This commit is contained in:
lukas.brandhoff
2024-08-28 09:17:28 +00:00
committed by Mergify
parent 48158fbde0
commit dea735de4d
2 changed files with 35 additions and 0 deletions

View File

@@ -213,6 +213,13 @@ class Project(Document):
frappe.db.set_value("Sales Order", {"project": self.name}, "project", "")
def update_percent_complete(self):
if self.status == "Completed":
if (
len(frappe.get_all("Task", dict(project=self.name))) == 0
): # A project without tasks should be able to complete
self.percent_complete_method = "Manual"
self.percent_complete = 100
if self.percent_complete_method == "Manual":
if self.status == "Completed":
self.percent_complete = 100

View File

@@ -199,6 +199,34 @@ class TestProject(FrappeTestCase):
if not pt.is_group:
self.assertIsNotNone(pt.parent_task)
def test_project_having_no_tasks_complete(self):
project_name = "Test Project - No Tasks Completion"
frappe.db.sql(""" delete from tabTask where project = %s """, project_name)
frappe.delete_doc("Project", project_name)
project = frappe.get_doc(
dict(
doctype="Project",
project_name=project_name,
status="Open",
expected_start_date=nowdate(),
company="_Test Company",
)
).insert()
tasks = frappe.get_all(
"Task",
["subject", "exp_end_date", "depends_on_tasks", "name", "parent_task"],
dict(project=project.name),
order_by="creation asc",
)
self.assertEqual(project.status, "Open")
self.assertEqual(len(tasks), 0)
project.status = "Completed"
project.save()
self.assertEqual(project.status, "Completed")
def get_project(name, template):
project = frappe.get_doc(