{{-- resources/views/reservation_auberge/receipt.blade.php --}} @extends('layouts.app') @section('styles') @endsection @section('content') @php // Fonction de secours si trans_field n'existe pas if (!function_exists('trans_field')) { function trans_field($object, $fieldName, $default = null) { if (!$object) { return $default ?? 'N/A'; } // Si c'est un tableau, le convertir en objet if (is_array($object)) { $object = (object) $object; } // Si ce n'est pas un objet, retourner la valeur telle quelle if (!is_object($object)) { return $object; } $locale = app()->getLocale(); // Essayer d'abord le champ spécifique à la langue $localizedField = $fieldName . '_' . $locale; if (isset($object->{$localizedField}) && !empty($object->{$localizedField})) { return $object->{$localizedField}; } // Essayer le champ par défaut if (isset($object->{$fieldName}) && !empty($object->{$fieldName})) { return $object->{$fieldName}; } // Essayer les autres langues $otherLanguages = ['fr', 'ar', 'en']; foreach ($otherLanguages as $lang) { $otherField = $fieldName . '_' . $lang; if (isset($object->{$otherField}) && !empty($object->{$otherField})) { return $object->{$otherField}; } } return $default ?? 'N/A'; } } // Fonction safe pour afficher les valeurs function safe_value($value, $default = 'N/A') { if (is_array($value)) { return json_encode($value); } if (is_object($value) && method_exists($value, '__toString')) { return $value->__toString(); } if (is_object($value)) { return json_encode($value); } if (empty($value) && $value !== 0 && $value !== '0') { return $default; } return $value; } @endphp

{{ __('site.reservation.republic') }}

{{ __('site.reservation.ministry') }}

{{ __('site.reservation.department') }}

{{ __('site.reservation.official_receipt') }}

{{ __('site.reservation.accommodation_reservation') }}

{{ __('site.reservation.issued_on') }}: {{ date('d/m/Y') }} | {{ __('site.reservation.receipt_number') }}: {{ safe_value($reservation->id_reserv ?? '') }}

{{ __('site.reservation.institution_info') }}

{{ __('site.reservation.auberge_name') }}: {{ trans_field($reservation->auberge ?? null, 'nom', 'N/A') }}
{{ __('site.reservation.reservation_id') }}: {{ safe_value($reservation->id_reserv ?? '') }}
{{ __('site.reservation.reservation_date') }}: {{ $reservation->date_reserv ? \Carbon\Carbon::parse($reservation->date_reserv)->format('d/m/Y') : 'N/A' }}

{{ __('site.reservation.client_info') }}

{{ __('site.reservation.client_name') }}: {{ safe_value($reservation->nom_prenom ?? '') }}
{{ __('site.reservation.client_email') }}: {{ safe_value($reservation->email ?? '') }}
{{ __('site.reservation.client_phone') }}: {{ safe_value($reservation->telephone ?? '') }}

{{ __('site.reservation.stay_period') }}

{{ __('site.reservation.arrival_date') }}
{{ $reservation->date_arrive ? \Carbon\Carbon::parse($reservation->date_arrive)->format('d/m/Y') : 'N/A' }}
{{ __('site.reservation.departure_date') }}
{{ $reservation->date_depart ? \Carbon\Carbon::parse($reservation->date_depart)->format('d/m/Y') : 'N/A' }}
{{ __('site.reservation.duration') }}
{{ $nbrNuits ?? 0 }} {{ __('site.reservation.nights') }}

{{ __('site.reservation.occupancy_details') }} {{ $totalPersons ?? 0 }} {{ __('site.reservation.persons') }}

@if(isset($reservation->reservationPersons) && count($reservation->reservationPersons) > 0)
@php $grandTotal = 0; @endphp @foreach($reservation->reservationPersons as $person) @php $nbrTotal = (intval($person->nbr_hommes ?? 0)) + (intval($person->nbr_femmes ?? 0)); $subtotal = floatval($person->subtotal ?? 0); $grandTotal += $subtotal; @endphp @endforeach
{{ __('site.reservation.category') }} {{ __('site.reservation.accomodation') }} {{ __('site.reservation.men') }} {{ __('site.reservation.women') }} {{ __('site.reservation.total') }} {{ __('site.reservation.rate') }} {{ __('site.reservation.amount') }}
@if($person->typeTarif ?? false) {{ trans_field($person->typeTarif, 'type', '-') }} @else - @endif @if(($person->accomodation_type ?? '') == 'chambre') {{ __('site.reservation.room') }} @else {{ __('site.reservation.tent') }} @endif {{ $person->nbr_hommes ?? 0 }} {{ $person->nbr_femmes ?? 0 }} {{ $nbrTotal }} {{ number_format(floatval($person->tarif ?? 0), 3) }} {{ __('site.currency') }} {{ number_format($subtotal, 3) }} {{ __('site.currency') }}
{{ __('site.reservation.total') }}: {{ $totalPersons ?? 0 }} {{ number_format($grandTotal, 3) }} {{ __('site.currency') }}
@else

{{ __('site.reservation.no_persons_data') }}

@endif
@if(isset($reservation->restaurations) && count($reservation->restaurations) > 0)

{{ __('site.reservation.additional_services') }}

@foreach($reservation->restaurations as $resto)
{{ trans_field($resto, 'nom', 'Service') }}
{{ trans_field($resto, 'description', '') }}
{{ number_format(floatval($resto->tarif ?? 0), 3) }} {{ __('site.currency') }}/pers/nuit
@endforeach
@endif

{{ __('site.reservation.financial_summary') }}

{{ __('site.reservation.accommodation_total') }} (×{{ $totalPersons ?? 0 }} pers): {{ number_format(floatval($totalTarif ?? 0), 3) }} {{ __('site.currency') }}
{{ __('site.reservation.nights_count') }}: {{ $nbrNuits ?? 0 }} {{ __('site.reservation.nights') }}
{{ __('site.reservation.total_accommodation') }}: {{ number_format(floatval(($totalTarif ?? 0) * ($nbrNuits ?? 0)), 3) }} {{ __('site.currency') }}
{{ __('site.reservation.total_amount') }}
{{ number_format(floatval($reservation->total_price ?? 0), 3) }}
{{ __('site.reservation.tunisian_dinar') }}
@if(!empty($reservation->remarque))

{{ __('site.reservation.additional_notes') }}

{{ safe_value($reservation->remarque) }}
@endif
{{ __('site.reservation.official_stamp') }}
{{ __('site.reservation.director_signature') }}
{{ trans_field($reservation->auberge ?? null, 'nom', 'N/A') }}
@endsection @section('scripts') @endsection