@extends('dashboard.layouts.app') @section('content') @include('components.alert') @php $isEdit = isset($purchase); $requestedOrderType = request('type') === 'purchase' || request('type') === 'po' ? 'purchase' : 'sale'; $initialInvoiceType = old('invoice_type', $purchase->invoice_type ?? $requestedOrderType); $initialPartyType = old('party_type', $purchase->party_type ?? ($initialInvoiceType === 'purchase' ? 'company' : 'student')); $initialPartyType = $initialPartyType === 'employee' ? 'staff' : $initialPartyType; $isSaleOrder = $initialInvoiceType === 'sale'; $isStudentSale = $isSaleOrder && $initialPartyType === 'student'; $linkedStudentInvoices = collect(); $linkedPurchaseInvoices = collect(); if ($isEdit) { $linkedStudentInvoices = $purchase->studentInvoices ->merge($purchase->details->pluck('studentInvoice')->filter()) ->when($purchase->studentInvoice, fn ($invoices) => $invoices->push($purchase->studentInvoice)) ->unique('id') ->values(); $linkedPurchaseInvoices = $purchase->purchaseInvoices->when( $purchase->purchaseInvoice, fn ($invoices) => $invoices->push($purchase->purchaseInvoice) )->unique('id')->values(); } $hasInvoice = $isEdit && ( $purchase->purchase_invoice_id || $purchase->student_invoice_id || $purchase->details->contains(fn ($detail) => !empty($detail->student_invoice_id)) || $linkedStudentInvoices->isNotEmpty() || $linkedPurchaseInvoices->isNotEmpty() ); $canAddOrderInvoice = $isEdit && $isSaleOrder && !$isStudentSale && !$hasInvoice && $linkedPurchaseInvoices->isEmpty(); $canAddPurchaseInvoice = $isEdit && !$isSaleOrder && !$hasInvoice && $linkedPurchaseInvoices->isEmpty(); $statusClass = $hasInvoice ? 'ui-pill--success' : 'ui-pill--warn'; $statusLabel = $hasInvoice ? 'Invoiced' : 'Pending'; $selectedStaffIds = old('staff_ids', $isEdit ? $purchase->requestedStaffs->pluck('id')->all() : []); $selectedVendorIds = old('vendor_ids', $isEdit ? $purchase->vendors->pluck('id')->all() : []); $selectedStaffPartyId = old('staff_party_id'); if (!$selectedStaffPartyId && $isEdit && $initialPartyType === 'staff') { $selectedStaffPartyId = ($staffs ?? collect())->first(function ($staff) use ($purchase) { $staffName = trim((string) ($staff->full_name ?: trim(($staff->first_name ?? '') . ' ' . ($staff->last_name ?? '')))); return $staffName !== '' && $staffName === trim((string) $purchase->name); })?->id; } $oldDetails = old('details', $isEdit ? $purchase->details->map(fn ($detail) => [ 'product_name' => $detail->product_name, 'category_name' => $detail->category_name, 'booking_id' => $detail->booking_id, 'course_id' => $detail->course_id, 'serial_number' => $detail->serial_number, 'part_no' => $detail->part_no, 'price' => $detail->price, 'quantity' => $detail->quantity, 'tax_rate' => $detail->tax_rate, ])->all() : [ ['product_name' => '', 'price' => '', 'quantity' => 1, 'tax_rate' => 14], ['product_name' => '', 'price' => '', 'quantity' => 1, 'tax_rate' => 14], ]); $selectedBookingIds = collect($oldDetails)->pluck('booking_id')->filter()->values()->all(); $backRoute = $initialInvoiceType === 'purchase' ? route('purchase.orders.index') : route('purchase.index'); $backLabel = $initialInvoiceType === 'purchase' ? 'Back to Purchase Orders' : 'Back to Sales Orders'; @endphp
{{ $purchase->purchase_number ?? ($initialInvoiceType === 'purchase' ? 'PO-DRAFT' : 'SO-DRAFT') }}