Merge pull request 'ranjith-dev' (#612) from ranjith-dev into master
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled

Reviewed-on: #612
This commit was merged in pull request #612.
This commit is contained in:
2026-05-15 14:54:40 +00:00
2 changed files with 441 additions and 62 deletions

View File

@@ -61,6 +61,7 @@ class InvoiceValidationResource extends Resource
Section::make('')
->schema([
Forms\Components\Select::make('plant_id')
->label('Plant Name')
->relationship('plant', 'name')
->required()
// ->preload()
@@ -323,7 +324,7 @@ class InvoiceValidationResource extends Resource
->alignCenter()
->numeric(),
Tables\Columns\TextColumn::make('plant.name')
->label('Plant')
->label('Plant Name')
->alignCenter()
->sortable(),
Tables\Columns\TextColumn::make('created_by')
@@ -381,7 +382,7 @@ class InvoiceValidationResource extends Resource
return ($userHas && strlen($userHas) > 0) ? Plant::where('id', $userHas)->pluck('name', 'id')->toArray() : Plant::orderBy('code')->pluck('name', 'id')->toArray();
})
->searchable()
->label('Select Plant')
->label('Search by Plant Name')
->required()
->default(function () {
return optional(InvoiceValidation::latest()->first())->plant_id;
@@ -404,7 +405,7 @@ class InvoiceValidationResource extends Resource
->reactive(),
FileUpload::make('invoice_serial_number')
->label('Invoice Serial Number')
->label('Choose Serial Invoice')
->required()
->acceptedFileTypes([
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
@@ -732,7 +733,7 @@ class InvoiceValidationResource extends Resource
return ($userHas && strlen($userHas) > 0) ? Plant::where('id', $userHas)->pluck('name', 'id')->toArray() : Plant::orderBy('code')->pluck('name', 'id')->toArray();
})
->searchable()
->label('Select Plant')
->label('Search by Plant Name')
->required()
->default(function () {
return optional(InvoiceValidation::latest()->first())->plant_id;
@@ -755,7 +756,7 @@ class InvoiceValidationResource extends Resource
->reactive(),
FileUpload::make('invoice_material')
->label('Invoice Material')
->label('Choose Material Invoice')
->required()
->acceptedFileTypes([
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',

View File

@@ -10,6 +10,8 @@ use App\Models\InvoiceValidation;
use App\Models\Item;
use App\Models\Plant;
use App\Models\StickerMaster;
use App\Models\WireMasterPacking;
use DB;
use Filament\Facades\Filament;
use Filament\Notifications\Notification;
use Filament\Pages\Concerns\ExposesTableToWidgets;
@@ -174,17 +176,15 @@ class CreateInvoiceValidation extends CreateRecord
}
if (isset($matches[1])) {
$invoiceNumber = $matches[1];
$invoiceNumber = strtoupper($matches[1]);
}
} else {
$invoiceNumber = strtoupper($invoiceNumber);
}
// dd($invoiceNumber);
// ..
$updateStatus = $this->form->getState()['update_invoice'] ?? null;
$this->invoiceNumber = trim($this->form->getState()['invoice_number']) ?? $invoiceNumber;
$this->invoiceNumber = strtoupper(trim($this->form->getState()['invoice_number'])) ?? $invoiceNumber;
$invoiceType = null;
// $this->invoiceNumber = $this->invoiceNumber ?? $invoiceNumber;
@@ -2317,7 +2317,7 @@ class CreateInvoiceValidation extends CreateRecord
protected function refreshInvoiceTable()
{
$this->plantId = $this->form->getState()['plant_id'] ?? '';
$this->invoiceNumber = $this->form->getState()['invoice_number'] ?? '';
$this->invoiceNumber = strtoupper(trim($this->form->getState()['invoice_number'])) ?? '';
if (! empty($this->invoiceNumber)) {
$hasInvoice = InvoiceValidation::where('invoice_number', $this->invoiceNumber)->where('plant_id', $this->plantId)->first();
@@ -2378,7 +2378,7 @@ class CreateInvoiceValidation extends CreateRecord
$serialNumber = null;
$plantId = $this->form->getState()['plant_id'];
$this->plantId = $plantId;
$invoiceNumber = $this->form->getState()['invoice_number'];
$invoiceNumber = strtoupper(trim($this->form->getState()['invoice_number']));
$this->invoiceNumber = $invoiceNumber;
$plant = Plant::find($plantId);
@@ -2455,14 +2455,65 @@ class CreateInvoiceValidation extends CreateRecord
$this->dispatch('refreshMaterialInvoiceData', invoiceNumber: $invoiceNumber, plantId: $plantId);
}
$pattern0 = '/^(?<item_code>[^|]+)\|(?<batch_id>[^|]+)\|(?<batch_count>[^|]+)\|(?<batch_quantity>[0-9]+(?:\.[0-9]+)?)kg$/i';
$pattern1 = '/^(?<item_code>[^|]+)\|(?<batch_number>[^|]+)\|(?<batch_id>[^|]+)\|(?<batch_count>[^|]+)\/(?<batch_quantity>.+)$/i';
$pattern2 = '/^(?<item_code>[^|]+)\|(?<batch_number>[^|]+)\|(?<batch_id>[^|]+)\|(?<batch_count>.+)$/i';
$pattern3 = '/^(?<item_code>[^|]+)\|(?<batch_id>[^|]+)-(?<batch_count>.+)$/i';
$pattern4 = '/^MP-(?<code>.+)$/i';
$itemCode = '';
$batchNumber = '';
$curScanQty = '';
$wirePallet = '';
$curMaterialQty = '';
$curMaterialSer = '';
if (preg_match($pattern1, $serNo, $matches)) {
if (preg_match($pattern0, $serNo, $matches)) {
$itemCode = $matches['item_code'];
$this->currentItemCode = $itemCode;
$curScanQty = $matches['batch_quantity'];
$serialNumber = $matches['batch_id'].'-'.$matches['batch_count'];
$serNo = null;
if (empty($matches['batch_id']) || ! $matches['batch_id']) {
Notification::make()
->danger()
->title('Invalid Material QR Format')
->body('Scan valid Material QR code to proceed!<br>Sample formats are:<br>123456|123456789|001|5kg (or)<br>123456|12345|12345678|1/1 (or)<br>123456|12345|12345678|1 (or)<br>123456|12345678-1')
->seconds(2)
->send();
$this->dispatch('playWarnSound');
$this->form->fill([
'plant_id' => $plantId,
'invoice_number' => $invoiceNumber,
'serial_number' => null,
'total_quantity' => $totQuan,
'update_invoice' => false,
'scanned_quantity' => $scanMQuan,
]);
return;
} elseif (empty($matches['batch_count']) || ! $matches['batch_count']) {
Notification::make()
->danger()
->title('Invalid Material QR Format')
->body('Scan valid Material QR code to proceed!<br>Sample formats are:<br>123456|123456789|001|5kg (or)<br>123456|12345|12345678|1/1 (or)<br>123456|12345|12345678|1 (or)<br>123456|12345678-1')
->seconds(2)
->send();
$this->dispatch('playWarnSound');
$this->form->fill([
'plant_id' => $plantId,
'invoice_number' => $invoiceNumber,
'serial_number' => null,
'total_quantity' => $totQuan,
'update_invoice' => false,
'scanned_quantity' => $scanMQuan,
]);
return;
}
} elseif (preg_match($pattern1, $serNo, $matches)) {
$itemCode = $matches['item_code'];
$this->currentItemCode = $itemCode;
$batchNumber = $matches['batch_number'];
@@ -2470,11 +2521,45 @@ class CreateInvoiceValidation extends CreateRecord
$curScanQty = $matches['batch_quantity'];
$serNo = null;
if (empty($matches['batch_id']) || ! $matches['batch_id']) {
if (empty($matches['batch_number']) || ! $matches['batch_number']) {
Notification::make()
->danger()
->title('Invalid Material QR Format')
->body('Scan valid Material QR code proceed!<br>Sample formats are:<br>123456|12345|12345678|1/1 (or)<br>123456|12345|12345678|1 (or)<br>123456|12345678-1')
->body('Scan valid Material QR code to proceed!<br>Sample formats are:<br>123456|123456789|001|5kg (or)<br>123456|12345|12345678|1/1 (or)<br>123456|12345|12345678|1 (or)<br>123456|12345678-1')
->seconds(2)
->send();
$this->dispatch('playWarnSound');
// .Mail
// $mailData = $this->getMail();
// $mPlantName = $mailData['plant_name'];
// $emails = $mailData['emails'];
// $mInvoiceType = 'Material';
// if (! empty($emails)) {
// Mail::to($emails)->send(
// new InvalidSerialMail($mSerNo, $invoiceNumber, $mPlantName, $mInvoiceType, $itemCode, 'InvalidMaterialFormat')
// );
// } else {
// \Log::warning("No recipients found for plant {$plantId}, module Serial, rule invalid_serial.");
// }
$this->form->fill([
'plant_id' => $plantId,
'invoice_number' => $invoiceNumber,
'serial_number' => null,
'total_quantity' => $totQuan,
'update_invoice' => false,
'scanned_quantity' => $scanMQuan,
]);
return;
} elseif (empty($matches['batch_id']) || ! $matches['batch_id']) {
Notification::make()
->danger()
->title('Invalid Material QR Format')
->body('Scan valid Material QR code to proceed!<br>Sample formats are:<br>123456|123456789|001|5kg (or)<br>123456|12345|12345678|1/1 (or)<br>123456|12345|12345678|1 (or)<br>123456|12345678-1')
->seconds(2)
->send();
$this->dispatch('playWarnSound');
@@ -2508,42 +2593,7 @@ class CreateInvoiceValidation extends CreateRecord
Notification::make()
->danger()
->title('Invalid Material QR Format')
->body('Scan valid Material QR code proceed!<br>Sample formats are:<br>123456|12345|12345678|1/1 (or)<br>123456|12345|12345678|1 (or)<br>123456|12345678-1')
->seconds(2)
->send();
$this->dispatch('playWarnSound');
// .Mail
// $mailData = $this->getMail();
// $mPlantName = $mailData['plant_name'];
// $emails = $mailData['emails'];
// $mInvoiceType = 'Material';
// if (! empty($emails)) {
// // Mail::to($emails)->send(new InvalidSerialMail($serNo, $invoiceNumber, $mPlantName, $mInvoiceType));
// Mail::to($emails)->send(
// new InvalidSerialMail($mSerNo, $invoiceNumber, $mPlantName, $mInvoiceType, $itemCode, 'InvalidMaterialFormat')
// );
// } else {
// \Log::warning("No recipients found for plant {$plantId}, module Serial, rule invalid_serial.");
// }
$this->form->fill([
'plant_id' => $plantId,
'invoice_number' => $invoiceNumber,
'serial_number' => null,
'total_quantity' => $totQuan,
'update_invoice' => false,
'scanned_quantity' => $scanMQuan,
]);
return;
} elseif (! is_numeric($curScanQty)) {
Notification::make()
->danger()
->title('Invalid Material QR Format')
->body('Scan valid Material QR code proceed!<br>Sample formats are:<br>123456|12345|12345678|1/1 (or)<br>123456|12345|12345678|1 (or)<br>123456|12345678-1')
->body('Scan valid Material QR code to proceed!<br>Sample formats are:<br>123456|123456789|001|5kg (or)<br>123456|12345|12345678|1/1 (or)<br>123456|12345|12345678|1 (or)<br>123456|12345678-1')
->seconds(2)
->send();
$this->dispatch('playWarnSound');
@@ -2580,13 +2630,48 @@ class CreateInvoiceValidation extends CreateRecord
$this->currentItemCode = $itemCode;
$batchNumber = $matches['batch_number'];
$serialNumber = $matches['batch_id'].'-'.$matches['batch_count'];
$curMaterialSer = $matches['batch_number'].'-'.$matches['batch_id'];
$curMaterialQty = $matches['batch_count'];
$serNo = null;
if (empty($matches['batch_id']) || ! $matches['batch_id']) {
if (empty($matches['batch_number']) || ! $matches['batch_number']) {
Notification::make()
->danger()
->title('Invalid Material QR Format')
->body('Scan valid Material QR code proceed!<br>Sample formats are:<br>123456|12345|12345678|1/1 (or)<br>123456|12345|12345678|1 (or)<br>123456|12345678-1')
->body('Scan valid Material QR code to proceed!<br>Sample formats are:<br>123456|123456789|001|5kg (or)<br>123456|12345|12345678|1/1 (or)<br>123456|12345|12345678|1 (or)<br>123456|12345678-1')
->seconds(2)
->send();
$this->dispatch('playWarnSound');
// .Mail
// $mailData = $this->getMail();
// $mPlantName = $mailData['plant_name'];
// $emails = $mailData['emails'];
// $mInvoiceType = 'Material';
// if (! empty($emails)) {
// Mail::to($emails)->send(
// new InvalidSerialMail($mSerNo, $invoiceNumber, $mPlantName, $mInvoiceType, $itemCode, 'InvalidMaterialFormat')
// );
// } else {
// \Log::warning("No recipients found for plant {$plantId}, module Serial, rule invalid_serial.");
// }
$this->form->fill([
'plant_id' => $plantId,
'invoice_number' => $invoiceNumber,
'serial_number' => null,
'total_quantity' => $totQuan,
'update_invoice' => false,
'scanned_quantity' => $scanMQuan,
]);
return;
} elseif (empty($matches['batch_id']) || ! $matches['batch_id']) {
Notification::make()
->danger()
->title('Invalid Material QR Format')
->body('Scan valid Material QR code to proceed!<br>Sample formats are:<br>123456|123456789|001|5kg (or)<br>123456|12345|12345678|1/1 (or)<br>123456|12345|12345678|1 (or)<br>123456|12345678-1')
->seconds(2)
->send();
$this->dispatch('playWarnSound');
@@ -2619,7 +2704,7 @@ class CreateInvoiceValidation extends CreateRecord
Notification::make()
->danger()
->title('Invalid Material QR Format')
->body('Scan valid Material QR code proceed!<br>Sample formats are:<br>123456|12345|12345678|1/1 (or)<br>123456|12345|12345678|1 (or)<br>123456|12345678-1')
->body('Scan valid Material QR code to proceed!<br>Sample formats are:<br>123456|123456789|001|5kg (or)<br>123456|12345|12345678|1/1 (or)<br>123456|12345|12345678|1 (or)<br>123456|12345678-1')
->seconds(2)
->send();
$this->dispatch('playWarnSound');
@@ -2659,7 +2744,7 @@ class CreateInvoiceValidation extends CreateRecord
Notification::make()
->danger()
->title('Invalid Material QR Format')
->body('Scan valid Material QR code proceed!<br>Sample formats are:<br>123456|12345|12345678|1/1 (or)<br>123456|12345|12345678|1 (or)<br>123456|12345678-1')
->body('Scan valid Material QR code to proceed!<br>Sample formats are:<br>123456|123456789|001|5kg (or)<br>123456|12345|12345678|1/1 (or)<br>123456|12345|12345678|1 (or)<br>123456|12345678-1')
->seconds(2)
->send();
$this->dispatch('playWarnSound');
@@ -2693,7 +2778,7 @@ class CreateInvoiceValidation extends CreateRecord
Notification::make()
->danger()
->title('Invalid Material QR Format')
->body('Scan valid Material QR code proceed!<br>Sample formats are:<br>123456|12345|12345678|1/1 (or)<br>123456|12345|12345678|1 (or)<br>123456|12345678-1')
->body('Scan valid Material QR code to proceed!<br>Sample formats are:<br>123456|123456789|001|5kg (or)<br>123456|12345|12345678|1/1 (or)<br>123456|12345|12345678|1 (or)<br>123456|12345678-1')
->seconds(2)
->send();
$this->dispatch('playWarnSound');
@@ -2723,6 +2808,294 @@ class CreateInvoiceValidation extends CreateRecord
return;
}
} elseif (preg_match($pattern4, $serNo, $matches)) {
$wirePallet = 'MP-'.$matches['code'];
$wirePattern = '/^MP-(?<code>\d+)$/i';
if (! preg_match($wirePattern, $serNo, $matches)) {
Notification::make()
->title('Invalid Master Packing QR Format')
->body("Scan valid Master Packing QR code proceed!<br>Sample format : 'MP-2601001'")
->danger()
->seconds(1)
->send();
return;
}
$wireMaster = WireMasterPacking::where('plant_id', $plantId)->where('wire_packing_number', $wirePallet)->first();
if (! $wireMaster) {
Notification::make()
->title('Master Pallet Not Found')
->body("No record found for this Master Packing QR $wirePallet")
->danger()
->seconds(2)
->send();
return;
}
$wireItemCodes = WireMasterPacking::join('items', 'items.id', '=', 'wire_master_packings.item_id')
->where('wire_master_packings.plant_id', $plantId)
->where('wire_master_packings.wire_packing_number', $wirePallet)
->pluck('items.code')
->unique()
->toArray();
$invoiceItemCodes = InvoiceValidation::join(
'sticker_masters',
'sticker_masters.id',
'=',
'invoice_validations.sticker_master_id'
)
->join(
'items',
'items.id',
'=',
'sticker_masters.item_id'
)
->where('invoice_validations.plant_id', $plantId)
->where('invoice_validations.invoice_number', $this->invoiceNumber)
->pluck('items.code')
->unique()
->toArray();
$missedCodes = array_diff($wireItemCodes, $invoiceItemCodes);
if (! empty($missedCodes)) {
Notification::make()
->title('Items Missing in Invoice')
->body('Item codes are missing in invoice: '.implode(', ', $missedCodes))
->danger()
->seconds(3)
->send();
return;
}
$duplicateSerial = [];
$weightExceeded = [];
$processedItems = [];
$invalidMaterialItems = [];
$wireItems1 = WireMasterPacking::join('items', 'items.id', '=', 'wire_master_packings.item_id')
->where('wire_master_packings.plant_id', $plantId)
->where('wire_master_packings.wire_packing_number', $wirePallet)
->select(
'items.code as item_code',
'wire_master_packings.process_order',
DB::raw('SUM(wire_master_packings.weight::numeric) as pallet_weight')
)
->groupBy('items.code', 'wire_master_packings.process_order')
->get();
foreach ($wireItems1 as $wireItem) {
$processOrder = $wireItem->process_order;
$palletWeight = $wireItem->pallet_weight;
$itemCode = $wireItem->item_code;
$processedItems[] = $itemCode;
$duplicate = InvoiceValidation::where('plant_id', $this->plantId)
->where('invoice_number', $this->invoiceNumber)
->where('serial_number', $processOrder)
->exists();
if ($duplicate) {
$duplicateSerial[] = $processOrder;
continue;
}
$materialType = StickerMaster::where('item_id', function ($q) use ($itemCode) {
$q->select('id')->from('items')->where('code', $itemCode);
})->value('material_type');
if ($materialType != 3) {
if (! in_array($itemCode, $invalidMaterialItems)) {
$invalidMaterialItems[] = $itemCode;
}
}
$scannedQty = InvoiceValidation::join('sticker_masters', 'sticker_masters.id', '=', 'invoice_validations.sticker_master_id')
->join('items', 'items.id', '=', 'sticker_masters.item_id')
->where('invoice_validations.plant_id', $plantId)
->where('invoice_validations.invoice_number', $this->invoiceNumber)
->where('items.code', $itemCode)
->sum(DB::raw('invoice_validations.quantity::numeric'));
if ($palletWeight > $scannedQty) {
$weightExceeded[] = $itemCode;
}
}
if (! empty($invalidMaterialItems)) {
$uniqueInvalidItems = array_unique($invalidMaterialItems);
Notification::make()
->title('Invalid Material Type')
->body(implode(', ', $uniqueInvalidItems)."<br>Invalid material type found for the invoice '$invoiceNumber'.")
->danger()
->seconds(4)
->send();
return;
} elseif (! empty($weightExceeded)) {
Notification::make()
->title('Item Code Limit')
->body(implode(', ', $weightExceeded)."<br>Master pallet weight exceeds the remaining quantity in invoice '$invoiceNumber'.")
->danger()
->seconds(4)
->send();
return;
} elseif (! empty($duplicateSerial)) {
Notification::make()
->title('Duplicate Serial Number')
->body(implode(', ', $duplicateSerial)."<br>Duplicate Serial numbers found for the invoice '$invoiceNumber'.")
->danger()
->seconds(4)
->send();
return;
}
$itemExceeded = [];
$invoiceRows = InvoiceValidation::where('plant_id', $plantId)
->where('invoice_number', $invoiceNumber)
->whereNull('serial_number')
->get();
$palletItems = WireMasterPacking::where('wire_master_packings.plant_id', $plantId)
->where('wire_master_packings.wire_packing_number', $wirePallet)
->join('items', 'items.id', '=', 'wire_master_packings.item_id')
->select(
'items.code as item_code',
DB::raw('SUM(wire_master_packings.weight::numeric) as pallet_weight')
)
->groupBy('items.code')
->get();
foreach ($invoiceRows as $row) {
$itemCode = $row->stickerMaster->item->code ?? null;
if (! $itemCode) {
continue;
}
$pallet = $palletItems->firstWhere('item_code', $itemCode);
$palletWeight = $pallet->pallet_weight ?? 0;
$remainingQty = $row->quantity;
if ($palletWeight > $remainingQty) {
$itemExceeded[] = $itemCode;
}
}
$items = implode(', ', $itemExceeded);
if (! empty($itemExceeded)) {
Notification::make()
->title('Item Code Limit')
->body("Pallet weight exceeds remaining quantity for invoice number '$invoiceNumber'for below item codes <br>$items")
->danger()
->seconds(5)
->send();
return;
}
$wireItems = WireMasterPacking::join('items', 'items.id', '=', 'wire_master_packings.item_id')
->where('wire_master_packings.wire_packing_number', $wirePallet)
->select(
'items.code as item_code',
'wire_master_packings.process_order',
'wire_master_packings.weight as pallet_weight'
// DB::raw('(wire_master_packings.weight::numeric) as pallet_weight')
)
->get();
foreach ($wireItems as $wireItem) {
$itemCode = $wireItem->item_code;
$palletWeight = $wireItem->pallet_weight;
$processOrder = $wireItem->process_order;
if (! $processOrder || $palletWeight <= 0) {
continue;
}
$records = InvoiceValidation::join('sticker_masters', 'sticker_masters.id', '=', 'invoice_validations.sticker_master_id')
->join('items', 'items.id', '=', 'sticker_masters.item_id')
->where('invoice_validations.invoice_number', $invoiceNumber)
->where('invoice_validations.plant_id', $plantId)
->where('items.code', $itemCode)
->whereNull('invoice_validations.serial_number')
->where('invoice_validations.quantity', '>', 0)
->orderBy('invoice_validations.created_at')
->select('invoice_validations.*')
->get();
if ($records->isEmpty()) {
continue;
}
foreach ($records as $record) {
if ($palletWeight <= 0) {
break;
}
$usedQty = min($record->quantity, $palletWeight);
$record->quantity -= $usedQty;
if ($usedQty == $record->quantity + $usedQty) {
$record->serial_number = $processOrder;
$record->quantity = $palletWeight;
$record->save();
} else {
$record->save();
InvoiceValidation::create([
'sticker_master_id' => $record->sticker_master_id,
'plant_id' => $plantId,
'invoice_number' => $invoiceNumber,
'serial_number' => $processOrder,
'quantity' => $usedQty,
'operator_id' => $operatorName,
'created_by' => $operatorName,
'updated_by' => $operatorName,
]);
}
$palletWeight -= $usedQty;
// if ($record->quantity <= 0) {
// $records->forget($key);
// }
}
}
$this->dispatch('refreshMaterialInvoiceData', invoiceNumber: $invoiceNumber, plantId: $plantId);
$totQuan = InvoiceValidation::where('plant_id', $plantId)->where('invoice_number', $invoiceNumber)->count();
$scanMQuan = InvoiceValidation::where('invoice_number', $invoiceNumber)->whereNotNull('serial_number')->where('serial_number', '!=', '')->where('plant_id', $plantId)->count();
$this->form->fill([
'plant_id' => $plantId,
'invoice_number' => $invoiceNumber,
'serial_number' => null,
'total_quantity' => $totQuan,
'update_invoice' => false,
'scanned_quantity' => $scanMQuan,
]);
return;
} else {
$itemCode = null;
$this->currentItemCode = '';
@@ -2733,7 +3106,7 @@ class CreateInvoiceValidation extends CreateRecord
Notification::make()
->danger()
->title('Invalid Material QR Format')
->body('Scan valid Material QR code proceed!<br>Sample formats are:<br>123456|12345|12345678|1/1 (or)<br>123456|12345|12345678|1 (or)<br>123456|12345678-1')
->body('Scan valid Material QR code to proceed!<br>Sample formats are:<br>123456|123456789|001|5kg (or)<br>123456|12345|12345678|1/1 (or)<br>123456|12345|12345678|1 (or)<br>123456|12345678-1')
->seconds(1)
->send();
@@ -2866,6 +3239,12 @@ class CreateInvoiceValidation extends CreateRecord
$hasQuanTyp = ($record->material_type == 3) ? true : false;
if ($hasQuanTyp && $curMaterialSer && $curMaterialQty) {
$batchNumber = null;
$serialNumber = $curMaterialSer;
$curScanQty = $curMaterialQty;
}
$record = InvoiceValidation::where('invoice_number', $invoiceNumber)
->where('plant_id', $plantId)
->whereHas('stickerMasterRelation.item', function ($query) use ($itemCode) {
@@ -2948,7 +3327,7 @@ class CreateInvoiceValidation extends CreateRecord
Notification::make()
->danger()
->title('Invalid Quantity Material QR Format')
->body('Scan valid Quantity Material QR code proceed!<br>Ex:123456|12345|12345678|1/1')
->body('Scan valid Quantity Material QR code to proceed!<br>Sample formats are:<br>123456|123456789|001|5kg (or)<br>123456|12345|12345678|1/1 (or)<br>123456|12345|12345678|1')
->seconds(2)
->send();
$this->dispatch('playWarnSound');
@@ -2994,8 +3373,8 @@ class CreateInvoiceValidation extends CreateRecord
$record->serial_number = $serialNumber;
$record->batch_number = $batchNumber;
$record->operator_id = $operatorName;
// $record->updated_by = $operatorName;
// $record->updated_at = now();
$record->updated_by = $operatorName;
$record->updated_at = now();
$record->save();
// InvoiceValidation::create([
@@ -3231,7 +3610,6 @@ class CreateInvoiceValidation extends CreateRecord
}
$record = InvoiceValidation::where('serial_number', $serialNumber)->where('invoice_number', $invoiceNumber)->where('plant_id', $plantId)->first();
// $invoiceNumber = $this->form->getState()['invoice_number'];
if (! $record) {
Notification::make()