fix:Tasks with duration less than a day not displayed correctly#15554 (#41633)

* fix: Tasks with duration less than a day not displayed correctly#15554

* fix: Tasks with duration less than a day not displayed correctly#15554
This commit is contained in:
Poorvi-R-Bhat
2024-06-10 17:30:35 +05:30
committed by GitHub
parent cf0a29b05f
commit d9ddad0f1f
4 changed files with 24 additions and 17 deletions

View File

@@ -13,7 +13,6 @@ frappe.ui.form.on("Task", {
}),
};
},
onload: function (frm) {
frm.set_query("task", "depends_on", function () {
let filters = {

View File

@@ -147,7 +147,7 @@
},
{
"collapsible": 1,
"collapsible_depends_on": "eval:doc.__islocal",
"collapsible_depends_on": "exp_start_date",
"fieldname": "sb_timeline",
"fieldtype": "Section Break",
"label": "Timeline"
@@ -155,7 +155,7 @@
{
"bold": 1,
"fieldname": "exp_start_date",
"fieldtype": "Date",
"fieldtype": "Datetime",
"label": "Expected Start Date",
"oldfieldname": "exp_start_date",
"oldfieldtype": "Date"
@@ -181,7 +181,7 @@
{
"bold": 1,
"fieldname": "exp_end_date",
"fieldtype": "Date",
"fieldtype": "Datetime",
"label": "Expected End Date",
"oldfieldname": "exp_end_date",
"oldfieldtype": "Date",
@@ -399,7 +399,7 @@
"is_tree": 1,
"links": [],
"max_attachments": 5,
"modified": "2024-03-27 13:10:51.476856",
"modified": "2024-05-24 12:36:12.214577",
"modified_by": "Administrator",
"module": "Projects",
"name": "Task",

View File

@@ -8,7 +8,7 @@ import frappe
from frappe import _, throw
from frappe.desk.form.assign_to import clear, close_all_assignments
from frappe.model.mapper import get_mapped_doc
from frappe.utils import add_days, cstr, date_diff, flt, get_link_to_form, getdate, today
from frappe.utils import add_days, add_to_date, cstr, date_diff, flt, get_link_to_form, getdate, today
from frappe.utils.data import format_date
from frappe.utils.nestedset import NestedSet
@@ -41,8 +41,8 @@ class Task(NestedSet):
depends_on_tasks: DF.Code | None
description: DF.TextEditor | None
duration: DF.Int
exp_end_date: DF.Date | None
exp_start_date: DF.Date | None
exp_end_date: DF.Datetime | None
exp_start_date: DF.Datetime | None
expected_time: DF.Float
is_group: DF.Check
is_milestone: DF.Check
@@ -83,6 +83,7 @@ class Task(NestedSet):
self.update_depends_on()
self.validate_dependencies_for_template_task()
self.validate_completed_on()
self.set_default_end_date_if_missing()
def validate_dates(self):
self.validate_from_to_dates("exp_start_date", "exp_end_date")
@@ -90,6 +91,10 @@ class Task(NestedSet):
self.validate_parent_expected_end_date()
self.validate_parent_project_dates()
def set_default_end_date_if_missing(self):
if self.exp_start_date and self.expected_time:
self.exp_end_date = add_to_date(self.exp_start_date, hours=self.expected_time)
def validate_parent_expected_end_date(self):
if not self.parent_task or not self.exp_end_date:
return
@@ -248,7 +253,7 @@ class Task(NestedSet):
if (
task.exp_start_date
and task.exp_end_date
and task.exp_start_date < getdate(end_date)
and task.exp_start_date < end_date
and task.status == "Open"
):
task_duration = date_diff(task.exp_end_date, task.exp_start_date)
@@ -286,7 +291,7 @@ class Task(NestedSet):
if self.status not in ("Cancelled", "Completed") and self.exp_end_date:
from datetime import datetime
if self.exp_end_date < datetime.now().date():
if self.exp_end_date < datetime.now():
self.db_set("status", "Overdue", update_modified=False)
self.update_project()

View File

@@ -1,6 +1,5 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
import unittest
import frappe
@@ -44,17 +43,21 @@ class TestTask(unittest.TestCase):
task1.save()
self.assertEqual(
frappe.db.get_value("Task", task2.name, "exp_start_date"), getdate(add_days(nowdate(), 21))
)
self.assertEqual(
frappe.db.get_value("Task", task2.name, "exp_end_date"), getdate(add_days(nowdate(), 25))
getdate(frappe.db.get_value("Task", task2.name, "exp_start_date")),
getdate(add_days(nowdate(), 21)),
)
self.assertEqual(
frappe.db.get_value("Task", task3.name, "exp_start_date"), getdate(add_days(nowdate(), 26))
getdate(frappe.db.get_value("Task", task2.name, "exp_end_date")), getdate(add_days(nowdate(), 25))
)
self.assertEqual(
frappe.db.get_value("Task", task3.name, "exp_end_date"), getdate(add_days(nowdate(), 30))
getdate(frappe.db.get_value("Task", task3.name, "exp_start_date")),
getdate(add_days(nowdate(), 26)),
)
self.assertEqual(
getdate(frappe.db.get_value("Task", task3.name, "exp_end_date")), getdate(add_days(nowdate(), 30))
)
def test_close_assignment(self):