No description
Neue Spalten user_abos.status_reason / paused_until und
user_abo_orders.error_message. Der Grund wird zentral am Model gepflegt
(saving-Event): Zahlungsfehler, Kuendigung/Deaktivierung mit Akteur aus dem
Formular-Kanal, Loeschen beim Zurueckkehren in den Lauf; die Pause setzt
paused_until und paused_by_*. Cron- und Retry-Zahlung schreiben den Fehlertext
des Anbieters an die Abo-Bestellung.
AboStatusExplainer uebersetzt das in einen Satz ("Pausiert bis ... vom Kunden
am ...", "Zahlung am ... fehlgeschlagen - Grund: ...", "Gekuendigt am ... vom
Berater"), Partial _status_explain in Abo-Detail (CRM, Portal, Admin),
Abo-Uebersicht, Kundenabo-Liste, Team-Kundenabos und Admin-Datatable; dort
neuer Filter "Zustand" (pausiert / Zahlung fehlgeschlagen). Backfill-Kommando
abo:backfill-status-reasons fuer Bestandsdaten, Fallback ueber das
Statusprotokoll und die Pausenfelder.
Sprachdateien de/en/es/fr, Tests in AboStatusExplainTest, Plan-Status.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
||
|---|---|---|
| .devcontainer | ||
| app | ||
| bootstrap | ||
| config | ||
| database | ||
| dev | ||
| docs | ||
| packages | ||
| public | ||
| resources | ||
| routes | ||
| storage | ||
| tests | ||
| .devcontainer.env | ||
| .env.dhl.example | ||
| .env.example | ||
| .gitignore | ||
| .htaccess | ||
| .mcp.json | ||
| .phpunit.result.cache | ||
| .rnd | ||
| _todo.txt | ||
| artisan | ||
| boost.json | ||
| CLAUDE.md | ||
| clean_script_server.sh | ||
| composer.json | ||
| composer.lock | ||
| cron_script_local.sh | ||
| cron_script_server.sh | ||
| database.db | ||
| docker-compose.yml | ||
| mivita.code-workspace | ||
| package.json | ||
| phpunit.xml | ||
| restore_dc_tags_categories.sql | ||
| server.php | ||
| sync_live_to_local.sh | ||
| webpack.mix.js | ||