@php /* * PAGE SIZING * --------------------------------------------------------------- * @page margin is 0 on all four sides. All visual breathing room * comes from each component's own padding (topband, party-card, * items-table cells, etc.), same as the preview. * * Keep the CSS page size aligned with the controller's * setPaper([0, 0, 1000, 842]) call so Dompdf has one consistent * page geometry. The footer/page counter is added by the controller. * * The footer uses `position: fixed; bottom: 0` so it repeats on * every page and the "Page X of Y" counters resolve — dompdf * anchors that to the bottom of the content box, so a non-zero * margin-bottom was leaving a gap between the footer and the * true page edge instead of reserving room above it as intended. * With margin at 0 the footer now sits flush at the true bottom; * the equivalent reserved space (so the last section doesn't * render underneath it) now lives as padding-bottom on that * section's own wrapper div instead — see BANK DETAILS + NOTES * below. * * Height stays content-based so short invoices don't carry a * full-page's worth of blank space before the footer; see the * note at the bottom of this file if a real invoice overflows. */ // Must match Pdf::setPaper([0, 0, 1000, 842]) in the download controller. $pageWidth = 1000; $pageHeight = 842; @endphp {{-- The external stylesheet link has been removed on purpose. Given the original template's utility-class names (px-14, text-slate-400, etc.) that file is almost certainly a Tailwind build, and Tailwind's base reset strips default
|
@if ($hasLogo)
{{ optional($invoice->fromUser)->full_name }}
IT Support & Digital Solutions
@else
Engineer’s Invoice
Professional IT Services
@endif
|
{{-- CENTER: INVOICE --}}
INVOICE
|
{{-- RIGHT: Invoice Date / Invoice Number --}}
|
|
Billed From
{{ optional($invoice->fromUser)->full_name ?? '-' }} @if ($isCompanyAccount)Siren: 101923894 Intra-Community VAT: FR49101923894 @endif{{ optional($invoice->fromUser->latestLocation)->address_line ?? '' }} {{ optional($invoice->fromUser->latestLocation)->postal_code ?? '' }} {{ optional($invoice->fromUser->latestLocation)->city ?? '' }} {{ optional($invoice->fromUser->latestLocation)->country ?? '' }} |
Billed To
{{ optional($invoice->toUser)->company_name ?? '-' }} Company Registration: VAT Number: {{ optional($invoice->toUser->latestLocation)->address_line ?? '' }} {{ optional($invoice->toUser->latestLocation)->postal_code ?? '' }} {{ optional($invoice->toUser->latestLocation)->city ?? '' }} {{ optional($invoice->toUser->latestLocation)->country ?? '' }} |
| # | Date | Ticket | @if ($showTechs)Techs | @endifTitle | Hours | Cost | @if ($showTravel)Travel | @endif @if ($showConsumables)Consumable | @endif @if ($showParking)Parking | @endifTotal |
|---|---|---|---|---|---|---|---|---|---|---|
| {{ $index + 1 }} | {{ $ticket->intervention_date ? $ticket->intervention_date->format('d M Y') : 'N/A' }} | {{ $ticket->ticket_number }} | @if ($showTechs){{ $numEngineers }} | @endif{{ $ticket->ticket_title }} | {{ number_format($ticket->paid_hours, 2) }} | €{{ number_format($ticket->work_cost, 2) }} | @if ($showTravel)€{{ number_format($ticket->travel_cost, 2) }} | @endif @if ($showConsumables)€{{ number_format($ticket->company_consumables, 2) }} | @endif @if ($showParking)€{{ number_format($ticket->parking_cost, 2) }} | @endif€{{ number_format($sub_total, 2) }} |
|
|
Payment Details
@if ($invoice->fromUser && $invoice->bank)
No bank details available for the invoice sender. @endif |
Notes & Terms
|