+
+
Raport Mentenanță Echipamente
+
+
+
+
+
+
+ {% if records is not None %}
+
+
+
+
+
+ | Dată Intervenție |
+ Echipament |
+ Tip Operațiune |
+ Efectuat de |
+ Observații |
+
+
+
+ {% for record in records %}
+
+ | {{ record.date|date:"d.m.Y" }} |
+
+ {{ record.equipment }} |
+ {{ record.operation_type }} |
+ {{ record.performed_by }} |
+ {{ record.notes|default:"-" }} |
+
+ {% empty %}
+
+ | Nu au fost găsite intervenții de mentenanță în perioada selectată. |
+
+ {% endfor %}
+
+
+
+
+ {% endif %}
+
+{% endblock %}
diff --git a/equipment/urls.py b/equipment/urls.py
index 644ddb1..139c14f 100644
--- a/equipment/urls.py
+++ b/equipment/urls.py
@@ -78,6 +78,7 @@ urlpatterns = [
views.generate_decommission_pdf,
name="decommission_pdf",
),
+ path("raport-mentenanta/", views.maintenance_report, name="maintenance_report"),
path("certificates/", views.certificate_list, name="certificate_list"),
path("certificates/new/", views.certificate_form, name="certificate_create"),
path(
diff --git a/equipment/views.py b/equipment/views.py
index d003492..866b567 100644
--- a/equipment/views.py
+++ b/equipment/views.py
@@ -26,6 +26,8 @@ from datetime import date, timedelta
from .models import DigitalCertificate
from .forms import DigitalCertificateForm
import csv
+from django.contrib.auth.decorators import login_required
+from django.shortcuts import render
@login_required
@@ -914,3 +916,49 @@ def export_inventory_csv(request):
)
return response
+
+
+from datetime import datetime
+
+
+@login_required
+def maintenance_report(request):
+ # Preluăm datele exact așa cum le introduce utilizatorul (ex: 20.05.2026 sau 20-05-2026)
+ start_date_raw = request.GET.get("start_date")
+ end_date_raw = request.GET.get("end_date")
+
+ records = None
+
+ # Funcție ajutătoare pentru a traduce formatul românesc în formatul bazei de date
+ def parse_romanian_date(date_str):
+ if not date_str:
+ return None
+
+ clean_str = str(date_str).strip()
+
+ # Unificăm separatorii (transformăm cratima în punct pentru a verifica mai ușor)
+ clean_str = clean_str.replace("-", ".")
+
+ try:
+ # Traducem din ZZ.LL.AAAA în AAAA-LL-ZZ
+ parsed = datetime.strptime(clean_str, "%d.%m.%Y")
+ return parsed.strftime("%Y-%m-%d")
+ except ValueError:
+ # Dacă deja este în formatul corect (ex. a fost introdus manual AAAA-LL-ZZ), îl lăsăm așa
+ return clean_str
+
+ # Convertim datele pentru baza de date
+ start_date_db = parse_romanian_date(start_date_raw)
+ end_date_db = parse_romanian_date(end_date_raw)
+
+ if start_date_db and end_date_db:
+ records = MaintenanceRecord.objects.filter(
+ date__range=[start_date_db, end_date_db]
+ ).order_by("-date")
+
+ context = {
+ "records": records,
+ "start_date": start_date_raw, # Trimitem înapoi formatul original pentru a rămâne afișat în formular
+ "end_date": end_date_raw,
+ }
+ return render(request, "equipment/maintenance_report.html", context)
diff --git a/templates/base.html b/templates/base.html
index 9f0dee1..dfc228f 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -28,12 +28,15 @@