'handleUpdateSnoQuantity', ]; public function handleUpdateSnoQuantity($newValue) { $this->form->fill([ 'Sno_quantity' => $newValue, ]); } public function processOrderSNo(){ $plantId = $this->form->getState()['plant_id']; $plantId = trim($plantId) ?? null; $processOrder = trim($this->form->getState()['process_order'])?? null; $coilPackNo = trim($this->form->getState()['coil_packing_number'])?? null; $coilPackNo = trim($coilPackNo) ?? null; $user = Filament::auth()->user(); $operatorName = $user->name; if (empty($processOrder) || $processOrder == '') { Notification::make() ->title("Coil No can't be empty") ->danger() ->duration(5000) ->send(); $this->form->fill([ 'process_order' => null, 'plant_id' => $plantId, 'coil_packing_number' => $coilPackNo, 'Sno_quantity' => 0, 'created_by' => $operatorName, 'scanned_by' => $operatorName, ]); return; } $pattern = '/^([^|]+)\|([^|]+)$/'; if (!preg_match($pattern, $processOrder, $matches)) { Notification::make() ->title("Scan Valid Qr code ") ->body("Expected Format: ItemCode|CoilNo") ->danger() ->duration(5000) ->send(); $this->form->fill([ 'process_order' => null, 'plant_id' => $plantId, 'coil_packing_number' => $coilPackNo, 'Sno_quantity' => 0, 'created_by' => $operatorName, 'scanned_by' => $operatorName, ]); return; } $materialCode = $matches[1]; $coilNo = $matches[2]; $icode = Item::where('code', $materialCode)->first(); if(!$icode) { Notification::make() ->title("Unknown Item Code") ->body("Item Code not found '$materialCode'") ->danger() ->duration(5000) ->send(); $this->form->fill([ 'plant_id' => $plantId, 'coil_packing_number' => $coilPackNo, 'process_order' => null, 'Sno_quantity' => 0, 'created_by' => $operatorName, 'scanned_by' => $operatorName, ]); return; } $icodeAgaPlant = Item::where('code', $materialCode)->where('plant_id', $plantId)->first(); $plantCode = Plant::where('id', $plantId)->first(); $plantcode = $plantCode->code; $itemId = $icodeAgaPlant->id; if(!$icodeAgaPlant) { Notification::make() ->title("Unknown Item Code") ->body("Item Code not found '$materialCode' against Plant Code '$plantcode'") ->danger() ->duration(5000) ->send(); $this->form->fill([ 'plant_id' => $plantId, 'coil_packing_number' => $coilPackNo, 'process_order' => null, 'Sno_quantity' => 0, 'created_by' => $operatorName, 'scanned_by' => $operatorName, ]); return; } $processOrderAgaPlant = CoilPacking::where('process_order', $coilNo)->where('plant_id', $plantId)->first(); if($processOrderAgaPlant) { Notification::make() ->title("Duplicate Coil No") ->body("Duplicate coil number found '$coilNo' against Plant Code '$plantcode'") ->danger() ->duration(5000) ->send(); $this->form->fill([ 'plant_id' => $plantId, 'coil_packing_number' => $coilPackNo, 'process_order' => null, 'Sno_quantity' => 0, 'created_by' => $operatorName, 'scanned_by' => $operatorName, ]); return; } try { $existingPallet = CoilPacking::where('plant_id', $plantId) ->where('coil_packing_number', $coilPackNo) ->first(); $count = CoilPacking::where('plant_id', $plantId) ->where('coil_packing_number', $coilPackNo) ->count('coil_packing_number'); $createdAt = $existingPallet ? $existingPallet->created_at : $clickedAt ?? now(); $createdBy = $existingPallet ? $existingPallet->created_by : $clickedBy ?? $operatorName; $record = CoilPacking::create([ 'plant_id' => $plantId, 'item_id' => $itemId, 'coil_packing_number' => $coilPackNo, 'process_order' => $coilNo, 'created_by' => $createdBy, 'scanned_by' => $operatorName, 'created_at' => $createdAt, 'scanned_at' => now(), 'updated_by' => $operatorName, ]); if ($record) { $this->snoCount = CoilPacking::where('plant_id', $plantId) ->where('coil_packing_number', $coilPackNo) ->count(); $this->dispatch('loadData', $coilPackNo, $plantId); $this->form->fill([ 'plant_id' => $plantId, 'item_id' => $itemId, 'coil_packing_number' => $coilPackNo, 'process_order' => null, 'Sno_quantity' => $this->snoCount, 'created_by' => $operatorName, 'scanned_by' => $operatorName, ]); } else { Notification::make() ->title("Failed to insert scanned serial number '$coilNo' into coil packing table!") ->danger() ->duration(5000) ->send(); $this->dispatch('loadData', $coilPackNo, $plantId); $this->form->fill([ 'plant_id' => $plantId, 'item_id' => $itemId, 'coil_packing_number' => $coilPackNo, 'process_order' => null, 'Sno_quantity' => $count, 'scanned_by' => $operatorName, ]); return; } } catch (\Exception $e) { Notification::make() ->title('Error: Serial not inserted.') ->body("Something went wrong while inserting process order '{$coilNo}' into pallet table!\nScan the new process order to proceed...") ->danger() ->duration(5000) ->send(); $this->dispatch('loadData', $coilPackNo, $plantId); $this->form->fill([ 'plant_id' => $plantId, 'coil_packing_number' => $coilPackNo, 'process_order' => null, 'Sno_quantity' => $count, 'created_by' => $operatorName, 'scanned_by' => $operatorName, ]); return; } $this->dispatch('loadData', $coilPackNo, $plantId); } public function markAsComplete() { $plantId = $this->form->getState()['plant_id']; $plantId = trim($plantId) ?? null; $pendingPallet = $this->form->getState()['pending_pallet_list']; $palletNumber = trim($this->form->getState()['coil_packing_number'])?? null; $palletNumber = trim($palletNumber) ?? null; $processOrder = trim($this->form->getState()['process_order'])?? null; $processOrder = trim($processOrder) ?? null; $user = Filament::auth()->user(); $operatorName = $user->name; $isCompleted = $this->data['is_completed'] ?? false; // $this->pendingPallet = $this->form->getState()['pending_pallet_list']; if (! ($this->data['is_completed'] ?? false)) { Notification::make() ->title('Completion required') ->body('Please check the "Is Completed" checkbox to finish master packing.') ->warning() ->duration(3000) ->send(); return; } $palletExist = CoilPacking::where('coil_packing_number', $palletNumber) ->where('plant_id', $plantId) ->first(); if (!$palletExist) { Notification::make() ->title("Pallet number '$palletNumber' does not have process orders to save!
Add the valid process order into pallet number to proceed...") ->danger() ->duration(5000) ->send(); $this->dispatch('loadData', $palletNumber, $plantId); $this->form->fill([ 'process_order' => null, 'plant_id' => $plantId, 'coil_packing_number' => $palletNumber, 'pending_pallet_list' => $pendingPallet, 'Sno_quantity' => 0, 'created_by' => $operatorName, 'scanned_by' => $operatorName, ]); return; } $allCompleted = CoilPacking::where('plant_id', $plantId) ->where('coil_packing_number', $palletNumber) ->where('coil_packing_status', '=','Completed') ->first(); if ($allCompleted) { Notification::make() ->title("Coil Packing pallet number '$palletNumber' already completed the master packing!
Generate the new Coil Packing Pallet number or choose from pending pallet list!") ->danger() ->duration(5000) ->send(); $this->dispatch('loadData', '', $plantId); $this->form->fill([ 'process_order' => null, 'plant_id' => $plantId, 'coil_packing_number' => null, 'pending_pallet_list' => null,//$pendingPallet 'Sno_quantity' => 0, 'created_by' => $operatorName, 'scanned_by' => $operatorName, ]); return; } if (!$isCompleted) { $updated = CoilPacking::where('coil_packing_number', $palletNumber) ->where('plant_id', $plantId) ->update([ 'updated_at' => now(), 'updated_by' => $operatorName, ]); if ($updated > 0) { Notification::make() ->title("Pallet number '$palletNumber' records saved successfully!") ->success() ->duration(800) ->send(); $this->dispatch('loadData', '', $plantId); $this->form->fill([ 'process_order' => null, 'plant_id' => $plantId, 'coil_packing_number' => null,//$palletNumber 'pending_pallet_list' => null,//$pendingPallet 'Sno_quantity' => 0,//$count, 'created_by' => $operatorName, 'scanned_by' => $operatorName, ]); return; } } else { $updated = CoilPacking::where('coil_packing_number', $palletNumber) ->where('plant_id', $plantId) ->update([ 'coil_packing_status' => 'Completed', 'updated_at' => now(), 'updated_by' => $operatorName, ]); if ($updated > 0) { Notification::make() ->title("Pallet number '$palletNumber' completed the coil packing successfully!") ->success() ->duration(800) ->send(); $this->dispatch('loadData', '', $plantId); $this->form->fill([ 'process_order' => null, 'plant_id' => $plantId, 'coil_packing_number' => null,//$palletNumber 'pending_pallet_list' => null,//$pendingPallet 'Sno_quantity' => 0,//$count 'created_by' => $operatorName, 'scanned_by' => $operatorName, ]); return; } } } public function processPalletNo() { $plantId = $this->form->getState()['plant_id']; $plantId = trim($plantId) ?? null; $pendingPallet = $this->form->getState()['pending_pallet_list']; $palletNumber = trim($this->form->getState()['coil_packing_number']) ?? null; $palletNumber = trim($palletNumber) ?? null; $processOrder = trim($this->form->getState()['process_order']) ?? null; $processOrder = trim($processOrder) ?? null; $user = Filament::auth()->user(); $operatorName = $user->name; //$this->dispatch('loadData', $palletNumber, $plantId); $this->form->fill([ 'process_order' => null, 'plant_id' => $plantId, 'pallet_number' => $palletNumber, 'pending_pallet_list' => $pendingPallet, 'Sno_quantity' => 0, 'created_by' => $operatorName, 'scanned_by' => $operatorName, ]); if (!$palletNumber) { Notification::make() ->title('Pallet number is required.') ->danger() ->duration(5000) ->send(); $this->dispatch('loadData', '', $plantId); $this->form->fill([ 'process_order' => null, 'plant_id' => $plantId, 'coil_packing_number' => $palletNumber, 'pending_pallet_list' => $pendingPallet, 'Sno_quantity' => 0, 'created_by' => $operatorName, 'scanned_by' => $operatorName, ]); return; } if (strlen($palletNumber) < 10) { Notification::make() ->title("Pallet number '$palletNumber' must be at least 10 digits.") ->danger() ->duration(5000) ->send(); $this->dispatch('loadLocator' ,'',$plantId); $this->form->fill([ 'serial_number' => null, 'plant_id' => $plantId, 'pallet_number' => $palletNumber, 'pending_pallet_list' => $pendingPallet, 'Sno_quantity' => 0, 'created_by' => $operatorName, 'scanned_by' => $operatorName, ]); return; } $count = CoilPacking::where('plant_id', $plantId) ->where('coil_packing_number', $palletNumber) ->count('coil_packing_number'); $palletNotCompleted = CoilPacking::where('plant_id', $plantId) ->where('coil_packing_number', $palletNumber) ->where('coil_packing_status', '=','') ->orWhere('coil_packing_status', '=',null) ->first(); if (!$palletNotCompleted) { Notification::make() ->title("Already completed for pallet number $palletNumber!") ->danger() ->duration(5000) ->send(); $this->dispatch('loadData', $palletNumber, $plantId); $this->form->fill([ 'process_order' => null, 'plant_id' => $plantId, 'coil_packing_number' => $palletNumber, 'pending_pallet_list' => $pendingPallet, 'Sno_quantity' => $count, 'created_by' => $operatorName, 'scanned_by' => $operatorName, ]); return; } $this->form->fill([ 'process_order' => null, 'plant_id' => $plantId, 'coil_packing_number' => $palletNumber, 'pending_pallet_list' => $pendingPallet, 'Sno_quantity' => $count, 'created_by' => $operatorName, 'scanned_by' => $operatorName, ]); $this->dispatch('loadData', $palletNumber, $plantId); } public function processRemoveSNo() { $plantId = $this->form->getState()['plant_id']; $plantId = trim($plantId) ?? null; $pendingPallet = $this->form->getState()['pending_pallet_list']; $palletNumber = trim($this->form->getState()['coil_packing_number']) ?? null; $palletNumber = trim($palletNumber) ?? null; $processOrder = trim($this->form->getState()['removeSno_number']) ?? null; $processOrder = trim($processOrder) ?? null; $user = Filament::auth()->user(); $operatorName = $user->name; if (!$palletNumber) { Notification::make() ->title('Coil Pallet number is required to remove.') ->danger() ->duration(5000) ->send(); return; } $pattern = '/^([^|]+)\|([^|]+)$/'; if (!preg_match($pattern, $processOrder, $matches)) { Notification::make() ->title("Scan Valid Qr code ") ->body("Expected Format : (MaterialCode|Coil Number)") ->danger() ->duration(5000) ->send(); $this->form->fill([ 'plant_id' => $plantId, 'removeSno_number' => null, 'Sno_quantity' => 0, 'created_by' => $operatorName, 'scanned_by' => $operatorName, ]); return; } $materialCode = $matches[1]; $coilNo = $matches[2]; $count = CoilPacking::where('plant_id', $plantId) ->where('coil_packing_number', $palletNumber) ->count('coil_packing_number'); if (!$coilNo) { Notification::make() ->title('Coil number is required to remove.') ->danger() ->duration(5000) ->send(); $this->dispatch('loadData', $palletNumber, $plantId); $this->form->fill([ 'plant_id' => $plantId, 'removeSno_number' => null, 'coil_packing_number' => $palletNumber, 'pending_pallet_list' => $pendingPallet, 'Sno_quantity' => $count, 'created_by' => $operatorName, 'scanned_by' => $operatorName, ]); return; } $item = Item::where('plant_id', $plantId)->where('code', $materialCode)->first(); if(!$item){ Notification::make() ->title('Unknown Item Code') ->body("Item code {$materialCode} was not found in the Item Master.") ->danger() ->send(); $this->form->fill([ 'plant_id' => $plantId, 'coil_packing_number' => $palletNumber, 'removeSno_number' => null, 'Sno_quantity' => $count, 'created_by' => $operatorName, 'scanned_by' => $operatorName, ]); return; } $itemCodeInPallet = CoilPacking::where('plant_id', $plantId)->where('item_id', $item->id)->where('coil_packing_number', $palletNumber)->first(); if(!$itemCodeInPallet){ Notification::make() ->title('Unknown Item Code') ->body("Item code {$materialCode} was not found in the pallet number '$palletNumber'.") ->danger() ->send(); $this->form->fill([ 'plant_id' => $plantId, 'coil_packing_number' => $palletNumber, 'removeSno_number' => null, 'Sno_quantity' => $count, 'created_by' => $operatorName, 'scanned_by' => $operatorName, ]); return; } $itemCodeInPalletSerial = CoilPacking::where('plant_id', $plantId)->where('item_id', $item->id)->where('coil_packing_number', $palletNumber)->where('process_order', $coilNo)->first(); if(!$itemCodeInPalletSerial){ Notification::make() ->title('Mismatch Item Code') ->body("Item code {$materialCode} mismatch with serial number was not found in the pallet number '$palletNumber'.") ->danger() ->send(); $this->form->fill([ 'plant_id' => $plantId, 'coil_packing_number' => $palletNumber, 'removeSno_number' => null, 'Sno_quantity' => $count, 'created_by' => $operatorName, 'scanned_by' => $operatorName, ]); return; } $processOrderexist = CoilPacking::where('plant_id', $plantId) ->where('process_order', $coilNo) ->first(); if (!$processOrderexist) { Notification::make() ->title('Coil Number not exists in pallet table.') ->danger() ->duration(5000) ->send(); $this->dispatch('loadData', $palletNumber, $plantId); $this->form->fill([ 'plant_id' => $plantId, 'removeSno_number' => null, 'coil_packing_number' => $palletNumber, 'pending_pallet_list' => $pendingPallet, 'Sno_quantity' => $count, 'created_by' => $operatorName, 'scanned_by' => $operatorName, ]); return; } $palletExist = CoilPacking::where('plant_id', $plantId) ->where('process_order', $coilNo) ->where('coil_packing_number', '!=', '') ->where('coil_packing_number', '!=', null) ->first(); if ($palletExist && $palletExist->coil_packing_number != $palletNumber) { Notification::make() ->title("Scanned coil number exist in pallet number '$palletExist->coil_packing_number'.
Scan the valid exist coil number to remove!") ->danger() ->duration(5000) ->send(); $this->dispatch('loadData', $palletNumber, $plantId); $this->form->fill([ 'plant_id' => $plantId, 'removeSno_number' => null, 'coil_packing_number' => $palletNumber, 'pending_pallet_list' => $pendingPallet, 'Sno_quantity' => $count, 'created_by' => $operatorName, 'scanned_by' => $operatorName, ]); return; } $deleted = CoilPacking::where('plant_id', $plantId) ->where('coil_packing_number', $palletNumber) ->where('process_order', $coilNo) ->forceDelete(); if ($deleted) { // Notification::make() // ->title("Scanned serial number '$serialNumber' successfully removed from pallet table!
Scan the next exist serial number to remove...") // ->success() // ->duration(600) // ->send(); $this->snoCount = CoilPacking::where('plant_id', $plantId) ->where('coil_packing_number', $palletNumber) ->count(); $this->form->fill([ 'plant_id' => $plantId, 'coil_packing_number' => $palletNumber, 'removeSno_number' => null, 'pending_pallet_list' => $this->pendingPallet, 'Sno_quantity' => $this->snoCount, 'created_by' => $operatorName, 'scanned_by' => $operatorName, ]); $this->dispatch('loadData', $palletNumber, $plantId); } else { Notification::make() ->title("Failed to remove scanned process order '$processOrder' from master pallet!") ->danger() ->duration(5000) ->send(); $this->dispatch('loadData', $palletNumber, $plantId); $this->form->fill([ 'plant_id' => $plantId, 'removeSno_number' => null, 'coil_packing_number' => $palletNumber, 'pending_pallet_list' => $pendingPallet, 'Sno_quantity' => $count, 'created_by' => $operatorName, 'scanned_by' => $operatorName, ]); } } public function redirectToCoilQrPdf($palletNo) { $this->palletNo = $this->form->getState()['coil_packing_number']; //return redirect()->route('download-qr-pdf', ['palletNo' => $this->palletNo]); $url = route('download-coil-qr-pdf', ['palletNo' => $this->palletNo]); $this->js(<<