Feedback-Umsetzung (dev/2026-07-22/feedback-analyse-2026-07-24.md, alle 10 Punkte):
- VIP-Statistik: eigener Berater ('ich', Linie 0) in Neue-Kundenabos- und beiden Top-10-Listen; Top-10-Umsatz sortiert nach abgerechneten Ist-Punkten + Abo-Anzahl-Spalte; Fußnote nicht-payline-wirksame Punkte (SalesVolumePoints::nonPaylinePoints)
- Führungskräfte-Liste: beide Sichten 'direkt' (an nächster FK abgeschnitten, additiv) und 'gesamt' (komplette Downline), Gesamt-Spalte nach Kundenzählweise
- Team-Abos: je Ebene 'abgerechnet (Monat)' und 'bis zum 25. erwartet'; Payline-Karte mit Teamabo-/Kundenabo-Zählern
- Incentive-Live-Ranking: Qualifizierte zuerst nummeriert (fixt auch isWinner rank<=max_winners)
- Porto: Netto-/Brutto-Kennzeichnung (Berater netto, Endkunden inkl. MwSt., portal_view-Flag; auch CRM-/Shop-Warenkorb + Checkout), Yard::shipping_tax-Fix
- Struktur-Ansicht: Abo-Badges 'A' (eigenes Abo) und '(n)' (Kundenabos) je Teampartner, gebatcht
- Abo-Löschung: Softdelete setzt active=0 (UserAbo deleting-Hook) + Bereinigungs-Migration für gelöschte-aber-aktive Abos
- Doku: technische Analyse + Kundinnen-Feedback-Dokument unter dev/2026-07-22/
- Tests: IncentiveRankingTest, TeamStructureAboBadgesTest, YardShippingTaxTest (neu); BackofficeStatisticsListsTest, TeamAboOverviewTest, PaylineForecastServiceTest, AboAdminDeleteTest, AboOneTimeViewTest erweitert
Außerdem enthalten (Branch-WIP vor dem Feedback): DATEV-Abgleich-Fixes 08+09/2025, USt-ID-Live-Validierung sowie restliche unkommittete Stände (u. a. Abo-Pause-Sprachkeys).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
144 lines
4.6 KiB
PHP
144 lines
4.6 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\SyS;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Services\SyS\AboOrdersOverview;
|
|
use App\Services\SyS\BusinessStructur;
|
|
use App\Services\SyS\BuyingsProducts;
|
|
use App\Services\SyS\ChangeUserBusinesses;
|
|
use App\Services\SyS\CleanHTMLProductDescription;
|
|
use App\Services\SyS\Correction;
|
|
use App\Services\SyS\Cronjobs;
|
|
use App\Services\SyS\Customers;
|
|
use App\Services\SyS\Import;
|
|
use App\Services\SyS\ImportDbipCountry;
|
|
use App\Services\SyS\PayoneCallbackTestbench;
|
|
use App\Services\SyS\RepairSalesVolumeInvoice;
|
|
use App\Services\SyS\Sales;
|
|
use App\Services\SyS\ShoppingOrders;
|
|
use App\Services\SyS\UserCreditItemsAddFrom;
|
|
use App\Services\SyS\UserCreditItemsChangeMessage;
|
|
|
|
class SysController extends Controller
|
|
{
|
|
protected $userRepo;
|
|
|
|
public function __construct()
|
|
{
|
|
$this->middleware('sysadmin');
|
|
}
|
|
|
|
public function index()
|
|
{
|
|
return view('sys.index');
|
|
}
|
|
|
|
public function tool($serve)
|
|
{
|
|
switch ($serve) {
|
|
|
|
case 'user_credit_items_add_from':
|
|
return UserCreditItemsAddFrom::show();
|
|
break;
|
|
case 'buyings_products':
|
|
return BuyingsProducts::show();
|
|
break;
|
|
case 'business_structur':
|
|
return BusinessStructur::show();
|
|
break;
|
|
case 'sales_members':
|
|
return Sales::show();
|
|
break;
|
|
case 'customers':
|
|
return Customers::show();
|
|
break;
|
|
case 'cronjobs':
|
|
return Cronjobs::show();
|
|
break;
|
|
case 'shopping_orders':
|
|
return ShoppingOrders::show();
|
|
break;
|
|
case 'import':
|
|
return Import::show();
|
|
break;
|
|
case 'corrections':
|
|
return Correction::show();
|
|
break;
|
|
case 'change_user_businesses':
|
|
return ChangeUserBusinesses::show();
|
|
break;
|
|
case 'repair_sales_volume_invoice':
|
|
return RepairSalesVolumeInvoice::show();
|
|
break;
|
|
case 'user_credit_items_change_message':
|
|
return UserCreditItemsChangeMessage::show();
|
|
break;
|
|
case 'clean_html_product_description':
|
|
return CleanHTMLProductDescription::show();
|
|
break;
|
|
case 'import_dbip_country_lite':
|
|
return ImportDbipCountry::show();
|
|
break;
|
|
case 'abo_orders_overview':
|
|
return AboOrdersOverview::show();
|
|
break;
|
|
case 'payone_callback_testbench':
|
|
return PayoneCallbackTestbench::show();
|
|
break;
|
|
}
|
|
abort(403, 'not found tool');
|
|
}
|
|
|
|
public function store($serve)
|
|
{
|
|
switch ($serve) {
|
|
case 'user_credit_items_add_from':
|
|
return UserCreditItemsAddFrom::show();
|
|
break;
|
|
case 'buyings_products':
|
|
return BuyingsProducts::store();
|
|
break;
|
|
case 'business_structur':
|
|
return BusinessStructur::show();
|
|
break;
|
|
case 'sales_members':
|
|
return Sales::show();
|
|
break;
|
|
case 'customers':
|
|
return Customers::store();
|
|
break;
|
|
case 'cronjobs':
|
|
return Cronjobs::store();
|
|
break;
|
|
case 'shopping_orders':
|
|
return ShoppingOrders::store();
|
|
break;
|
|
case 'import':
|
|
return Import::store();
|
|
break;
|
|
case 'corrections':
|
|
return Correction::store();
|
|
break;
|
|
case 'change_user_businesses':
|
|
return ChangeUserBusinesses::store();
|
|
break;
|
|
case 'repair_sales_volume_invoice':
|
|
return RepairSalesVolumeInvoice::store();
|
|
break;
|
|
case 'user_credit_items_change_message':
|
|
return UserCreditItemsChangeMessage::store();
|
|
break;
|
|
case 'clean_html_product_description':
|
|
return CleanHTMLProductDescription::store();
|
|
break;
|
|
case 'import_dbip_country_lite':
|
|
return ImportDbipCountry::store();
|
|
break;
|
|
case 'payone_callback_testbench':
|
|
return PayoneCallbackTestbench::store();
|
|
break;
|
|
}
|
|
abort(403, 'not found tool');
|
|
}
|
|
}
|