mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-20 05:29:18 +00:00
Merge pull request #53175 from frappe/mergify/bp/version-16-hotfix/pr-52924
This commit is contained in:
@@ -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]));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -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"):
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
Reference in New Issue
Block a user