# BusinessPlan System - GesamtΓΌbersicht ## πŸ“‹ Inhaltsverzeichnis 1. [System-Architektur](#system-architektur) 2. [Datei-Übersicht](#datei-ΓΌbersicht) 3. [Datenfluss](#datenfluss) 4. [Punktetypen & Begriffe](#punktetypen--begriffe) 5. [Level-System](#level-system) 6. [Provisionsberechnung](#provisionsberechnung) 7. [Cron-Job (Monatsabschluss)](#cron-job-monatsabschluss) 8. [Dashboard-Integration](#dashboard-integration) --- ## System-Architektur ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ FRONTEND / VIEWS β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ dashboard/_statistics.blade.php β”‚ dashboard/_points.blade.php β”‚ β”‚ user/team/*.blade.php β”‚ admin/business/*.blade.php β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β–Ό β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ CONTROLLER β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ HomeController β”‚ TeamController β”‚ AdminController β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β–Ό β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ BUSINESS PLAN SERVICES β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ TreeCalcBotOptimized.php β”‚ β”‚ β”‚ β”‚ - Hauptklasse fΓΌr MLM-Strukturberechnungen β”‚ β”‚ β”‚ β”‚ - Initialisiert Business-User Strukturen β”‚ β”‚ β”‚ β”‚ - Berechnet Punkte ΓΌber alle Ebenen β”‚ β”‚ β”‚ β”‚ - Delegiert an Repository, Renderer, Calculator β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β–Ό β–Ό β–Ό β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ Business β”‚ β”‚ BusinessUserItem β”‚ β”‚ GrowthBonus β”‚ β”‚ β”‚ β”‚ User β”‚ β”‚ Optimized.php β”‚ β”‚ Calculator.php β”‚ β”‚ β”‚ β”‚ Repository β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ .php β”‚ β”‚ - User-DatenbehΓ€lter β”‚ β”‚ - Tiefenbonus β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ - Qualifikations- β”‚ β”‚ - Differenz- β”‚ β”‚ β”‚ β”‚ - DB Queries β”‚ β”‚ berechnung β”‚ β”‚ Logik β”‚ β”‚ β”‚ β”‚ - Caching β”‚ β”‚ - Provisions- β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ - Relations β”‚ β”‚ berechnung β”‚ β”‚ β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ SalesPointsVolume.php β”‚ β”‚ β”‚ β”‚ - Punkteerfassung bei Bestellungen β”‚ β”‚ β”‚ β”‚ - KP/TP Punkte-Unterscheidung β”‚ β”‚ β”‚ β”‚ - Neuberechnung bei Γ„nderungen β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β–Ό β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ MODELS β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ User β”‚ UserBusiness β”‚ UserSalesVolume β”‚ β”‚ UserLevel β”‚ UserBusinessStruct β”‚ UserAbo β”‚ β”‚ ShoppingOrder β”‚ ShoppingUser β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` --- ## Datei-Übersicht | Datei | Zweck | AbhΓ€ngigkeiten | | ------------------------------- | ---------------------------------------- | ------------------------------ | | `TreeCalcBotOptimized.php` | Hauptklasse fΓΌr MLM-Strukturberechnungen | Repository, Renderer, Logger | | `BusinessUserItemOptimized.php` | User-DatenbehΓ€lter mit Berechnungslogik | GrowthBonusCalculator | | `BusinessUserRepository.php` | Optimierte DB-Abfragen mit Caching | User, UserBusiness Models | | `GrowthBonusCalculator.php` | Tiefenbonus-Berechnung (Differenz-Logik) | BusinessUserItemOptimized | | `SalesPointsVolume.php` | Punkteerfassung bei Bestellungen | UserSalesVolume, ShoppingOrder | | `TreeHtmlRenderer.php` | HTML-Ausgabe fΓΌr Struktur-Ansichten | - | | `TreeHelperOptimized.php` | Hilfsfunktionen fΓΌr Tree-Operationen | - | ### Dokumentation | Datei | Inhalt | | ------------------------- | ---------------------------------------- | | `TreeCalcBotOptimized.md` | Technische Dokumentation der Hauptklasse | | `Growth-Bonus.md` | ErklΓ€rung der Tiefenbonus-Logik | | `Growth-Bonus-Matrix.md` | Matrix-Darstellung des Tiefenbonus | --- ## Datenfluss ### 1. Punkteerfassung (bei Bestellung) ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ ShoppingOrder │────▢│ SalesPointsVolume │────▢│ UserSalesVolume β”‚ β”‚ wird erstellt β”‚ β”‚ ::addSalesPoints β”‚ β”‚ wird erstellt β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ VolumeUser() β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β–Ό β–Ό β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ reCalculateSales │────▢│ month_KP_points β”‚ β”‚ PointsVolume() β”‚ β”‚ month_TP_points β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ month_shop_pointsβ”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` ### 2. Strukturberechnung (Live oder Cron) ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ TreeCalcBotOptimized β”‚ β”‚ β”‚ β”‚ 1. initStructureAdmin() oder initStructureUser() β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β–Ά PrΓΌfe gespeicherte Struktur (UserBusinessStructure) β”‚ β”‚ β”‚ └─▢ Falls vorhanden und !forceLiveCalculation β†’ laden β”‚ β”‚ β”‚ β”‚ β”‚ └─▢ buildFreshStructure() β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β–Ά loadRootUsers() - Top-Sponsoren ohne Parent β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β–Ά loadParentsUsers() - Rekursive Downline β”‚ β”‚ β”‚ └─▢ readParentsBusinessUsers() fΓΌr jeden User β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β–Ά calculateUserPointsOptimized() β”‚ β”‚ β”‚ └─▢ Punkte pro Ebene (business_lines[1..n]) β”‚ β”‚ β”‚ β”‚ β”‚ └─▢ calcQualPP() fΓΌr jeden User β”‚ β”‚ β”œβ”€β–Ά calcuQualLevel() - Erreichte Stufe β”‚ β”‚ β”œβ”€β–Ά setNextUserLevel() - NΓ€chste Stufe β”‚ β”‚ └─▢ calculateCommissions() - Provisionen β”‚ β”‚ β”œβ”€β–Ά Payline-Provisionen (Ebene 1-6) β”‚ β”‚ └─▢ Growth Bonus (ab Ebene 7+) β”‚ β”‚ └─▢ GrowthBonusCalculator β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` ### 3. Monatlicher Cron-Job ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ BusinessUsersStoreOptimized (Cron) β”‚ β”‚ β”‚ β”‚ AusfΓΌhrung: Einmal pro Monat (nach Monatsende) β”‚ β”‚ β”‚ β”‚ 1. storeUserBusinessStructure() β”‚ β”‚ └─▢ Erstellt UserBusinessStructure mit allen User-IDs β”‚ β”‚ β”‚ β”‚ 2. storeBusinessUsersDetail() β”‚ β”‚ └─▢ FΓΌr jeden User: initBusinesslUserDetail() mit forceLive=true β”‚ β”‚ └─▢ Speichert UserBusiness Datensatz β”‚ β”‚ β”‚ β”‚ 3. storeBusinessCompleted() β”‚ β”‚ └─▢ Markiert Struktur als "completed" β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` --- ## Punktetypen & Begriffe ### Punktearten | KΓΌrzel | Name | Beschreibung | | ------ | -------------- | --------------------------------------------------- | | **KP** | Kunden-Punkte | Eigene Bestellungen + Kundenbestellungen (Shop) | | **TP** | Team-Punkte | KP + Punkte aus der Downline (Payline) | | **PP** | Payline-Punkte | Summe der TP aus allen Ebenen bis zur Payline-Tiefe | ### Felder in UserSalesVolume | Feld | Beschreibung | | ------------------- | --------------------------------------------------------------------------- | | `points` | Punkte dieser einzelnen Transaktion | | `month_KP_points` | Kumulierte KP-Punkte des Monats | | `month_TP_points` | Kumulierte TP-Punkte des Monats | | `month_shop_points` | Kumulierte Shop-Punkte des Monats | | `status` | 1=Berater-Bestellung, 2=Shop, 3=Shop-Pending, 4=Gutschrift, 5=Registrierung | | `status_points` | 1=KP+TP, 2=nur KP | ### Felder in UserBusiness | Feld | Beschreibung | | ---------------------------- | ---------------------------------------------------------- | | `sales_volume_KP_points` | KP-Punkte | | `sales_volume_TP_points` | TP-Punkte | | `sales_volume_points_shop` | Shop-Punkte | | `sales_volume_points_KP_sum` | KP + Shop | | `sales_volume_points_TP_sum` | TP + Shop | | `payline_points` | Summe der Ebenen 1 bis Payline-Tiefe | | `payline_points_qual_kp` | payline_points + Rest-KP | | `business_lines` | JSON: Punkte pro Ebene {1: {points: X}, 2: {points: Y}...} | | `qual_user_level` | Erreichtes Qualifikations-Level (Array) | | `qual_user_level_next` | NΓ€chste Provisions-Stufe | | `next_qual_user_level` | NΓ€chstes erreichbares Level | | `commission_pp_total` | Payline-Provision | | `commission_shop_sales` | Shop-Provision | | `commission_growth_total` | Growth-Bonus (Tiefenbonus) | --- ## Level-System ### Qualifikationsbedingungen | Level | Name | Min. KP (qual_kp) | Min. PP (qual_pp) | Paylines | Growth Bonus | | ----- | -------------------- | ----------------- | ----------------- | -------- | ------------ | | 1 | Junior Berater | 150 | 0 | 3 | - | | 2 | Aktiv Junior Berater | 250 | 500 | 3 | - | | 3 | Berater | 350 | 1.000 | 4 | - | | 4 | Aktiv Berater | 450 | 2.500 | 5 | - | | 5 | Vertriebspartner | 600 | 5.000 | 6 | - | | 6 | Vertriebsleiter | 600 | 9.000 | 6 | - | | 7 | Bronze Member | 600 (690\*) | 18.000 | 6 | 1,0% | | 8 | Silber Member | 600 | 30.000 | 6 | 1,5% | | 9 | Gold Member | 600 | 50.000 | 6 | 2,0% | | 10 | Diamant Member | 600 | 100.000 | 6 | 2,5% | | 11 | Platin Member\* | 600 | 250.000 | 7 | 3,0% | | 12 | Platin Member\*\* | 600 | 500.000 | 7 | 3,5% | | 13 | Platin Member\*\*\* | 600 | 1.000.000 | 8 | 4,0% | \*690 Punkte zur Auszahlung (Schecksicherung) ### Payline-ProzentsΓ€tze (pr_line_X) - OHNE Growth Bonus **⚠️ Diese Werte sind NUR der Payline-Anteil. Growth Bonus wird separat berechnet!** | Level | E1 | E2 | E3 | E4 | E5 | E6 | E7 | E8 | Growth | | -------------------- | --- | --- | --- | --- | --- | --- | --- | --- | ------ | | Junior Berater | 6% | 3% | 1% | - | - | - | - | - | - | | Aktiv Junior Berater | 6% | 4% | 2% | - | - | - | - | - | - | | Berater | 6% | 5% | 3% | 2% | - | - | - | - | - | | Aktiv Berater | 6% | 5% | 4% | 2% | 1% | - | - | - | - | | Vertriebspartner | 6% | 6% | 5% | 3% | 2% | 1% | - | - | - | | Vertriebsleiter | 6% | 6% | 6% | 4% | 2% | 1% | - | - | - | | Bronze Member | 6% | 6% | 6% | 4% | 2% | 2% | - | - | 1,0% | | Silber Member | 7% | 7% | 7% | 4% | 2% | 2% | - | - | 1,5% | | Gold Member | 7% | 7% | 7% | 4% | 2% | 2% | - | - | 2,0% | | Diamant Member | 7% | 7% | 7% | 4% | 2% | 2% | - | - | 2,5% | | Platin Member\* | 7% | 7% | 7% | 4% | 3% | 2% | 1% | - | 3,0% | | Platin Member\*\* | 7% | 7% | 7% | 4% | 3% | 2% | 1% | - | 3,5% | | Platin Member\*\*\* | 7% | 7% | 7% | 4% | 4% | 3% | 2% | 1% | 4,0% | **Gesamt-Provision pro Ebene = pr_line_X + Growth Bonus (mit Differenz-Logik)** ### Qualifikations-Algorithmus ```php // In BusinessUserItemOptimized::calcuQualLevel() 1. Hole alle Levels wo qual_kp <= User's KP-Summe 2. Sortiere nach Position (hΓΆchstes zuerst) 3. FΓΌr jedes Level: a. Berechne payline_points fΓΌr dieses Level (Ebenen 1 bis paylines) b. Berechne rest_kp = max(0, KP_sum - Level.qual_kp) c. payline_points_qual_kp = payline_points + rest_kp d. Wenn payline_points_qual_kp >= Level.qual_pp β†’ QUALIFIZIERT 4. Return erstes qualifiziertes Level (hΓΆchstes) ``` --- ## Provisionsberechnung ### 1. Payline-Provisionen (Unilevel) Feste ProzentsΓ€tze auf Teamumsatz, begrenzt auf Payline-Tiefe. **⚠️ WICHTIG:** Die `pr_line_X` Werte in der DB sind **NUR Payline** (ohne Growth Bonus)! **Beispiel Gold Member (6 Paylines) - korrekte Werte:** | Ebene | Payline (`pr_line_X`) | Growth Bonus | Gesamt | | ----- | --------------------- | ------------ | ------ | | 1 | 7% | +2% | 9% | | 2 | 7% | +2% | 9% | | 3 | 7% | +2% | 9% | | 4 | 4% | +2% | 6% | | 5 | 2% | +2% | 4% | | 6 | 2% | +2% | 4% | | 7+ | - | +2% | 2% | ```php // In BusinessUserItemOptimized::calculateCommissions() for ($i = 1; $i <= $qualUserLevel->paylines; $i++) { $points = $business_lines[$i]['points']; $margin = $qual_user_level['pr_line_' . $i]; // NUR Payline-Prozentsatz $commission = round($points / 100 * $margin, 2); } // Growth Bonus wird SEPARAT berechnet (siehe unten) ``` ### 2. Growth Bonus (Tiefenbonus / Differenz-Bonus) **Aktivierung:** Ab Bronze Member (Level 7+) **⚠️ Bug-Fix November 2025:** - **VOR Nov 2025:** Growth Bonus war IN den `pr_line_X` Werten enthalten UND wurde nochmal separat berechnet = **Doppelte Auszahlung!** - **AB Nov 2025:** Growth Bonus wird NUR separat berechnet, `pr_line_X` enthΓ€lt nur Payline-Anteil **Logik:** Differenz zwischen eigenem Anspruch und bereits verteiltem Prozentsatz ``` Beispiel: - User A: Diamant (2,5% Anspruch) - User B (in A's Downline): Silber (1,5% Anspruch) Punkte UNTER B: - B erhΓ€lt: 1,5% (sein voller Anspruch) - A erhΓ€lt: 2,5% - 1,5% = 1,0% (Differenz) Punkte von B selbst (GAP): - B erhΓ€lt: 0% (kein Bonus auf sich selbst) - A erhΓ€lt: 2,5% (voller Anspruch, da B nicht "schΓΌtzt") ``` **Implementation:** Siehe `GrowthBonusCalculator.php` und `Growth-Bonus.md` ### 3. Shop-Provision ```php $commission_shop_sales = sales_volume_total_shop / 100 * margin_shop; ``` --- ## Cron-Job (Monatsabschluss) ### Datei: `app/Cron/BusinessUsersStoreOptimized.php` ### AusfΓΌhrung ```bash # Typischerweise am 1. des Folgemonats php artisan schedule:run # Oder manuell: php artisan business:store-monthly {month} {year} ``` ### Ablauf 1. **storeUserBusinessStructure()** - PrΓΌft ob bereits Struktur fΓΌr Monat/Jahr existiert - Erstellt neue `UserBusinessStructure` mit allen User-IDs - Speichert komplette Baumstruktur als JSON 2. **storeBusinessUsersDetail()** - Iteriert ΓΌber alle User (aus users Array) - FΓΌr jeden nicht-abgeschlossenen User: - `TreeCalcBotOptimized::initBusinesslUserDetail(user, forceLive=true)` - Speichert `UserBusiness` Datensatz - Markiert User als "completed" in Struktur 3. **storeBusinessCompleted()** - PrΓΌft ob alle User abgeschlossen - Setzt `completed = true` auf Struktur ### Performance - Typische Laufzeit: 10-60 Minuten (je nach User-Anzahl) - Memory: 512MB-1GB empfohlen - Kann in Batches/Chunks aufgeteilt werden --- ## Dashboard-Integration ### Dashboard-Statistiken (`dashboard/_statistics.blade.php`) | Metrik | Datenquelle | Beschreibung | | -------------------- | --------------------------------------------------------- | -------------------- | | Kunden-Umsatz Punkte | `UserSalesVolume.getPointsKPSum()` | KP + Shop | | Team-Umsatz Punkte | `UserBusiness.payline_points` | Payline-Summe | | Direkte Neupartner | `User WHERE m_sponsor = $userId AND active_date IN month` | Neue Firstlines | | Neupartner im Team | `UserSalesVolume WHERE status = 5 (registration)` | Registrierungspunkte | | Kundenabos | `UserAbo WHERE member_id = $userId` | Kunden-Abos | | Teamabos | `UserAbo WHERE user_id IN firstline_ids` | Team-Abos | ### Punkte-Tabelle (`dashboard/_points.blade.php`) Zeigt detaillierte `UserSalesVolume` EintrΓ€ge fΓΌr gewΓ€hlten Monat/Jahr: - Datum, Punkte, Netto-Umsatz - Status (Berater-Bestellung, Shop, Gutschrift, Registrierung) - Bestellungs-Link, Kundeninformationen --- ## Erweiterungen & TODO ### Geplante Γ„nderungen 1. **Dashboard-Statistiken erweitern** βœ… - Monats/Jahr-Filter implementiert - Statistik-Kacheln hinzugefΓΌgt 2. **Marketingplan-Anpassungen** (in Arbeit) - Level-Struktur ΓΌberprΓΌfen - Provisionsberechnung validieren - Growth-Bonus Differenz-Logik testen ### Bekannte EinschrΓ€nkungen - Growth Bonus nur ab November 2025 mit neuer Differenz-Logik - Vor November 2025: Legacy-Berechnung (pauschal ab Ebene 7+) - Struktur-Tiefe begrenzt auf 20-30 Ebenen (Performance) --- ## Kontakt & Wartung **Letzte Aktualisierung:** Dezember 2025 **Version:** BusinessPlan System v2.0 ### Log-Dateien - `storage/logs/laravel.log` - Allgemeine Logs - BusinessUserItem/TreeCalcBot Logs mit Prefix "BusinessUserItem:" / "TreeCalcBot:" ### Cache lΓΆschen ```php // In Repository $repository->clearCache(); // Oder manuell Cache::forget("stored_structure_{$month}_{$year}"); Cache::forget("root_users_{$month}_{$year}"); ```