{# Der Auftragsschein aus der SICHT DES AUFTRAGNEHMERS — der Rumpf. Warum es ihn gibt, warum keine PDF-Bibliothek und warum er NICHTS zeigt, was der Bildschirm verbirgt: alles bei `_schein_html` in `main.py`. **Hier stehen keine Zeilenumbrueche innerhalb der Kaesten.** `.kasten` und `.grund` tragen `white-space: pre-line`; ein Umbruch, den die Vorlage aus Bequemlichkeit setzt, waere auf dem Blatt eine leere Zeile. Leere Angaben stehen nicht als Gedankenstrich da (`felder` sammelt nur, was einen Wert hat) — ein Blatt mit vier Gedankenstrichen sieht aus, als fehlte etwas. #} {%- set felder = [] -%} {%- if termin_lang %}{% set _ = felder.append(('Termin', termin_lang)) %}{% endif -%} {%- if fenster %}{% set _ = felder.append(('Zeitfenster', fenster)) %}{% endif -%} {%- if a.get('status_label') %}{% set _ = felder.append(('Status', a.get('status_label'))) %}{% endif -%} {%- if prio_text %}{% set _ = felder.append(('Priorität', prio_text)) %}{% endif -%} {%- if a.get('firma') %}{% set _ = felder.append(('Auftragnehmer', a.get('firma'))) %}{% endif -%} {%- if monteur %}{% set _ = felder.append(('Wer kommt', monteur)) %}{% endif -%} {%- if vor_ort %}{% set _ = felder.append(('Ansprechperson vor Ort', vor_ort)) %}{% endif -%} {%- if a.get('auftraggeber_name') %}{% set _ = felder.append(('Auftraggeber', a.get('auftraggeber_name'))) %}{% endif -%}
{{ a.nummer }}

{{ a.titel }}

{#- Kein Mandantenname: Die Marke traegt vier FARBEN und keinen Namen. Das Logo dagegen ist auf einem Blatt fuer die Werkstattmappe der Absender. -#}
{{ logo }}Auftragsschein
{{ heute }}
{%- if felder %}
{% for beschriftung, wert in felder %}
{{ beschriftung }}: {{ wert }}
{% endfor %}
{% endif -%} {%- if ort_zeilen %}

Reparaturort

{% for z in ort_zeilen %}{{ z }}{% if not loop.last %}
{% endif %}{% endfor %}
{% endif -%} {%- if a.get('bemerkung') %}

Bemerkung zur Beauftragung

{{ a.bemerkung }}
{% endif -%} {%- if a.get('notiz') %}

Gut zu wissen

{{ a.notiz }}
{% endif -%} {#- Dieselben Hinweise wie am Bildschirm (Spec Notizen 4.6), einer je Kasten. -#} {%- if a.get('anlage_hinweise') %}

Hinweise zur Anlage {{ a.get('anlage_name') or '' }}

{% for h in a.anlage_hinweise %}
{{ h.text }}
{% endfor %}{% endif -%} {%- if liegenschaft_hinweis %}

Hinweise zur Liegenschaft

{% if liegenschaft_hinweis.satz %}
{% include "handwerker/hinweis_satz.html" %}
{% else %}{% for e in liegenschaft_hinweis.eintraege %}
{{ e.titel }}{% if e.text %}{{ "\n" }}{{ e.text }}{% endif %}
{% endfor %}{% endif %}{% endif -%}

Was zu tun ist

{{ a.get('beschreibung') or "Keine weitere Beschreibung." }}
{#- Mit Durchstreichung und Grund (AC 3): Wer das Blatt in die Hand bekam, sah bis zum Review vom 2026-08-25 ein ☒ ohne zu wissen, warum. -#} {%- if a.get('punkte') %}

Checkliste

{% endif -%} {#- Nur die NAMEN: Ein Plan im A4-Ausschnitt ist unlesbar, ein Foto frisst die Seite. Heruntergeladen wird im Portal. -#} {%- if a.get('anhaenge') %}

Dateien im Portal

{% endif -%} {#- **Der Schnipsel schon, der ganze Plan nicht.** Der Kommentar bei den Dateien gilt weiter: Ein A0-Blatt auf A4 ist unlesbar. Dieser Ausschnitt zeigt rund 160 x 160 mm des Blattes, also den Raum um das Gerät, und genau dafür gibt es ihn. Er steht am Ende, weil das Blatt in der Hand von oben gelesen wird und die Arbeit vor dem Weg kommt. Die Breite deckelt `_SCHEIN_STIL` in `main.py` und NICHT `portal.css`: Diese Seite baut ihren Kopfbereich selbst und bindet die Stildatei gar nicht ein. Ohne Deckel sprengte das 1200 px breite PNG das Blatt. -#} {%- if plan %}

Wo das Gerät steht

Ausschnitt aus «{{ plan.bezeichnung }}»
{{ plan.bezeichnung }}{% if plan.ort %} · {{ plan.ort }}{% endif %}
{% endif -%}
Dieses Blatt ist ein Ausdruck aus dem Auftragnehmer-Portal. Massgeblich ist der Stand im Portal — melden Sie Rückfragen und Termine dort.