{% extends "base.html" %} {% from "_macros.html" import money %} {% block title %}Aufträge{% endblock %} {% block heading %}Aufträge{% endblock %} {% block topbar_actions %}
Alle Bestätigt In Produktion Versandbereit Versendet Abgerechnet Bezahlt
+ Neuer Auftrag {% endblock %} {% block content %}
{% if orders %} {% endif %} {% if orders %}
{% for o in orders %} {# v1.12.1: Fallback auf aktuellen Kundennamen falls Snapshot leer #} {% set cust_name = o.customer_name_snapshot or o.customer_current_name or '—' %} {% set cust_is_biz = o.is_business_snapshot if o.is_business_snapshot is not none else o.customer_current_is_business %} {% set cust_iso = o.customer_country_iso_snapshot or o.customer_country_iso or '—' %} {# v1.12.1: Produktions-Fortschritt #} {% set p_total = o.prod_steps_total or 0 %} {% set p_done = o.prod_steps_done or 0 %} {% set p_pct = (100 * p_done / p_total)|round(0, 'floor')|int if p_total else 0 %} {% endfor %}
Auftrags-Nr. Datum Kunde Land Referenz Liefertermin Pos. Netto Brutto Status Produktion
{{ o.order_no }} {{ o.order_date }} {{ cust_name }} {% if cust_is_biz == 0 %}B2C{% endif %} {{ cust_iso }} {{ o.customer_reference or '—' }} {{ o.due_date or '—' }} {{ o.line_count }} {{ money(o.subtotal_net) }} {{ money(o.total_gross) }} {{ o.currency }} {% set color = STATUS_COLOR.get(o.status, 'neutral') %} {{ STATUS_LABELS.get(o.status, o.status) }} ▾ {% if p_total == 0 %} — kein Plan {% else %}
{{ p_done }}/{{ p_total }}
{% if p_pct >= 100 %} ✓ Fertig {% elif o.prod_current_step %} ▶ {{ o.prod_current_step }} {% elif o.prod_next_step %} → {{ o.prod_next_step }} {% else %} wartet {% endif %}
{% endif %}
Öffnen
{% else %} {% from "_macros.html" import empty_state %} {% if status_filter %} {{ empty_state( icon='🔍', title='Keine Aufträge mit Status „' ~ STATUS_LABELS.get(status_filter, status_filter) ~ '"', description='Mit dem aktuellen Filter sind keine Aufträge sichtbar.', ctas=[ {'label': 'Filter zurücksetzen', 'href': '/sales-orders', 'primary': True}, {'label': '+ Neuer Auftrag', 'href': '/sales-orders/new'}, ], ) }} {% else %} {{ empty_state( icon='📋', title='Noch keine Aufträge', description='Aus einem angenommenen Angebot wird ein Auftrag — verbindlich, mit Liefertermin und Arbeitsplan. Dann freigabe an die Werkstatt → Jobs erscheinen im Aktions-Dashboard und Shopfloor.', workflow='📥 Anfrage → 💼 Angebot → 📋 Auftrag → 🏭 Werkstatt → 📦 Versand → 🧾 Rechnung', ctas=[ {'label': '+ Auftrag manuell anlegen', 'href': '/sales-orders/new', 'primary': True}, {'label': 'Aus Angebot wandeln', 'href': '/quotes'}, {'label': '📚 Handbuch (DE)', 'href': '/handbuch/de/pdf', 'external': True}, ], ) }} {% endif %} {% endif %} {% if orders %} {% endif %} {% endblock %}