mirror of
https://github.com/frappe/erpnext.git
synced 2026-03-23 13:12:22 +01:00
refactor: project module form cleanup
This commit is contained in:
@@ -205,7 +205,7 @@ frappe.ui.form.on("Project", {
|
||||
|
||||
collect_progress: function (frm) {
|
||||
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",
|
||||
"status",
|
||||
"project_type",
|
||||
"is_active",
|
||||
"percent_complete_method",
|
||||
"percent_complete",
|
||||
"column_break_5",
|
||||
"project_template",
|
||||
"expected_start_date",
|
||||
"expected_end_date",
|
||||
"priority",
|
||||
"department",
|
||||
"customer_details",
|
||||
"customer",
|
||||
"column_break_14",
|
||||
"sales_order",
|
||||
"users_section",
|
||||
"users",
|
||||
"copied_from",
|
||||
"section_break0",
|
||||
"notes",
|
||||
"is_active",
|
||||
"percent_complete",
|
||||
"section_break_18",
|
||||
"expected_start_date",
|
||||
"actual_start_date",
|
||||
"actual_time",
|
||||
"column_break_20",
|
||||
"expected_end_date",
|
||||
"actual_end_date",
|
||||
"costing_tab",
|
||||
"project_details",
|
||||
"estimated_costing",
|
||||
"total_costing_amount",
|
||||
@@ -50,7 +42,7 @@
|
||||
"gross_margin",
|
||||
"column_break_37",
|
||||
"per_gross_margin",
|
||||
"monitor_progress",
|
||||
"monitor_progress_tab",
|
||||
"collect_progress",
|
||||
"holiday_list",
|
||||
"frequency",
|
||||
@@ -63,7 +55,18 @@
|
||||
"weekly_time_to_send",
|
||||
"column_break_45",
|
||||
"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": [
|
||||
{
|
||||
@@ -231,7 +234,7 @@
|
||||
"collapsible": 1,
|
||||
"fieldname": "section_break_18",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "Start and End Dates"
|
||||
"label": "Timeline"
|
||||
},
|
||||
{
|
||||
"fieldname": "actual_start_date",
|
||||
@@ -258,7 +261,6 @@
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"collapsible": 1,
|
||||
"fieldname": "project_details",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "Costing and Billing",
|
||||
@@ -329,7 +331,6 @@
|
||||
"options": "Cost Center"
|
||||
},
|
||||
{
|
||||
"collapsible": 1,
|
||||
"fieldname": "margin",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "Margin",
|
||||
@@ -357,12 +358,6 @@
|
||||
"oldfieldtype": "Currency",
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"collapsible": 1,
|
||||
"fieldname": "monitor_progress",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "Monitor Progress"
|
||||
},
|
||||
{
|
||||
"default": "0",
|
||||
"fieldname": "collect_progress",
|
||||
@@ -455,6 +450,27 @@
|
||||
"fieldtype": "Data",
|
||||
"label": "Subject",
|
||||
"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",
|
||||
@@ -462,7 +478,7 @@
|
||||
"index_web_pages_for_search": 1,
|
||||
"links": [],
|
||||
"max_attachments": 4,
|
||||
"modified": "2025-08-21 17:57:58.314809",
|
||||
"modified": "2026-03-04 11:09:55.253367",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Projects",
|
||||
"name": "Project",
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
"type",
|
||||
"color",
|
||||
"is_group",
|
||||
"is_template",
|
||||
"column_break0",
|
||||
"status",
|
||||
"priority",
|
||||
@@ -21,17 +20,21 @@
|
||||
"parent_task",
|
||||
"completed_by",
|
||||
"completed_on",
|
||||
"section_break_dafi",
|
||||
"is_template",
|
||||
"column_break_vvfp",
|
||||
"start",
|
||||
"duration",
|
||||
"sb_timeline",
|
||||
"exp_start_date",
|
||||
"expected_time",
|
||||
"start",
|
||||
"column_break_11",
|
||||
"exp_end_date",
|
||||
"progress",
|
||||
"duration",
|
||||
"is_milestone",
|
||||
"sb_details",
|
||||
"description",
|
||||
"dependencies_tab",
|
||||
"sb_depends_on",
|
||||
"depends_on",
|
||||
"depends_on_tasks",
|
||||
@@ -44,12 +47,13 @@
|
||||
"total_costing_amount",
|
||||
"column_break_20",
|
||||
"total_billing_amount",
|
||||
"more_info_tab",
|
||||
"sb_more_info",
|
||||
"company",
|
||||
"review_date",
|
||||
"closing_date",
|
||||
"column_break_22",
|
||||
"department",
|
||||
"company",
|
||||
"lft",
|
||||
"rgt",
|
||||
"old_parent",
|
||||
@@ -78,7 +82,6 @@
|
||||
"oldfieldname": "project",
|
||||
"oldfieldtype": "Link",
|
||||
"options": "Project",
|
||||
"remember_last_selected_value": 1,
|
||||
"search_index": 1
|
||||
},
|
||||
{
|
||||
@@ -218,7 +221,6 @@
|
||||
{
|
||||
"fieldname": "sb_depends_on",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "Dependencies",
|
||||
"oldfieldtype": "Section Break"
|
||||
},
|
||||
{
|
||||
@@ -298,10 +300,9 @@
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"collapsible": 1,
|
||||
"fieldname": "sb_more_info",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "More Info"
|
||||
"label": "Additional Info"
|
||||
},
|
||||
{
|
||||
"depends_on": "eval:doc.status == \"Closed\" || doc.status == \"Pending Review\"",
|
||||
@@ -334,8 +335,7 @@
|
||||
"fieldname": "company",
|
||||
"fieldtype": "Link",
|
||||
"label": "Company",
|
||||
"options": "Company",
|
||||
"remember_last_selected_value": 1
|
||||
"options": "Company"
|
||||
},
|
||||
{
|
||||
"fieldname": "lft",
|
||||
@@ -398,6 +398,24 @@
|
||||
"fieldtype": "Data",
|
||||
"hidden": 1,
|
||||
"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",
|
||||
@@ -405,7 +423,7 @@
|
||||
"is_tree": 1,
|
||||
"links": [],
|
||||
"max_attachments": 5,
|
||||
"modified": "2026-02-05 09:58:38.052875",
|
||||
"modified": "2026-03-04 11:47:10.454548",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Projects",
|
||||
"name": "Task",
|
||||
|
||||
@@ -138,6 +138,8 @@ class Task(NestedSet):
|
||||
def validate_status(self):
|
||||
if self.is_template and 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":
|
||||
for d in self.depends_on:
|
||||
if frappe.db.get_value("Task", d.task, "status") not in ("Completed", "Cancelled"):
|
||||
|
||||
@@ -18,28 +18,29 @@
|
||||
"column_break_3",
|
||||
"status",
|
||||
"parent_project",
|
||||
"employee_detail",
|
||||
"employee",
|
||||
"employee_name",
|
||||
"department",
|
||||
"column_break_9",
|
||||
"user",
|
||||
"start_date",
|
||||
"end_date",
|
||||
"employee_detail",
|
||||
"employee",
|
||||
"department",
|
||||
"column_break_9",
|
||||
"employee_name",
|
||||
"section_break_5",
|
||||
"time_logs",
|
||||
"working_hours",
|
||||
"total_hours",
|
||||
"billing_tab",
|
||||
"billing_details",
|
||||
"total_billable_hours",
|
||||
"total_billable_amount",
|
||||
"total_costing_amount",
|
||||
"base_total_billable_amount",
|
||||
"base_total_billed_amount",
|
||||
"base_total_costing_amount",
|
||||
"column_break_10",
|
||||
"total_billed_hours",
|
||||
"total_billable_amount",
|
||||
"total_billed_amount",
|
||||
"total_costing_amount",
|
||||
"base_total_billed_amount",
|
||||
"per_billed",
|
||||
"section_break_18",
|
||||
"note",
|
||||
@@ -176,7 +177,6 @@
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"collapsible": 1,
|
||||
"fieldname": "billing_details",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "Billing Details",
|
||||
@@ -304,13 +304,18 @@
|
||||
"fieldname": "exchange_rate",
|
||||
"fieldtype": "Float",
|
||||
"label": "Exchange Rate"
|
||||
},
|
||||
{
|
||||
"fieldname": "billing_tab",
|
||||
"fieldtype": "Tab Break",
|
||||
"label": "Billing"
|
||||
}
|
||||
],
|
||||
"icon": "fa fa-clock-o",
|
||||
"idx": 1,
|
||||
"is_submittable": 1,
|
||||
"links": [],
|
||||
"modified": "2025-12-19 13:48:23.453636",
|
||||
"modified": "2026-03-04 11:56:51.438298",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Projects",
|
||||
"name": "Timesheet",
|
||||
|
||||
Reference in New Issue
Block a user