222 lines
5.6 KiB
Markdown
222 lines
5.6 KiB
Markdown
# 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_points`
|
|
- `sales_volume_TP_points`
|
|
- `sales_volume_points_shop`
|
|
- `sales_volume_points_KP_sum`
|
|
- `sales_volume_points_TP_sum`
|
|
- `sales_volume_total`
|
|
- `sales_volume_total_shop`
|
|
- `sales_volume_total_sum`
|
|
|
|
### Commission Felder (oft 0):
|
|
|
|
- `payline_points`
|
|
- `commission_pp_total`
|
|
- `commission_shop_sales`
|
|
- `commission_growth_total`
|
|
|
|
## 🔧 Ursachen & Lösungen:
|
|
|
|
### 1. **Sales Volume Felder**
|
|
|
|
**Problem:** Abhängig von `UserSalesVolume` Datensätzen für den spezifischen Monat/Jahr
|
|
|
|
- Wenn keine `UserSalesVolume` Einträge existieren → Alle Felder = 0
|
|
- `getUserSalesVolumeBy()` gibt 0 zurück wenn keine Daten vorhanden
|
|
|
|
**Lösung:** Verbessertes Logging und Diagnosefunktionen
|
|
|
|
```php
|
|
// 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_sales` wird berechnet: `sales_volume_total_shop * margin_shop / 100`
|
|
- `commission_pp_total` und `commission_growth_total` durch Business-Logik (calcQualPP, etc.)
|
|
- `payline_points` durch Team-Berechnungen
|
|
|
|
**Lösung:** Verbesserte Commission-Berechnung und Aktualisierung
|
|
|
|
```php
|
|
// 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**
|
|
|
|
```php
|
|
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**
|
|
|
|
```php
|
|
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**
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
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:
|
|
|
|
1. **UserSalesVolume Daten existieren?**
|
|
|
|
```sql
|
|
SELECT * FROM user_sales_volumes
|
|
WHERE user_id = 123 AND month = 11 AND year = 2024;
|
|
```
|
|
|
|
2. **User-Level und Margins korrekt?**
|
|
|
|
```sql
|
|
SELECT m_level, account_id FROM users WHERE id = 123;
|
|
SELECT margin, margin_shop FROM user_levels WHERE id = [m_level];
|
|
```
|
|
|
|
3. **Bestellungen vorhanden?**
|
|
|
|
```sql
|
|
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:
|
|
|
|
```bash
|
|
# 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! 🎯
|