fix: scope inferred work-order tasks to the current work order
Prevent service-record inference from pulling tasks from other work orders that share the same vehicle. This keeps task-service-context, service reports, and related work-order widgets isolated to the selected nalog. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -26,7 +26,11 @@ from modules.fleet.models import (
|
|||||||
)
|
)
|
||||||
from modules.task_management.models import Task, TaskWorkHoursTable
|
from modules.task_management.models import Task, TaskWorkHoursTable
|
||||||
from modules.fleet.tasks import build_monthly_archive_cached_task
|
from modules.fleet.tasks import build_monthly_archive_cached_task
|
||||||
from modules.fleet.views import _build_monthly_servicer_report_rows, _calculate_daily_quantity_from_hours
|
from modules.fleet.views import (
|
||||||
|
_build_monthly_servicer_report_rows,
|
||||||
|
_calculate_daily_quantity_from_hours,
|
||||||
|
_work_order_related_tasks_queryset,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def create_test_image(filename='test.jpg', size=(40, 40), color='red'):
|
def create_test_image(filename='test.jpg', size=(40, 40), color='red'):
|
||||||
@@ -236,6 +240,33 @@ class WorkOrderImagesEndpointTests(TestCase):
|
|||||||
self.assertIn('additional_costs_table', payload)
|
self.assertIn('additional_costs_table', payload)
|
||||||
self.assertEqual(payload['additional_costs_table']['total_for_payout'], '5.00')
|
self.assertEqual(payload['additional_costs_table']['total_for_payout'], '5.00')
|
||||||
|
|
||||||
|
def test_work_order_related_tasks_queryset_excludes_other_work_orders_for_same_vehicle(self):
|
||||||
|
other_work_order = WorkOrder.objects.create(
|
||||||
|
vehicle=self.vehicle,
|
||||||
|
creator=self.user,
|
||||||
|
display_code='MT160726',
|
||||||
|
purpose='kontrola',
|
||||||
|
)
|
||||||
|
other_task = Task.objects.create(
|
||||||
|
title='Drugi nalog isti stroj',
|
||||||
|
assigned_to=self.user,
|
||||||
|
vehicle=self.vehicle,
|
||||||
|
work_order=other_work_order,
|
||||||
|
scheduled_date=date(2033, 12, 25),
|
||||||
|
)
|
||||||
|
VehicleServiceRecord.objects.create(
|
||||||
|
vehicle=self.vehicle,
|
||||||
|
task=other_task,
|
||||||
|
performed_by=self.user,
|
||||||
|
description='Ne smije se pojaviti u prvom nalogu.',
|
||||||
|
service_title='Krivi nalog',
|
||||||
|
)
|
||||||
|
|
||||||
|
resolved_ids = list(_work_order_related_tasks_queryset(self.work_order).values_list('id', flat=True))
|
||||||
|
|
||||||
|
self.assertIn(self.task.pk, resolved_ids)
|
||||||
|
self.assertNotIn(other_task.pk, resolved_ids)
|
||||||
|
|
||||||
def test_invoice_upload_immediately_appears_in_additional_costs_table(self):
|
def test_invoice_upload_immediately_appears_in_additional_costs_table(self):
|
||||||
create_response = self.client.post(
|
create_response = self.client.post(
|
||||||
reverse('work-order-invoice-list'),
|
reverse('work-order-invoice-list'),
|
||||||
|
|||||||
@@ -155,6 +155,7 @@ def _work_order_related_tasks_queryset(work_order):
|
|||||||
vehicle_id=work_order.vehicle_id,
|
vehicle_id=work_order.vehicle_id,
|
||||||
task_id__isnull=False,
|
task_id__isnull=False,
|
||||||
task__is_active=True,
|
task__is_active=True,
|
||||||
|
task__work_order=work_order,
|
||||||
).values_list('task_id', flat=True)
|
).values_list('task_id', flat=True)
|
||||||
)
|
)
|
||||||
task_ids = list({*direct_task_ids, *inferred_task_ids})
|
task_ids = list({*direct_task_ids, *inferred_task_ids})
|
||||||
|
|||||||
Reference in New Issue
Block a user