diff --git a/app/Filament/Exports/ProcessOrderExporter.php b/app/Filament/Exports/ProcessOrderExporter.php index 0803c6c..ace26f5 100644 --- a/app/Filament/Exports/ProcessOrderExporter.php +++ b/app/Filament/Exports/ProcessOrderExporter.php @@ -36,6 +36,8 @@ class ProcessOrderExporter extends Exporter ->label('COIL NUMBER'), ExportColumn::make('order_quantity') ->label('ORDER QUANTITY'), + ExportColumn::make('updated_order_quantity') + ->label('UPDATED ORDER QUANTITY'), ExportColumn::make('received_quantity') ->label('RECEIVED QUANTITY'), ExportColumn::make('sfg_number') diff --git a/app/Filament/Imports/ProcessOrderImporter.php b/app/Filament/Imports/ProcessOrderImporter.php index 395fa42..e89e66b 100644 --- a/app/Filament/Imports/ProcessOrderImporter.php +++ b/app/Filament/Imports/ProcessOrderImporter.php @@ -52,6 +52,9 @@ class ProcessOrderImporter extends Importer ->example('1000') ->label('ORDER QUANTITY') ->rules(['required']), + ImportColumn::make('updated_order_quantity') + ->exampleHeader('UPDATED ORDER QUANTITY') + ->label('UPDATED ORDER QUANTITY'), ImportColumn::make('coil_number') ->exampleHeader('COIL NUMBER') // ->example('01') @@ -110,6 +113,7 @@ class ProcessOrderImporter extends Importer $sfgNo = trim($this->data['sfg_number'] ?? ''); $machineName = trim($this->data['machine_name'] ?? ''); $orderQuan = trim($this->data['order_quantity'] ?? ''); + $updatedOrderQuan = trim($this->data['updated_order_quantity'] ?? ''); $scrapQuan = trim($this->data['scrap_quantity'] ?? ''); $reworkStatus = trim($this->data['rework_status'] ?? ''); $recQuan = trim($this->data['received_quantity'] ?? ''); @@ -145,6 +149,12 @@ class ProcessOrderImporter extends Importer } elseif (Str::length($orderQuan) >= 1 && ! is_numeric($orderQuan)) { $warnMsg[] = 'Invalid order quantity found!'; } + if ($updatedOrderQuan == null || $updatedOrderQuan == '' || $updatedOrderQuan == 0 || $updatedOrderQuan == '0') { + $updatedOrderQuan = $orderQuan; + } elseif (Str::length($updatedOrderQuan) >= 1 && ! is_numeric($updatedOrderQuan)) { + $warnMsg[] = 'Invalid Updated order quantity found!'; + } + if ($coilNo == null || $coilNo == '') { $coilNo = '0'; } @@ -243,6 +253,40 @@ class ProcessOrderImporter extends Importer throw new RowImportFailedException(implode(', ', $warnMsg)); } + $existing = ProcessOrder::where('plant_id', $plantId) + ->where('process_order', $processOrder) + // ->where('coil_number', $coilNo) + ->first(); + + $receivedQty = ProcessOrder::where('plant_id', $plantId) + ->where('process_order', $processOrder) + ->sum('received_quantity'); + + if($existing){ + $liveOrdQuan = (float) $existing->order_quantity; + $liveUpdatedOrdQuan = (float) $existing->updated_order_quantity; + + $allowedIncrease = $liveOrdQuan * 0.10; + + $maxAllowedQty = $liveOrdQuan + $allowedIncrease; + $minAllowedQty = $liveOrdQuan - $allowedIncrease; + + if ($liveUpdatedOrdQuan > $maxAllowedQty) { + throw new RowImportFailedException( + "Updated order quantity cannot exceed 10% of existing order quantity. Max allowed: {$maxAllowedQty}" + ); + } + else if ($liveUpdatedOrdQuan < $minAllowedQty) { + throw new RowImportFailedException( + "Updated order quantity cannot decrease -10% of existing order quantity. Min allowed: {$minAllowedQty}" + ); + }else if($liveUpdatedOrdQuan < $receivedQty) { + throw new RowImportFailedException( + "Updated order quantity cannot decrease below its received quantity {$receivedQty}" + ); + } + } + if ($coilNo != null && $coilNo != '' && $scrapQuan && $reworkStatus && $recQuan && $createdAt && $createdBy && $updatedAt && $updatedBy && Filament::auth()->user()->hasRole('Super Admin')) { $existingCoil = ProcessOrder::where('plant_id', $plantId) ->where('process_order', $processOrder) @@ -250,6 +294,18 @@ class ProcessOrderImporter extends Importer ->where('coil_number', $coilNo) ->first(); + // $existingProcess = ProcessOrder::where('plant_id', $plantId) + // ->where('process_order', $processOrder) + // ->where('line_id', $lineId) + // ->first(); + + if($existing){ + $existUpdateOrdQuan = $existing->updated_order_quantity; + } + else{ + $existUpdateOrdQuan = $updatedOrderQuan; + } + if (! $existingCoil) { ProcessOrder::Create( [ @@ -259,6 +315,7 @@ class ProcessOrderImporter extends Importer 'item_id' => $itemId, 'coil_number' => $coilNo, 'order_quantity' => $orderQuan, + 'updated_order_quantity' => $existUpdateOrdQuan, 'received_quantity' => $recQuan, 'scrap_quantity' => $scrapQuan, 'sfg_number' => $sfgNo, @@ -288,10 +345,17 @@ class ProcessOrderImporter extends Importer } } else { $coilNo = '0'; - $existing = ProcessOrder::where('plant_id', $plantId) - ->where('process_order', $processOrder) - // ->where('coil_number', $coilNo) - ->first(); + // $existing = ProcessOrder::where('plant_id', $plantId) + // ->where('process_order', $processOrder) + // // ->where('coil_number', $coilNo) + // ->first(); + + if($existing){ + $existUpdateOrdQuan = $existing->updated_order_quantity; + } + else{ + $existUpdateOrdQuan = $updatedOrderQuan; + } if (! $existing && ($coilNo == '0' || $coilNo == 0)) { ProcessOrder::create([ @@ -301,6 +365,7 @@ class ProcessOrderImporter extends Importer 'process_order' => $processOrder, 'coil_number' => '0', 'order_quantity' => $orderQuan, + 'updated_order_quantity' => $existUpdateOrdQuan, 'received_quantity' => 0, 'scrap_quantity' => 0, 'created_by' => $createdBy, @@ -315,6 +380,7 @@ class ProcessOrderImporter extends Importer 'process_order' => $processOrder, 'coil_number' => $coilNo, 'order_quantity' => $orderQuan, + 'updated_order_quantity' => $existUpdateOrdQuan, 'received_quantity' => $recQuan, 'scrap_quantity' => $scrapQuan ?? 0, 'sfg_number' => $sfgNo,