presseportale/resources/views/emails/billing/grandfathering-expired.blade.php
Kevin Adametz 375f4dffce billing/dev: Vertragsende in der MAN-Abrechnung, Rechnungslauf ohne Tageskappe, Qualitätsgates (Audit Block 5+6, Deploy E)
Block 5 — MAN-Abrechnung

F06 (E6): Ein explizites Legacy-Vertragsende (grandfathered_until) deckelt
jetzt Auswahl und Sperr-Nachprüfung: Beginnt die nächste Periode nach dem
Vertragsende, gibt es keine Rechnung mehr. Neuer täglicher Befehl
billing:expire-grandfathering (04:15, vor dem Rechnungslauf) setzt
abgelaufene Posten auf gekündigt und schickt je Kunde eine Mail
(GrandfatheringExpired). Auf der Dev-Kopie trägt kein Posten ein
Vertragsende; der Fehler war latent.

F16: Nicht abrechenbare Vereinbarungen bekommen einen Sperrvermerk
(billing_hold_reason/-at), sichtbar auf der Admin-Zahlungsseite, und
stehen im Rechnungslauf hinten an. Der Lauf arbeitet den fälligen Bestand
in Seiten ab; --limit deckelt die erstellten Rechnungen (500), nicht die
betrachteten Fälle. Vorher blockierten 50 unvollständige Fälle die 51.
dauerhaft, und der Durchsatz war auf 50 am Tag begrenzt.

Block 6 — Entwicklung

F24: Lint-Workflow prüft mit pint --test statt zu formatieren; keine
Schreibrechte mehr.
F27: composer run dev startet beide Vite-Server (npm run dev:all).
F28: docs/README.md als historischer Stand markiert, toter Link auf das
Hub-Flux-Archiv korrigiert, aktueller Einstieg dev/README.md.
F26: Login-Modal übernimmt den Fokus, hält Tab im Dialog und gibt den
Fokus beim Schließen an den Auslöser zurück – ohne neue Abhängigkeit.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-18 10:41:04 +00:00

28 lines
1.1 KiB
PHP

<x-emails.layout title="Ihr Bestandsschutz ist ausgelaufen" preheader="Ihr Bestandsschutz auf pressekonto ist zum vereinbarten Vertragsende ausgelaufen.">
<p>Guten Tag {{ $user->name }},</p>
<p>
Ihr Bestandsschutz aus dem früheren Vertrag ist zum vereinbarten Ende
@if ($endedOn)
am <strong>{{ $endedOn->format('d.m.Y') }}</strong>
@endif
ausgelaufen. Es wird keine weitere Rechnung mehr gestellt.
</p>
<dl class="meta">
<dt>Bestandsschutz</dt>
<dd>beendet{{ $endedOn ? ' zum '.$endedOn->format('d.m.Y') : '' }}</dd>
</dl>
<p>
Ihre bereits veröffentlichten Pressemitteilungen bleiben unverändert online.
Für neue Veröffentlichungen stehen Ihnen die aktuellen Tarife und der
Einzelversand auf pressekonto zur Verfügung — jederzeit direkt in Ihrem Konto buchbar.
</p>
<x-emails.button :url="$bookingUrl">Tarife ansehen</x-emails.button>
<div class="note">
<p>Bei Fragen erreichen Sie uns über den <a href="{{ config('domains.domain_portal_url') }}/de/hilfe">Hilfe-Bereich auf pressekonto</a>.</p>
</div>
</x-emails.layout>