presseportale/tests/Feature/Billing
Kevin Adametz 80e04e26e0 Downgrades ohne Gutschrift: Tarifwechsel nach unten erst zum Periodenende
QA-Entscheidung 07.07.: Eine Buchung ist nicht rückabwickelbar — es darf
nie eine negative Proration-Rechnung oder ein Stripe-Guthaben entstehen.

- StripeCheckoutService::isDowngrade: sofortiger Wechsel nur, wenn der
  Periodenpreis des Ziel-Tarifs den aktuellen erreicht (Wechsel-Rechnung
  damit garantiert >= 0); sonst Downgrade
- scheduleDowngrade: Stripe Subscription Schedule stellt das Abo zum Ende
  der bezahlten Periode um (proration_behavior none), hebt eine
  vorgemerkte Kündigung auf und spiegelt die Vormerkung lokal
  (neue Spalten scheduled_stripe_price/scheduled_change_at/
  stripe_schedule_id an subscriptions)
- Sofort-Upgrade löst eine bestehende Vormerkung vorher auf (release)
- Webhook customer.subscription.updated räumt die Vormerkung nach
  Vollzug ab
- Buchungs-Modal unterscheidet Upgrade (sofort, Differenz-Rechnung) und
  Downgrade (Vormerkung, keine Zahlung heute); Banner + Hinweis auf der
  Paket-Karte zeigen den vorgemerkten Wechsel mit Datum
- Kontingent-Sperre aus 4b7f6d3 entfernt — ohne Gutschrift gegenstandslos

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 13:38:57 +00:00
..
AdminPaymentsPageTest.php Admin-Zahlungsmodul: Zahlungs-Übersicht + Tarif-Verwaltung mit Stripe-Sync 2026-06-12 13:54:53 +00:00
AdminPlansPageTest.php Paket-Vorteile: dynamische, im Admin pflegbare Vorteilsliste je Tarif 2026-06-18 16:36:09 +00:00
BillingModelsTest.php 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
BookingsPageTest.php Downgrades ohne Gutschrift: Tarifwechsel nach unten erst zum Periodenende 2026-07-07 13:38:57 +00:00
CheckoutFlowTest.php Downgrades ohne Gutschrift: Tarifwechsel nach unten erst zum Periodenende 2026-07-07 13:38:57 +00:00
DepublicationTest.php T12: Depublikations-Checkout mit Tombstone (config-gated) 2026-07-06 09:46:25 +00:00
GrandfatherLegacySubscriptionsTest.php USt-Behandlung: Netto-Preise, VatResolver und Steuer-Ausweis im MAN-Kreis 2026-06-12 10:58:43 +00:00
HasActiveBookingTest.php Fix: Bestandsschutz ohne explizites Vertragsende zaehlte nie als aktiv 2026-07-06 11:40:39 +00:00
InvoiceNumberGeneratorTest.php Optimierung Phase 0: Korrektheit & Security 2026-06-19 08:09:02 +00:00
LegacyBillingAddressImportTest.php Rechnungsadressen der Bestandskunden aus dem Legacy-Archiv uebernehmen 2026-07-06 12:19:50 +00:00
LegacyBundleTest.php Optimierung Phase 0: Korrektheit & Security 2026-06-19 08:09:02 +00:00
ManualInvoiceGenerationTest.php USt-Behandlung: Netto-Preise, VatResolver und Steuer-Ausweis im MAN-Kreis 2026-06-12 10:58:43 +00:00
StripeCustomerHooksTest.php Checkout: Wallet-Daten duerfen Profil-Rechnungsadresse nicht ueberschreiben 2026-07-07 12:33:48 +00:00
StripeWebhookProcessingTest.php Downgrades ohne Gutschrift: Tarifwechsel nach unten erst zum Periodenende 2026-07-07 13:38:57 +00:00
VatIdValidationServiceTest.php User-Panel-Restarbeiten: PM-Guard, Profil-Rework, USt-ID-Prüfung, Buchungspflicht-Adresse 2026-06-12 14:36:18 +00:00
VatResolverTest.php Optimierung 3.5: Kleinere Zentralisierungen (VAT, findByEmail, Waehrung, Provisioning) 2026-06-19 11:14:05 +00:00