mivita/tests/Unit/Services
Kevin 96545364f1 Team-Statistik = Team-Struktur (Provisionsbaum, Umschalter) und Laufstand-Fix in user_sales_volumes
K11 aus dem September-Protokoll (Tickets C1 und C2 im Entwicklungsplan), live seit 14.09.2026.

C1 – Statistik rechnet wie die Provision
- Standard-Baum ist der Provisionsbaum (Mitglieder wie TreeCalcBot: Mitgliedsebene,
  Abrechnungskonto, active_date; ausgefilterte Knoten kappen ihren Unterbaum, max. 21 Linien).
  Gesamte Downline bleibt per Umschalter erreichbar, Wahl in der Session.
- Punkte-Definition: Provisionspunkte (TP + Shop), reine Karrierepunkte ausgewiesen statt
  eingerechnet, negative Monatssalden je User wie in der Provision auf 0 gekappt.
- Abgeschlossene Monate nehmen die Mitglieder je Linie aus dem gespeicherten Provisionslauf
  (user_businesses), Snapshots je Baum-Definition (Payload-Version 3, Migration).
- Struktur-Modal: Gesamt aus den Linien-Punkten mit Dezimalen statt der int-Spalte total_pp.
- Messlauf statistics:compare-trees (Downline / Provisionsbaum / Struktur je VIP, Laufstand-Drift).

C2 – Laufstand-Race (Provision zu niedrig bei zeitgleichen Buchungen)
- Neuberechnung liest die Zeilen des Beraters sperrend (FOR UPDATE), Index (user_id, year, month).
- Paid-Pfad der Payone- und Stripe-Webhooks als DB::transaction mit 3 Anlaeufen; Deadlock und
  Lock-Timeout aus der Rechnungserstellung werden nicht mehr geschluckt.
- Sicherheitsnetz sales:repair-running-totals taeglich 02:45 vor dem Provisionslauf;
  abgeschlossene Monate werden nicht angefasst (Entscheid 14.09.: keine Nachzahlung fuer 06/08).

Doku: Entwicklungsplan zum Protokoll, Deploy-Notiz 14.09. (inkl. Migrations-Stolperstein:
Migrationen tragen Werte als Literale, nicht als Konstanten aus dem Anwendungscode).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-14 15:31:32 +00:00
..
Incentive 10.April 2026 2026-04-10 17:15:27 +02:00
Payment Payment Phase R: PAYONE-Integration entflechten (R1–R7 + Review) 2026-06-10 13:42:45 +00:00
AboHelperEnsureUserAboItemsFromLatestOrderTest.php 10.April 2026 2026-04-10 17:15:27 +02:00
AboHelperGetFirstAboDateTest.php 10.April 2026 2026-04-10 17:15:27 +02:00
AboHelperSetAboStatusTest.php 10.April 2026 2026-04-10 17:15:27 +02:00
AboOrdersOverviewTest.php 10.April 2026 2026-04-10 17:15:27 +02:00
BackofficeDashboardServiceTest.php Team-Statistik = Team-Struktur (Provisionsbaum, Umschalter) und Laufstand-Fix in user_sales_volumes 2026-09-14 15:31:32 +00:00
DatevExportServiceTest.php Statistiken/Abo: Kundenfeedback 2026-07-24 komplett umgesetzt + Steuern: DATEV-Fixes 08+09/2025 (Sammel-Commit Branch-WIP) 2026-07-24 13:56:02 +00:00
InvoiceServiceTest.php 20-02-2026 2026-02-20 17:55:06 +01:00
LocaleGuardTest.php 13-05-2026 implementation FR 2026-05-13 17:33:52 +02:00
PaymentAboCallbackCreatesUserAboTest.php 10.April 2026 2026-04-10 17:15:27 +02:00
PayoneCallbackTestbenchTest.php 10.April 2026 2026-04-10 17:15:27 +02:00
PayoneTest.php Payment Phase R: PAYONE-Integration entflechten (R1–R7 + Review) 2026-06-10 13:42:45 +00:00
PersonalStatisticsServiceTest.php Backoffice-Statistik: Punkte-Fix (kumulative Snapshots) & Meine Statistik 2026-06-25 13:31:14 +00:00
ProductOrderContextTest.php 10.April 2026 2026-04-10 17:15:27 +02:00
SlimSanitizeFileNameTest.php Slim: sanitizeFileName kürzt hinten statt vorne und behält die Dateiendung 2026-08-25 11:11:01 +00:00
StripeMetadataBuilderTest.php Stripe: Kundendaten, Rechnungsnummer, manueller Zahlungseingang 2026-08-28 09:04:28 +00:00
UtilCustomerReorderCartUrlTest.php 10.April 2026 2026-04-10 17:15:27 +02:00
VatIdServiceTest.php Statistiken/Abo: Kundenfeedback 2026-07-24 komplett umgesetzt + Steuern: DATEV-Fixes 08+09/2025 (Sammel-Commit Branch-WIP) 2026-07-24 13:56:02 +00:00