update 20.10.2025
This commit is contained in:
parent
8c11130b5d
commit
a939cd51ef
616 changed files with 84821 additions and 4121 deletions
222
dev/code/Services/SALES_COMMISSION_FIX.md
Normal file
222
dev/code/Services/SALES_COMMISSION_FIX.md
Normal file
|
|
@ -0,0 +1,222 @@
|
|||
# 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! 🎯
|
||||
Loading…
Add table
Add a link
Reference in a new issue