Added locator invoice validation livewire page and table
This commit is contained in:
56
app/Livewire/LocatorInvoiceDataTable.php
Normal file
56
app/Livewire/LocatorInvoiceDataTable.php
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Livewire;
|
||||||
|
|
||||||
|
use App\Models\LocatorInvoiceValidation;
|
||||||
|
use Livewire\Component;
|
||||||
|
|
||||||
|
class LocatorInvoiceDataTable extends Component
|
||||||
|
{
|
||||||
|
public $plantId;
|
||||||
|
|
||||||
|
public $invoiceNumber;
|
||||||
|
|
||||||
|
public $records = [];
|
||||||
|
public bool $showRemoveSerialsModal = false;
|
||||||
|
|
||||||
|
public $matchedSerialNumbersForRemoval;
|
||||||
|
|
||||||
|
protected $listeners = [
|
||||||
|
'loadData' => 'loadlocatorInvoiceData',
|
||||||
|
];
|
||||||
|
|
||||||
|
public function loadlocatorInvoiceData($invoiceNumber, $plantId)
|
||||||
|
{
|
||||||
|
$this->plantId = $plantId;
|
||||||
|
$this->invoiceNumber = $invoiceNumber;
|
||||||
|
|
||||||
|
$this->records = LocatorInvoiceValidation::query()
|
||||||
|
->where('plant_id', $plantId)
|
||||||
|
->where('invoice_number', $invoiceNumber)
|
||||||
|
->where(function ($query) {
|
||||||
|
$query->where('scanned_status', '=', '')
|
||||||
|
->orWhereNull('scanned_status');
|
||||||
|
})
|
||||||
|
->orderBy('created_at', 'asc')
|
||||||
|
// ->orderByDesc('created_at')
|
||||||
|
->get()
|
||||||
|
->map(function ($record) {
|
||||||
|
return [
|
||||||
|
'created_at' => $record->created_at,
|
||||||
|
'created_by' => $record->created_by ?? '',
|
||||||
|
'serial_number' => $record->serial_number,
|
||||||
|
'pallet_number' => $record->pallet_number,
|
||||||
|
'locator_number' => $record->locator_number,
|
||||||
|
'scanned_status' => $record->scanned_status,
|
||||||
|
'scanned_at' => $record->scanned_at,
|
||||||
|
'scanned_by' => $record->scanned_by ?? '',
|
||||||
|
];
|
||||||
|
})
|
||||||
|
->toArray();
|
||||||
|
}
|
||||||
|
public function render()
|
||||||
|
{
|
||||||
|
return view('livewire.locator-invoice-data-table');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,84 @@
|
|||||||
|
{{-- <x-filament::page>
|
||||||
|
|
||||||
|
<form wire:submit.prevent="create" class="space-y-6">
|
||||||
|
{{-- Form Section --}}
|
||||||
|
{{-- <div class="filament-form space-y-6">
|
||||||
|
{{ $this->form }}
|
||||||
|
</div> --}}
|
||||||
|
|
||||||
|
{{-- Livewire Component (Invoice Table) --}}
|
||||||
|
{{-- <div class="bg-white shadow rounded-xl p-4">
|
||||||
|
<livewire:locator-invoice-data-table />
|
||||||
|
</div> --}}
|
||||||
|
|
||||||
|
{{-- Heading after Livewire component (optional) --}}
|
||||||
|
{{-- <h2>hello</h2> --}}
|
||||||
|
|
||||||
|
{{-- Actions --}}
|
||||||
|
{{-- <div class="filament-actions mt-6">
|
||||||
|
<x-filament::actions>
|
||||||
|
@foreach ($this->getFormActions() as $action)
|
||||||
|
{{ $action }}
|
||||||
|
@endforeach
|
||||||
|
</x-filament::actions>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
</x-filament::page> --}}
|
||||||
|
|
||||||
|
<!-- Test button to manually trigger the modal -->
|
||||||
|
|
||||||
|
<x-filament::page>
|
||||||
|
|
||||||
|
<form wire:submit.prevent="create" class="space-y-6">
|
||||||
|
{{-- Form Section --}}
|
||||||
|
<div class="filament-form space-y-6">
|
||||||
|
{{ $this->form }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{-- Livewire Component (Invoice Table) --}}
|
||||||
|
<div class="bg-white shadow rounded-xl p-4">
|
||||||
|
<livewire:locator-invoice-data-table />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{-- Actions --}}
|
||||||
|
<div class="filament-actions mt-6">
|
||||||
|
<x-filament::actions>
|
||||||
|
@foreach ($this->getFormActions() as $action)
|
||||||
|
{{ $action }}
|
||||||
|
@endforeach
|
||||||
|
</x-filament::actions>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
{{-- Modal for removing matched serials --}}
|
||||||
|
<x-filament::modal wire:model="showRemoveSerialsModal">
|
||||||
|
|
||||||
|
<h1>hello</h1>
|
||||||
|
<x-slot name="title">
|
||||||
|
Remove Matched Serials from Pallet Validation?
|
||||||
|
</x-slot>
|
||||||
|
<x-slot name="content">
|
||||||
|
<div style="color: red; font-weight: bold;">
|
||||||
|
<!-- TEMPORARY INDICATOR -->
|
||||||
|
MODAL IS OPENED!
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<p>The following serial numbers exist in both tables and will be removed from Pallet Validation if you proceed:</p>
|
||||||
|
<ul>
|
||||||
|
@foreach ($matchedSerialNumbersForRemoval as $serial)
|
||||||
|
<li>{{ $serial }}</li>
|
||||||
|
@endforeach
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</x-slot>
|
||||||
|
<x-slot name="footer">
|
||||||
|
<x-filament::button wire:click="removeMatchedSerials" color="danger">
|
||||||
|
Yes, Remove
|
||||||
|
</x-filament::button>
|
||||||
|
<x-filament::button wire:click="$set('showRemoveSerialsModal', false)">
|
||||||
|
No, Cancel
|
||||||
|
</x-filament::button>
|
||||||
|
</x-slot>
|
||||||
|
</x-filament::modal>
|
||||||
|
</x-filament::page>
|
||||||
|
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
<div class="p-4">
|
||||||
|
<h2 class="text-lg font-bold mb-4 text-gray-700 uppercase tracking-wider">
|
||||||
|
INVOICE DATA TABLE:
|
||||||
|
</h2>
|
||||||
|
<div class="overflow-x-auto rounded-lg shadow">
|
||||||
|
<table class="w-full divide-y divide-gray-200 text-sm text-center">
|
||||||
|
<thead class="bg-gray-100 text-s font-semibold uppercase text-gray-700">
|
||||||
|
<tr>
|
||||||
|
<th class="border px-4 py-2">No</th>
|
||||||
|
<th class="border px-4 py-2">Created Datetime</th>
|
||||||
|
<th class="border px-4 py-2">Created By</th>
|
||||||
|
<th class="border px-4 py-2">Serial Number</th>
|
||||||
|
<th class="border px-4 py-2">Pallet Number</th>
|
||||||
|
<th class="border px-4 py-2">Locator Number</th>
|
||||||
|
<th class="border px-4 py-2">Scanned Status</th>
|
||||||
|
<th class="border px-4 py-2">Scanned Datetime</th>
|
||||||
|
<th class="border px-4 py-2">Scanned By</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody class="divide-y divide-gray-100">
|
||||||
|
@forelse ($records as $index => $record)
|
||||||
|
<tr class="hover:bg-gray-50">
|
||||||
|
<td class="border px-4 py-2">{{ $index + 1 }}</td>
|
||||||
|
<td class="border px-4 py-2 whitespace-nowrap">{{ $record['created_at'] ?? '' }}</td>
|
||||||
|
<td class="border px-4 py-2">{{ $record['created_by'] ?? '' }}</td>
|
||||||
|
<td class="border px-4 py-2">{{ $record['serial_number'] ?? '' }}</td>
|
||||||
|
<td class="border px-4 py-2">{{ $record['pallet_number'] ?? '' }}</td>
|
||||||
|
<td class="border px-4 py-2">{{ $record['locator_number'] ?? '' }}</td>
|
||||||
|
<td class="border px-4 py-2">{{ $record['scanned_status'] ?? '' }}</td>
|
||||||
|
<td class="border px-4 py-2 whitespace-nowrap">{{ $record['scanned_at'] ?? '' }}</td>
|
||||||
|
<td class="border px-4 py-2">{{ $record['scanned_by'] ?? '' }}</td>
|
||||||
|
</tr>
|
||||||
|
@empty
|
||||||
|
<tr>
|
||||||
|
<td colspan="9" class="px-4 py-4 text-center text-gray-500">
|
||||||
|
No records found.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
@endforelse
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
Reference in New Issue
Block a user