diff --git a/app/Filament/Pages/CycleCount.php b/app/Filament/Pages/CycleCount.php index 984c9e5..8b76f51 100644 --- a/app/Filament/Pages/CycleCount.php +++ b/app/Filament/Pages/CycleCount.php @@ -557,13 +557,24 @@ class CycleCount extends Page else { Notification::make() - ->danger() - ->title('Unknown : Data Found') - ->body("No matching record found for the given Location, Item Code, Batch, and Document Number under Plant Code '$plantCode' in stock data master.") - ->seconds(3) - ->send(); - - $this->dispatch('playWarnSound'); + ->title('Unknown : Data Found') + ->body("No matching record found for the given Location, Item Code, Batch, and Document Number under Plant Code '$plantCode' in stock data master.") + ->danger() + ->actions([ + \Filament\Notifications\Actions\Action::make('confirm_update') + ->label('Yes, Update') + ->button() + ->dispatch('confirmStockUpdate', [ + 'plantId' => $plantId, + 'location' => $location, + 'bin' => $bin, + 'stickerMasterId' => $stickerMasterId, + 'batch' => $this->batch, + 'docNo' => $this->docNo, + 'quantity' => $this->quantity + ]), + ]) + ->send(); $this->form->fill([ 'plant_id' => $plantId, @@ -572,6 +583,8 @@ class CycleCount extends Page 'qr_code' => null, ]); + $this->dispatch('playWarnSound'); + return; } @@ -597,6 +610,13 @@ class CycleCount extends Page ->body("Item Code should contain minimum 6 digits '$this->itemCode'") ->danger() ->send(); + + $this->form->fill([ + 'plant_id' => $plantId, + 'location' => $location, + 'bin' => $bin, + 'qr_code' => null, + ]); return; } elseif(!ctype_alnum($this->itemCode)){ @@ -606,6 +626,12 @@ class CycleCount extends Page ->danger() ->duration(5000) ->send(); + $this->form->fill([ + 'plant_id' => $plantId, + 'location' => $location, + 'bin' => $bin, + 'qr_code' => null, + ]); return; } elseif(strlen($this->batch) < 5){ @@ -624,6 +650,12 @@ class CycleCount extends Page ->danger() ->duration(5000) ->send(); + $this->form->fill([ + 'plant_id' => $plantId, + 'location' => $location, + 'bin' => $bin, + 'qr_code' => null, + ]); return; } elseif(!ctype_alnum($this->sNo)){ @@ -633,6 +665,12 @@ class CycleCount extends Page ->danger() ->duration(5000) ->send(); + $this->form->fill([ + 'plant_id' => $plantId, + 'location' => $location, + 'bin' => $bin, + 'qr_code' => null, + ]); return; } @@ -645,6 +683,12 @@ class CycleCount extends Page ->danger() ->duration(5000) ->send(); + $this->form->fill([ + 'plant_id' => $plantId, + 'location' => $location, + 'bin' => $bin, + 'qr_code' => null, + ]); return; } @@ -661,6 +705,12 @@ class CycleCount extends Page ->danger() ->duration(5000) ->send(); + $this->form->fill([ + 'plant_id' => $plantId, + 'location' => $location, + 'bin' => $bin, + 'qr_code' => null, + ]); return; } @@ -675,6 +725,13 @@ class CycleCount extends Page ->duration(5000) ->send(); + $this->form->fill([ + 'plant_id' => $plantId, + 'location' => $location, + 'bin' => $bin, + 'qr_code' => null, + ]); + return; } @@ -689,93 +746,24 @@ class CycleCount extends Page ->danger() ->duration(5000) ->send(); + $this->form->fill([ + 'plant_id' => $plantId, + 'location' => $location, + 'bin' => $bin, + 'qr_code' => null, + ]); return; } $stickerMasterId = $stickerExists->id; - $serialExist = StockDataMaster::where('serial_number', $this->sNo)->where('type', '1')->first(); - - if(!$serialExist){ - Notification::make() - ->danger() - ->title('Unknown Serial Number') - ->body('Scanned serial number not found in stock data master for the type SFG') - ->seconds(3) - ->send(); - return; - } - - $serialAgaPlant = StockDataMaster::where('plant_id', $plantId)->where('serial_number', $this->sNo)->where('type', '1')->first(); - - if(!$serialAgaPlant){ - Notification::make() - ->danger() - ->title('Unknown Serial Number') - ->body("Scanned serial number not found in stock data master for the type SFG against plant code '$plantCode'") - ->seconds(3) - ->send(); - return; - } - - if ($serialAgaPlant->location != $location) { - - Notification::make() - ->danger() - ->title('Invalid Location') - ->body("Serial number '$this->sNo' does not belong to location '$location' for the type SFG against plant code '$plantCode'.") - ->seconds(3) - ->send(); - - return; - } - - if ($serialAgaPlant->sticker_master_id != $stickerMasterId) { - - Notification::make() - ->danger() - ->title('Invalid Item Code') - ->body("Serial number '$this->sNo' does not belong to item code '$this->itemCode' for the type SFG against plant code '$plantCode'.") - ->seconds(3) - ->send(); - - return; - } - - if ($serialAgaPlant->batch != '' || $serialAgaPlant->batch != null) { - - if($serialAgaPlant->batch != $this->batch){ - Notification::make() - ->danger() - ->title('Invalid Batch') - ->body("Serial number '$this->sNo' does not belong to batch '$this->batch' for the type SFG against plant code '$plantCode'.") - ->seconds(3) - ->send(); - - return; - } - } - - if ($serialAgaPlant->bin != '' || $serialAgaPlant->bin != null) { - - if($serialAgaPlant->bin != $bin){ - Notification::make() - ->danger() - ->title('Invalid Bin') - ->body("Serial number '$this->sNo' does not belong to bin '$bin' for the type SFG against plant code '$plantCode'.") - ->seconds(3) - ->send(); - return; - } - } - - $serial = StockDataMaster::where('plant_id', $plantId) + $quanExist = StockDataMaster::where('plant_id', $plantId) ->where('serial_number', $this->sNo) ->where('location', $location) ->where('type', '1') ->first(); - if($serial->quantity == '' || $serial->quantity == null){ + if($quanExist->quantity == '' || $quanExist->quantity == null){ Notification::make() ->warning() ->title('Unknown Quantity') @@ -785,7 +773,7 @@ class CycleCount extends Page return; } - elseif ((int) $serial->quantity > 1) { + elseif ((int) $quanExist->quantity > 1) { Notification::make() ->warning() ->title('Invalid Quantity') @@ -796,17 +784,256 @@ class CycleCount extends Page return; } + $serialExist = StockDataMaster::where('serial_number', $this->sNo)->where('type', '1')->first(); + + if(!$serialExist){ + + Notification::make() + ->title('Unknown Serial Number') + ->body('Scanned serial number not found in stock data master for the type SFG') + ->danger() + ->actions([ + \Filament\Notifications\Actions\Action::make('confirm_update') + ->label('Yes, Update') + ->button() + ->dispatch('confirmSerialUpdate', [ + 'plantId' => $plantId, + 'location' => $location, + 'bin' => $bin, + 'serial_number' => $this->sNo, + 'stickerMasterId' => $stickerMasterId, + 'batch' => $this->batch, + 'docNo' => $this->docNo, + 'quantity' => $this->quantity + ]), + ]) + ->send(); + + $this->form->fill([ + 'plant_id' => $plantId, + 'location' => $location, + 'bin' => $bin, + 'qr_code' => null, + ]); + + return; + } + + $serialAgaPlant = StockDataMaster::where('plant_id', $plantId)->where('serial_number', $this->sNo)->where('type', '1')->first(); + + if(!$serialAgaPlant){ + + Notification::make() + ->title('Unknown Serial Number') + ->body("Scanned serial number not found in stock data master for the type SFG against plant code '$plantCode'") + ->danger() + ->actions([ + \Filament\Notifications\Actions\Action::make('confirm_update') + ->label('Yes, Update') + ->button() + ->dispatch('confirmSerialUpdate', [ + 'plantId' => $plantId, + 'location' => $location, + 'bin' => $bin, + 'serial_number' => $this->sNo, + 'stickerMasterId' => $stickerMasterId, + 'batch' => $this->batch, + 'docNo' => $this->docNo, + 'quantity' => $this->quantity + ]), + ]) + ->send(); + + $this->form->fill([ + 'plant_id' => $plantId, + 'location' => $location, + 'bin' => $bin, + 'qr_code' => null, + ]); + + return; + } + + if ($serialAgaPlant->location != $location) { + + Notification::make() + ->title('Invalid Location') + ->body("Serial number '$this->sNo' does not belong to location '$location' for the type SFG against plant code '$plantCode'.") + ->danger() + ->actions([ + \Filament\Notifications\Actions\Action::make('confirm_update') + ->label('Yes, Update') + ->button() + ->dispatch('confirmSerialUpdate', [ + 'plantId' => $plantId, + 'location' => $location, + 'bin' => $bin, + 'serial_number' => $this->sNo, + 'stickerMasterId' => $stickerMasterId, + 'batch' => $this->batch, + 'docNo' => $this->docNo, + 'quantity' => $this->quantity + ]), + ]) + ->send(); + + $this->form->fill([ + 'plant_id' => $plantId, + 'location' => $location, + 'bin' => $bin, + 'qr_code' => null, + ]); + + return; + } + + if ($serialAgaPlant->sticker_master_id != $stickerMasterId) { + + Notification::make() + ->title('Invalid Item Code') + ->body("Serial number '$this->sNo' does not belong to item code '$this->itemCode' for the type SFG against plant code '$plantCode'.") + ->danger() + ->actions([ + \Filament\Notifications\Actions\Action::make('confirm_update') + ->label('Yes, Update') + ->button() + ->dispatch('confirmSerialUpdate', [ + 'plantId' => $plantId, + 'location' => $location, + 'bin' => $bin, + 'serial_number' => $this->sNo, + 'stickerMasterId' => $stickerMasterId, + 'batch' => $this->batch, + 'docNo' => $this->docNo, + 'quantity' => $this->quantity + ]), + ]) + ->send(); + + $this->form->fill([ + 'plant_id' => $plantId, + 'location' => $location, + 'bin' => $bin, + 'qr_code' => null, + ]); + + return; + } + + if ($serialAgaPlant->batch != '' || $serialAgaPlant->batch != null) { + + if($serialAgaPlant->batch != $this->batch){ + Notification::make() + ->title('Invalid Batch') + ->body("Serial number '$this->sNo' does not belong to batch '$this->batch' for the type SFG against plant code '$plantCode'.") + ->danger() + ->actions([ + \Filament\Notifications\Actions\Action::make('confirm_update') + ->label('Yes, Update') + ->button() + ->dispatch('confirmSerialUpdate', [ + 'plantId' => $plantId, + 'location' => $location, + 'bin' => $bin, + 'serial_number' => $this->sNo, + 'stickerMasterId' => $stickerMasterId, + 'batch' => $this->batch, + 'docNo' => $this->docNo, + 'quantity' => $this->quantity + ]), + ]) + ->send(); + + $this->form->fill([ + 'plant_id' => $plantId, + 'location' => $location, + 'bin' => $bin, + 'qr_code' => null, + ]); + + return; + } + } + + // if ($serialAgaPlant->bin != '' || $serialAgaPlant->bin != null) { + + // if($serialAgaPlant->bin != $bin){ + // Notification::make() + // ->danger() + // ->title('Invalid Bin') + // ->body("Serial number '$this->sNo' does not belong to bin '$bin' for the type SFG against plant code '$plantCode'.") + // ->seconds(3) + // ->send(); + + // Notification::make() + // ->title('Invalid Bin') + // ->body("Serial number '$this->sNo' does not belong to bin '$bin' for the type SFG against plant code '$plantCode'.") + // ->danger() + // ->actions([ + // \Filament\Notifications\Actions\Action::make('confirm_update') + // ->label('Yes, Update') + // ->button() + // ->dispatch('confirmSerialUpdate', [ + // 'plantId' => $plantId, + // 'location' => $location, + // 'bin' => $bin, + // 'serial_number' => $this->sNo, + // 'stickerMasterId' => $stickerMasterId, + // 'batch' => $this->batch, + // 'docNo' => $this->docNo, + // 'quantity' => $this->quantity + // ]), + // ]) + // ->send(); + + // $this->form->fill([ + // 'plant_id' => $plantId, + // 'location' => $location, + // 'bin' => $bin, + // 'qr_code' => null, + // ]); + // return; + // } + // } + + + $serial = StockDataMaster::where('plant_id', $plantId) + ->where('serial_number', $this->sNo) + ->where('location', $location) + ->where('type', '1') + ->first(); + + // if($serial->quantity == '' || $serial->quantity == null){ + // Notification::make() + // ->warning() + // ->title('Unknown Quantity') + // ->body("Quantity is missing for serial number '$this->sNo' (Type: SFG) in Plant Code '$plantCode'. Please update it in Stock Data Master.") + // ->seconds(3) + // ->send(); + + // return; + // } + // elseif ((int) $serial->quantity > 1) { + // Notification::make() + // ->warning() + // ->title('Invalid Quantity') + // ->body("Quantity should be '1' against '$this->sNo' for the type SFG against plant code '$plantCode'!Please update quantity in stock data master.") + // ->seconds(3) + // ->send(); + + // return; + // } + if ($serial) { if($serial->scanned_status == 'Scanned'){ Notification::make() - ->warning() - ->title('Completed') - ->body("Already completed the scanning process Serial number '$this->sNo' for the type SFG against plant code '$plantCode'.") - ->seconds(3) - ->send(); - + ->warning() + ->title('Completed') + ->body("Already completed the scanning process Serial number '$this->sNo' for the type SFG against plant code '$plantCode'.") + ->seconds(3) + ->send(); return; } diff --git a/app/Livewire/StockDataTable.php b/app/Livewire/StockDataTable.php index 5b25bd3..8ad5ed3 100644 --- a/app/Livewire/StockDataTable.php +++ b/app/Livewire/StockDataTable.php @@ -87,6 +87,7 @@ class StockDataTable extends Component ->where('location', $location) ->where('sticker_master_id', $stickerMasterId) ->where('doc_no', $docNo) + ->where('bin', $bin) ->first(); if (!$record) { @@ -123,6 +124,49 @@ class StockDataTable extends Component } } + public function confirmSerialUpdate($plantId, $location, $bin, $sNo, $stickerMasterId, $batch, $docNo, $quantity) + { + + $record = NotInStock::where('plant_id', $plantId) + ->where('location', $location) + ->where('sticker_master_id', $stickerMasterId) + ->where('doc_no', $docNo) + ->where('bin', $bin) + ->first(); + + if (!$record) { + + NotInStock::create([ + 'plant_id' => $plantId, + 'location' => $location, + 'bin' => $bin, + 'sticker_master_id' => $stickerMasterId, + 'type' => '1', + 'serial_number' => $sNo ?? null, + 'batch' => $batch ?? null, + 'doc_no' => $docNo ?? null, + 'scanned_quantity' => $quantity ?? '1', + ]); + + Notification::make() + ->title('Record inserted successfully in not in stock table.') + ->success() + ->send(); + + } else { + + $record->update([ + 'batch' => $batch ?? null, + 'doc_no' => $docNo ?? null, + ]); + + Notification::make() + ->title('Record updated in not in stock table.') + ->success() + ->send(); + } + } + public function loadCompletedData($location, $plantId, $isSerial) { $this->plantId = $plantId;