5.8 KiB
HOTFIX: Return-Statement aktivieren - 28.01.2026
🚨 KRITISCH: Auf Live-Server ausführen!
Problem
Der BusinessStoreOptimized Command läuft jeden Tag statt nur am 1. des Monats:
[2026-01-08 03:00:02] NOT RUN Command BusinessStoreOptimized is not present Day: 8
[2026-01-08 03:00:02] RUN Command BusinessStoreOptimized Business Structure Storage ← LÄUFT TROTZDEM!
Ursache: return 0; ist in Zeile 84 auskommentiert
✅ Sofort-Fix
Schritt 1: Code auf Live-Server aktualisieren
Via Git (empfohlen):
# SSH auf Live-Server
ssh ploi@your-server-ip
# Zum Projekt wechseln
cd /home/ploi/mivita.care
# Aktuellen Branch prüfen
git status
git branch
# Code pullen
git pull origin main
# Optional: Nur die spezifische Datei prüfen
git diff HEAD~1 HEAD app/Console/Commands/BusinessStoreOptimized.php
Manuelle Änderung (falls Git nicht möglich):
# Backup erstellen
cp app/Console/Commands/BusinessStoreOptimized.php app/Console/Commands/BusinessStoreOptimized.php.backup
# Datei bearbeiten
nano app/Console/Commands/BusinessStoreOptimized.php
Zeile 84 ändern von:
// return 0;
Zu:
return 0;
Speichern: Ctrl+O, Enter, Ctrl+X
Schritt 2: Validierung
# Prüfe ob Änderung korrekt
grep -n "return 0;" app/Console/Commands/BusinessStoreOptimized.php | grep -A 2 -B 2 "84"
# Sollte zeigen:
# 84: return 0;
Schritt 3: Test (WICHTIG!)
Test mit falschem Tag (heute ist 28. Januar):
# Command sollte NICHT laufen
php8.4 artisan business:store-optimized 0 0
# Erwartete Ausgabe:
# "NOT RUN Command BusinessStoreOptimized is not present Day: 28"
# Command sollte SOFORT beenden (keine weiteren Logs)
Logs prüfen:
# Logs live anzeigen
tail -f storage/logs/laravel.log
# Oder nur BusinessStoreOptimized
tail -f storage/logs/laravel.log | grep BusinessStoreOptimized
# Erwartung am 28. Januar:
# [2026-01-28 XX:XX:XX] NOT RUN Command BusinessStoreOptimized is not present Day: 28
# (keine weiteren Logs wie "Business Structure Storage")
Schritt 4: Cache leeren (falls nötig)
php8.4 artisan config:clear
php8.4 artisan cache:clear
✅ Validierung am 1. Februar 2026
Am 1. Februar um 03:05 Uhr prüfen:
# Logs prüfen
tail -100 storage/logs/laravel.log | grep BusinessStoreOptimized
# Erwartete Ausgabe:
# [2026-02-01 03:00:XX] RUN Command BusinessStoreOptimized on Day: 1
# [2026-02-01 03:00:XX] RUN Command BusinessStoreOptimized present Day: 1
# [2026-02-01 03:00:XX] RUN Command BusinessStoreOptimized Business Structure Storage
# [2026-02-01 03:00:XX] RUN Command BusinessStoreOptimized Commission Calculation
# [2026-02-01 03:00:XX] COMMAND COMPLETED SUCCESSFULLY
# UserBusiness für Januar prüfen
php8.4 artisan tinker --execute="
\$count = \App\Models\UserBusiness::where('month', 1)->where('year', 2026)->count();
echo \"UserBusiness-Einträge für 01/2026: \$count\n\";
\$sample = \App\Models\UserBusiness::where('month', 1)->where('year', 2026)
->orderBy('id', 'DESC')->first();
if (\$sample) {
echo \"Beispiel:\n\";
echo \" User ID: {\$sample->user_id}\n\";
echo \" Created: {\$sample->created_at}\n\";
echo \" Points: {\$sample->sales_volume_points_KP_sum}\n\";
}
"
Am 2. Februar um 03:05 Uhr prüfen:
# Logs prüfen - Command sollte NICHT laufen
tail -100 storage/logs/laravel.log | grep BusinessStoreOptimized
# Erwartete Ausgabe:
# [2026-02-02 03:00:XX] NOT RUN Command BusinessStoreOptimized is not present Day: 2
# (keine weiteren Logs!)
# Kein UserBusiness für Februar (zu früh)
php8.4 artisan tinker --execute="
\$count = \App\Models\UserBusiness::where('month', 2)->where('year', 2026)->count();
echo \"UserBusiness-Einträge für 02/2026: \$count (sollte 0 sein)\n\";
"
📋 Checkliste
- SSH auf Live-Server
- Code aktualisiert (Git pull oder manuell)
- Zeile 84:
return 0;aktiviert (Kommentar entfernt) - Backup erstellt
- Validierung: Command testet mit falschem Tag
- Cache geleert
- Logs geprüft: Keine "Business Structure Storage" bei falschem Tag
- Team informiert
- Monitoring am 1. Februar geplant
🔴 Rollback (falls Probleme)
# Backup wiederherstellen
cp app/Console/Commands/BusinessStoreOptimized.php.backup app/Console/Commands/BusinessStoreOptimized.php
# Cache leeren
php8.4 artisan config:clear
php8.4 artisan cache:clear
📧 Nach Deployment informieren
Team/Admin benachrichtigen:
✅ Fix deployed: BusinessStoreOptimized läuft jetzt nur noch am 1. des Monats
⚠️ Monitoring am 1. Februar notwendig
ℹ️ Command verschwendet keine Ressourcen mehr täglich
Zusätzliche Erkenntnisse
Warum keine doppelten Gutschriften?
Der Code hat einen korrekten Duplikat-Schutz:
// UserPaymentCredits::hasNotUserCreditItem()
private function hasNotUserCreditItem($userBusiness, $status){
return (UserCreditItem::where('user_business_id', $userBusiness->id)
->where('user_id', $userBusiness->user_id)
->where('status', $status)
->count() > 0) ? false : true;
}
Ablauf:
- Am 31.12. wird UserBusiness erstellt
- UserCreditItem wird erstellt (für Dezember Provisionen)
- Am 8.1. läuft Command erneut (Bug!)
- UserBusiness wird gefunden (oder aktualisiert)
- hasNotUserCreditItem() prüft: Existiert bereits? JA
- Kein neues UserCreditItem wird erstellt ✅
Das ist gut so! Verhindert Duplikate, auch wenn Command fälschlicherweise mehrfach läuft.
ABER: Das eigentliche Problem (Command läuft täglich) muss trotzdem gefixt werden!
Status
- Problem identifiziert
- Lösung dokumentiert
- Code auf Test-Server gefixt
- Code auf Live-Server deployen ← JETZT!
- Validierung durchführen
- Monitoring am 1. Februar