Purchase Order
{{ $company->name ?? 'COMPANY NAME' }}
@if($company->tagline)
{{ $company->tagline }}
@endif
@if($company->address) @endif @if($company->city) @endif @if($company->vat_number) @endif @if($company->phone) @endif @if($company->email && stripos($company->email, 'sage-migration.local') === false) @endif @if($company->fax) @endif
Address: {{ $company->address }}
City: {{ $company->city }}
VAT Number: {{ $company->vat_number }}
Phone: {{ $company->phone }}
Email: {{ $company->email }}
Fax: {{ $company->fax }}

Purchase Order Details

PO Number: {{ $purchaseOrder->po_number ?? 'N/A' }}

Order Date: {{ $purchaseOrder->order_date ? $company->formatLocalizedDate($purchaseOrder->order_date) : $company->formatLocalizedDate(now()) }}

@if($purchaseOrder->expected_delivery_date)

Expected Delivery: {{ $company->formatLocalizedDate($purchaseOrder->expected_delivery_date) }}

@endif

Status: {{ ucfirst($purchaseOrder->status ?? 'Draft') }}

Supplier:

{{ $purchaseOrder->supplier->name ?? 'SUPPLIER NAME' }}

@if($purchaseOrder->supplier->address)

{{ $purchaseOrder->supplier->address }}

@endif @if($purchaseOrder->supplier->city)

{{ $purchaseOrder->supplier->city }}

@endif @if($purchaseOrder->supplier->postal_code)

{{ $purchaseOrder->supplier->postal_code }}

@endif @if($purchaseOrder->supplier->phone)

Phone: {{ $purchaseOrder->supplier->phone }}

@endif @if($purchaseOrder->supplier->email && stripos($purchaseOrder->supplier->email, 'sage-migration.local') === false)

Email: {{ $purchaseOrder->supplier->email }}

@endif

Delivery Information

@if($purchaseOrder->expected_delivery_date)

Expected: {{ $company->formatLocalizedDate($purchaseOrder->expected_delivery_date) }}

@endif @if($purchaseOrder->received_date)

Received: {{ $company->formatLocalizedDate($purchaseOrder->received_date) }}

@endif
@php $lineGroups = $purchaseOrder->lineGroups ?? collect(); $items = ($purchaseOrder->items ?? collect())->filter(function ($item) { return strtolower(trim((string) ($item->description ?? ''))) !== 'rounding adjustment'; }); $resolvedGroups = collect(); $renderedItemIds = collect(); foreach ($lineGroups->sortBy('sort_order') as $group) { $groupItems = $items->where('line_group_id', $group->id); if ($groupItems->isNotEmpty()) { $resolvedGroups->push((object) [ 'name' => $group->name, 'items' => $groupItems, ]); $renderedItemIds = $renderedItemIds->merge($groupItems->pluck('id')); } } $ungroupedItems = $items->filter(function ($item) use ($renderedItemIds) { return !$renderedItemIds->contains($item->id); }); if ($resolvedGroups->isEmpty() && $items->isNotEmpty()) { $resolvedGroups->push((object) [ 'name' => 'Items', 'items' => $items, ]); } elseif ($ungroupedItems->isNotEmpty()) { $resolvedGroups->push((object) [ 'name' => 'Items', 'items' => $ungroupedItems, ]); } @endphp @foreach($resolvedGroups as $group) @if($group->name) @endif @foreach($group->items->sortBy('id') as $item) @endforeach @endforeach
Item Description QTY Price (Ex) Tax Total (Excl)
{{ $group->name }}
{{ $item->description ?? $item->product->name ?? 'Item Description' }}{{ ($item->product && ($item->product->sku ?? $item->product->barcode)) ? ' (' . ($item->product->sku ?? $item->product->barcode) . ')' : '' }} {{ $company->formatNumber($item->quantity ?? 0, 2) }} {{ $company->formatCurrencyZar($item->unit_cost ?? 0) }} @if($item->taxRate) {{ $company->formatCurrencyZar($item->tax_amount ?? 0) }} @else — @endif {{ $company->formatCurrencyZar($item->total ?? 0) }}
@php $roundingAdjustment = ($purchaseOrder->items ?? collect())->reduce(function ($sum, $item) { $description = strtolower(trim((string) ($item->description ?? ''))); if ($description !== 'rounding adjustment') { return $sum; } $lineTotal = (float) ($item->total ?? (($item->quantity ?? 0) * ($item->unit_cost ?? 0))); return $sum + $lineTotal; }, 0.0); @endphp
Subtotal: {{ $company->formatCurrencyZar($purchaseOrder->subtotal ?? 0) }}
@if(($purchaseOrder->tax_amount ?? 0) > 0)
Tax: {{ $company->formatCurrencyZar($purchaseOrder->tax_amount) }}
@endif @if(abs($roundingAdjustment) > 0.0001)
Rounding Adjustment: {{ $company->formatCurrencyZar($roundingAdjustment) }}
@endif
Total: {{ $company->formatCurrencyZar($purchaseOrder->total ?? 0) }}
@if($purchaseOrder->notes || $purchaseOrder->terms)
@if($purchaseOrder->notes)

Notes:

{{ $purchaseOrder->notes }}

@endif @if($purchaseOrder->terms)

Terms & Conditions:

{{ $purchaseOrder->terms }}

@endif
@endif