Add coupons, newsletter, country-based shipping, sale prices, USP bar
Deploy to Production (witstore.wende.it) / deploy (push) Successful in 8s

- Gutscheincodes: DB-Verwaltung (%, €-Rabatt, Mindestbestellwert, Ablauf),
  Eingabefeld im Checkout, Admin unter Marketing → Gutscheine
- Newsletter: Double-Opt-In per E-Mail, Formular im Footer,
  Admin-Liste mit CSV-Export
- Länderzonen-Versand: DE / DACH / EU / WORLD, Versandkosten nach
  Lieferland dynamisch berechnet, Coupon-Rabatt in Bestellung gespeichert
- Sale-Preise: sale_price auf Produkten, durchgestrichener UVP auf
  Produktkarte, Sonderangebote-Sektion auf Startseite
- USP-Leiste auf Startseite: Versand, Zahlung, Rückgabe, Service

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-21 11:07:14 +02:00
co-authored by Claude Sonnet 4.6
parent 5dad8b9324
commit 092dae6085
27 changed files with 782 additions and 51 deletions
+33 -2
View File
@@ -186,12 +186,43 @@
<h2 class="font-semibold mb-4">Zusammenfassung</h2>
<div class="space-y-2 text-sm mb-4 border-b pb-4">
<div class="flex justify-between"><span>Zwischensumme</span><span>{{ number_format($subtotal, 2, ',', '.') }} €</span></div>
<div class="flex justify-between"><span>Versand</span><span>{{ $shippingCost == 0 ? 'Kostenlos' : number_format($shippingCost, 2, ',', '.') . ' €' }}</span></div>
@if($discount > 0)
<div class="flex justify-between text-green-600">
<span>Gutschein ({{ $couponCode }})</span>
<span>- {{ number_format($discount, 2, ',', '.') }} €</span>
</div>
@endif
<div class="flex justify-between"><span>Versand</span><span id="shipping-display">{{ $shippingCost == 0 ? 'Kostenlos' : number_format($shippingCost, 2, ',', '.') . ' €' }}</span></div>
</div>
<div class="flex justify-between font-bold text-lg">
<span>Gesamt</span><span>{{ number_format($total, 2, ',', '.') }} €</span>
<span>Gesamt</span><span id="total-display">{{ number_format($total, 2, ',', '.') }} €</span>
</div>
<p class="text-xs text-gray-400 mt-2">inkl. MwSt.</p>
{{-- Gutscheincode --}}
<div class="mt-4 border-t pt-4">
@if(session('coupon_error'))
<p class="text-red-600 text-xs mb-2">{{ session('coupon_error') }}</p>
@endif
@if(session('coupon_success'))
<p class="text-green-600 text-xs mb-2">{{ session('coupon_success') }}</p>
@endif
@if($couponCode)
<div class="flex items-center justify-between text-sm mb-2">
<span class="font-mono bg-green-50 text-green-700 px-2 py-0.5 rounded">{{ $couponCode }}</span>
<form method="POST" action="{{ route('checkout.coupon.remove') }}">@csrf
<button class="text-red-500 text-xs hover:underline">Entfernen</button>
</form>
</div>
@else
<form method="POST" action="{{ route('checkout.coupon.apply') }}" class="flex gap-2">
@csrf
<input type="text" name="coupon_code" placeholder="Gutscheincode"
class="flex-1 border rounded px-3 py-1.5 text-sm uppercase" style="text-transform:uppercase">
<button class="bg-gray-700 text-white px-3 py-1.5 rounded text-sm hover:bg-gray-800">OK</button>
</form>
@endif
</div>
</div>
</div>
</div>