Firstlines: Seite und Dashboard-Kachel zaehlen wieder dieselbe Menge
Beim Formulieren der Kundenrueckmeldung aufgefallen: der vorige Commit hat die Inkonsistenz an einer Stelle behoben und an einer anderen wieder eingebaut. Die Kachel zaehlt ueber isActiveConsultant() (Mitgliedsebene + gesetztes Abrechnungskonto), die Kopfzeile der Firstlines-Seite zaehlte aber ueber isActiveAccount() (Konto in der Zukunft). Bei abgelaufenen Jahresgebuehren nannten Kachel und Seite damit unterschiedliche Zahlen - genau das, was der Fix vermeiden sollte. firstlines() bekommt den BackofficeDashboardService injiziert und nutzt dieselbe Regel. Test um beide Randfaelle erweitert (abgelaufenes vs. gar kein Abrechnungskonto), damit die Doppel-Definition nicht zurueckkommt. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
cee4a2e0eb
commit
8dc0361fec
6 changed files with 168 additions and 11 deletions
|
|
@ -8,6 +8,7 @@ use App\Models\IncentiveNewAbo;
|
|||
use App\Models\IncentiveNewPartner;
|
||||
use App\Models\IncentiveParticipant;
|
||||
use App\Models\IncentivePointsLog;
|
||||
use App\Models\UserAbo;
|
||||
use App\Models\UserAboOrder;
|
||||
use App\Models\UserSalesVolume;
|
||||
use App\Services\Incentive\IncentiveCalculationService;
|
||||
|
|
@ -362,7 +363,14 @@ class IncentiveController extends Controller
|
|||
]);
|
||||
}
|
||||
|
||||
$label = $na->userAbo?->email ?: ('Abo #'.$na->user_abo_id);
|
||||
// Geloeschte (ersetzte) Abos: E-Mail in Klammern anzeigen, damit
|
||||
// erkennbar bleibt, zu welcher Kundin das Abo gehoerte.
|
||||
$labelAbo = $na->userAbo ?? UserAbo::withTrashed()->find($na->user_abo_id);
|
||||
if ($labelAbo && $labelAbo->trashed()) {
|
||||
$label = 'Abo #'.$na->user_abo_id.($labelAbo->email ? ' ('.$labelAbo->email.')' : '');
|
||||
} else {
|
||||
$label = $labelAbo?->email ?: ('Abo #'.$na->user_abo_id);
|
||||
}
|
||||
|
||||
return [
|
||||
'id' => $na->id,
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ use App\Services\Abo\PaylineForecastService;
|
|||
use App\Services\Abo\TeamAboOverviewService;
|
||||
use App\Services\AboHelper;
|
||||
use App\Services\AboOrderCart;
|
||||
use App\Services\Backoffice\BackofficeDashboardService;
|
||||
use App\Services\Backoffice\SalesVolumePoints;
|
||||
use App\Services\BusinessPlan\ExportBot;
|
||||
use App\Services\BusinessPlan\TreeCalcBot;
|
||||
|
|
@ -716,7 +717,7 @@ class TeamController extends Controller
|
|||
* mit Monats-Gesamtpunkten und Kontaktdaten — für alle Berater, verlinkt
|
||||
* von der Firstlines-Kachel der Monatsstatistik.
|
||||
*/
|
||||
public function firstlines(): View
|
||||
public function firstlines(BackofficeDashboardService $dashboardService): View
|
||||
{
|
||||
$user = User::find(\Auth::user()->id);
|
||||
$month = max(1, min(12, (int) Request::get('month', now()->month)));
|
||||
|
|
@ -752,7 +753,11 @@ class TeamController extends Controller
|
|||
'rows' => $rows,
|
||||
// Die Dashboard-Kachel zeigt nur aktive Berater; die Liste zeigt alle
|
||||
// (inaktive sind fürs Nachfassen gerade interessant) und weist beide Zahlen aus.
|
||||
'activeCount' => collect($rows)->where('is_active_account', true)->count(),
|
||||
// Zwingend dieselbe Regel wie die Kachel (isActiveConsultant), NICHT
|
||||
// isActiveAccount — sonst nennt die Seite eine andere Zahl als die Kachel.
|
||||
'activeCount' => $firstlines
|
||||
->filter(fn (User $member) => $dashboardService->isActiveConsultant($member))
|
||||
->count(),
|
||||
'selectedMonth' => $month,
|
||||
'selectedYear' => $year,
|
||||
'filterMonths' => HTMLHelper::getTransMonths(),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue