Updated focus invoice and serial number logic in throughout invoice validation related pages (resource, create, livewire, blade)

This commit is contained in:
dhanabalan
2025-11-20 19:45:04 +05:30
parent c7391b113f
commit 21ff5fa21f
4 changed files with 55 additions and 21 deletions

View File

@@ -106,9 +106,11 @@ class InvoiceValidationResource extends Resource
->readOnly(fn (callable $get) => !empty($get('serial_number'))) ->readOnly(fn (callable $get) => !empty($get('serial_number')))
//->disabled(fn (Get $get) => !empty($get('serial_number'))) //->disabled(fn (Get $get) => !empty($get('serial_number')))
->extraAttributes([ ->extraAttributes([
'id' => 'invoice_number_input',
'x-data' => '{ value: "" }', 'x-data' => '{ value: "" }',
'x-model' => 'value', 'x-model' => 'value',
'x-on:keydown.enter.prevent' => '$wire.processInvoice(value)', 'wire:keydown.enter.prevent' => 'processInvoice(value)',
//'x-on:keydown.enter.prevent' => '$wire.processInvoice(value)',
]) ])
// ->afterStateHydrated(function (TextInput $component, string $state) { // ->afterStateHydrated(function (TextInput $component, string $state) {
// $component->state(ucwords($state)); // $component->state(ucwords($state));

View File

@@ -73,14 +73,32 @@ class CreateInvoiceValidation extends CreateRecord
{ {
$totQuan = InvoiceValidation::where('invoice_number', $this->invoiceNumber)->where('plant_id', $this->plantId)->count(); $totQuan = InvoiceValidation::where('invoice_number', $this->invoiceNumber)->where('plant_id', $this->plantId)->count();
$scanSQuan = InvoiceValidation::where('invoice_number', $this->invoiceNumber)->where('scanned_status', 'Scanned')->where('plant_id', $this->plantId)->count(); $scanSQuan = InvoiceValidation::where('invoice_number', $this->invoiceNumber)->where('scanned_status', 'Scanned')->where('plant_id', $this->plantId)->count();
$this->dispatch('playNotificationSound');
if ($totQuan == $scanSQuan)
{
$this->form->fill([
'plant_id' => $this->plantId,
'invoice_number' => null,
'serial_number' => null,
'total_quantity' => 0,
'update_invoice' => false,
'scanned_quantity'=> 0
]);
$this->dispatch('refreshCompletedInvoice', invoiceNumber: $this->invoiceNumber, plantId: $this->plantId, isSerial: true);
}
else
{
$this->form->fill([ $this->form->fill([
'plant_id' => $this->plantId, 'plant_id' => $this->plantId,
'invoice_number' => $this->invoiceNumber, 'invoice_number' => $this->invoiceNumber,
'serial_number' => null, 'serial_number' => null,
'total_quantity' => $totQuan, 'total_quantity' => $totQuan,
'update_invoice' => false, 'update_invoice' => false,
'scanned_quantity'=> $scanSQuan, 'scanned_quantity'=> $scanSQuan
]); ]);
$this->dispatch('refreshInvoiceData', invoiceNumber: $this->invoiceNumber, plantId: $this->plantId);
}
} }
protected function getRedirectUrl(): string protected function getRedirectUrl(): string
@@ -133,6 +151,7 @@ class CreateInvoiceValidation extends CreateRecord
'total_quantity' => 0, 'total_quantity' => 0,
'scanned_quantity'=> 0, 'scanned_quantity'=> 0,
]); ]);
$this->dispatch('refreshEmptyInvoice', invoiceNumber: $invoiceNumber, plantId: $plantId); $this->dispatch('refreshEmptyInvoice', invoiceNumber: $invoiceNumber, plantId: $plantId);
} }
else else
@@ -854,7 +873,6 @@ class CreateInvoiceValidation extends CreateRecord
//$fullPath = $disk->path($filePath); //$fullPath = $disk->path($filePath);
$disk->delete($filePath); $disk->delete($filePath);
} }
$this->dispatch('playNotificationSound');
$this->form->fill([ $this->form->fill([
'plant_id' => $plantId, 'plant_id' => $plantId,

View File

@@ -65,6 +65,7 @@ class InvoiceDataTable extends Component
$this->materialInvoice = false; $this->materialInvoice = false;
$this->packageCount = 0; $this->packageCount = 0;
// $this->showCapacitorInput = false; // $this->showCapacitorInput = false;
$this->dispatch('focus-invoice-number');
} }
public function loadEmptyData($invoiceNumber, $plantId) public function loadEmptyData($invoiceNumber, $plantId)
@@ -178,7 +179,7 @@ class InvoiceDataTable extends Component
$this->packageCount += $stickCount - $scannedCount; $this->packageCount += $stickCount - $scannedCount;
} }
$this->dispatch('focus-serial-number');
} }
public function loadMaterialData($invoiceNumber, $plantId) public function loadMaterialData($invoiceNumber, $plantId)
@@ -230,6 +231,7 @@ class InvoiceDataTable extends Component
$row['material_type'] = 'N/A'; $row['material_type'] = 'N/A';
} }
} }
$this->dispatch('focus-serial-number');
} }
// public function showCapacitorInputBox() // public function showCapacitorInputBox()
@@ -255,6 +257,7 @@ class InvoiceDataTable extends Component
public function cancelCapacitorInput() public function cancelCapacitorInput()
{ {
$this->showCapacitorInput = false; $this->showCapacitorInput = false;
$this->dispatch('focus-serial-number');
} }
public function processCapacitorInput() public function processCapacitorInput()

View File

@@ -202,7 +202,18 @@
input.select(); input.select();
} }
}, 100); }, 100);
}); });
window.addEventListener('focus-invoice-number', () => {
setTimeout(() => {
const container = document.getElementById('invoice_number_input');
const input = container?.querySelector('input'); // gets the actual input inside
if (input) {
input.focus();
input.select();
}
}, 100);
});
</script> </script>