vinindkoeb/app/templates/pickup_list.html
carsten b6b14aefac Opgave 10: fortløbende ordrenummer pr. runde + afhentningsliste
Order.order_number tildeles atomisk i POST /public/orders via en
SELECT ... FOR UPDATE-lås på rundens række + MAX+1, så samtidige
bestillinger lige efter en runde åbner ikke kan kollidere. Nummeret
starter på 1 for hver runde (UNIQUE(purchase_round_id, order_number))
og er nu tilgængeligt som {{order_number}} i mail-skabeloner.

GET /purchase-rounds/{id}/pickup-list genskaber den gamle systems
afhentningsliste (delt af brugeren som reference) mod den nye
datamodel: én printside pr. ordre, sorteret efter order_number (vist
stort i øverste højre hjørne), kontaktinfo, flaske-/kasseantal
(pænt afrundet — originalen viste et urundet float), og
vinlinjer grupperet pr. kategori.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-29 00:21:45 +02:00

43 lines
1.7 KiB
HTML

<!DOCTYPE html>
<html lang="da">
<head>
<meta charset="utf-8">
<title>Afhentningsliste — {{ route_name }} — {{ round_name }}</title>
<style>
body { font-family: sans-serif; }
.meta-header { font-size: 0.8rem; color: #666; margin-bottom: 1cm; }
.order-page { page-break-before: always; position: relative; padding-top: 0.5cm; }
.order-page:first-of-type { page-break-before: avoid; }
.order-number { position: absolute; top: 0; right: 0; font-size: 2.5rem; font-weight: bold; }
h1 { margin-top: 0; margin-right: 3cm; }
table { width: 100%; margin-top: 0.5cm; border-collapse: collapse; }
td { padding: 2px 6px; }
.category-row td { font-weight: bold; padding-top: 10px; }
@media print {
.order-page { page-break-before: always; }
.order-page:first-of-type { page-break-before: avoid; }
}
</style>
</head>
<body>
<p class="meta-header">{{ route_name }} — {{ round_name }}</p>
{% for order in orders %}
<div class="order-page">
<div class="order-number">#{{ order.order_number }}</div>
<h1>{{ order.participant_name }}</h1>
<table>
<tr><td>Telefon:</td><td>{{ order.participant_phone or "" }}</td><td>email:</td><td>{{ order.participant_email }}</td></tr>
<tr><td>Flasker:</td><td>{{ order.total_bottles }}</td><td>Kasser:</td><td>{{ order.total_cases }}</td></tr>
</table>
{% for category_name, lines in order.categories %}
<table>
<tr class="category-row"><td colspan="2">{{ category_name }}</td></tr>
{% for line in lines %}
<tr><td>{{ line.quantity }}</td><td>{{ line.wine_name }}</td></tr>
{% endfor %}
</table>
{% endfor %}
</div>
{% endfor %}
</body>
</html>