feat: dodaj display_code polje za putne naloge (MT070626 format)
- Dodano polje 'display_code' na WorkOrder model (format: 2 inicijala + ddmmyy) - Migracije za kreiranje polja i backfill postojećih naloga - Ažuriran WorkOrderSerializer za validaciju i serijalizaciju display_code - Backend tasks za auto-generiranje display_code pri kreiranju - Frontend komponente ažurirane za prikaz display_code umjesto UUID: * FleetDashboardShell tablica putnih naloga * WorkOrderDetailModal * TaskCreateModal * Sve PDF stranice - displayIds.js utility za formatiranjeDisplay ID-eva - Admin interface prikazuje display_code
This commit is contained in:
@@ -18,6 +18,13 @@ logger = logging.getLogger(__name__)
|
||||
register_unicode_fonts()
|
||||
|
||||
|
||||
def _work_order_display_code(work_order):
|
||||
normalized = str(getattr(work_order, 'display_code', '') or '').strip().upper()
|
||||
if normalized:
|
||||
return normalized
|
||||
return 'NALOG'
|
||||
|
||||
|
||||
@shared_task(bind=True, max_retries=3, default_retry_delay=60)
|
||||
def send_notification_email(self, notification_id):
|
||||
"""
|
||||
@@ -95,6 +102,7 @@ def _build_work_order_invoices_pdf(work_order):
|
||||
chassis_hours = str(getattr(work_order.vehicle, "chassis_working_hours", "-") or "-")
|
||||
mileage = str(getattr(work_order.vehicle, "current_mileage", "-") or "-")
|
||||
generated_date = timezone.localtime(timezone.now()).strftime("%d.%m.%Y")
|
||||
display_code = _work_order_display_code(work_order)
|
||||
|
||||
def draw_header_footer(page_num):
|
||||
draw_standard_header_footer(
|
||||
@@ -107,7 +115,7 @@ def _build_work_order_invoices_pdf(work_order):
|
||||
upgrade_hours=upgrade_hours,
|
||||
chassis_hours=chassis_hours,
|
||||
mileage=mileage,
|
||||
work_order_number=str(work_order.pk),
|
||||
work_order_number=display_code,
|
||||
generated_date=generated_date,
|
||||
report_title="Računi putnog naloga",
|
||||
page_size=A4,
|
||||
@@ -122,7 +130,7 @@ def _build_work_order_invoices_pdf(work_order):
|
||||
y -= 8
|
||||
|
||||
pdf.setFont("Vera-Bold", 13)
|
||||
pdf.drawString(margin, y, f"Računi putnog naloga WO-{work_order.pk}")
|
||||
pdf.drawString(margin, y, f"Računi putnog naloga {display_code}")
|
||||
y -= 20
|
||||
pdf.setFont("Vera", 10)
|
||||
pdf.drawString(margin, y, f"Datum naloga: {work_order.date}")
|
||||
@@ -202,7 +210,7 @@ def build_work_order_invoices_pdf_task(work_order_id):
|
||||
|
||||
pdf_bytes = _build_work_order_invoices_pdf(work_order)
|
||||
pdf_b64 = base64.b64encode(pdf_bytes).decode('ascii')
|
||||
filename = f"{work_order.pk}.work-order-invoices.pdf"
|
||||
filename = f"{_work_order_display_code(work_order)}.work-order-invoices.pdf"
|
||||
return {
|
||||
"filename": filename,
|
||||
"pdf_base64": pdf_b64,
|
||||
@@ -259,7 +267,7 @@ def build_work_order_pdf_cached_task(generated_pdf_id):
|
||||
else:
|
||||
pdf_bytes = _build_work_order_pdf(work_order)
|
||||
|
||||
filename = generated.filename or f"{work_order.pk}.{generated.pdf_type}.pdf"
|
||||
filename = generated.filename or f"{_work_order_display_code(work_order)}.{generated.pdf_type}.pdf"
|
||||
generated.file.save(filename, ContentFile(pdf_bytes), save=False)
|
||||
generated.status = 'ready'
|
||||
generated.error_message = ''
|
||||
@@ -269,7 +277,7 @@ def build_work_order_pdf_cached_task(generated_pdf_id):
|
||||
NotificationService.create_notification(
|
||||
recipient=generated.requested_by,
|
||||
title="PDF spreman",
|
||||
message=f"PDF dokument je uspješno generiran za WO-{work_order.pk}.",
|
||||
message=f"PDF dokument je uspješno generiran za putni nalog {_work_order_display_code(work_order)}.",
|
||||
level="success",
|
||||
send_email=False,
|
||||
metadata={
|
||||
@@ -294,7 +302,7 @@ def build_work_order_pdf_cached_task(generated_pdf_id):
|
||||
NotificationService.create_notification(
|
||||
recipient=generated.requested_by,
|
||||
title="Greška kod PDF-a",
|
||||
message=f"Generiranje PDF dokumenta nije uspjelo za WO-{work_order.pk}.",
|
||||
message=f"Generiranje PDF dokumenta nije uspjelo za putni nalog {_work_order_display_code(work_order)}.",
|
||||
level="warning",
|
||||
send_email=False,
|
||||
metadata={
|
||||
|
||||
Reference in New Issue
Block a user