mivita/app/Http/Controllers/SyS/SysController.php
Kevin ac3bd6e8ea Statistiken/Abo: Kundenfeedback 2026-07-24 komplett umgesetzt + Steuern: DATEV-Fixes 08+09/2025 (Sammel-Commit Branch-WIP)
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>
2026-07-24 13:56:02 +00:00

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');
}
}