Zum Inhalt

Artisan Commands

Alle Artisan-Commands werden innerhalb des Docker-Containers ausgefuehrt:

docker compose exec app php artisan <command>

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 open oder sent sein
  • 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 E-Mail 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

# Wartungsmodus aktivieren
php artisan down

# Wartungsmodus deaktivieren
php artisan up

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

Code-Generierung

# Migration erstellen
php artisan make:migration create_example_table

# Model mit Migration erstellen
php artisan make:model MyModel -m

# Job erstellen
php artisan make:job MyJob

# Command erstellen
php artisan make:command MyCommand