@extends('layouts.dashboard') @section('title', trans('dashboard.inv_detail_title', ['number' => $invoice->invoice_number])) @section('header_title', trans('dashboard.invoice_details')) @php $typeValue = $invoice->type instanceof \App\Enums\InvoiceType ? $invoice->type->value : (string) $invoice->type; $isNote = in_array($typeValue, ['credit_note', 'debit_note'], true); $canIssueNotes = in_array($statusValue, ['cleared', 'reported'], true) && ! $isNote; $sellerAddress = array_filter([ $seller['street'], $seller['building'] ? trans('dashboard.building_number').' '.$seller['building'] : null, $seller['district'], $seller['city'], ]); $buyerAddress = array_filter([$buyer['street'], $buyer['city']]); $statusBadge = match ($statusValue) { 'cleared' => ['label' => trans('dashboard.cleared_by_zatca'), 'class' => 'text-emerald-700 dark:text-emerald-400', 'dot' => 'bg-emerald-600 dark:bg-emerald-400'], 'reported' => ['label' => trans('dashboard.reported_to_zatca'), 'class' => 'text-sky-700 dark:text-sky-400', 'dot' => 'bg-sky-600 dark:bg-sky-400'], 'rejected' => ['label' => trans('dashboard.rejected'), 'class' => 'text-rose-700 dark:text-rose-400', 'dot' => 'bg-rose-600 dark:bg-rose-400'], 'pending' => ['label' => trans('dashboard.pending'), 'class' => 'text-blue-700 dark:text-blue-400', 'dot' => 'bg-blue-600 dark:bg-blue-400 animate-pulse'], 'draft' => ['label' => trans('dashboard.draft'), 'class' => 'text-slate-600 dark:text-slate-400', 'dot' => 'bg-slate-500'], 'failed' => ['label' => trans('dashboard.failed'), 'class' => 'text-amber-700 dark:text-amber-400', 'dot' => 'bg-amber-600 dark:bg-amber-400'], 'cancelled' => ['label' => trans('dashboard.cancelled'), 'class' => 'text-slate-600 dark:text-slate-400', 'dot' => 'bg-slate-500'], default => ['label' => $invoice->status instanceof \App\Enums\InvoiceStatus ? $invoice->status->label() : trans('dashboard.no_data_available'), 'class' => 'text-amber-700 dark:text-amber-400', 'dot' => 'bg-amber-600 dark:bg-amber-400'], }; $toneClass = fn (string $tone) => match ($tone) { 'success' => 'bg-emerald-500', 'danger' => 'bg-red-500', default => 'bg-slate-600', }; $vatSummaryLabel = $vatRates->count() === 1 ? trans('dashboard.vat_with_rate', ['rate' => rtrim(rtrim(number_format((float) $vatRates->first(), 2, '.', ''), '0'), '.')]) : trans('dashboard.vat_amount'); @endphp @push('styles') @endpush @section('content')
{{ trans('dashboard.buyer') }}
{{ $buyer['name'] }}
@if($buyer['vat']){{ trans('dashboard.vat_registration_number') }}: {{ $buyer['vat'] }}
@endif @if($buyer['cr']){{ trans('dashboard.commercial_registration_number') }}: {{ $buyer['cr'] }}
@endif @if($buyerAddress){{ implode(' - ', $buyerAddress) }}
@endif @if($buyer['postal_code']){{ trans('dashboard.postal_code') }}: {{ $buyer['postal_code'] }}
@endif{{ trans('dashboard.seller') }}
{{ $seller['name'] }}
@if($seller['vat']){{ trans('dashboard.vat_registration_number') }}: {{ $seller['vat'] }}
@endif @if($seller['cr']){{ trans('dashboard.commercial_registration_number') }}: {{ $seller['cr'] }}
@endif @if($sellerAddress){{ implode(' - ', $sellerAddress) }}
@endif @if($seller['postal_code']){{ trans('dashboard.postal_code') }}: {{ $seller['postal_code'] }}
@endif| {{ trans('dashboard.description') }} | {{ trans('dashboard.quantity') }} | {{ trans('dashboard.unit_price') }} | {{ trans('dashboard.discount') }} | {{ trans('dashboard.taxable_amount') }} | {{ trans('dashboard.vat_rate') }} | {{ trans('dashboard.vat_amount') }} | {{ trans('dashboard.total_including_vat') }} |
|---|---|---|---|---|---|---|---|
| {{ $line['name'] }} | {{ $line['quantity'] }} | {{ number_format($line['unit_price'], 2) }} | {{ number_format($line['discount'], 2) }} | {{ number_format($line['taxable'], 2) }} | {{ number_format($line['vat_rate'], 0) }}% | {{ number_format($line['vat_amount'], 2) }} | {{ number_format($line['total'], 2) }} |
| {{ trans('dashboard.no_line_items') }} | |||||||
{{ trans('dashboard.no_data_available') }}
@else{{ $event['label'] }}
@if($event['at']){{ $event['at'] }}
@endif{{ trans('dashboard.no_related_documents') }}
@else