From 05fc83ffc8c032272b0dabce9be4e066fb379c1e Mon Sep 17 00:00:00 2001 From: Corentin Forler <8860073-cforler_dokos@users.noreply.gitlab.com> Date: Thu, 11 Jan 2024 16:57:31 +0100 Subject: [PATCH] fix(ProjectManagement): Fix get_query Dialog is a Layout object, so it calls attach_doc_and_docfields on refresh. This is turns overrides the `df` property of the field objects by taking it using frappe.meta.get_docfield. Thus we have to override the docfield copy. --- .../pm/PMTaskAssignmentQuickEntryForm.js | 25 ++++++++++++------- .../public/js/projects/pm/PMTimeLogDialog.js | 9 ++++++- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/erpnext/public/js/projects/pm/PMTaskAssignmentQuickEntryForm.js b/erpnext/public/js/projects/pm/PMTaskAssignmentQuickEntryForm.js index 586b215c025..8eaf7334666 100644 --- a/erpnext/public/js/projects/pm/PMTaskAssignmentQuickEntryForm.js +++ b/erpnext/public/js/projects/pm/PMTaskAssignmentQuickEntryForm.js @@ -72,15 +72,17 @@ frappe.ui.form.TaskAssignmentQuickEntryForm = class TaskAssignmentQuickEntryForm } _get_field(fieldname) { - return this.meta.fields.find(df => df.fieldname === fieldname) + return frappe.meta.get_docfield(this.doctype, fieldname, this.doc.name); } _get_all_fields() { - const field = (fieldname, overrides = {}) => ({ - ...this._get_field(fieldname), - ...overrides, - }) + const field = (fieldname, overrides = {}) => { + const df = this._get_field(fieldname); + Object.assign(df, overrides); + return df; + } const defaultMode = this.doc?.end_time ? "Time" : "Duration"; + const NO_DEPENDS_ON = { depends_on: "", read_only_depends_on: "", mandatory_depends_on: "" }; return [ { fieldtype: "Select", @@ -98,11 +100,16 @@ frappe.ui.form.TaskAssignmentQuickEntryForm = class TaskAssignmentQuickEntryForm field("start_date"), field("end_date"), { fieldtype: "Section Break" }, - field("project", { depends_on: "", read_only_depends_on: "", mandatory_depends_on: "" }), + field("project", { + ...NO_DEPENDS_ON, + get_query: () => ({ + filters: { + status: "Open", + }, + }), + }), field("task", { - depends_on: "", - read_only_depends_on: "", - mandatory_depends_on: "", + ...NO_DEPENDS_ON, get_query: () => ({ filters: { project: this.dialog.get_value("project"), diff --git a/erpnext/public/js/projects/pm/PMTimeLogDialog.js b/erpnext/public/js/projects/pm/PMTimeLogDialog.js index fab05f8acb3..45cae8796d4 100644 --- a/erpnext/public/js/projects/pm/PMTimeLogDialog.js +++ b/erpnext/public/js/projects/pm/PMTimeLogDialog.js @@ -142,7 +142,14 @@ export class PMTimeLogDialog { reqd: 1, }, { fieldtype: "Section Break", label: "Details", hide_border: 1, collapsible: 1 }, - field("project", NO_DEPENDS_ON), + field("project", { + ...NO_DEPENDS_ON, + get_query: () => ({ + filters: { + status: "Open", + }, + }), + }), field("activity_type", NO_DEPENDS_ON), // { // fieldtype: "Link", -- GitLab