Merge pull request #42969 from lbrandh/project_completion

fix: A project without tasks should be able to complete
This commit is contained in:
ruthra kumar
2024-09-17 10:18:26 +05:30
committed by GitHub
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(
{
"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(