fix(timesheet): handle empty allowed projects (#58745)

This commit is contained in:
Krishna Pramod Shirsath
2026-09-04 11:34:29 +05:30
committed by GitHub
parent f8951034be
commit f368a5b64e
2 changed files with 15 additions and 2 deletions

View File

@@ -1,6 +1,7 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt
import datetime
from unittest.mock import patch
import frappe
from frappe.utils import add_to_date, now_datetime, nowdate
@@ -8,12 +9,20 @@ from frappe.utils import add_to_date, now_datetime, nowdate
from erpnext.accounts.doctype.sales_invoice.mapper 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(
{

View File

@@ -339,10 +339,14 @@ def get_projectwise_timesheet_data(
& (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: