Show purchase history in /mon-compte achats tab with paid/cancelled/refunded status
- Add STATUS_REFUNDED constant to BilletBuyer - Filter out pending orders, show only paid/cancelled/refunded - Display: order number, status badge, date, event info, items breakdown, total, payment method, link to order page Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -13,6 +13,7 @@ class BilletBuyer
|
||||
public const STATUS_PENDING = 'pending';
|
||||
public const STATUS_PAID = 'paid';
|
||||
public const STATUS_CANCELLED = 'cancelled';
|
||||
public const STATUS_REFUNDED = 'refunded';
|
||||
|
||||
#[ORM\Id]
|
||||
#[ORM\GeneratedValue]
|
||||
|
||||
@@ -148,14 +148,61 @@
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% elseif tab == 'purchases' %}
|
||||
<div class="card-brutal">
|
||||
{% elseif tab == 'purchases' %}
|
||||
<div class="card-brutal overflow-hidden">
|
||||
<div class="section-header">
|
||||
<h2 class="text-[10px] font-black uppercase tracking-widest text-white">Mes achats</h2>
|
||||
</div>
|
||||
{% set filtered_orders = orders|filter(o => o.status != 'pending') %}
|
||||
{% if filtered_orders|length > 0 %}
|
||||
<div class="p-6">
|
||||
{% for order in filtered_orders %}
|
||||
<div class="border-2 border-gray-900 bg-white mb-4 p-4">
|
||||
<div class="flex flex-wrap items-center gap-3 mb-3">
|
||||
<span class="font-black uppercase text-sm">{{ order.orderNumber }}</span>
|
||||
{% if order.status == 'paid' %}
|
||||
<span class="badge-green text-[10px] font-black uppercase">Payee</span>
|
||||
{% elseif order.status == 'refunded' %}
|
||||
<span class="badge-yellow text-[10px] font-black uppercase">Remboursee</span>
|
||||
{% elseif order.status == 'cancelled' %}
|
||||
<span class="badge-red text-[10px] font-black uppercase">Annulee</span>
|
||||
{% endif %}
|
||||
<span class="text-xs font-bold text-gray-400">{{ order.createdAt|date('d/m/Y H:i') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="space-y-1 text-sm font-bold text-gray-600 mb-3">
|
||||
<p class="font-black text-gray-900">{{ order.event.title }}</p>
|
||||
<p>{{ order.event.startAt|date('d/m/Y') }} — {{ order.event.startAt|date('H:i') }} a {{ order.event.endAt|date('H:i') }}</p>
|
||||
<p>{{ order.event.address }}, {{ order.event.zipcode }} {{ order.event.city }}</p>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-wrap items-center gap-4 mb-3">
|
||||
{% for item in order.items %}
|
||||
<div class="text-xs font-bold text-gray-500">
|
||||
{{ item.billetName }} x{{ item.quantity }} — {{ item.lineTotalHTDecimal|number_format(2, ',', ' ') }} €
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
<div class="flex flex-wrap items-center justify-between gap-3">
|
||||
<div class="flex flex-wrap gap-3 text-xs font-bold text-gray-400">
|
||||
<span>Total: <span class="font-black text-indigo-600">{{ order.totalHTDecimal|number_format(2, ',', ' ') }} €</span></span>
|
||||
{% if order.paymentMethod %}
|
||||
<span>{{ order.paymentMethod }}{% if order.cardBrand and order.cardLast4 %} — {{ order.cardBrand|upper }} **** {{ order.cardLast4 }}{% endif %}</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
<a href="{{ path('app_order_public', {orderNumber: order.orderNumber, token: order.accessToken}) }}" class="px-3 py-2 border-2 border-gray-900 bg-white text-xs font-black uppercase hover:bg-indigo-600 hover:text-white transition-all">
|
||||
Voir la commande
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="p-12 text-center">
|
||||
<p class="text-gray-400 font-bold text-sm">Aucun achat pour le moment.</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% elseif tab == 'invoices' %}
|
||||
|
||||
Reference in New Issue
Block a user