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.

Services

Command Beschreibung
services:inherit-domain-servers [--dry-run] Setzt bei Domain-Services den Server des uebergeordneten Services (z.B. Hosting-Paket)

Optionen:

Option Beschreibung
--dry-run Zeigt nur an, welche Domains aktualisiert wuerden (keine Aenderung)

Beispiele:

# Vorschau: welche Domains wuerden einen Server erben
php artisan services:inherit-domain-servers --dry-run

# Server auf Domains uebertragen
php artisan services:inherit-domain-servers

Verarbeitet werden nur Domain-Services (service_type = domain), deren uebergeordneter Service (parent_service_id) einen Server gesetzt hat. Der Parent-Server wird dabei erzwungen und ueberschreibt einen abweichend gesetzten Server. Hat der Parent keinen Server, bleibt die Domain unveraendert. Der Command ist idempotent (bereits korrekte Domains werden uebersprungen).

Dieselbe Zuordnung erfolgt automatisch beim Speichern eines Domain-Services.

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