diff --git a/erpnext/projects/doctype/timesheet/test_timesheet.py b/erpnext/projects/doctype/timesheet/test_timesheet.py index f1a0f6edfd9..9971e53d0ef 100644 --- a/erpnext/projects/doctype/timesheet/test_timesheet.py +++ b/erpnext/projects/doctype/timesheet/test_timesheet.py @@ -1,7 +1,7 @@ # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors # See license.txt import datetime -import unittest +from unittest.mock import patch import frappe from frappe.utils import add_to_date, now_datetime, nowdate @@ -9,12 +9,20 @@ from frappe.utils import add_to_date, now_datetime, nowdate from erpnext.accounts.doctype.sales_invoice.sales_invoice import make_sales_return from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice from erpnext.projects.doctype.task.test_task import create_task -from erpnext.projects.doctype.timesheet.timesheet import OverlapError, make_sales_invoice +from erpnext.projects.doctype.timesheet.timesheet import ( + OverlapError, + get_projectwise_timesheet_data, + make_sales_invoice, +) from erpnext.setup.doctype.employee.test_employee import make_employee from erpnext.tests.utils import ERPNextTestSuite class TestTimesheet(ERPNextTestSuite): + def test_get_projectwise_timesheet_data_without_allowed_projects(self): + with patch("frappe.get_list", side_effect=[["TS-0001"], []]): + self.assertEqual(get_projectwise_timesheet_data(), []) + def test_timesheet_post_update(self): frappe.get_doc( { diff --git a/erpnext/projects/doctype/timesheet/timesheet.py b/erpnext/projects/doctype/timesheet/timesheet.py index 239329bc17d..b16eac77a51 100644 --- a/erpnext/projects/doctype/timesheet/timesheet.py +++ b/erpnext/projects/doctype/timesheet/timesheet.py @@ -335,10 +335,14 @@ def get_projectwise_timesheet_data(project=None, parent=None, from_time=None, to & (tsd.is_billable == 1) & tsd.sales_invoice.isnull() & (tsd.parent.isin(allowed_timesheets)) - & ((tsd.project.isin(allowed_projects)) | (tsd.project.isnull())) ) ) + if allowed_projects: + query = query.where((tsd.project.isin(allowed_projects)) | (tsd.project.isnull())) + else: + query = query.where(tsd.project.isnull()) + if project: query = query.where(tsd.project == project) if parent: