Artisan Commands¶
Alle Artisan-Commands werden innerhalb des Docker-Containers ausgefuehrt:
App-spezifische Commands¶
Eigene Commands, die fuer HostAdmin entwickelt wurden.
Kunden¶
| Command | Beschreibung |
|---|---|
customer:link-stripe {customer_id} {stripe_id} |
Verknuepft einen bestehenden Kunden mit einer Stripe Customer ID |
customers:fix-country [--dry-run] [--sync] |
Setzt Land auf DE fuer Kunden ohne Laenderangabe |
Stripe - Import¶
| Command | Beschreibung |
|---|---|
stripe:import-customers [--dry-run] [--update-existing] |
Importiert Kunden aus Stripe, die lokal noch nicht existieren |
stripe:import-subscriptions [--dry-run] [--update-existing] |
Importiert Subscriptions aus Stripe |
stripe:import-subscription-items [--subscription=] [--dry-run] [--create-services] |
Importiert fehlende Subscription-Items aus Stripe |
stripe:import-invoices [--from=] [--to=] [--status=] [--dry-run] [--download-pdfs] |
Importiert Rechnungen aus Stripe (filterbar nach Datum und Status) |
Stripe - Sync¶
| Command | Beschreibung |
|---|---|
stripe:sync-customers [--force] [--id=*] [--no-search] |
Synchronisiert lokale Kunden zu Stripe |
stripe:sync-products [--id=*] [--force] |
Synchronisiert Service-Definitionen als Stripe Products/Prices |
stripe:sync-invoice-status [--invoice=] [--limit=] [--queue] |
Synchronisiert Rechnungsstatus von Stripe fuer offene Rechnungen |
stripe:update-invoice-numbers [--dry-run] |
Aktualisiert lokale Rechnungsnummern anhand der Stripe-Nummern |
subscriptions:update-descriptions [--dry-run] [--id=*] |
Aktualisiert Subscription-Beschreibungen in Stripe |
Daten-Export¶
| Command | Beschreibung |
|---|---|
export:data {model} [--format=json] [--year=] |
Exportiert Model-Daten als JSON Lines oder XLSX auf S3 (export/) |
Verfuegbare Models: customer, contact, customer-service, invoice, payment, server, service-definition
Optionen:
| Option | Beschreibung | Standard |
|---|---|---|
--format=json |
Exportformat: json (JSON Lines) oder xlsx (Excel) |
json |
--year= |
Filtert nach Jahr (nur fuer invoice) |
alle |
Beispiele:
# Alle Kunden als JSON Lines exportieren
php artisan export:data customer
# Rechnungen 2025 als Excel exportieren
php artisan export:data invoice --format=xlsx --year=2025
# Service-Definitionen als Excel exportieren
php artisan export:data service-definition --format=xlsx
# Alle Rechnungen (alle Jahre) als JSON Lines
php artisan export:data invoice
Dateiname-Format: YYYYMMDD_HHMMSS_model.jsonl bzw. .xlsx
Ablage auf S3: export/
Der Export ist auch ueber die UI verfuegbar unter Admin > System > Tools > Export.
Rechnungen¶
| Command | Beschreibung |
|---|---|
invoice:sync-numbers |
Gleicht die Rechnungsnummer-Einstellung mit der hoechsten vorhandenen Nummer ab |
Mahnungen¶
| Command | Beschreibung |
|---|---|
reminders:send [--dry-run] [--invoice=] [--level=] |
Versendet Mahnungen fuer ueberfaellige Rechnungen |
Optionen:
| Option | Beschreibung |
|---|---|
--dry-run |
Zeigt nur an, welche Mahnungen gesendet wuerden (kein Versand) |
--invoice= |
Verarbeitet nur eine bestimmte Rechnungs-ID |
--level= |
Filtert auf eine bestimmte Mahnstufe (1-5) |
Beispiele:
# Alle faelligen Mahnungen anzeigen (Testlauf)
php artisan reminders:send --dry-run
# Alle faelligen Mahnungen versenden
php artisan reminders:send
# Nur eine bestimmte Rechnung mahnen
php artisan reminders:send --invoice=5434
# Nur 1. Mahnungen versenden
php artisan reminders:send --level=1
# Kombiniert: Testlauf fuer eine Rechnung
php artisan reminders:send --invoice=5434 --dry-run
Die Validierung entspricht der UI-Logik (Seite "Offene Rechnungen"):
- Rechnungsstatus muss
openodersentsein - Faelligkeitsdatum muss ueberschritten sein
- Erste Mahnung: mindestens X Tage nach Faelligkeit (Einstellung
reminder_1_days, Standard: 7) - Folge-Mahnungen: mindestens X Tage nach letzter Mahnung (Einstellung
reminder_subsequent_days, Standard: 14) - Maximale Anzahl Mahnungen nicht ueberschritten (Einstellung
reminder_max_count, Standard: 5) - Kunde muss eine E-Mail-Adresse haben
- E-Mail-Template fuer die jeweilige Stufe muss vorhanden und aktiv sein
E-Mail¶
| Command | Beschreibung |
|---|---|
emails:process-pending |
Verarbeitet ausstehende E-Mails und uebergibt sie an die Queue |
email-template:seed [key] |
Seeded ein bestimmtes E-Mail-Template (ohne Key werden alle verfuegbaren aufgelistet) |
Housekeeping¶
| Command | Beschreibung |
|---|---|
housekeeping:run [--dry-run] |
Fuehrt alle aktiven Housekeeping-Jobs aus. Mit --dry-run wird nur angezeigt, was geloescht wuerde |
Housekeeping-Jobs (konfigurierbar unter Einstellungen):
| Job | Einstellungen-Tab | Beschreibung |
|---|---|---|
| Exports bereinigen | System | Loescht alte Export-Dateien vom S3-Bucket (export/) nach konfigurierbarer Anzahl Tage |
| Rechnungen bereinigen | Rechnungen | Loescht Rechnungen (DB + PDF/XML auf S3) aelter als X Jahre (Minimum: 10 Jahre) |
| Zahlungen bereinigen | Zahlungen | Loescht Zahlungen aelter als X Jahre (nur wenn zugehoerige Rechnung bereits geloescht, Minimum: 10 Jahre) |
| E-Mails bereinigen | Loescht E-Mails aelter als X Tage (E-Mails mit Status "error" bleiben erhalten) | |
| Beendete Services | System | Soft-Delete von Services mit Status "Beendet" nach konfigurierbarer Frist. Child-Services nur wenn ebenfalls beendet; Parent-Services mit aktiven Children werden uebersprungen |
System¶
| Command | Beschreibung |
|---|---|
app:version [--full] |
Zeigt die Anwendungsversion an (--full fuer Details wie Build-Datum, VCS Ref, Environment) |
Geplante Ausfuehrung (Scheduler)¶
Diese Commands werden automatisch vom Scheduler-Container ausgefuehrt:
| Command | Zeitplan |
|---|---|
stripe:import-customers |
Taeglich 03:00 |
stripe:import-subscriptions |
Taeglich 03:10 |
stripe:import-subscription-items |
Taeglich 03:20 |
stripe:import-invoices |
Taeglich 03:30 |
stripe:sync-invoice-status |
Taeglich 03:40 |
housekeeping:run |
Konfigurierbar (Standard: Taeglich 04:00) |
Laravel Standard-Commands¶
Die wichtigsten Laravel-eigenen Commands fuer den taeglichen Betrieb.
Migrations & Datenbank¶
# Migrations ausfuehren
php artisan migrate
# Migrations-Status anzeigen
php artisan migrate:status
# Letzte Migration zurueckrollen
php artisan migrate:rollback
# Datenbank seeden
php artisan db:seed
php artisan db:seed --class=SomeSeeder
Cache & Konfiguration¶
# Alle Caches leeren
php artisan optimize:clear
# Konfiguration cachen (Produktion)
php artisan config:cache
# Konfiguration-Cache leeren
php artisan config:clear
# Route-Cache leeren
php artisan route:clear
# View-Cache leeren
php artisan view:clear
# Application-Cache leeren
php artisan cache:clear
Queue & Jobs¶
# Queue-Worker starten (laeuft im Queue-Container)
php artisan queue:work
# Queue-Worker mit Optionen
php artisan queue:work --tries=3 --timeout=90
# Fehlgeschlagene Jobs anzeigen
php artisan queue:failed
# Fehlgeschlagenen Job wiederholen
php artisan queue:retry {id}
php artisan queue:retry all
# Fehlgeschlagene Jobs loeschen
php artisan queue:flush
Scheduler¶
# Geplante Tasks einmalig ausfuehren (laeuft im Scheduler-Container)
php artisan schedule:run
# Geplante Tasks auflisten
php artisan schedule:list
Debugging & Entwicklung¶
# Interaktive REPL (Tinker)
php artisan tinker
# Routen auflisten
php artisan route:list
# Echtzeit-Log (Pail)
php artisan pail
Wartung¶
Filament¶
# Filament-Resource erstellen (Admin)
php artisan make:filament-resource ModelName --generate --panel=admin
# Filament-Resource erstellen (Panel)
php artisan make:filament-resource ModelName --view --panel=panel
# Filament-Assets publishen
php artisan filament:assets