From 424b1b47254fa10c29177f21594b9a508b9bf2f7 Mon Sep 17 00:00:00 2001 From: dhanabalan Date: Mon, 12 Oct 2026 11:22:29 +0530 Subject: [PATCH] Added production non planned report page --- .../Pages/ProductionNonPlannedReport.php | 194 ++++++++++++++++++ .../production-non-planned-report.blade.php | 20 ++ 2 files changed, 214 insertions(+) create mode 100644 app/Filament/Pages/ProductionNonPlannedReport.php create mode 100644 resources/views/filament/pages/production-non-planned-report.blade.php diff --git a/app/Filament/Pages/ProductionNonPlannedReport.php b/app/Filament/Pages/ProductionNonPlannedReport.php new file mode 100644 index 00000000..2c0af18d --- /dev/null +++ b/app/Filament/Pages/ProductionNonPlannedReport.php @@ -0,0 +1,194 @@ +form->fill([ + 'date' => null, + 'plant_id' => null, + 'line_id' => null, + 'category' => null, + ]); + } + + + public function form(Form $form): Form + { + return $form + ->statePath('filters') + ->schema([ + Section::make('') + ->schema([ + + DateTimePicker::make('date') + ->label('Choose Date') + ->native(false) + ->displayFormat('d-m-Y') + ->reactive(), + + Select::make('plant_id') + ->label('Plant') + ->relationship('plant', 'name') + ->reactive() + // ->searchable() + ->options(function (callable $get) { + $userHas = Filament::auth()->user()->plant_id; + return ($userHas && strlen($userHas) > 0) ? Plant::where('id', $userHas)->pluck('name', 'id')->toArray() : Plant::pluck('name', 'id')->toArray(); + }) + ->required() + ->afterStateUpdated(function ($state, callable $get, $set) { + // dd($state); + $set('line_id', null); + $set('category', null); + $this->dispatch('loadData',$state, '', '', '', ''); + }), + Select::make('line_id') + ->label('Line') + ->required() + // ->relationship('line', 'name') + // ->searchable() + ->columnSpan(1) + ->options(function (callable $get) { + if (!$get('plant_id')) { + return []; + } + + return \App\Models\Line::where('plant_id', $get('plant_id')) + ->pluck('name', 'id') + ->toArray(); + }) + ->reactive() + ->afterStateUpdated(function ($state, callable $get, $set) { + $plantId = $get('plant_id'); + $lineId = $state; + $month = $get('month'); + $year = $get('year'); + $date = $get('date'); + + $month = (int) $get('month'); + $this->dispatch('loadData',$year, $month, $plantId, $lineId, $date); + }), + + // Select::make('item_id') + // ->label('Item Code') + // ->placeholder('Select Item Code') + // ->options(function (callable $get) { + // $plantId = $get('plant_id'); + // $lineId = $get('line_id'); + // $date = $get('date'); + + // if (!$plantId || !$lineId || !$date) { + // return []; + // } + + // $selectedDate = Carbon::parse($date)->startOfDay(); + // $startDate = $selectedDate->copy()->setTime(8, 0, 0); + // $endDate = $startDate->copy()->addDay(); + + // $month = $selectedDate->month; + // $year = $selectedDate->year; + + // $plannedItemIds = ProductionPlan::query() + // ->where('plant_id', $plantId) + // ->where('line_id', $lineId) + // ->whereMonth('production_plans.created_at', $month) + // ->whereYear('production_plans.created_at', $year) + // ->whereNotNull('item_id') + // ->distinct() + // ->pluck('item_id'); + + // $stickerMasterIds = QualityValidation::query() + // ->where('plant_id', $plantId) + // ->where('line_id', $lineId) + // ->where('created_at', '>=', $startDate) + // ->where('created_at', '<', $endDate) + // ->whereNotNull('sticker_master_id') + // ->distinct() + // ->pluck('sticker_master_id'); + + // $producedItemIds = StickerMaster::query() + // ->whereIn('id', $stickerMasterIds) + // ->whereNotNull('item_id') + // ->distinct() + // ->pluck('item_id'); + + // return Item::query() + // ->whereIn('id', $producedItemIds) + // ->whereNotIn('id', $plannedItemIds) + // ->orderBy('code') + // ->pluck('code', 'id') + // ->toArray(); + // }) + // ->searchable() + // ->reactive() + // ->required(), + + TextInput::make('category') + ->label('Category') + ->reactive() + ->afterStateUpdated(function ($state, callable $get, $set) { + $plantId = $get('plant_id'); + $lineId = $get('line_id'); + // $month = $get('month'); + $year = $get('year'); + + $month = (int) $get('month'); + $category = $get('category'); + + }), + + ]) + ->columns(4) + ]); + } + + public function generateNonPlan(){ + $plantId = $this->filters['plant_id'] ?? null; + $lineId = $this->filters['line_id'] ?? null; + $date = $this->filters['date'] ?? null; + $category = $this->filters['category'] ?? null; + if($category == '' || $category == null){ + $this->dispatch('loadData', $date, $plantId, $lineId); + } + else{ + $this->dispatch('loadDataCategory',$date, $plantId, $lineId, $category); + } + } + + public static function canAccess(): bool + { + return Auth::check() && Auth::user()->can('view production non planned page'); + } + +} diff --git a/resources/views/filament/pages/production-non-planned-report.blade.php b/resources/views/filament/pages/production-non-planned-report.blade.php new file mode 100644 index 00000000..d34369c1 --- /dev/null +++ b/resources/views/filament/pages/production-non-planned-report.blade.php @@ -0,0 +1,20 @@ + +
+ + {{-- Render the Select form fields --}} +
+ {{ $this->form }} +
+ + Generate + + +
+ +
+
+