37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
# backend/modules/task_management/tasks.py
|
|
|
|
from celery import shared_task
|
|
from .models import Task
|
|
from django.contrib.auth import get_user_model
|
|
from modules.fleet.models import Vehicle, WorkOrder
|
|
|
|
@shared_task
|
|
def create_task_from_invoice(invoice_data):
|
|
"""
|
|
Ovaj zadatak se poziva asinkrono.
|
|
"""
|
|
User = get_user_model()
|
|
# Logika: dodijeli zadatak adminu ako je račun veći od 1000
|
|
amount = float(invoice_data.get('amount', 0))
|
|
admin_user = User.objects.filter(is_staff=True).first()
|
|
work_order = None
|
|
vehicle = None
|
|
work_order_id = invoice_data.get('work_order_id')
|
|
vehicle_id = invoice_data.get('vehicle_id')
|
|
|
|
if work_order_id:
|
|
work_order = WorkOrder.objects.filter(pk=work_order_id).first()
|
|
if work_order:
|
|
vehicle = work_order.vehicle
|
|
if vehicle is None and vehicle_id:
|
|
vehicle = Vehicle.objects.filter(pk=vehicle_id).first()
|
|
|
|
if amount > 1000:
|
|
Task.objects.create(
|
|
title=f"Provjera računa: {invoice_data['invoice_number']}",
|
|
description=f"Račun iznosi {amount}, potrebna revizija.",
|
|
assigned_to=admin_user,
|
|
status='aktivan',
|
|
vehicle=vehicle,
|
|
work_order=work_order,
|
|
) |