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:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user