mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-23 15:09:20 +00:00
fix: fetch project-related info in Timesheet (#22422)
Co-authored-by: Marica <maricadsouza221197@gmail.com>
This commit is contained in:
@@ -3,55 +3,36 @@
|
|||||||
|
|
||||||
frappe.provide("erpnext.projects");
|
frappe.provide("erpnext.projects");
|
||||||
|
|
||||||
cur_frm.add_fetch("project", "company", "company");
|
|
||||||
|
|
||||||
frappe.ui.form.on("Task", {
|
frappe.ui.form.on("Task", {
|
||||||
onload: function(frm) {
|
setup: function (frm) {
|
||||||
frm.set_query("task", "depends_on", function() {
|
frm.set_query("project", function () {
|
||||||
var filters = {
|
return {
|
||||||
|
query: "erpnext.projects.doctype.task.task.get_project"
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
frm.make_methods = {
|
||||||
|
'Timesheet': () => frappe.model.open_mapped_doc({
|
||||||
|
method: 'erpnext.projects.doctype.task.task.make_timesheet',
|
||||||
|
frm: frm
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
onload: function (frm) {
|
||||||
|
frm.set_query("task", "depends_on", function () {
|
||||||
|
let filters = {
|
||||||
name: ["!=", frm.doc.name]
|
name: ["!=", frm.doc.name]
|
||||||
};
|
};
|
||||||
if(frm.doc.project) filters["project"] = frm.doc.project;
|
if (frm.doc.project) filters["project"] = frm.doc.project;
|
||||||
return {
|
return {
|
||||||
filters: filters
|
filters: filters
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
refresh: function(frm) {
|
refresh: function (frm) {
|
||||||
frm.fields_dict['parent_task'].get_query = function () {
|
frm.set_query("parent_task", { "is_group": 1 });
|
||||||
return {
|
|
||||||
filters: {
|
|
||||||
"is_group": 1,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!frm.doc.is_group) {
|
|
||||||
if (!frm.is_new()) {
|
|
||||||
if (frappe.model.can_read("Timesheet")) {
|
|
||||||
frm.add_custom_button(__("Timesheet"), () => {
|
|
||||||
frappe.route_options = { "project": frm.doc.project, "task": frm.doc.name }
|
|
||||||
frappe.set_route("List", "Timesheet");
|
|
||||||
}, __("View"), true);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (frappe.model.can_read("Expense Claim")) {
|
|
||||||
frm.add_custom_button(__("Expense Claims"), () => {
|
|
||||||
frappe.route_options = { "project": frm.doc.project, "task": frm.doc.name };
|
|
||||||
frappe.set_route("List", "Expense Claim");
|
|
||||||
}, __("View"), true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
setup: function(frm) {
|
|
||||||
frm.fields_dict.project.get_query = function() {
|
|
||||||
return {
|
|
||||||
query: "erpnext.projects.doctype.task.task.get_project"
|
|
||||||
}
|
|
||||||
};
|
|
||||||
},
|
},
|
||||||
|
|
||||||
is_group: function (frm) {
|
is_group: function (frm) {
|
||||||
@@ -69,12 +50,8 @@ frappe.ui.form.on("Task", {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
validate: function(frm) {
|
validate: function (frm) {
|
||||||
frm.doc.project && frappe.model.remove_from_locals("Project",
|
frm.doc.project && frappe.model.remove_from_locals("Project",
|
||||||
frm.doc.project);
|
frm.doc.project);
|
||||||
},
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
cur_frm.add_fetch('task', 'subject', 'subject');
|
|
||||||
cur_frm.add_fetch('task', 'project', 'project');
|
|
||||||
|
|||||||
@@ -325,6 +325,7 @@
|
|||||||
"options": "Department"
|
"options": "Department"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"fetch_from": "project.company",
|
||||||
"fieldname": "company",
|
"fieldname": "company",
|
||||||
"fieldtype": "Link",
|
"fieldtype": "Link",
|
||||||
"label": "Company",
|
"label": "Company",
|
||||||
@@ -365,7 +366,7 @@
|
|||||||
"is_tree": 1,
|
"is_tree": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"max_attachments": 5,
|
"max_attachments": 5,
|
||||||
"modified": "2020-03-18 18:26:04.788061",
|
"modified": "2020-06-24 04:30:53.712091",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Projects",
|
"module": "Projects",
|
||||||
"name": "Task",
|
"name": "Task",
|
||||||
|
|||||||
@@ -7,10 +7,11 @@ import json
|
|||||||
|
|
||||||
import frappe
|
import frappe
|
||||||
from frappe import _, throw
|
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, get_link_to_form, getdate, today
|
from frappe.utils import add_days, cstr, date_diff, get_link_to_form, getdate, today
|
||||||
from frappe.utils.nestedset import NestedSet
|
from frappe.utils.nestedset import NestedSet
|
||||||
from frappe.desk.form.assign_to import close_all_assignments, clear
|
|
||||||
from frappe.utils import date_diff
|
|
||||||
|
|
||||||
class CircularReferenceError(frappe.ValidationError): pass
|
class CircularReferenceError(frappe.ValidationError): pass
|
||||||
class EndDateCannotBeGreaterThanProjectEndDateError(frappe.ValidationError): pass
|
class EndDateCannotBeGreaterThanProjectEndDateError(frappe.ValidationError): pass
|
||||||
@@ -220,6 +221,26 @@ def set_tasks_as_overdue():
|
|||||||
continue
|
continue
|
||||||
frappe.get_doc("Task", task.name).update_status()
|
frappe.get_doc("Task", task.name).update_status()
|
||||||
|
|
||||||
|
|
||||||
|
@frappe.whitelist()
|
||||||
|
def make_timesheet(source_name, target_doc=None, ignore_permissions=False):
|
||||||
|
def set_missing_values(source, target):
|
||||||
|
target.append("time_logs", {
|
||||||
|
"hours": source.actual_time,
|
||||||
|
"completed": source.status == "Completed",
|
||||||
|
"project": source.project,
|
||||||
|
"task": source.name
|
||||||
|
})
|
||||||
|
|
||||||
|
doclist = get_mapped_doc("Task", source_name, {
|
||||||
|
"Task": {
|
||||||
|
"doctype": "Timesheet"
|
||||||
|
}
|
||||||
|
}, target_doc, postprocess=set_missing_values, ignore_permissions=ignore_permissions)
|
||||||
|
|
||||||
|
return doclist
|
||||||
|
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def get_children(doctype, parent, task=None, project=None, is_root=False):
|
def get_children(doctype, parent, task=None, project=None, is_root=False):
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user