Add per-billet sales stats in stats tab

- Calculate sold count and revenue per billet from paid orders
- Display 'Ventes par billet' card between KPIs and orders list

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Serreau Jovann
2026-03-21 20:06:31 +01:00
parent 2364abe0cf
commit 06dcc95a32
2 changed files with 27 additions and 0 deletions

View File

@@ -392,11 +392,20 @@ class AccountController extends AbstractController
$eventTotalHT = 0;
$eventTotalSold = 0;
$billetStats = [];
$paidEventOrders = $em->getRepository(BilletBuyer::class)->findBy(['event' => $event, 'status' => BilletBuyer::STATUS_PAID]);
foreach ($paidEventOrders as $paidOrder) {
$eventTotalHT += $paidOrder->getTotalHT();
foreach ($paidOrder->getItems() as $item) {
$eventTotalSold += $item->getQuantity();
$billetId = $item->getBillet()?->getId();
if ($billetId) {
if (!isset($billetStats[$billetId])) {
$billetStats[$billetId] = ['name' => $item->getBilletName(), 'sold' => 0, 'revenue' => 0];
}
$billetStats[$billetId]['sold'] += $item->getQuantity();
$billetStats[$billetId]['revenue'] += $item->getLineTotalHT();
}
}
}
@@ -412,6 +421,7 @@ class AccountController extends AbstractController
'event_total_ht' => $eventTotalHT / 100,
'event_total_sold' => $eventTotalSold,
'event_total_orders' => \count($paidEventOrders),
'billet_stats' => $billetStats,
'search_query' => $searchQuery,
'breadcrumbs' => [
self::BREADCRUMB_HOME,