Marketplace Africaine
FACTURE
{{ str_replace('CMD', 'FAC', $order->order_number) }}
Date : {{ \Carbon\Carbon::parse($order->created_at)->format('d/m/Y') }}
Vendu par
@php $sellersList = $sellerInfoList ?? []; @endphp @if(count($sellersList) > 1) @foreach($sellersList as $sIndex => $sInfo)
{{ $sInfo['shop_name'] }}
{{ $sInfo['address'] }} • {{ $sInfo['country'] }}
@endforeach @elseif(count($sellersList) === 1) {{ $sellersList[0]['shop_name'] }}
{{ $sellersList[0]['address'] }}
{{ $sellersList[0]['country'] }} @else MayiMava Partenaire
Plateforme MayiMavaStore
Togo @endif
{{-- Spacer --}}
Facturé à
{{ $order->shipping_address['full_name'] ?? ($order->user->firstname . ' ' . $order->user->lastname) }}
{{ $order->shipping_address['address_line'] ?? '' }}
{{ $order->shipping_address['city'] ?? '' }} {{ $order->shipping_address['country'] ?? '' }}
{{ $order->shipping_address['phone'] ?? $order->user->telephone_number }}
@php $displayItems = $items ?? $order->items; $isMultiSellerCustomer = isset($sellerInfoList) && count($sellerInfoList) > 1 && !($isSellerInvoice ?? false); $orderStatusMap = [ 'pending' => 'En attente', 'confirmed' => 'Confirmée', 'processing' => 'En préparation', 'shipped' => 'Expédiée', 'delivered' => 'Livrée', 'cancelled' => 'Annulée', ]; @endphp @foreach($displayItems as $item) @endforeach
Désignation Prix Unit. Qté Total
{{ $item->product->name ?? 'Produit #' . $item->product_id }} @if($isMultiSellerCustomer) @php $itemSellerUser = $item->product->seller ?? null; $itemSellerProfile = $itemSellerUser ? $itemSellerUser->seller : null; $itemShopName = $itemSellerProfile->shop_name ?? ($itemSellerUser ? "{$itemSellerUser->firstname} {$itemSellerUser->lastname}" : 'Vendeur'); $sellerIdVal = $item->seller_id ?? $itemSellerUser?->id; $sStatusRecord = $order->relationLoaded('sellerStatuses') ? $order->sellerStatuses->firstWhere('seller_id', $sellerIdVal) : null; $itemSellerStatusKey = $sStatusRecord?->status ?? $order->status; $itemSellerStatusLabel = $orderStatusMap[$itemSellerStatusKey] ?? ucfirst($itemSellerStatusKey); @endphp
Vendeur : {{ $itemShopName }} • Statut : {{ $itemSellerStatusLabel }} @endif
{{ number_format($item->unit_price, 0, ',', ' ') }} {{ $order->currency }} {{ $item->quantity }} {{ number_format($item->total_price, 0, ',', ' ') }} {{ $order->currency }}
{{-- Left side payment info could go here --}}
@php $paymentMethodDisplay = ucfirst(str_replace('_', ' ', $order->payment_method)); // Si les paiements sont chargés if ($order->relationLoaded('payments')) { // Chercher un paiement réussi ou le dernier tenté $payment = $order->payments ->sortByDesc('created_at') ->first(); if ($payment) { $providerCode = $payment->provider ?? $payment->payment_provider ?? ($payment->relationLoaded('paymentGateway') && $payment->paymentGateway ? $payment->paymentGateway->provider : null); if ($providerCode) { $providerMap = [ 'orange_money' => 'Orange Money', 'mtn_money' => 'MTN Mobile Money', 'moov_money' => 'Moov Money', 'pi_network' => 'Pi Network', 'wallet' => 'Portefeuille', ]; $providerLabel = $providerMap[$providerCode] ?? ucfirst(str_replace('_', ' ', $providerCode)); // Affichage intelligent if ($order->payment_method === 'mobile_money') { $paymentMethodDisplay = $providerLabel; } elseif ($order->payment_method === 'credit_card') { $paymentMethodDisplay = 'Carte Bancaire (' . $providerLabel . ')'; } elseif (strpos(strtolower($paymentMethodDisplay), strtolower($providerLabel)) === false) { $paymentMethodDisplay .= ' - ' . $providerLabel; } } } } @endphp Moyen de paiement : {{ $paymentMethodDisplay }}
@php $statusMap = [ 'pending' => 'En attente', 'processing' => 'Paiement en cours', 'paid' => 'Payé', 'failed' => 'Échoué', 'refunded' => 'Remboursé', ]; $translatedStatus = $statusMap[$order->payment_status] ?? $order->payment_status; $statusColor = match($order->payment_status) { 'paid' => '#166534', // Vert foncé harmonisé 'failed', 'refunded' => '#991b1b', // Rouge harmonisé default => '#666', }; @endphp Statut du paiement : {{ $translatedStatus }}
Mode d'expédition : @php $deliveryLabel = match ($order->delivery_option ?? 'delivery') { 'pickup' => 'Retrait en magasin', 'digital_download' => 'Téléchargement numérique', default => 'Livraison à domicile', }; @endphp {{ $deliveryLabel }}
@php $effectiveStatusKey = $order->status; if ($isSellerInvoice ?? false) { $firstItemSellerId = $displayItems->first()?->seller_id ?? $displayItems->first()?->product?->seller_id; $sRecord = $order->relationLoaded('sellerStatuses') ? $order->sellerStatuses->firstWhere('seller_id', $firstItemSellerId) : null; if ($sRecord && !empty($sRecord->status)) { $effectiveStatusKey = $sRecord->status; } } $translatedOrderStatus = $orderStatusMap[$effectiveStatusKey] ?? $effectiveStatusKey; $orderStatusTextColor = match($effectiveStatusKey) { 'delivered' => '#166534', // Vert foncé identique au paiement 'shipped' => '#9a3412', // Orange foncé 'cancelled' => '#991b1b', // Rouge identique default => '#444', }; @endphp Statut de la commande : {{ mb_strtoupper($translatedOrderStatus, 'UTF-8') }}
@php $displaySubtotal = $subtotal ?? $order->subtotal; $displayShipping = $shippingCost ?? $order->shipping_cost; $displayTax = $taxAmount ?? $order->tax_amount; $displayDiscount = $discountAmount ?? $order->discount_amount; $displayTotal = $totalAmount ?? $order->total_amount; @endphp @if($displayShipping > 0) @endif @if($displayTax > 0) @endif @if($displayDiscount > 0) @endif @php $totalRefunded = $order->relationLoaded('refunds') ? $order->refunds->where('status', 'completed')->sum('amount') : 0; @endphp @if($totalRefunded > 0) @endif {{-- Spacer row --}}
Sous-total : {{ number_format($displaySubtotal, 0, ',', ' ') }} {{ $order->currency }}
Livraison : {{ number_format($displayShipping, 0, ',', ' ') }} {{ $order->currency }}
Taxes : {{ number_format($displayTax, 0, ',', ' ') }} {{ $order->currency }}
Remise {{ $order->coupon ? '(' . $order->coupon->code . ')' : '' }} : - {{ number_format($displayDiscount, 0, ',', ' ') }} {{ $order->currency }}
Remboursements : - {{ number_format($totalRefunded, 0, ',', ' ') }} {{ $order->currency }}
{{ $totalRefunded > 0 ? 'SOLDE RECTIFIÉ :' : 'NET À PAYER :' }} {{ number_format($displayTotal - $totalRefunded, 0, ',', ' ') }} {{ $order->currency }}