<?php

namespace App\Filament\Resources\WireMasterPackingResource\Pages;

use App\Filament\Resources\WireMasterPackingResource;
use App\Models\CustomerPoMaster;
use App\Models\Item;
use App\Models\Plant;
use App\Models\WireMasterPacking;
use Filament\Actions;
use Filament\Facades\Filament;
use Filament\Notifications\Notification;
use Filament\Resources\Pages\CreateRecord;
use Illuminate\View\View;

class CreateWireMasterPacking extends CreateRecord
{
    protected static string $resource = WireMasterPackingResource::class;

    public $processOrder;

    public $customerPo;

    public $plantId;

    public $count = 0;

    public $snoCount = 0;

    public $pendingPallet;

    public array $importedPoList = [];

    protected static string $view = 'filament.resources.wire-sticker-resource.create-wire-master-packing';

    protected $listeners = [
        'updateSnoQuantity' => '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;

        $customerPo = trim($this->form->getState()['customer_po_master_id'])?? null;

        $wirePackNo = trim($this->form->getState()['wire_packing_number'])?? null;

        $wirePackNo = trim($wirePackNo) ?? null;

        $user = Filament::auth()->user();

        $operatorName = $user->name;

        if (empty($processOrder) || $processOrder == '')
        {
            Notification::make()
                ->title("Process Order can't be empty")
                ->danger()
                ->duration(5000)
                ->send();

            $this->form->fill([
                'process_order' => null,
                'plant_id' => $plantId,
                'customer_po_master_id'  => $customerPo,
                'wire_packing_number' => $wirePackNo,
                'Sno_quantity' => 0,
                'created_by'    => $operatorName,
                'scanned_by'    => $operatorName,
            ]);
            return;
        }

        // $pattern = '/^([^|]+)\|([^|]+)\|(\d+(\.\d+)?)$/';
        // $pattern = '/^([^|]+)\|([^|]+)\|([^|]+)\|(\d+(\.\d+)?)$/';
        $pattern = '/^([^|]+)\|([^|]+)\|([^|]+)\|(\d+(\.\d+)?)(kg)?$/i';

        if (!preg_match($pattern, $processOrder, $matches))
        {
            Notification::make()
                ->title("Scan Valid Qr code ")
                ->body("Expected Format : (MaterialCode|Process Order-Id|Weight)")
                ->danger()
                ->duration(5000)
                ->send();

            $this->form->fill([
                'process_order' => null,
                'plant_id' => $plantId,
                'customer_po_master_id'  => $customerPo,
                'wire_packing_number' => $wirePackNo,
                'Sno_quantity' => 0,
                'created_by'    => $operatorName,
                'scanned_by'    => $operatorName,
            ]);
            return;
        }

        $materialCode   = $matches[1];
        $processOrderId = $matches[2];
        $coilNo         = $matches[3];
        $weight         = $matches[4];

        $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([
                'process_order' => null,
                'plant_id' => $plantId,
                'customer_po_master_id'  => $customerPo,
                'wire_packing_number' => $wirePackNo,
                '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([
                'process_order' => null,
                'plant_id' => $plantId,
                'customer_po_master_id'  => $customerPo,
                'wire_packing_number' => $wirePackNo,
                'Sno_quantity' => 0,
                'created_by'    => $operatorName,
                'scanned_by'    => $operatorName,
            ]);
            return;
        }

        $icodeAgaCPoPlant = CustomerPoMaster::where('item_id', $itemId)->where('plant_id', $plantId)->first();

        if(!$icodeAgaCPoPlant)
        {
            Notification::make()
                ->title("Unknown Item Code in Customer PO")
                ->body("Item Code '$materialCode' not found in any active Customer PO against Plant Code '$plantcode'")
                ->danger()
                ->duration(5000)
                ->send();

            $this->form->fill([
                'process_order' => null,
                'plant_id' => $plantId,
                'customer_po_master_id'  => $customerPo,
                'wire_packing_number' => $wirePackNo,
                'Sno_quantity' => 0,
                'created_by'    => $operatorName,
                'scanned_by'    => $operatorName,
            ]);
            return;
        }

        $processOrderAgaPlant = WireMasterPacking::where('process_order', $processOrderId . '-' . $coilNo)->where('plant_id', $plantId)->first();

        if($processOrderAgaPlant)
        {
            Notification::make()
                ->title("Duplicate Process Order")
                ->body("Duplicate process order found '$processOrderId' against Plant Code '$plantcode'")
                ->danger()
                ->duration(5000)
                ->send();

            $this->form->fill([
                'process_order' => null,
                'plant_id' => $plantId,
                'customer_po_master_id'  => $customerPo,
                'wire_packing_number' => $wirePackNo,
                'Sno_quantity' => 0,
                'created_by'    => $operatorName,
                'scanned_by'    => $operatorName,
            ]);
            return;
        }

        $customerPoRecord = CustomerPoMaster::where('customer_po', $customerPo)
            ->where('plant_id', $plantId)
            ->where('item_id', $itemId)
            ->first();

        // $customerPoName = $customerPoRecord->customer_po;

        // if ($customerPoRecord) {
        //     $customerPoName = $customerPoRecord->customer_po;
        // } else {
        //     $customerPoName = null;
        // }

        if(!$customerPoRecord)
        {
            Notification::make()
                ->title("PO Not Found")
                ->body("Customer PO '$customerPo' for Item '$materialCode' not found against Plant '$plantcode'")
                ->danger()
                ->duration(5000)
                ->send();

            $this->form->fill([
                'process_order' => null,
                'plant_id' => $plantId,
                'customer_po_master_id'  => $customerPo,
                'wire_packing_number' => $wirePackNo,
                'Sno_quantity' => 0,
                'created_by'    => $operatorName,
                'scanned_by'    => $operatorName,
            ]);
            return;
        }

        $alreadyScannedQty = WireMasterPacking::where('customer_po_master_id', $customerPoRecord->id)
            ->where('plant_id', $plantId)
            ->where('item_id', $itemId)
            ->selectRaw('SUM(CAST(weight AS NUMERIC)) as total_weight')
            ->value('total_weight');

        $totalQty = round((float)$alreadyScannedQty + (float)$weight, 3);


        if($totalQty > round((float)$customerPoRecord->quantity, 3))
        {

            Notification::make()
                ->title("Scanned Weight Exceeds PO Quantity")
                ->body("Scanned weight '$weight' and already scanned weight '$alreadyScannedQty' exceeds allowed quantity '{$customerPoRecord->quantity}' for PO '$customerPoRecord->customer_po' and Item '$materialCode'")
                ->danger()
                ->duration(5000)
                ->send();

            $this->form->fill([
                'process_order' => null,
                'plant_id' => $plantId,
                'customer_po_master_id'  => $customerPo,
                'item_id' => $itemId,
                'wire_packing_number' => $wirePackNo,
                'Sno_quantity' => 0,
                'created_by'    => $operatorName,
                'scanned_by'    => $operatorName,
            ]);
            return;
        }
        try
        {
            $existingPallet = WireMasterPacking::where('plant_id', $plantId)
            ->where('wire_packing_number', $wirePackNo)
            ->first();

            $count = WireMasterPacking::where('plant_id', $plantId)
            ->where('wire_packing_number', $wirePackNo)
            ->count('wire_packing_number');

            $createdAt = $existingPallet ? $existingPallet->created_at : $clickedAt ?? now();

            $createdBy = $existingPallet ? $existingPallet->created_by : $clickedBy ?? $operatorName;

            $record = WireMasterPacking::create([
                'plant_id'       => $plantId,
                'item_id'        => $itemId,
                'wire_packing_number'  => $wirePackNo,
                'process_order'  => $processOrderId . '-' . $coilNo,
                'customer_po_master_id'    => $customerPoRecord->id,
                'weight'         => $weight,
                'created_by'     => $createdBy,
                'scanned_by'     => $operatorName,
                'created_at'     => $createdAt,
                'scanned_at'     => now(),
                'updated_by'     => $operatorName,
            ]);

            if ($record)
            {

                $this->snoCount = WireMasterPacking::where('plant_id', $plantId)
                    ->where('wire_packing_number', $wirePackNo)
                    ->count();

                $this->dispatch('loadData', $wirePackNo, $plantId);
                $this->form->fill([
                    'plant_id'      => $plantId,
                    'customer_po_master_id'  => $customerPo,
                    'item_id' => $itemId,
                    'wire_packing_number' => $wirePackNo,
                    'process_order' => null,
                    // 'pending_pallet_list' => $pendingPallet,
                    'Sno_quantity' => $this->snoCount,
                    'created_by'    => $operatorName,
                    'scanned_by'    => $operatorName,
                ]);
            }
            else
            {
                Notification::make()
                    ->title("Failed to insert scanned serial number '$processOrderId' into wire master table!")
                    ->danger()
                    ->duration(5000)
                    ->send();

                $this->dispatch('loadData', $wirePackNo, $plantId);
                $this->form->fill([
                    'plant_id'      => $plantId,
                    'customer_po_master_id'  => $customerPo,
                    'item_id' => $itemId,
                    'wire_packing_number' => $wirePackNo,
                    'process_order' => null,
                    // 'pending_pallet_list' => $pendingPallet,
                    '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 '{$processOrderId}' into pallet table!\nScan the new process order to proceed...")
                ->danger()
                ->duration(5000)
                ->send();

            $this->dispatch('loadData', $wirePackNo, $plantId);
            $this->form->fill([
                'plant_id'      => $plantId,
                'customer_po_master_id'  => $customerPo,
                'wire_packing_number' => $wirePackNo,
                'process_order' => null,
                // 'pending_pallet_list' => $pendingPallet,
                'Sno_quantity' => $count,
                'created_by'    => $operatorName,
                'scanned_by'    => $operatorName,
            ]);
            return;
        }

        $this->dispatch('loadData', $wirePackNo, $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()['wire_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 = WireMasterPacking::where('wire_packing_number', $palletNumber)
        ->where('plant_id', $plantId)
        ->first();

        if (!$palletExist)
        {
            Notification::make()
                ->title("Pallet number '$palletNumber' does not have process orders to save!<br>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,
                'wire_packing_number' => $palletNumber,
                'pending_pallet_list' => $pendingPallet,
                'Sno_quantity' => 0,
                'created_by'    => $operatorName,
                'scanned_by'    => $operatorName,
            ]);
            return;
        }

        $allCompleted = WireMasterPacking::where('plant_id', $plantId)
        ->where('wire_packing_number', $palletNumber)
        ->where('wire_packing_status', '=','Completed')
        ->first();

        if ($allCompleted)
        {
            Notification::make()
                ->title("Master Packing pallet number '$palletNumber' already completed the master packing!<br>Generate the new Master 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,
                'wire_packing_number' => null,
                'pending_pallet_list' => null,//$pendingPallet
                'Sno_quantity' => 0,
                'created_by'    => $operatorName,
                'scanned_by'    => $operatorName,
            ]);
            return;
        }

        // $count = PalletValidation::where('plant_id', $plantId)
        // ->where('pallet_number', $palletNumber)
        // ->count('pallet_number');

        if (!$isCompleted)
        {
            $updated = WireMasterPacking::where('wire_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,
                    'wire_packing_number' => null,//$palletNumber
                    'pending_pallet_list' => null,//$pendingPallet
                    'Sno_quantity' => 0,//$count,
                    'created_by'    => $operatorName,
                    'scanned_by'    => $operatorName,
                ]);
                return;
            }
        }
        else
        {
            $updated = WireMasterPacking::where('wire_packing_number', $palletNumber)
            ->where('plant_id', $plantId)
            ->update([
                'wire_packing_status' => 'Completed',
                'updated_at' => now(),
                'updated_by' => $operatorName,
            ]);

            if ($updated > 0)
            {
                Notification::make()
                    ->title("Pallet number '$palletNumber' completed the master packing successfully!")
                    ->success()
                    ->duration(800)
                    ->send();

                $this->dispatch('loadData', '', $plantId);
                $this->form->fill([
                    'process_order' => null,
                    'plant_id' => $plantId,
                    'wire_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()['wire_packing_number']) ?? null;

        $customerPo = trim($this->form->getState()['customer_po_master_id'])?? 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([
            'serial_number' => null,
            'plant_id' => $plantId,
            'customer_po_master_id'  => $customerPo,
            '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,
                'customer_po_master_id'  => $customerPo,
                'wire_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,
                'customer_po_master_id'  => $customerPo,
                'pallet_number' => $palletNumber,
                'pending_pallet_list' => $pendingPallet,
                'Sno_quantity' => 0,
                'created_by'    => $operatorName,
                'scanned_by'    => $operatorName,
            ]);
            return;
        }

        $count = WireMasterPacking::where('plant_id', $plantId)
        ->where('wire_packing_number', $palletNumber)
        ->count('wire_packing_number');


        $palletNotCompleted = WireMasterPacking::where('plant_id', $plantId)
        ->where('wire_packing_number', $palletNumber)
        ->where('wire_packing_status', '=','')
        ->orWhere('wire_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,
                'customer_po_master_id'  => $customerPo,
                'wire_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,
            'customer_po_master_id' => $customerPo,
            'wire_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()['wire_packing_number']) ?? null;

        $customerPo = trim($this->form->getState()['customer_po_master_id'])?? 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('Master Pallet number is required to remove.')
                ->danger()
                ->duration(5000)
                ->send();
            return;
        }

        $pattern = '/^([^|]+)\|([^|]+)\|([^|]+)\|(\d+(\.\d+)?)(kg)?$/i';

        if (!preg_match($pattern, $processOrder, $matches))
        {
            Notification::make()
                ->title("Scan Valid Qr code ")
                ->body("Expected Format : (MaterialCode|Process Order|Id|Weight)")
                ->danger()
                ->duration(5000)
                ->send();

            $this->form->fill([
                'process_order' => null,
                'plant_id' => $plantId,
                'customer_po_master_id'  => $customerPo,
                'Sno_quantity' => 0,
                'created_by'    => $operatorName,
                'scanned_by'    => $operatorName,
            ]);
            return;
        }

        $materialCode   = $matches[1];
        $processOrderId = $matches[2];
        $coilNo =         $matches[3];
        $weight         = $matches[4];

        $count = WireMasterPacking::where('plant_id', $plantId)
        ->where('wire_packing_number', $palletNumber)
        ->count('wire_packing_number');

        if (!$processOrder)
        {
            Notification::make()
                ->title('Process order is required to remove.')
                ->danger()
                ->duration(5000)
                ->send();

            $this->dispatch('loadData', $palletNumber, $plantId);
            $this->form->fill([
                'process_order' => null,
                'plant_id' => $plantId,
                'customer_po_master_id'  => $customerPo,
                'wire_packing_number' => $palletNumber,
                'pending_pallet_list' => $pendingPallet,
                'Sno_quantity' => $count,
                'created_by'    => $operatorName,
                'scanned_by'    => $operatorName,
            ]);
            return;
        }


        $processOrderexist = WireMasterPacking::where('plant_id', $plantId)
        ->where('process_order', $processOrderId . '-' . $coilNo)
        ->first();
        if (!$processOrderexist)
        {
            Notification::make()
                ->title('Process Order not exists in pallet table.')
                ->danger()
                ->duration(5000)
                ->send();

            $this->dispatch('loadData', $palletNumber, $plantId);
            $this->form->fill([
                'process_order' => null,
                'plant_id' => $plantId,
                'customer_po_master_id'  => $customerPo,
                'wire_packing_number' => $palletNumber,
                'pending_pallet_list' => $pendingPallet,
                'Sno_quantity' => $count,
                'created_by'    => $operatorName,
                'scanned_by'    => $operatorName,
            ]);
            return;
        }

        $palletExist = WireMasterPacking::where('plant_id', $plantId)
        ->where('process_order', $processOrderId . '-' . $coilNo)
        ->where('wire_packing_number', '!=', '')
        ->where('wire_packing_number', '!=', null)
        ->first();

        if ($palletExist && $palletExist->wire_packing_number != $palletNumber)
        {
            Notification::make()
                ->title("Scanned process order number exist in pallet number '$palletExist->wire_packing_number'.<br>Scan the valid exist process order to remove!")
                ->danger()
                ->duration(5000)
                ->send();

            $this->dispatch('loadData', $palletNumber, $plantId);
            $this->form->fill([
                'process_order' => null,
                'plant_id' => $plantId,
                'customer_po_master_id'  => $customerPo,
                'wire_packing_number' => $palletNumber,
                'pending_pallet_list' => $pendingPallet,
                'Sno_quantity' => $count,
                'created_by'    => $operatorName,
                'scanned_by'    => $operatorName,
            ]);
            return;
        }


        $deleted = WireMasterPacking::where('plant_id', $plantId)
            ->where('wire_packing_number', $palletNumber)
            ->where('process_order', $processOrderId . '-' . $coilNo)
            ->forceDelete();

            if ($deleted)
            {
                // Notification::make()
                //     ->title("Scanned serial number '$serialNumber' successfully removed from pallet table!<br>Scan the next exist serial number to remove...")
                //     ->success()
                //     ->duration(600)
                //     ->send();

                $this->snoCount = WireMasterPacking::where('plant_id', $plantId)
                ->where('wire_packing_number', $palletNumber)
                ->count();

                $this->form->fill([
                    'plant_id'      => $plantId,
                    'customer_po_master_id'  => $customerPo,
                    'wire_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([
                    'process_order' => null,
                    'plant_id' => $plantId,
                    'customer_po_master_id'  => $customerPo,
                    'wire_packing_number' => $palletNumber,
                    'pending_pallet_list' => $pendingPallet,
                    'Sno_quantity' => $count,
                    'created_by'    => $operatorName,
                    'scanned_by'    => $operatorName,
                ]);
            }

        //$this->dispatch('removeSno', $serialNumber, $palletNumber, $plantId);
    }

    public function getFormActions(): array
    {
        return [];
    }
}
