diff --git a/app/Http/Controllers/Purchase/PurchasePipelineController.php b/app/Http/Controllers/Purchase/PurchasePipelineController.php index dcfc2f0..1524fe2 100644 --- a/app/Http/Controllers/Purchase/PurchasePipelineController.php +++ b/app/Http/Controllers/Purchase/PurchasePipelineController.php @@ -35,7 +35,8 @@ class PurchasePipelineController extends Controller 'items', 'signature.signedBy', 'rfqInvitations.supplier', - 'supplierQuotes', + 'supplierQuotes.supplier', + 'supplierQuotes.items', 'awardedQuote.supplier', ]); diff --git a/public/favicon.svg b/public/favicon.svg new file mode 100644 index 0000000..a3f469d --- /dev/null +++ b/public/favicon.svg @@ -0,0 +1,5 @@ + + + + S + diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index 09c4366..1286f57 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -4,7 +4,9 @@ - @yield('title', 'Dashboard') — SteelERP + SteelERP @hasSection('title') — @yield('title') @endif + + @vite(['resources/css/app.css', 'resources/js/app.js']) @@ -561,7 +563,7 @@ document.addEventListener('keydown', function(e) { empty.style.display = 'none'; var html = ''; data.items.forEach(function(n) { - html += ''; + html += ''; html += '
' + n.message + '
'; html += '
' + n.ago + '
'; html += '
'; diff --git a/resources/views/layouts/guest.blade.php b/resources/views/layouts/guest.blade.php index 11feb47..9b8ec3e 100644 --- a/resources/views/layouts/guest.blade.php +++ b/resources/views/layouts/guest.blade.php @@ -5,7 +5,9 @@ - {{ config('app.name', 'Laravel') }} + SteelERP + + diff --git a/resources/views/purchase/pipeline/show.blade.php b/resources/views/purchase/pipeline/show.blade.php index 3da3233..2d18286 100644 --- a/resources/views/purchase/pipeline/show.blade.php +++ b/resources/views/purchase/pipeline/show.blade.php @@ -300,23 +300,39 @@ Quotes ({{ $pr->supplierQuotes->count() }})
+ @php $minTotal = $pr->supplierQuotes->min('total_amount'); @endphp @foreach($pr->supplierQuotes->sortBy('total_amount') as $quote) -
-
{{ $quote->supplier->name }}
-
- {{ number_format($quote->total_amount, 2) }} + @php $isLowest = !$quote->is_awarded && $pr->supplierQuotes->count() > 1 && (float)$quote->total_amount === (float)$minTotal; @endphp +
+
+
{{ $quote->supplier->name }}
+ @if($isLowest) +
LOWEST
+ @endif +
+
+
+ BD {{ number_format($quote->total_amount, 3) }} +
@if($quote->is_awarded) - Awarded + + @else + + + @endif
@endforeach
- - View All Quotes → + + Compare All Quotes →
@endif @@ -401,6 +417,202 @@ +{{-- ============================================================ + QUOTE DETAIL MODAL + ============================================================ --}} + + +@php +$quoteDataForJs = $pr->supplierQuotes->keyBy('id')->map(function($q) { + return [ + 'id' => $q->id, + 'supplier' => $q->supplier->name, + 'total' => number_format($q->total_amount, 3), + 'isAwarded' => (bool)$q->is_awarded, + 'leadTime' => $q->lead_time_days !== null ? $q->lead_time_days . ' days' : null, + 'paymentTerms'=> $q->payment_terms, + 'notes' => $q->notes, + 'submittedAt' => $q->submitted_at->format('d M Y, H:i'), + 'items' => $q->items->map(function($i) { + return [ + 'description' => $i->description, + 'supplierDescription' => $i->supplier_description, + 'quantity' => $i->quantity, + 'unit' => $i->unit, + 'unitPrice' => number_format($i->unit_price, 3), + 'totalPrice' => number_format($i->total_price, 3), + 'isVatable' => (bool)$i->is_vatable, + 'notAvailable' => (bool)$i->not_available, + ]; + })->values(), + ]; +}); +@endphp + + +