@if($provider->logo) @endif
{{ $provider->legal_name ?? $provider->business_name }}
@if($provider->tax_id)
Matricule fiscal : {{ $provider->tax_id }}
@endif @if($provider->address)
{{ $provider->address }}
@endif @if($provider->city || $provider->country)
{{ $provider->city }}{{ $provider->city && $provider->country ? ', ' : '' }}{{ $provider->country }}
@endif
FACTURE @if($payment->isCreditNote())
D'AVOIR @elseif($payment->isCancelledInvoice())
ANNULÉE @endif
@if($payment->client)
Client
{{ $payment->client->full_name }}
@if($payment->client->is_vat_subject && $payment->client->matricule_fiscal)
Matricule fiscal : {{ $payment->client->matricule_fiscal }}
@endif @if($payment->client->phone)
Tél : {{ $payment->client->phone }}
@endif @if($payment->client->email)
Email : {{ $payment->client->email }}
@endif @if($payment->client->address)
Adresse : {{ $payment->client->address }}
@endif
@endif
N° Facture : {{ $payment->invoice_number ?? $payment->reference }}
Date : {{ $payment->payment_date->format('d/m/Y') }}
@if($payment->due_date)
Échéance : {{ $payment->due_date->format('d/m/Y') }}
@endif
Détails de la facture
@if($payment->appointments && $payment->appointments->count() > 0) @foreach($payment->appointments as $appointment) @php // price_at_booking est le prix HT $priceHT = $appointment->price_at_booking; $vatAmount = $appointment->vat_rate > 0 ? ($priceHT * $appointment->vat_rate / 100) : 0; $priceTTC = round($priceHT + $vatAmount, 2); @endphp @endforeach @else @endif
Description Quantité HT ({{ $payment->currency }}) % TVA TVA ({{ $payment->currency }}) Montant TTC ({{ $payment->currency }})
{{ $appointment->service->name ?? 'Service' }}
{{ $appointment->start_time->format('d/m/Y') }}
{{ $appointment->start_time->format('H:i') }} - {{ $appointment->end_time ? $appointment->end_time->format('H:i') : $appointment->start_time->addHour()->format('H:i') }}
@php $duration = $appointment->end_time ? $appointment->start_time->diffInMinutes($appointment->end_time) : 60; $hours = floor($duration / 60); $minutes = $duration % 60; @endphp {{ $hours }}h{{ $minutes > 0 ? str_pad($minutes, 2, '0', STR_PAD_LEFT) : '' }} {{ format_currency($priceHT) }} {{ number_format($appointment->vat_rate, 0) }}% {{ format_currency($vatAmount) }} {{ format_currency($priceTTC) }}
Prestation de service - {{ format_currency($payment->amount) }} 0% 0,00 {{ format_currency($payment->amount) }}
@php // Calculer le total HT, TVA et TTC depuis les lignes du tableau $totalHT = 0; $totalVAT = 0; $totalTTC = 0; $vatByRate = []; if($payment->appointments && $payment->appointments->count() > 0) { foreach($payment->appointments as $appointment) { // price_at_booking est le prix HT $priceHT = $appointment->price_at_booking; $vatAmount = $appointment->vat_rate > 0 ? ($priceHT * $appointment->vat_rate / 100) : 0; $priceTTC = round($priceHT + $vatAmount, 2); $totalHT += $priceHT; $totalVAT += $vatAmount; $totalTTC += $priceTTC; // Grouper par taux de TVA $rate = $appointment->vat_rate; if (!isset($vatByRate[$rate])) { $vatByRate[$rate] = ['base' => 0, 'amount' => 0]; } $vatByRate[$rate]['base'] += $priceHT; $vatByRate[$rate]['amount'] += $vatAmount; } } else { $totalHT = $payment->amount; $totalTTC = $payment->amount; } $vatTax = $payment->invoiceTaxes->where('is_vat_snapshot', true)->first(); $taxesBeforeVat = $payment->invoiceTaxes->where('is_vat_snapshot', false)->where('apply_before_vat_snapshot', true); $withholdingTaxes = $payment->invoiceTaxes->filter(function($t) { return $t->sign_snapshot === '-' && !$t->is_vat_snapshot && !$t->apply_before_vat_snapshot; }); $taxesAfterVat = $payment->invoiceTaxes->filter(function($t) use ($withholdingTaxes) { return !$t->is_vat_snapshot && !$t->apply_before_vat_snapshot && !$withholdingTaxes->contains('id', $t->id); }); @endphp
@if($totalVAT > 0)
Détail TVA
@foreach($vatByRate as $rate => $data) @endforeach
Taux Base HT Montant TVA
{{ number_format($rate, 0) }}% {{ format_currency($data['base']) }} {{ format_currency($data['amount']) }}
Total {{ format_currency($totalHT) }} {{ format_currency($totalVAT) }}
@endif
Totaux
@foreach($taxesBeforeVat as $tax) @endforeach @foreach($withholdingTaxes as $tax) @endforeach @foreach($taxesAfterVat as $tax) @endforeach
Total HT {{ format_currency($totalHT) }}
Total TVA {{ format_currency($totalVAT) }}
{{ $tax->label_snapshot ?? ucfirst(str_replace('_', ' ', $tax->name_snapshot)) }} @if($tax->type_snapshot === 'percent')({{ number_format($tax->value_snapshot, 2) }}%)@endif {{ $tax->sign_snapshot === '-' ? '-' : '' }}{{ format_currency($tax->amount_snapshot) }}
Total TTC {{ format_currency($payment->total_ttc) }}
{{ $tax->label_snapshot ?? ucfirst(str_replace('_', ' ', $tax->name_snapshot)) }} @if($tax->type_snapshot === 'percent')({{ number_format($tax->value_snapshot, 2) }}%)@endif {{ $tax->sign_snapshot === '-' ? '-' : '' }}{{ format_currency($tax->amount_snapshot) }}
{{ $tax->label_snapshot ?? ucfirst(str_replace('_', ' ', $tax->name_snapshot)) }} @if($tax->type_snapshot === 'percent')({{ number_format($tax->value_snapshot, 2) }}%)@endif {{ $tax->sign_snapshot === '-' ? '-' : '' }}{{ format_currency($tax->amount_snapshot) }}
NET À PAYER {{ format_currency($payment->net_amount) }}
Arrête la présente facture à la somme de :
{{ \App\Helpers\NumberToWordsHelper::convert($payment->net_amount) }}
@php $paymentMethods = $payment->invoicePayments ->where('payment_method', '!=', 'retenue_source') ->pluck('payment_method') ->unique() ->map(function($method) { return match($method) { 'cash' => 'Espèces', 'bank_transfer' => 'Virement', 'check' => 'Chèque', 'card' => 'Carte', default => ucfirst($method) }; }) ->join(', '); @endphp @if($provider->defaultBankAccount)
Coordonnées bancaires
Banque : {{ $provider->defaultBankAccount->name }}@if($provider->defaultBankAccount->reference) · Référence : {{ $provider->defaultBankAccount->reference }}@endif
@endif @if(!empty($billingSettings['invoice_footer']))
{!! nl2br(e($billingSettings['invoice_footer'])) !!}
@endif