Workplan Preise has been implemented

This commit is contained in:
tegwick 2026-05-11 12:23:20 +02:00
parent b99f45c7af
commit 6991b0989e
12 changed files with 878 additions and 11 deletions

View file

@ -0,0 +1,88 @@
{% extends "base.html" %}
{% block title %}Preisauswertung — {{ ausschreibung.titel }}{% endblock %}
{% block content %}
<div class="flex items-center justify-between mb-4">
<h1 class="page-title">Preisauswertung</h1>
<a href="{% url 'ausschreibungen:preise:liste' ausschreibung.pk %}" class="btn-ghost text-xs">← Preise</a>
</div>
<form method="get" class="card mb-4 flex flex-wrap gap-3 items-end">
<div>
<label class="form-label">Leistungstyp</label>
<input type="text" name="leistungstyp" value="{{ leistungstyp }}" list="lt-list" class="form-input">
<datalist id="lt-list">{% for lt in alle_leistungstypen %}<option value="{{ lt }}">{% endfor %}</datalist>
</div>
<div>
<label class="form-label">Gewonnen</label>
<select name="gewonnen" class="form-select">
<option value="">Alle</option>
<option value="ja" {% if filter_gewonnen == 'ja' %}selected{% endif %}>Ja</option>
<option value="nein" {% if filter_gewonnen == 'nein' %}selected{% endif %}>Nein</option>
</select>
</div>
<button type="submit" class="btn-secondary text-xs">Auswerten</button>
</form>
{% if ergebnis %}
<div class="grid grid-cols-3 gap-3 mb-6">
<div class="card text-center">
<p class="text-xs text-slate-500 mb-1">Gewichteter Durchschnitt</p>
<p class="text-2xl font-bold text-blue-700">{{ ergebnis.wert|floatformat:2 }}</p>
</div>
<div class="card text-center">
<p class="text-xs text-slate-500 mb-1">Ungewichteter Durchschnitt</p>
<p class="text-2xl font-bold text-slate-700">{% if ungewichtet %}{{ ungewichtet|floatformat:2 }}{% else %}—{% endif %}</p>
</div>
<div class="card text-center">
<p class="text-xs text-slate-500 mb-1">Messpunkte / Summe Gewichte</p>
<p class="text-2xl font-bold text-slate-700">{{ ergebnis.anzahl }} / {{ ergebnis.summe_gewichte }}</p>
</div>
<div class="card text-center">
<p class="text-xs text-slate-500 mb-1">Minimum</p>
<p class="text-xl font-semibold text-green-700">{{ ergebnis.minimum|floatformat:2 }}</p>
</div>
<div class="card text-center">
<p class="text-xs text-slate-500 mb-1">Maximum</p>
<p class="text-xl font-semibold text-red-700">{{ ergebnis.maximum|floatformat:2 }}</p>
</div>
</div>
{% elif leistungstyp %}
<div class="card text-center py-6 text-sm text-slate-500 mb-6">Keine Daten für "{{ leistungstyp }}".</div>
{% else %}
<div class="card text-center py-6 text-sm text-slate-500 mb-6">Leistungstyp eingeben, um Auswertung zu starten.</div>
{% endif %}
{% if preispunkte %}
<div class="card overflow-hidden">
<p class="text-xs font-medium text-slate-500 uppercase tracking-wide mb-3">Einzelmesspunkte</p>
<table class="w-full text-sm">
<thead>
<tr class="border-b border-slate-200 text-left text-xs text-slate-500">
<th class="pb-2 pr-3">Ausschreibung</th>
<th class="pb-2 pr-3">Leistung</th>
<th class="pb-2 pr-3 text-right">Einzelpreis</th>
<th class="pb-2 pr-3 text-center">Gewicht</th>
<th class="pb-2 text-center">Gewonnen</th>
</tr>
</thead>
<tbody class="divide-y divide-slate-100">
{% for pp in preispunkte %}
<tr class="hover:bg-slate-50">
<td class="py-2 pr-3 text-xs text-slate-600">{{ pp.ausschreibung.titel|truncatechars:30 }}</td>
<td class="py-2 pr-3 text-xs">{{ pp.konkrete_leistung }}</td>
<td class="py-2 pr-3 text-right text-xs">{{ pp.einzelpreis|floatformat:2 }} {{ pp.waehrung }}</td>
<td class="py-2 pr-3 text-center text-xs">{{ pp.vergleichsgewicht }}</td>
<td class="py-2 text-center text-xs">
{% if pp.ausschreibung_gewonnen == True %}<span class="text-green-600"></span>
{% elif pp.ausschreibung_gewonnen == False %}<span class="text-red-500"></span>
{% else %}<span class="text-slate-400">?</span>{% endif %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% endif %}
{% endblock %}

View file

@ -0,0 +1,71 @@
{% extends "base.html" %}
{% load vergabe_tags %}
{% block title %}{{ preispunkt.konkrete_leistung }}{% endblock %}
{% block content %}
<div class="flex items-center justify-between mb-4">
<h1 class="page-title">{{ preispunkt.konkrete_leistung }}</h1>
<a href="{% url 'ausschreibungen:preise:liste' ausschreibung.pk %}" class="btn-ghost text-xs">← Übersicht</a>
</div>
<div class="grid grid-cols-3 gap-4">
<div class="col-span-2 space-y-4">
<div class="card space-y-3">
<p class="text-sm text-slate-500 font-medium">{{ preispunkt.leistungstyp }}</p>
<div class="grid grid-cols-3 gap-3 text-sm">
<div>
<p class="text-xs text-slate-400">Einzelpreis</p>
<p class="font-semibold">{% if preispunkt.einzelpreis %}{{ preispunkt.einzelpreis|floatformat:2 }} {{ preispunkt.waehrung }}{% else %}—{% endif %}</p>
</div>
<div>
<p class="text-xs text-slate-400">Gesamtpreis</p>
<p class="font-semibold">{% if preispunkt.gesamtpreis %}{{ preispunkt.gesamtpreis|floatformat:2 }} {{ preispunkt.waehrung }}{% else %}—{% endif %}</p>
</div>
<div>
<p class="text-xs text-slate-400">Menge</p>
<p>{% if preispunkt.menge %}{{ preispunkt.menge|floatformat:2 }} {{ preispunkt.mengeneinheit }}{% else %}—{% endif %}</p>
</div>
</div>
{% if preispunkt.kommentar %}
<p class="text-sm text-slate-600 whitespace-pre-wrap">{{ preispunkt.kommentar }}</p>
{% endif %}
</div>
{% if freigaben %}
<div class="card">
<p class="text-xs font-medium text-slate-500 uppercase tracking-wide mb-3">Freigaben</p>
<ul class="space-y-2">
{% for fg in freigaben %}
<li class="text-sm">
{% status_badge fg.status fg.get_status_display %}
<span class="ml-2 text-slate-500">{{ fg.freigebender }}</span>
{% if fg.kommentar %}<span class="ml-2 text-slate-400 text-xs">— {{ fg.kommentar }}</span>{% endif %}
</li>
{% endfor %}
</ul>
</div>
{% endif %}
</div>
<div class="space-y-4">
<div class="card space-y-2">
<p class="text-xs font-medium text-slate-500 uppercase tracking-wide">Details</p>
<p class="text-xs text-slate-600">Gewicht: <span class="font-medium">{{ preispunkt.vergleichsgewicht }}</span></p>
{% if preispunkt.preisstand %}<p class="text-xs text-slate-600">Preisstand: {{ preispunkt.preisstand|date:"d.m.Y" }}</p>{% endif %}
{% if preispunkt.los %}<p class="text-xs text-slate-600">Los: {{ preispunkt.los }}</p>{% endif %}
{% if preispunkt.subunternehmer %}<p class="text-xs text-slate-600">Subunternehmer: {{ preispunkt.subunternehmer }}</p>{% endif %}
{% if preispunkt.laufzeitbezug %}<p class="text-xs text-slate-600">Laufzeit: {{ preispunkt.laufzeitbezug }}</p>{% endif %}
{% if preispunkt.gewichtungsbegruendung %}<p class="text-xs text-slate-600">Begründung: {{ preispunkt.gewichtungsbegruendung }}</p>{% endif %}
</div>
<div class="card space-y-2">
<p class="text-xs font-medium text-slate-500 uppercase tracking-wide">Aktionen</p>
<a href="{% url 'ausschreibungen:preise:bearbeiten' ausschreibung.pk preispunkt.pk %}" class="btn-secondary text-xs w-full block text-center">Bearbeiten</a>
<form method="post" action="{% url 'ausschreibungen:preise:loeschen' ausschreibung.pk preispunkt.pk %}">
{% csrf_token %}
<button type="submit" class="btn-ghost text-xs w-full text-red-600 mt-1" onclick="return confirm('Preispunkt löschen?')">Löschen</button>
</form>
</div>
</div>
</div>
{% endblock %}

View file

@ -0,0 +1,124 @@
{% extends "base.html" %}
{% block title %}{{ titel }}{% endblock %}
{% block content %}
<div class="max-w-2xl mx-auto">
<div class="flex items-center justify-between mb-4">
<h1 class="page-title">{{ titel }}</h1>
<a href="{% url 'ausschreibungen:preise:liste' ausschreibung.pk %}" class="btn-ghost text-xs">← Zurück</a>
</div>
<form method="post" x-data="{ subunternehmer: {{ form.subunternehmeranteil.value|yesno:'true,false' }} }" class="space-y-4">
{% csrf_token %}
<datalist id="leistungstypen-list">
{% for lt in leistungstypen %}<option value="{{ lt }}">{% endfor %}
</datalist>
<div class="card space-y-4">
<p class="text-xs font-medium text-slate-500 uppercase tracking-wide">Leistung</p>
<div>
<label class="form-label">Leistungstyp *</label>
{{ form.leistungstyp }}
{% if form.leistungstyp.errors %}<p class="text-xs text-red-600 mt-1">{{ form.leistungstyp.errors.0 }}</p>{% endif %}
</div>
<div>
<label class="form-label">Konkrete Leistung *</label>
{{ form.konkrete_leistung }}
{% if form.konkrete_leistung.errors %}<p class="text-xs text-red-600 mt-1">{{ form.konkrete_leistung.errors.0 }}</p>{% endif %}
</div>
<div class="grid grid-cols-2 gap-4">
<div>
<label class="form-label">Menge</label>
{{ form.menge }}
</div>
<div>
<label class="form-label">Einheit</label>
{{ form.mengeneinheit }}
</div>
</div>
<div class="grid grid-cols-2 gap-4">
<div>
<label class="form-label">Wiederkehrend</label>
{{ form.wiederkehrend }}
</div>
<div>
<label class="form-label">Laufzeitbezug</label>
{{ form.laufzeitbezug }}
</div>
</div>
</div>
<div class="card space-y-4">
<p class="text-xs font-medium text-slate-500 uppercase tracking-wide">Preis</p>
<div class="grid grid-cols-3 gap-4">
<div>
<label class="form-label">Einzelpreis</label>
<input name="einzelpreis" id="id_einzelpreis" class="form-input"
type="number" step="0.01"
value="{{ form.einzelpreis.value|default:'' }}"
x-model="einzelpreis"
@input="gesamtpreis = (einzelpreis && menge) ? (parseFloat(einzelpreis) * parseFloat(menge)).toFixed(2) : gesamtpreis">
{% if form.einzelpreis.errors %}<p class="text-xs text-red-600 mt-1">{{ form.einzelpreis.errors.0 }}</p>{% endif %}
</div>
<div>
<label class="form-label">Gesamtpreis</label>
<input name="gesamtpreis" id="id_gesamtpreis" class="form-input"
type="number" step="0.01"
value="{{ form.gesamtpreis.value|default:'' }}"
x-model="gesamtpreis">
</div>
<div>
<label class="form-label">Währung</label>
{{ form.waehrung }}
</div>
</div>
<div>
<label class="form-label">Preisstand</label>
{{ form.preisstand }}
</div>
</div>
<div class="card space-y-4">
<p class="text-xs font-medium text-slate-500 uppercase tracking-wide">Vergleichsgewicht</p>
<div>
<label class="form-label">Gewicht</label>
{{ form.vergleichsgewicht }}
{% if form.vergleichsgewicht.errors %}<p class="text-xs text-red-600 mt-1">{{ form.vergleichsgewicht.errors.0 }}</p>{% endif %}
<p class="text-xs text-slate-400 mt-1">0,0 = nicht gewertet · 1,0 = Standard · 2,0 = doppelt gewichtet</p>
</div>
<div>
<label class="form-label">Begründung</label>
{{ form.gewichtungsbegruendung }}
</div>
</div>
<div class="card space-y-4">
<p class="text-xs font-medium text-slate-500 uppercase tracking-wide">Zuordnung</p>
<div>
<label class="form-label">Los</label>
{{ form.los }}
</div>
<div>
<label class="form-label flex items-center gap-2">
<span x-ref="subLabel" @click="subunternehmer = !subunternehmer">Subunternehmeranteil</span>
{{ form.subunternehmeranteil }}
</label>
</div>
<div x-show="subunternehmer">
<label class="form-label">Subunternehmer</label>
{{ form.subunternehmer }}
</div>
</div>
<div class="card">
<label class="form-label">Kommentar</label>
{{ form.kommentar }}
</div>
<div class="flex gap-3">
<button type="submit" class="btn-primary">Speichern</button>
<a href="{% url 'ausschreibungen:preise:liste' ausschreibung.pk %}" class="btn-ghost">Abbrechen</a>
</div>
</form>
</div>
{% endblock %}

View file

@ -0,0 +1,121 @@
{% extends "base.html" %}
{% block title %}Globaler Preisvergleich{% endblock %}
{% block content %}
<div class="flex items-center justify-between mb-4">
<h1 class="page-title">Globaler Preisvergleich</h1>
</div>
<form method="get"
hx-get="{% url 'preisvergleich' %}"
hx-target="#ergebnis-bereich"
hx-swap="innerHTML"
class="card mb-4 flex flex-wrap gap-3 items-end">
<div>
<label class="form-label">Leistungstyp</label>
<input type="text" name="leistungstyp" value="{{ leistungstyp }}" list="lt-list" class="form-input">
<datalist id="lt-list">{% for lt in alle_leistungstypen %}<option value="{{ lt }}">{% endfor %}</datalist>
</div>
<div>
<label class="form-label">Gewonnen</label>
<select name="gewonnen" class="form-select">
<option value="">Alle</option>
<option value="ja" {% if filter_gewonnen == 'ja' %}selected{% endif %}>Ja</option>
<option value="nein" {% if filter_gewonnen == 'nein' %}selected{% endif %}>Nein</option>
</select>
</div>
<div>
<label class="form-label">Von</label>
<input type="date" name="von" value="{{ von }}" class="form-input">
</div>
<div>
<label class="form-label">Bis</label>
<input type="date" name="bis" value="{{ bis }}" class="form-input">
</div>
<button type="submit" class="btn-secondary text-xs">Auswerten</button>
</form>
<div id="ergebnis-bereich">
{% if ergebnis %}
<div class="grid grid-cols-3 gap-3 mb-6">
<div class="card text-center">
<p class="text-xs text-slate-500 mb-1">Gewichteter Durchschnitt</p>
<p class="text-2xl font-bold text-blue-700">{{ ergebnis.wert|floatformat:2 }}</p>
</div>
<div class="card text-center">
<p class="text-xs text-slate-500 mb-1">Ungewichteter Durchschnitt</p>
<p class="text-2xl font-bold text-slate-700">{% if ungewichtet %}{{ ungewichtet|floatformat:2 }}{% else %}—{% endif %}</p>
</div>
<div class="card text-center">
<p class="text-xs text-slate-500 mb-1">Messpunkte</p>
<p class="text-2xl font-bold text-slate-700">{{ ergebnis.anzahl }}</p>
</div>
<div class="card text-center">
<p class="text-xs text-slate-500 mb-1">Minimum</p>
<p class="text-xl font-semibold text-green-700">{{ ergebnis.minimum|floatformat:2 }}</p>
</div>
<div class="card text-center">
<p class="text-xs text-slate-500 mb-1">Maximum</p>
<p class="text-xl font-semibold text-red-700">{{ ergebnis.maximum|floatformat:2 }}</p>
</div>
</div>
{% if ergebnis_gewonnen or ergebnis_verloren %}
<div class="grid grid-cols-2 gap-3 mb-6">
{% if ergebnis_gewonnen %}
<div class="card">
<p class="text-xs font-medium text-green-700 uppercase tracking-wide mb-2">Ø bei Gewinn</p>
<p class="text-xl font-bold text-green-700">{{ ergebnis_gewonnen.wert|floatformat:2 }}</p>
<p class="text-xs text-slate-500 mt-1">{{ ergebnis_gewonnen.anzahl }} Messpunkte</p>
</div>
{% endif %}
{% if ergebnis_verloren %}
<div class="card">
<p class="text-xs font-medium text-red-600 uppercase tracking-wide mb-2">Ø bei Verlust</p>
<p class="text-xl font-bold text-red-600">{{ ergebnis_verloren.wert|floatformat:2 }}</p>
<p class="text-xs text-slate-500 mt-1">{{ ergebnis_verloren.anzahl }} Messpunkte</p>
</div>
{% endif %}
</div>
{% endif %}
{% elif leistungstyp %}
<div class="card text-center py-6 text-sm text-slate-500 mb-6">Keine Daten für "{{ leistungstyp }}".</div>
{% else %}
<div class="card text-center py-6 text-sm text-slate-500 mb-6">Leistungstyp eingeben, um Vergleich zu starten.</div>
{% endif %}
{% if preispunkte %}
<div class="card overflow-hidden">
<p class="text-xs font-medium text-slate-500 uppercase tracking-wide mb-3">Einzelmesspunkte ({{ preispunkte.count }})</p>
<table class="w-full text-sm">
<thead>
<tr class="border-b border-slate-200 text-left text-xs text-slate-500">
<th class="pb-2 pr-3">Ausschreibung</th>
<th class="pb-2 pr-3">Leistung</th>
<th class="pb-2 pr-3 text-right">Einzelpreis</th>
<th class="pb-2 pr-3 text-center">Gewicht</th>
<th class="pb-2 text-center">Gew.</th>
</tr>
</thead>
<tbody class="divide-y divide-slate-100">
{% for pp in preispunkte %}
<tr class="hover:bg-slate-50">
<td class="py-2 pr-3 text-xs text-slate-600">{{ pp.ausschreibung.titel|truncatechars:30 }}</td>
<td class="py-2 pr-3 text-xs">{{ pp.konkrete_leistung }}</td>
<td class="py-2 pr-3 text-right text-xs">{{ pp.einzelpreis|floatformat:2 }} {{ pp.waehrung }}</td>
<td class="py-2 pr-3 text-center text-xs">{{ pp.vergleichsgewicht }}</td>
<td class="py-2 text-center text-xs">
{% if pp.ausschreibung_gewonnen == True %}<span class="text-green-600"></span>
{% elif pp.ausschreibung_gewonnen == False %}<span class="text-red-500"></span>
{% else %}<span class="text-slate-400">?</span>{% endif %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% endif %}
</div>
{% endblock %}

View file

@ -0,0 +1,109 @@
{% extends "base.html" %}
{% block title %}Preise — {{ ausschreibung.titel }}{% endblock %}
{% block content %}
<div class="flex items-center justify-between mb-4">
<h1 class="page-title">Preise</h1>
<div class="flex gap-2">
<a href="{% url 'ausschreibungen:preise:auswertung' ausschreibung.pk %}" class="btn-secondary text-xs">Auswertung</a>
<a href="{% url 'ausschreibungen:preise:neu' ausschreibung.pk %}" class="btn-primary text-xs">+ Preispunkt</a>
</div>
</div>
<form method="get" class="card mb-4 flex flex-wrap gap-3 items-end">
<div>
<label class="form-label">Leistungstyp</label>
<input type="text" name="leistungstyp" value="{{ filter.leistungstyp }}" list="lt-list" class="form-input">
<datalist id="lt-list">{% for lt in leistungstypen %}<option value="{{ lt }}">{% endfor %}</datalist>
</div>
<div>
<label class="form-label">Los</label>
<select name="los" class="form-select">
<option value="">Alle</option>
{% for los in lose %}<option value="{{ los.pk }}" {% if filter.los == los.pk|stringformat:"s" %}selected{% endif %}>{{ los.bezeichnung }}</option>{% endfor %}
</select>
</div>
<div>
<label class="form-label">Subunternehmer</label>
<select name="subunternehmer" class="form-select">
<option value="">Alle</option>
<option value="ja" {% if filter.subunternehmer == 'ja' %}selected{% endif %}>Ja</option>
<option value="nein" {% if filter.subunternehmer == 'nein' %}selected{% endif %}>Nein</option>
</select>
</div>
<button type="submit" class="btn-secondary text-xs">Filtern</button>
{% if filter.leistungstyp or filter.los or filter.subunternehmer %}
<a href="{% url 'ausschreibungen:preise:liste' ausschreibung.pk %}" class="btn-ghost text-xs">Zurücksetzen</a>
{% endif %}
</form>
{% if preispunkte %}
<div class="card overflow-hidden">
<table class="w-full text-sm">
<thead>
<tr class="border-b border-slate-200 text-left text-xs text-slate-500">
<th class="pb-2 pr-3">Leistungstyp</th>
<th class="pb-2 pr-3">Konkrete Leistung</th>
<th class="pb-2 pr-3 text-right">Menge/Einh.</th>
<th class="pb-2 pr-3 text-right">Einzelpreis</th>
<th class="pb-2 pr-3 text-right">Gesamtpreis</th>
<th class="pb-2 pr-3 text-center">Gewicht</th>
<th class="pb-2">Los</th>
<th class="pb-2"></th>
</tr>
</thead>
<tbody class="divide-y divide-slate-100">
{% for pp in preispunkte %}
<tr class="hover:bg-slate-50">
<td class="py-2 pr-3 text-xs text-slate-600">{{ pp.leistungstyp }}</td>
<td class="py-2 pr-3">
<a href="{% url 'ausschreibungen:preise:detail' ausschreibung.pk pp.pk %}" class="text-blue-600 hover:underline">{{ pp.konkrete_leistung }}</a>
</td>
<td class="py-2 pr-3 text-right text-xs text-slate-600">
{% if pp.menge %}{{ pp.menge|floatformat:2 }} {{ pp.mengeneinheit }}{% else %}—{% endif %}
</td>
<td class="py-2 pr-3 text-right text-xs">
{% if pp.einzelpreis %}
<span class="{% if pp.vergleichsgewicht == 0 %}line-through text-slate-400{% elif pp.vergleichsgewicht > 1 %}font-semibold{% else %}text-slate-700{% endif %}">
{{ pp.einzelpreis|floatformat:2 }} {{ pp.waehrung }}
</span>
{% else %}—{% endif %}
</td>
<td class="py-2 pr-3 text-right text-xs">
{% if pp.gesamtpreis %}
<span class="{% if pp.vergleichsgewicht == 0 %}line-through text-slate-400{% elif pp.vergleichsgewicht > 1 %}font-semibold{% else %}text-slate-700{% endif %}">
{{ pp.gesamtpreis|floatformat:2 }} {{ pp.waehrung }}
</span>
{% else %}—{% endif %}
</td>
<td class="py-2 pr-3 text-center text-xs">
<span class="{% if pp.vergleichsgewicht == 0 %}text-slate-400{% elif pp.vergleichsgewicht > 1 %}font-semibold text-blue-700{% else %}text-slate-600{% endif %}">
{{ pp.vergleichsgewicht }}
</span>
</td>
<td class="py-2 text-xs text-slate-500">{{ pp.los.bezeichnung|default:"—" }}</td>
<td class="py-2 text-right">
<a href="{% url 'ausschreibungen:preise:bearbeiten' ausschreibung.pk pp.pk %}" class="text-xs text-slate-400 hover:text-blue-600">Bearb.</a>
</td>
</tr>
{% endfor %}
</tbody>
<tfoot>
<tr class="border-t border-slate-200">
<td colspan="4" class="pt-2 text-xs text-slate-500 font-medium">Summe Gesamtpreise (ungewichtet)</td>
<td class="pt-2 text-right text-xs font-semibold text-slate-700">
{% if summe_gesamt %}{{ summe_gesamt|floatformat:2 }} EUR{% else %}—{% endif %}
</td>
<td colspan="3"></td>
</tr>
</tfoot>
</table>
</div>
{% else %}
<div class="card text-center py-10 text-sm text-slate-500">
Noch keine Preispunkte erfasst.
<a href="{% url 'ausschreibungen:preise:neu' ausschreibung.pk %}" class="text-blue-600 hover:underline ml-1">+ Ersten Preispunkt anlegen</a>
</div>
{% endif %}
{% endblock %}

View file

@ -0,0 +1,16 @@
{% extends "base.html" %}
{% block title %}Preispunkt löschen{% endblock %}
{% block content %}
<div class="max-w-md mx-auto">
<div class="card text-center space-y-4">
<p class="text-slate-700">Preispunkt <strong>{{ preispunkt.konkrete_leistung }}</strong> wirklich löschen?</p>
<div class="flex gap-3 justify-center">
<form method="post">
{% csrf_token %}
<button type="submit" class="btn-primary bg-red-600 hover:bg-red-700">Löschen</button>
</form>
<a href="{% url 'ausschreibungen:preise:detail' ausschreibung.pk preispunkt.pk %}" class="btn-ghost">Abbrechen</a>
</div>
</div>
</div>
{% endblock %}