{{ __('Invoice') }} {{ $invoice->invoice_type->label() }} #{{ formatDocumentNumber($invoice->number ?? $invoice->id) }} - {{ $invoice->title }}

{{ __('Issued on :date', ['date' => $invoice->date ? formatDate($invoice->date) : __('Unknown')]) }}

{{ $invoice->invoice_type->label() }} {{ $invoice->status->label() }}
{{ __('Subtotal') }} ({{ config('amir.currency') ?? __('Rial') }})
{{ formatNumber($invoice->items->reduce(fn($carry, $item) => $carry + ($item->quantity ?? 0) * ($item->unit_price ?? 0), 0)) }}
{{ __('Before discounts and tax') }}
{{ __('Discounts') }} ({{ config('amir.currency') ?? __('Rial') }})
{{ formatNumber($invoice->items->reduce(fn($carry, $item) => $carry + ($item->unit_discount ?? 0), 0)) }}
{{ __('Total deductions') }}
{{ __('VAT') }} ({{ config('amir.currency') ?? __('Rial') }})
{{ formatNumber($invoice->items->reduce(fn($carry, $item) => $carry + ($item->vat ?? 0), 0)) }}
{{ __('Collected tax') }}
{{ __('Grand total') }} ({{ config('amir.currency') ?? __('Rial') }})
{{ formatNumber(($invoice->amount ?? 0) - ($invoice->subtraction ?? 0)) }}
{{ __('Payable amount') }}
@if ($changeStatusValidation->hasErrors() || $changeStatusValidation->hasWarning())
@endif
@if ($invoice->description)
{{ __('Notes') }}
{{ $invoice->description }}
@endif
{{ __('Customer Details') }}
@if ($invoice->customer)

{{ __('Customer') }}

{{ $invoice->customer->name }}

{{ __('Phone') }}

{{ $invoice->customer->phone ? convertToFarsi($invoice->customer->phone) : '—' }}

{{ __('Economic code') }}

{{ $invoice->customer->ecnmcs_code ? convertToFarsi($invoice->customer->ecnmcs_code) : '—' }}

{{ __('Postal code') }}

{{ $invoice->customer->postal_code ? convertToFarsi($invoice->customer->postal_code) : '—' }}

{{ __('Address') }}

{{ $invoice->customer->address ?: '—' }}

@else
{{ __('No customer is attached to this invoice.') }}
@endif
{{ __('Items') }}
@forelse ($invoice->items as $index => $item) @empty @endforelse
# {{ $invoice->invoice_type == App\Enums\InvoiceType::BUY ? __('Product') : __('Product/Service') }} {{ __('Description') }} {{ __('Quantity') }} {{ __('Unit price') }} {{ __('Discount') }} {{ __('VAT') }} {{ __('Total') }}
{{ convertToFarsi($index + 1) }} @if ($item->itemable) {{ $item->itemable->name }} @else {{ __('Removed product/service') }} @endif {{ $item->description }} {{ formatNumber($item->quantity ?? 0) }} {{ formatNumber($item->unit_price ?? 0) }} {{ formatNumber($item->unit_discount ?? 0) }} {{ formatNumber($item->vat ?? 0) }} {{ formatNumber(($item->quantity ?? 0) * ($item->unit_price ?? 0) - ($item->unit_discount ?? 0) + ($item->vat ?? 0)) }}
{{ __('There are no items on this invoice yet.') }}
{{ __('Total items: :count', ['count' => convertToFarsi($invoice->items->count())]) }}
@if ($invoice->invoice_type === App\Enums\InvoiceType::BUY)
{{ __('Ancillary Costs') }}
@if ($invoice->ancillaryCosts->isNotEmpty())
@foreach ($invoice->ancillaryCosts as $ancillaryCost) @endforeach
{{ __('Doc Number') }} {{ __('Cost Type') }} {{ __('Status') }} {{ __('Amount') }} {{ __('VAT') }} {{ __('Total') }} {{ __('Action') }}
{{ formatDocumentNumber($ancillaryCost->document?->number ?? ($ancillaryCost->document_id ?? ($ancillaryCost->number ?? $ancillaryCost->id))) }} {{ $ancillaryCost->type?->label() ?? '—' }} {{ $ancillaryCost->status?->label() ?? '—' }} {{ formatNumber((float) ($ancillaryCost->amount ?? 0) - (float) ($ancillaryCost->vat ?? 0)) }} {{ formatNumber((float) ($ancillaryCost->vat ?? 0)) }} {{ formatNumber((float) ($ancillaryCost->amount ?? 0)) }} @php $ancillaryChangeStatusValidation = \App\Services\AncillaryCostService::getChangeStatusValidation( $ancillaryCost, ); $ancillaryEditDeleteStatus = \App\Services\AncillaryCostService::getEditDeleteStatus( $ancillaryCost, ); @endphp
@can('ancillary-costs.approve') @if ($ancillaryChangeStatusValidation['allowed'] ?? false) {{ __($ancillaryCost->status?->isApproved() ? 'Unapprove' : 'Approve') }} @else @endif @endcan @if ( !empty($ancillaryEditDeleteStatus) && ($ancillaryEditDeleteStatus['allowed'] ?? false) && !$ancillaryCost->status?->isApproved()) @can('ancillary-costs.edit') {{ __('Edit') }} @endcan @can('ancillary-costs.delete')
@csrf @method('DELETE')
@endcan @elseif (!empty($ancillaryEditDeleteStatus) && !($ancillaryEditDeleteStatus['allowed'] ?? true)) @else @endif
@else
{{ __('No ancillary costs are attached to this invoice.') }}
@endif @can('ancillary-costs.create') @endcan @endif
{{ __('Back') }}
@php $canApprove = $invoice->status->isReadyToApprove() || $invoice->status->isUnapproved() || $invoice->status->isApprovedInactive(); $canUnapprove = $invoice->status->isApproved(); $canChangeStatus = $canApprove || $canUnapprove; @endphp {{ __('Print PDF') }} @can('invoices.approve') @if ($invoice->status->isPreInvoice() || $invoice->status->isRejected()) {{ __('Ready to approve') }} @endif @if ($invoice->status->isPreInvoice()) {{ __('Reject') }} @endif @if ($canChangeStatus) @if ($canApprove && $changeStatusValidation->hasErrors()) {{ __('Fix Conflict') }} @else hasWarning()) @click.prevent="if (confirm(@js('Did you read the warnings?'))) { window.location.href = '{{ route('invoices.change-status', [$invoice, $canUnapprove ? 'unapproved' : 'approved']) }}?confirm=1' }" @endif data-tip="{{ $changeStatusValidation->toText() ?? '' }}" href="{{ route('invoices.change-status', [$invoice, $canUnapprove ? 'unapproved' : 'approved']) }}" class="btn btn-primary gap-2 {{ $canUnapprove ? 'btn-warning' : 'btn-success' }} {{ $canApprove && $changeStatusValidation->hasWarning() ? ' btn-outline ' : '' }}"> {{ $canUnapprove ? __('Unapprove') : __('Approve') }} @endif @endif @endcan @if (!$invoice->status->isApproved()) {{ __('Edit invoice') }} @else @endif @if ($invoice->document) @can('documents.show') {{ formatDocumentNumber($invoice->document->number) }} @endcan @endif