Merge pull request #53175 from frappe/mergify/bp/version-16-hotfix/pr-52924

This commit is contained in:
Nishka Gosalia
2026-03-05 12:17:40 +05:30
committed by GitHub
5 changed files with 88 additions and 47 deletions

View File

@@ -205,7 +205,7 @@ frappe.ui.form.on("Project", {
collect_progress: function (frm) { collect_progress: function (frm) {
if (frm.doc.collect_progress && !frm.doc.subject) { if (frm.doc.collect_progress && !frm.doc.subject) {
frm.set_value("subject", __("For project {0}, update your status", [frm.doc.name])); frm.set_value("subject", __("For project - {0}, update your status", [frm.doc.project_name]));
} }
}, },
}); });

View File

@@ -12,29 +12,21 @@
"project_name", "project_name",
"status", "status",
"project_type", "project_type",
"is_active",
"percent_complete_method", "percent_complete_method",
"percent_complete",
"column_break_5", "column_break_5",
"project_template", "project_template",
"expected_start_date",
"expected_end_date",
"priority", "priority",
"department", "department",
"customer_details", "is_active",
"customer", "percent_complete",
"column_break_14",
"sales_order",
"users_section",
"users",
"copied_from",
"section_break0",
"notes",
"section_break_18", "section_break_18",
"expected_start_date",
"actual_start_date", "actual_start_date",
"actual_time", "actual_time",
"column_break_20", "column_break_20",
"expected_end_date",
"actual_end_date", "actual_end_date",
"costing_tab",
"project_details", "project_details",
"estimated_costing", "estimated_costing",
"total_costing_amount", "total_costing_amount",
@@ -50,7 +42,7 @@
"gross_margin", "gross_margin",
"column_break_37", "column_break_37",
"per_gross_margin", "per_gross_margin",
"monitor_progress", "monitor_progress_tab",
"collect_progress", "collect_progress",
"holiday_list", "holiday_list",
"frequency", "frequency",
@@ -63,7 +55,18 @@
"weekly_time_to_send", "weekly_time_to_send",
"column_break_45", "column_break_45",
"subject", "subject",
"message" "message",
"more_info_tab",
"customer_details",
"customer",
"column_break_14",
"sales_order",
"users_section",
"users",
"copied_from",
"section_break0",
"notes",
"connections_tab"
], ],
"fields": [ "fields": [
{ {
@@ -231,7 +234,7 @@
"collapsible": 1, "collapsible": 1,
"fieldname": "section_break_18", "fieldname": "section_break_18",
"fieldtype": "Section Break", "fieldtype": "Section Break",
"label": "Start and End Dates" "label": "Timeline"
}, },
{ {
"fieldname": "actual_start_date", "fieldname": "actual_start_date",
@@ -258,7 +261,6 @@
"read_only": 1 "read_only": 1
}, },
{ {
"collapsible": 1,
"fieldname": "project_details", "fieldname": "project_details",
"fieldtype": "Section Break", "fieldtype": "Section Break",
"label": "Costing and Billing", "label": "Costing and Billing",
@@ -329,7 +331,6 @@
"options": "Cost Center" "options": "Cost Center"
}, },
{ {
"collapsible": 1,
"fieldname": "margin", "fieldname": "margin",
"fieldtype": "Section Break", "fieldtype": "Section Break",
"label": "Margin", "label": "Margin",
@@ -357,12 +358,6 @@
"oldfieldtype": "Currency", "oldfieldtype": "Currency",
"read_only": 1 "read_only": 1
}, },
{
"collapsible": 1,
"fieldname": "monitor_progress",
"fieldtype": "Section Break",
"label": "Monitor Progress"
},
{ {
"default": "0", "default": "0",
"fieldname": "collect_progress", "fieldname": "collect_progress",
@@ -455,6 +450,27 @@
"fieldtype": "Data", "fieldtype": "Data",
"label": "Subject", "label": "Subject",
"mandatory_depends_on": "collect_progress" "mandatory_depends_on": "collect_progress"
},
{
"fieldname": "costing_tab",
"fieldtype": "Tab Break",
"label": "Costing"
},
{
"fieldname": "monitor_progress_tab",
"fieldtype": "Tab Break",
"label": "Progress"
},
{
"fieldname": "more_info_tab",
"fieldtype": "Tab Break",
"label": "More Info"
},
{
"fieldname": "connections_tab",
"fieldtype": "Tab Break",
"label": "Connections",
"show_dashboard": 1
} }
], ],
"icon": "fa fa-puzzle-piece", "icon": "fa fa-puzzle-piece",
@@ -462,7 +478,7 @@
"index_web_pages_for_search": 1, "index_web_pages_for_search": 1,
"links": [], "links": [],
"max_attachments": 4, "max_attachments": 4,
"modified": "2025-08-21 17:57:58.314809", "modified": "2026-03-04 11:09:55.253367",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Projects", "module": "Projects",
"name": "Project", "name": "Project",

View File

@@ -13,7 +13,6 @@
"type", "type",
"color", "color",
"is_group", "is_group",
"is_template",
"column_break0", "column_break0",
"status", "status",
"priority", "priority",
@@ -21,17 +20,21 @@
"parent_task", "parent_task",
"completed_by", "completed_by",
"completed_on", "completed_on",
"section_break_dafi",
"is_template",
"column_break_vvfp",
"start",
"duration",
"sb_timeline", "sb_timeline",
"exp_start_date", "exp_start_date",
"expected_time", "expected_time",
"start",
"column_break_11", "column_break_11",
"exp_end_date", "exp_end_date",
"progress", "progress",
"duration",
"is_milestone", "is_milestone",
"sb_details", "sb_details",
"description", "description",
"dependencies_tab",
"sb_depends_on", "sb_depends_on",
"depends_on", "depends_on",
"depends_on_tasks", "depends_on_tasks",
@@ -44,12 +47,13 @@
"total_costing_amount", "total_costing_amount",
"column_break_20", "column_break_20",
"total_billing_amount", "total_billing_amount",
"more_info_tab",
"sb_more_info", "sb_more_info",
"company",
"review_date", "review_date",
"closing_date", "closing_date",
"column_break_22", "column_break_22",
"department", "department",
"company",
"lft", "lft",
"rgt", "rgt",
"old_parent", "old_parent",
@@ -78,7 +82,6 @@
"oldfieldname": "project", "oldfieldname": "project",
"oldfieldtype": "Link", "oldfieldtype": "Link",
"options": "Project", "options": "Project",
"remember_last_selected_value": 1,
"search_index": 1 "search_index": 1
}, },
{ {
@@ -218,7 +221,6 @@
{ {
"fieldname": "sb_depends_on", "fieldname": "sb_depends_on",
"fieldtype": "Section Break", "fieldtype": "Section Break",
"label": "Dependencies",
"oldfieldtype": "Section Break" "oldfieldtype": "Section Break"
}, },
{ {
@@ -298,10 +300,9 @@
"read_only": 1 "read_only": 1
}, },
{ {
"collapsible": 1,
"fieldname": "sb_more_info", "fieldname": "sb_more_info",
"fieldtype": "Section Break", "fieldtype": "Section Break",
"label": "More Info" "label": "Additional Info"
}, },
{ {
"depends_on": "eval:doc.status == \"Closed\" || doc.status == \"Pending Review\"", "depends_on": "eval:doc.status == \"Closed\" || doc.status == \"Pending Review\"",
@@ -334,8 +335,7 @@
"fieldname": "company", "fieldname": "company",
"fieldtype": "Link", "fieldtype": "Link",
"label": "Company", "label": "Company",
"options": "Company", "options": "Company"
"remember_last_selected_value": 1
}, },
{ {
"fieldname": "lft", "fieldname": "lft",
@@ -398,6 +398,24 @@
"fieldtype": "Data", "fieldtype": "Data",
"hidden": 1, "hidden": 1,
"label": "Template Task" "label": "Template Task"
},
{
"fieldname": "dependencies_tab",
"fieldtype": "Tab Break",
"label": "Dependencies"
},
{
"fieldname": "more_info_tab",
"fieldtype": "Tab Break",
"label": "More Info"
},
{
"fieldname": "section_break_dafi",
"fieldtype": "Section Break"
},
{
"fieldname": "column_break_vvfp",
"fieldtype": "Column Break"
} }
], ],
"icon": "fa fa-check", "icon": "fa fa-check",
@@ -405,7 +423,7 @@
"is_tree": 1, "is_tree": 1,
"links": [], "links": [],
"max_attachments": 5, "max_attachments": 5,
"modified": "2026-02-05 09:58:38.052875", "modified": "2026-03-04 11:47:10.454548",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Projects", "module": "Projects",
"name": "Task", "name": "Task",

View File

@@ -138,6 +138,8 @@ class Task(NestedSet):
def validate_status(self): def validate_status(self):
if self.is_template and self.status != "Template": if self.is_template and self.status != "Template":
self.status = "Template" self.status = "Template"
if self.status == "Template" and not self.is_template:
self.status = "Open"
if self.status != self.get_db_value("status") and self.status == "Completed": if self.status != self.get_db_value("status") and self.status == "Completed":
for d in self.depends_on: for d in self.depends_on:
if frappe.db.get_value("Task", d.task, "status") not in ("Completed", "Cancelled"): if frappe.db.get_value("Task", d.task, "status") not in ("Completed", "Cancelled"):

View File

@@ -18,28 +18,29 @@
"column_break_3", "column_break_3",
"status", "status",
"parent_project", "parent_project",
"employee_detail",
"employee",
"employee_name",
"department",
"column_break_9",
"user", "user",
"start_date", "start_date",
"end_date", "end_date",
"employee_detail",
"employee",
"department",
"column_break_9",
"employee_name",
"section_break_5", "section_break_5",
"time_logs", "time_logs",
"working_hours", "working_hours",
"total_hours", "total_hours",
"billing_tab",
"billing_details", "billing_details",
"total_billable_hours", "total_billable_hours",
"total_billable_amount",
"total_costing_amount",
"base_total_billable_amount", "base_total_billable_amount",
"base_total_billed_amount",
"base_total_costing_amount", "base_total_costing_amount",
"column_break_10", "column_break_10",
"total_billed_hours", "total_billed_hours",
"total_billable_amount",
"total_billed_amount", "total_billed_amount",
"total_costing_amount", "base_total_billed_amount",
"per_billed", "per_billed",
"section_break_18", "section_break_18",
"note", "note",
@@ -176,7 +177,6 @@
"read_only": 1 "read_only": 1
}, },
{ {
"collapsible": 1,
"fieldname": "billing_details", "fieldname": "billing_details",
"fieldtype": "Section Break", "fieldtype": "Section Break",
"label": "Billing Details", "label": "Billing Details",
@@ -304,13 +304,18 @@
"fieldname": "exchange_rate", "fieldname": "exchange_rate",
"fieldtype": "Float", "fieldtype": "Float",
"label": "Exchange Rate" "label": "Exchange Rate"
},
{
"fieldname": "billing_tab",
"fieldtype": "Tab Break",
"label": "Billing"
} }
], ],
"icon": "fa fa-clock-o", "icon": "fa fa-clock-o",
"idx": 1, "idx": 1,
"is_submittable": 1, "is_submittable": 1,
"links": [], "links": [],
"modified": "2025-12-19 13:48:23.453636", "modified": "2026-03-04 11:56:51.438298",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Projects", "module": "Projects",
"name": "Timesheet", "name": "Timesheet",