- Fristen-Widget-Format: DateInput/DateTimeInput mit ISO-Format-Attribut, damit Browser date/datetime-local korrekt vorausfüllen (Feedback #4) - Phase 2 Teilnahmeentscheidung: URL in build_phase_nav von /teilnahmeentscheidung/ → /entscheidung/ korrigiert (Feedback #6) - Phase 3 Detaillierte Durchsicht: URL in build_phase_nav von /anforderungen/ → /lose/anforderungen/ korrigiert (Feedback #7) - Phase 7 Abgabe: order_by('bezeichnung') → order_by('beschreibung') in abgabe_views.py (Dokument hat kein Feld 'bezeichnung') (Feedback #8) - Ausschreibungen-Liste: Ausschreiber zuerst, Titel zweite Spalte, neues geschätztes Volumen (Feedback #5) - Feedback-Backlog Leerstand: bereits durch vorherigen URL-Fix abgedeckt (Feedback #1) - Rechtsgrundlage (VgV/UVgO/VOB/A/SektVO/GWB) als neues Formularfeld incl. Migration (Feedback #2) - Bindefrist in Tagen + berechnetes Enddatum als Modell-Property bindefrist_berechnet, Formular und Detailansicht erweitert (Feedback #3) 68/68 Tests grün. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
134 lines
4.2 KiB
HTML
134 lines
4.2 KiB
HTML
{% extends "base.html" %}
|
|
{% block title %}{{ titel }}{% endblock %}
|
|
{% block content %}
|
|
<h1 class="page-title mb-6">{{ titel }}</h1>
|
|
|
|
<form method="post" class="max-w-2xl space-y-6">
|
|
{% csrf_token %}
|
|
{% if historisch %}
|
|
<input type="hidden" name="historisch_erfassen" value="1">
|
|
{% endif %}
|
|
|
|
<div class="card space-y-4">
|
|
<h2 class="text-sm font-semibold text-slate-700 uppercase tracking-wide">Stammdaten</h2>
|
|
<div>
|
|
<label class="form-label">Titel *</label>
|
|
{{ form.titel }}
|
|
{% if form.titel.errors %}<p class="text-red-600 text-xs mt-1">{{ form.titel.errors.0 }}</p>{% endif %}
|
|
</div>
|
|
<div class="grid grid-cols-2 gap-4">
|
|
<div>
|
|
<label class="form-label">Ausschreiber *</label>
|
|
{{ form.ausschreiber }}
|
|
{% if form.ausschreiber.errors %}<p class="text-red-600 text-xs mt-1">{{ form.ausschreiber.errors.0 }}</p>{% endif %}
|
|
</div>
|
|
<div>
|
|
<label class="form-label">Vergabeart</label>
|
|
{{ form.vergabeart }}
|
|
</div>
|
|
<div>
|
|
<label class="form-label">Rechtsgrundlage</label>
|
|
{{ form.rechtsgrundlage }}
|
|
</div>
|
|
</div>
|
|
<div class="grid grid-cols-2 gap-4">
|
|
<div>
|
|
<label class="form-label">Vergabeplattform</label>
|
|
{{ form.vergabeplattform }}
|
|
</div>
|
|
<div>
|
|
<label class="form-label">Vergabenummer</label>
|
|
{{ form.vergabenummer }}
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<label class="form-label">Fundstelle (URL)</label>
|
|
{{ form.fundstelle_url }}
|
|
</div>
|
|
<div>
|
|
<label class="form-label">Bid Manager</label>
|
|
{{ form.bid_manager }}
|
|
</div>
|
|
<div>
|
|
<label class="form-label">Leistungsbeschreibung</label>
|
|
{{ form.leistungsbeschreibung }}
|
|
</div>
|
|
<div class="grid grid-cols-2 gap-4">
|
|
<div>
|
|
<label class="form-label">Branche</label>
|
|
{{ form.branche }}
|
|
</div>
|
|
<div>
|
|
<label class="form-label">Schlagwörter</label>
|
|
{{ form.schlagwoerter }}
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<label class="form-label">Geschätztes Volumen (€)</label>
|
|
{{ form.geschaetztes_volumen }}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card space-y-4">
|
|
<h2 class="text-sm font-semibold text-slate-700 uppercase tracking-wide">Fristen</h2>
|
|
<div class="grid grid-cols-2 gap-4">
|
|
<div>
|
|
<label class="form-label">Veröffentlichungsdatum</label>
|
|
{{ form.veroeffentlichungsdatum }}
|
|
</div>
|
|
<div>
|
|
<label class="form-label">Bieterfragen bis</label>
|
|
{{ form.bieterfragen_bis }}
|
|
</div>
|
|
</div>
|
|
<div class="grid grid-cols-2 gap-4">
|
|
<div>
|
|
<label class="form-label">Abgabe bis</label>
|
|
{{ form.abgabe_bis }}
|
|
</div>
|
|
<div>
|
|
<label class="form-label">Bindefrist (Datum)</label>
|
|
{{ form.bindefrist }}
|
|
</div>
|
|
<div>
|
|
<label class="form-label">Bindefrist (Tage ab Abgabe)</label>
|
|
{{ form.bindefrist_tage }}
|
|
<p class="text-xs text-slate-400 mt-0.5">Alternativ zum Datum — Enddatum wird automatisch berechnet</p>
|
|
</div>
|
|
</div>
|
|
<div class="grid grid-cols-2 gap-4">
|
|
<div class="flex items-center gap-2">
|
|
{{ form.unterlagen_erhalten }}
|
|
<label class="text-sm text-slate-600">Unterlagen erhalten</label>
|
|
</div>
|
|
<div>
|
|
<label class="form-label">Unterlagen erhalten am</label>
|
|
{{ form.unterlagen_erhalten_am }}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
{% if historisch %}
|
|
<div class="card space-y-4">
|
|
<h2 class="text-sm font-semibold text-slate-700 uppercase tracking-wide">Historische Erfassung</h2>
|
|
<div>
|
|
<label class="form-label">Teilnahmeentscheidung</label>
|
|
{{ form.teilnahmeentscheidung }}
|
|
</div>
|
|
<div>
|
|
<label class="form-label">Begründung</label>
|
|
{{ form.entscheidungsbegruendung }}
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
|
|
<div class="flex gap-3">
|
|
<button type="submit" class="btn-primary">Speichern</button>
|
|
{% if ausschreibung %}
|
|
<a href="{% url 'ausschreibungen:detail' ausschreibung.pk %}" class="btn-ghost">Abbrechen</a>
|
|
{% else %}
|
|
<a href="{% url 'ausschreibungen:liste' %}" class="btn-ghost">Abbrechen</a>
|
|
{% endif %}
|
|
</div>
|
|
</form>
|
|
{% endblock %}
|