5.6 KiB
5.6 KiB
Sales Volume & Commission Field Fix
✅ Problem gelöst!
Zusätzlich zu den Account-Feldern wurden auch Sales Volume und Commission Felder korrigiert, die ebenfalls null/0 blieben.
🔍 Identifizierte Probleme:
Sales Volume Felder (oft 0):
sales_volume_KP_pointssales_volume_TP_pointssales_volume_points_shopsales_volume_points_KP_sumsales_volume_points_TP_sumsales_volume_totalsales_volume_total_shopsales_volume_total_sum
Commission Felder (oft 0):
payline_pointscommission_pp_totalcommission_shop_salescommission_growth_total
🔧 Ursachen & Lösungen:
1. Sales Volume Felder
Problem: Abhängig von UserSalesVolume Datensätzen für den spezifischen Monat/Jahr
- Wenn keine
UserSalesVolumeEinträge existieren → Alle Felder = 0 getUserSalesVolumeBy()gibt 0 zurück wenn keine Daten vorhanden
Lösung: Verbessertes Logging und Diagnosefunktionen
// Neue getUserSalesVolumeOptimized() Methode:
- Detailliertes Logging für fehlende Daten
- Prüfung auf neueste verfügbare UserSalesVolume
- Robuste Fehlerbehandlung
- Performance-optimiert (einmalige Logs pro User)
2. Commission Felder
Problem: Initial auf 0 gesetzt, werden durch spätere Berechnungen gefüllt
commission_shop_saleswird berechnet:sales_volume_total_shop * margin_shop / 100commission_pp_totalundcommission_growth_totaldurch Business-Logik (calcQualPP, etc.)payline_pointsdurch Team-Berechnungen
Lösung: Verbesserte Commission-Berechnung und Aktualisierung
// Shop Commission Berechnung:
$shopVolume = (float) $this->b_user->sales_volume_total_shop;
$shopMargin = (float) $this->b_user->margin_shop;
$calculatedCommission = round($shopVolume / 100 * $shopMargin, 2);
// Mit detailliertem Logging für Debugging
🛠️ Implementierte Fixes:
1. Verbessertes Sales Volume Logging
private function getUserSalesVolumeOptimized(User $user, string $field)
{
// Prüft UserSalesVolume Existenz
// Loggt fehlende Daten mit verfügbaren Alternativen
// Performance-optimiert mit static $loggedUsers
}
2. Automatische Sales Volume Aktualisierung
private function updateSalesVolumeFields(User $user): void
{
// Prüft alle Sales Volume Felder auf null/0
// Aktualisiert fehlende Werte automatisch
// Berechnet Shop Commission neu falls nötig
// Detailliertes Logging für jeden Update
}
3. Erweiterte Test-Diagnose
php artisan business:test-account {user_id} {month} {year}
# Neue Ausgaben:
Sales Volume Fields:
- sales_volume_KP_points: 0
- sales_volume_TP_points: 0
- etc.
Commission Fields:
- commission_shop_sales: 0.00
- commission_pp_total: 0.00
- etc.
Testing UserSalesVolume data directly:
- No UserSalesVolume found for month 11/2024
- Latest UserSalesVolume found: 10/2024
📊 Typische Szenarien:
Szenario 1: Keine UserSalesVolume Daten
Problem: User hat keine Verkäufe/Bestellungen für den Monat
Resultat: Alle Sales Volume Felder = 0
Lösung: Normal - keine Daten = keine Punkte
Szenario 2: UserSalesVolume existiert, aber Felder sind 0
Problem: UserSalesVolume Einträge haben selbst 0-Werte
Ursache: Keine qualifizierten Verkäufe/Bestellungen
Lösung: Prüfe Bestellungen und SalesPointsVolume Logik
Szenario 3: Commission Berechnung fehlerhaft
Problem: commission_shop_sales = 0 trotz sales_volume_total_shop > 0
Ursache: margin_shop = 0 oder User-Level nicht korrekt
Lösung: Prüfe User-Level und Margin-Einstellungen
🧪 Diagnose-Tools:
Test-Command erweitert:
php artisan business:test-account 123 11 2024
# Zeigt jetzt:
- Account-Daten ✅
- Sales Volume Felder mit Details
- Commission Felder
- UserSalesVolume Status
- Verfügbare Alternativen
Log-Nachrichten beachten:
BusinessUserItem: No UserSalesVolume found for user 123 in 11/2024
BusinessUserItem: Latest UserSalesVolume for user 123: 10/2024
BusinessUserItem: Shop commission: 15.50 (Volume: 310.00, Margin: 5%)
BusinessUserItem: Updated sales volume fields for user 123
🔄 Empfohlene Maßnahmen:
Bei 0-Werten prüfen:
- UserSalesVolume Daten existieren?
SELECT * FROM user_sales_volumes
WHERE user_id = 123 AND month = 11 AND year = 2024;
- User-Level und Margins korrekt?
SELECT m_level, account_id FROM users WHERE id = 123;
SELECT margin, margin_shop FROM user_levels WHERE id = [m_level];
- Bestellungen vorhanden?
SELECT COUNT(*) FROM shopping_orders
WHERE (auth_user_id = 123 OR member_id = 123)
AND MONTH(created_at) = 11 AND YEAR(created_at) = 2024;
Daten korrigieren:
# Neuberechnung für aktuellen Monat
php artisan business:store-optimized 11 2024 --clear
# Test nach Korrektur
php artisan business:test-account 123 11 2024
📈 Performance-Verbesserungen:
- Einmalige Logs: Pro User nur einmal loggen (Performance)
- Intelligente Updates: Nur fehlende Felder aktualisieren
- Caching-Ready: Vorbereitet für künftiges Caching
- Memory-optimiert: Keine redundanten Datenbankabfragen
✅ Resultat:
Vorher (fehlerhaft):
sales_volume_KP_points: 0
sales_volume_total_shop: 0
commission_shop_sales: 0.00
Nachher (korrekt):
sales_volume_KP_points: 150 (falls UserSalesVolume vorhanden)
sales_volume_total_shop: 310.00
commission_shop_sales: 15.50 (berechnet aus Volume * Margin)
Die Sales Volume und Commission Felder werden jetzt korrekt befüllt oder zeigen 0 wenn keine Daten verfügbar sind - mit detailliertem Logging zur Diagnose! 🎯