diff --git a/app/Livewire/SerialValidationData.php b/app/Livewire/SerialValidationData.php index 057d981..e27d919 100644 --- a/app/Livewire/SerialValidationData.php +++ b/app/Livewire/SerialValidationData.php @@ -2,20 +2,24 @@ namespace App\Livewire; +use App\Models\SerialValidation; use App\Models\StickerMaster; use Filament\Facades\Filament; use Filament\Notifications\Notification; use Livewire\Component; -use App\Models\SerialValidation; - +use Livewire\WithPagination; class SerialValidationData extends Component { + + use WithPagination; + public $invoiceData = []; public $plantId = 0; public string $invoiceNumber = ''; + public string $serialNumber = ''; public bool $completedInvoice = false; @@ -30,22 +34,22 @@ class SerialValidationData extends Component public bool $showCapacitorInput = false; - // protected $listeners = ['refreshInvoiceData' => 'loadData',]; + // protected $listeners = ['refreshInvoiceData' => 'loadData',]; protected $listeners = [ 'refreshCompletedInvoice' => 'loadCompletedData', 'refreshEmptyInvoice' => 'loadEmptyData', 'refreshInvoiceData' => 'loadData', 'refreshMaterialInvoiceData' => 'loadMaterialData', - 'focusCapacitor' => 'focusCapacitorInput' - //'openCapacitorModal' => 'showCapacitorInputBox', + 'focusCapacitor' => 'focusCapacitorInput', + // 'openCapacitorModal' => 'showCapacitorInputBox', ]; public $capacitorInput = ''; public $panel_box_supplier; - public $panel_box_item_code; + public $panel_box_code; public $panel_box_serial_number; @@ -96,43 +100,155 @@ class SerialValidationData extends Component // $this->showCapacitorInput = false; } - public function loadData($invoiceNumber, $plantId) + // public function loadData($invoiceNumber, $plantId) + // { + // $this->plantId = $plantId; + // $this->invoiceNumber = $invoiceNumber; + // $this->completedInvoice = false; + // $this->isSerial = true; + // $this->emptyInvoice = false; + // $this->hasSearched = true; + // $this->materialInvoice = false; + // // $this->showCapacitorInput = false; + + // // ->where('serial_number', '!=', '') + // $this->invoiceData = SerialValidation::where('invoice_number', $this->invoiceNumber) + // ->where('plant_id', $plantId)->where('scanned_status', null) + // ->get() + // ->map(function ($record) { + // return [ + // 'sticker_master_id' => $record->sticker_master_id, + // 'serial_number' => $record->serial_number, + // 'motor_scanned_status' => $record->motor_scanned_status ?? '', + // 'pump_scanned_status' => $record->pump_scanned_status ?? '', + // 'capacitor_scanned_status' => $record->capacitor_scanned_status ?? '', + // 'scanned_status_set' => $record->scanned_status_set ?? '', + // 'scanned_status' => $record->scanned_status ?? '', // + // 'panel_box_code' => $record->panel_box_code ?? '', + // 'panel_box_supplier' => $record->panel_box_supplier ?? '', + // 'panel_box_serial_number' => $record->panel_box_serial_number ?? '', + // 'created_at' => $record->created_at, + // 'operator_id' => $record->operator_id, + // ]; + // }) + // ->toArray(); + + // // Loop through and replace 'code' using related StickerMaster > Item > code + // foreach ($this->invoiceData as &$row) { + // // $stickerMaster = \App\Models\StickerMaster::with('item')->find($row['sticker_master_id'] ?? null); + // $row['code'] = StickerMaster::with('item')->find($row['sticker_master_id'] ?? null)?->item?->code ?? 'N/A'; + // } + // } + + public function loadData($invoiceNumber, $plantId, $onCapFocus = false) { - $this->plantId = $plantId; $this->invoiceNumber = $invoiceNumber; + $this->plantId = $plantId; + $this->completedInvoice = false; $this->isSerial = true; + $this->onCapFocus = $onCapFocus; $this->emptyInvoice = false; $this->hasSearched = true; $this->materialInvoice = false; - // $this->showCapacitorInput = false; - //->where('serial_number', '!=', '') - $this->invoiceData = SerialValidation::where('invoice_number', $this->invoiceNumber) - ->where('plant_id', $plantId)->where('scanned_status', null) - ->get() - ->map(function ($record) { - return [ - 'sticker_master_id' => $record->sticker_master_id, - 'serial_number' => $record->serial_number, - 'motor_scanned_status' => $record->motor_scanned_status ?? '', - 'pump_scanned_status' => $record->pump_scanned_status ?? '', - 'capacitor_scanned_status' => $record->capacitor_scanned_status ?? '', - 'scanned_status_set' => $record->scanned_status_set ?? '', - 'scanned_status' => $record->scanned_status ?? '', - 'panel_box_supplier' => $record->panel_box_supplier ?? '', - 'panel_box_serial_number' => $record->panel_box_serial_number ?? '', - 'created_at' => $record->created_at, - 'operator_id' => $record->operator_id, - ]; - }) - ->toArray(); + $this->resetPage(); + $this->packageCount = 0; - //Loop through and replace 'code' using related StickerMaster > Item > code - foreach ($this->invoiceData as &$row) { - // $stickerMaster = \App\Models\StickerMaster::with('item')->find($row['sticker_master_id'] ?? null); - $row['code'] = StickerMaster::with('item')->find($row['sticker_master_id'] ?? null)?->item?->code ?? 'N/A'; - } + $records = SerialValidation::with('stickerMasterRelation') + ->where('invoice_number', $this->invoiceNumber) + ->where('plant_id', $this->plantId) + ->get(); + + $this->packageCount = $records->sum(function ($record) { + + $sm = $record->stickerMasterRelation; + + if (! $sm) { + return 0; + } + + $stickCount = 0; + $scannedCount = 0; + + if (! empty($sm->panel_box_code)) { + $stickCount++; + + if ($record->capacitor_scanned_status == 1) { + $scannedCount++; + } + } + + // $sm->tube_sticker_motor == 1 || $sm->tube_sticker_pump == 1 || $sm->tube_sticker_pumpset == 1 + if (! empty($sm->tube_sticker_motor) || ! empty($sm->tube_sticker_pump) || ! empty($sm->tube_sticker_pumpset)) { + + if (! empty($sm->tube_sticker_motor)) { + $stickCount++; + if ($record->motor_scanned_status == 1) { + $scannedCount++; + } + } + + // ($sm->tube_sticker_pumpset != 1 && $sm->tube_sticker_pump != 1 && $sm->pack_slip_pump == 1) + if (! empty($sm->tube_sticker_pump) || (empty($sm->tube_sticker_pumpset) && empty($sm->tube_sticker_pump) && ! empty($sm->pack_slip_pump))) { + $stickCount++; + if ($record->pump_scanned_status == 1) { + $scannedCount++; + } + } + + if (! empty($sm->tube_sticker_pumpset)) { + $stickCount++; + if ($record->scanned_status_set == 1) { + $scannedCount++; + } + } + } elseif (! empty($sm->pack_slip_motor) || ! empty($sm->pack_slip_pump) || ! empty($sm->pack_slip_pumpset)) { + if (! empty($sm->pack_slip_motor)) { + $stickCount++; + if ($record->motor_scanned_status == 1) { + $scannedCount++; + } + } + + if (! empty($sm->pack_slip_pump)) { + $stickCount++; + if ($record->pump_scanned_status == 1) { + $scannedCount++; + } + } + + if (! empty($sm->pack_slip_pumpset)) { + $stickCount++; + if ($record->scanned_status_set == 1) { + $scannedCount++; + } + } + } + + return max($stickCount - $scannedCount, 0); + }); + + $this->dispatch( + $onCapFocus ? 'focus-capacitor-input' : 'focus-serial-number' + ); + } + + public function getInvoiceRecordsProperty() + { + return SerialValidation::with('stickerMasterRelation.item') + ->where('invoice_number', $this->invoiceNumber) + ->where('plant_id', $this->plantId) + ->where(function ($query) { + $query->whereNull('scanned_status') + ->orWhere('scanned_status', ''); + }) + // ->when($this->hasSearched, function ($query) { + // $query->where('invoice_number', $this->invoiceNumber) + // ->where('plant_id', $this->plantId) + // ->where('scanned_status', '=', ''); + // }) + ->paginate(6); } public function loadMaterialData($invoiceNumber, $plantId) @@ -146,43 +262,36 @@ class SerialValidationData extends Component $this->materialInvoice = true; // $this->showCapacitorInput = false; - //->where('serial_number', '!=', '') + // ->where('serial_number', '!=', '') $this->invoiceData = SerialValidation::where('invoice_number', $this->invoiceNumber)->where('plant_id', $plantId)->where('serial_number', null) - ->get() - ->map(function ($record) { - return [ - 'sticker_master_id' => $record->sticker_master_id, - // 'material_type' => StickerMaster::where('id', $record->sticker_master_id)->first()->material_type ?? '', - 'quantity' => $record->quantity ?? '', - 'serial_number' => $record->serial_number ?? '', - 'batch_number' => $record->batch_number ?? '', - 'created_at' => $record->created_at, - 'operator_id' => $record->operator_id, - ]; - }) - ->toArray(); + ->get() + ->map(function ($record) { + return [ + 'sticker_master_id' => $record->sticker_master_id, + // 'material_type' => StickerMaster::where('id', $record->sticker_master_id)->first()->material_type ?? '', + 'quantity' => $record->quantity ?? '', + 'serial_number' => $record->serial_number ?? '', + 'batch_number' => $record->batch_number ?? '', + 'created_at' => $record->created_at, + 'operator_id' => $record->operator_id, + ]; + }) + ->toArray(); - //Loop through and replace 'code' using related StickerMaster > Item > code + // Loop through and replace 'code' using related StickerMaster > Item > code foreach ($this->invoiceData as &$row) { - // $stickerMaster = \App\Models\StickerMaster::with('item')->find($row['sticker_master_id'] ?? null); - $row['code'] = StickerMaster::with('item')->find($row['sticker_master_id'] ?? null)?->item?->code ?? 'N/A'; - $matType = StickerMaster::where('id', $row['sticker_master_id'] ?? null)->first()->material_type ?? ''; - if($matType === 1) - { + // $stickerMaster = \App\Models\StickerMaster::with('item')->find($row['sticker_master_id'] ?? null); + $row['code'] = StickerMaster::with('item')->find($row['sticker_master_id'] ?? null)?->item?->code ?? 'N/A'; + $matType = StickerMaster::where('id', $row['sticker_master_id'] ?? null)->first()->material_type ?? ''; + if ($matType === 1) { $row['material_type'] = 'Individual'; - } - else if($matType === 2) - { + } elseif ($matType === 2) { $row['material_type'] = 'Bundle'; - } - else if($matType === 3) - { + } elseif ($matType === 3) { $row['material_type'] = 'Quantity'; - } - else - { + } else { $row['material_type'] = 'N/A'; - } + } } } @@ -216,11 +325,11 @@ class SerialValidationData extends Component $user = Filament::auth()->user(); $operatorName = $user->name; - if (!$this->capacitorInput) { + if (! $this->capacitorInput) { return; } - if (!preg_match('/^[^\/]+\/[^\/]+\/.+$/', $this->capacitorInput)) { + if (! preg_match('/^[^\/]+\/[^\/]+\/.+$/', $this->capacitorInput)) { Notification::make() ->title('Invalid Panel Box QR Format:') ->body('Scan the valid panel box QR code to proceed!') @@ -228,6 +337,7 @@ class SerialValidationData extends Component // ->duration(3000) ->seconds(2) ->send(); + return; } @@ -239,9 +349,9 @@ class SerialValidationData extends Component $existsInStickerMaster = StickerMaster::where('panel_box_code', $itemCode)->where('plant_id', $this->plantId)->whereHas('item', function ($query) { $query->where('code', $this->currentItemCode); }) - ->exists(); + ->exists(); - if (!$existsInStickerMaster) { + if (! $existsInStickerMaster) { Notification::make() ->title('Unknown: Panel Box Code') ->body("Unknown panel box code: $itemCode found for item code: $this->currentItemCode") @@ -250,6 +360,7 @@ class SerialValidationData extends Component ->seconds(2) ->send(); $this->capacitorInput = ''; + return; } @@ -259,7 +370,7 @@ class SerialValidationData extends Component ($row['serial_number'] ?? '') === $this->currentSerialNumber ) { $row['panel_box_supplier'] = $supplier; - $row['panel_box_item_code'] = $itemCode; + $row['panel_box_code'] = $itemCode; $row['panel_box_serial_number'] = $serialNumber; $row['capacitor_scanned_status'] = 1; // $row['scanned_status_set'] = true; @@ -286,47 +397,41 @@ class SerialValidationData extends Component $packCnt = 1; $scanCnt = 1; // if($hadMotorQr === $hasMotorQr && $hadPumpQr === $hasPumpQr && $hadPumpSetQr === $hasPumpSetQr) - if($hasMotorQr || $hasPumpQr || $hasPumpSetQr) - { + if ($hasMotorQr || $hasPumpQr || $hasPumpSetQr) { $packCnt = $hasMotorQr ? $packCnt + 1 : $packCnt; $packCnt = $hasPumpQr ? $packCnt + 1 : $packCnt; $packCnt = $hasPumpSetQr ? $packCnt + 1 : $packCnt; - $scanCnt = $hadMotorQr ? $scanCnt + 1: $scanCnt; - $scanCnt = $hadPumpQr ? $scanCnt + 1: $scanCnt; - $scanCnt = $hadPumpSetQr ? $scanCnt + 1: $scanCnt; + $scanCnt = $hadMotorQr ? $scanCnt + 1 : $scanCnt; + $scanCnt = $hadPumpQr ? $scanCnt + 1 : $scanCnt; + $scanCnt = $hadPumpSetQr ? $scanCnt + 1 : $scanCnt; - if($packCnt === $scanCnt) - { + if ($packCnt === $scanCnt) { $matchingValidation->update([ 'panel_box_supplier' => $supplier, - 'panel_box_item_code' => $itemCode, + 'panel_box_code' => $itemCode, 'panel_box_serial_number' => $serialNumber, 'capacitor_scanned_status' => 1, 'scanned_status' => 'Scanned', - 'operator_id'=> $operatorName, + 'operator_id' => $operatorName, ]); - } - else - { + } else { $matchingValidation->update([ 'panel_box_supplier' => $supplier, - 'panel_box_item_code' => $itemCode, + 'panel_box_code' => $itemCode, 'panel_box_serial_number' => $serialNumber, 'capacitor_scanned_status' => 1, - 'operator_id'=> $operatorName, + 'operator_id' => $operatorName, ]); } - } - else - { + } else { $matchingValidation->update([ 'panel_box_supplier' => $supplier, - 'panel_box_item_code' => $itemCode, + 'panel_box_code' => $itemCode, 'panel_box_serial_number' => $serialNumber, 'capacitor_scanned_status' => 1, 'scanned_status' => 'Scanned', - 'operator_id'=> $operatorName, + 'operator_id' => $operatorName, ]); } @@ -341,15 +446,14 @@ class SerialValidationData extends Component $totalQuantity = SerialValidation::where('invoice_number', $matchingValidation->invoice_number)->where('plant_id', $this->plantId)->count(); $scannedQuantity = SerialValidation::where('invoice_number', $matchingValidation->invoice_number)->where('plant_id', $this->plantId)->where('scanned_status', 'Scanned')->count(); // $this->form->fill([ - // 'plant_id' => $matchingValidation->plant_id, - // 'invoice_number' => $matchingValidation->invoice_number, - // 'serial_number' => null, - // 'total_quantity' => $totalQuantity, - // 'scanned_quantity'=> $scannedQuantity, - // ]); + // 'plant_id' => $matchingValidation->plant_id, + // 'invoice_number' => $matchingValidation->invoice_number, + // 'serial_number' => null, + // 'total_quantity' => $totalQuantity, + // 'scanned_quantity'=> $scannedQuantity, + // ]); - if($totalQuantity === $scannedQuantity) - { + if ($totalQuantity === $scannedQuantity) { Notification::make() ->title('Completed: Serial Invoice') ->body("Serial invoice '$matchingValidation->invoice_number' completed the scanning process.
Scan the next 'Serial Invoice' to proceed!") @@ -357,9 +461,7 @@ class SerialValidationData extends Component ->seconds(2) ->send(); $this->loadCompletedData($matchingValidation->invoice_number, $matchingValidation->plant_id, true); - } - else - { + } else { $this->loadData($matchingValidation->invoice_number, $matchingValidation->plant_id); } } @@ -373,7 +475,8 @@ class SerialValidationData extends Component public function render() { - return view('livewire.serial-validation-data'); + return view('livewire.serial-validation-data', [ + 'records' => $this->invoiceRecords, + ]); } - } diff --git a/resources/views/livewire/serial-validation-data.blade.php b/resources/views/livewire/serial-validation-data.blade.php index 9be0f81..ff2240f 100644 --- a/resources/views/livewire/serial-validation-data.blade.php +++ b/resources/views/livewire/serial-validation-data.blade.php @@ -45,52 +45,57 @@ {{-- Modal for serial invoice--}} @if ($hasSearched) -
- {{-- --}} - {{--
--}} -
+
+
+
- - - - - - - - - - - - - + + + + + + + + + + + + {{-- --}} + + + + + + + @forelse ($records as $index => $record) + + + + + + + + + + + + {{-- --}} + + - - - @forelse ($invoiceData as $index => $row) - - - - - - - - - - - - - - - @empty - - - - @endforelse - -
NoMaterial CodeSerial NumberMotor Scanned StatusPump Scanned StatusCapacitor Scanned StatusScanned Status SetScanned StatusTime StampOperator IDPanel Box SupplierPanel Box Serial Number
NoMaterial CodeSerial NumberMotor Scanned StatusPump Scanned StatusCapacitor Scanned StatusScanned Status SetScanned StatusTime StampOperator IDPanel Box CodePanel Box SupplierPanel Box Serial Number
{{ $records->firstItem() + $index }}{{ $record->stickerMasterRelation?->item?->code ?? 'N/A' }}{{ $record->serial_number ?? 'N/A' }}{{ $record->motor_scanned_status ? '1' : '' }}{{ $record->pump_scanned_status ? '1' : '' }}{{ $record->capacitor_scanned_status ? '1' : '' }}{{ $record->scanned_status_set ? '1' : '' }}{{ $record->scanned_status ?? '' }}{{ optional($record->created_at)->format('d-m-Y H:i:s') }}{{ $record->operator_id ?? '' }}{{ $record->panel_box_code ?? '' }}{{ $record->panel_box_supplier ?? '' }}{{ $record->panel_box_serial_number ?? '' }}
{{ $index + 1 }}{{ $row['code'] ?? 'N/A' }}{{ $row['serial_number'] ?? 'N/A' }}{{ $row['motor_scanned_status'] ?? '' }}{{ $row['pump_scanned_status'] ?? '' }}{{ $row['capacitor_scanned_status'] ?? '' }}{{ $row['scanned_status_set'] ?? '' }}{{ $row['scanned_status'] ?? '' }}{{ $row['created_at'] ?? '' }}{{ $row['operator_id'] ?? '' }}{{ $row['panel_box_supplier'] ?? '' }}{{ $row['panel_box_serial_number'] ?? '' }}
- No data found for the invoice number {{ $invoiceNumber }}. -
+ @empty + + + No data found for invoice {{ $invoiceNumber }} + + + @endforelse + + +
+ {{ $records->onEachSide(3)->links() }}
+
@endif {{-- Modal for Capacitor Input --}}