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>
63 lines
3.2 KiB
PHP
63 lines
3.2 KiB
PHP
@php
|
|
$cartInstance = \App\Services\AboOrderCart::INSTANCE;
|
|
$taxFree = Yard::instance($cartInstance)->getUserTaxFree();
|
|
// Kunden-Portal: Versand brutto ("inkl. MwSt."), Berater/Admin: netto ("netto")
|
|
$portal_view = $portal_view ?? false;
|
|
$shippingGross = $portal_view && ! $taxFree;
|
|
@endphp
|
|
<div class="card-header bg-primary">
|
|
<h5 class="font-weight-semibold mb-0 text-white"> <i class="fa fa-shopping-cart text-white"></i>
|
|
{{ __('abo.combined_summary_hl') }}
|
|
</h5>
|
|
</div>
|
|
<div class="card-body bg-warning-light" style="background-color: rgba(227, 227, 54, 0.5) !important;">
|
|
<table class="table table-product m-0">
|
|
<tbody>
|
|
@if (($summary['one_time']['gross'] ?? 0) > 0)
|
|
<tr>
|
|
<td class="small"><strong>{{ __('abo.onetime_subtotal') }}:</strong></td>
|
|
<td class="text-right small">{{ formatNumber($summary['one_time']['gross']) }} €</td>
|
|
</tr>
|
|
@endif
|
|
<tr>
|
|
<td class="small"><strong>{{ __('abo.abo_subtotal') }}:</strong></td>
|
|
<td class="text-right small">{{ formatNumber($summary['abo']['gross'] ?? 0) }} €</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="small no-border-top"><strong>{{ __('Delivery country') }}:</strong></td>
|
|
<td class="text-right small no-border-top">{{ Yard::instance($cartInstance)->getShippingCountryName() }}
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="small no-border-top"><strong>{{ __('order.shipping_costs') }}
|
|
({{ $shippingGross ? __('order.incl_VAT') : __('order.net') }}):</strong></td>
|
|
<td class="text-right small no-border-top">
|
|
{{ $shippingGross ? Yard::instance($cartInstance)->shipping() : Yard::instance($cartInstance)->shippingNet() }}
|
|
€</td>
|
|
</tr>
|
|
@if ($taxFree)
|
|
<tr>
|
|
<td class="small no-border-top"><strong>{{ __('order.sum_net') }}:</strong></td>
|
|
<td class="text-right small no-border-top">
|
|
{{ Yard::instance($cartInstance)->subtotalWithShipping() }} €</td>
|
|
</tr>
|
|
@else
|
|
<tr>
|
|
<td class="small no-border-top"><strong>{{ __('order.total_without_VAT') }}:</strong></td>
|
|
<td class="text-right small no-border-top">
|
|
{{ Yard::instance($cartInstance)->subtotalWithShipping() }} €</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="small no-border-top"><strong>{{ __('order.plus_VAT') }}:</strong></td>
|
|
<td class="text-right small no-border-top">{{ Yard::instance($cartInstance)->taxWithShipping() }} €
|
|
</td>
|
|
</tr>
|
|
@endif
|
|
<tr class="bg-white">
|
|
<td class="pt-2 pb-2"><strong>{{ __('order.total_sum') }}:</strong></td>
|
|
<td class="text-right font-weight-bold pt-2 pb-2">
|
|
{{ Yard::instance($cartInstance)->totalWithShipping() }} €</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|