Add financial dashboard for organizer in payouts tab

- 6 KPIs: encaissé, en attente, remboursé, com E-Ticket, com Stripe, net perçu
- Calculated from all orders linked to organizer's events
- Displayed above export buttons and payouts table

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Serreau Jovann
2026-03-22 22:23:59 +01:00
parent 141871af1f
commit 80b48b9dbf
3 changed files with 58 additions and 1 deletions

View File

@@ -73,6 +73,35 @@ class AccountController extends AbstractController
$events = $paginator->paginate($eventsQuery, $request->query->getInt('page', 1), 10);
}
$financeStats = ['paid' => 0, 'pending' => 0, 'refunded' => 0, 'cancelled' => 0, 'commissionEticket' => 0, 'commissionStripe' => 0, 'net' => 0];
if ($isOrganizer) {
$orgaOrders = $em->createQueryBuilder()
->select('o')
->from(BilletBuyer::class, 'o')
->join('o.event', 'e')
->where('e.account = :user')
->setParameter('user', $user)
->getQuery()
->getResult();
$rate = $user->getCommissionRate() ?? 3;
foreach ($orgaOrders as $o) {
$ht = $o->getTotalHT() / 100;
if (BilletBuyer::STATUS_PAID === $o->getStatus()) {
$financeStats['paid'] += $ht;
$financeStats['commissionEticket'] += $ht * ($rate / 100);
$financeStats['commissionStripe'] += $ht * 0.015 + 0.25;
} elseif (BilletBuyer::STATUS_PENDING === $o->getStatus()) {
$financeStats['pending'] += $ht;
} elseif (BilletBuyer::STATUS_REFUNDED === $o->getStatus()) {
$financeStats['refunded'] += $ht;
} elseif (BilletBuyer::STATUS_CANCELLED === $o->getStatus()) {
$financeStats['cancelled'] += $ht;
}
}
$financeStats['net'] = $financeStats['paid'] - $financeStats['commissionEticket'] - $financeStats['commissionStripe'];
}
$orders = $em->getRepository(BilletBuyer::class)->findBy(
['user' => $user],
['createdAt' => 'DESC'],
@@ -94,6 +123,7 @@ class AccountController extends AbstractController
'events' => $events,
'orders' => $orders,
'userTickets' => $userTickets,
'financeStats' => $financeStats,
'breadcrumbs' => [
self::BREADCRUMB_HOME,
self::BREADCRUMB_ACCOUNT,