From c615d25a3a161d06e43db35c33745b7acbc1b887 Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Mon, 19 Jan 2026 11:03:25 -0500 Subject: [PATCH] up --- app/Filament/Widgets/PipelineOrdersWidget.php | 45 ++++++++++ .../Filament/OrdenProduccionController.php | 39 +++++++++ .../filament/gestion-dashboard.blade.php | 21 +---- .../widgets/pipeline-orders-widget.blade.php | 85 +++++++++++++++++++ routes/web.php | 4 + 5 files changed, 175 insertions(+), 19 deletions(-) create mode 100644 app/Filament/Widgets/PipelineOrdersWidget.php create mode 100644 app/Http/Controllers/Filament/OrdenProduccionController.php create mode 100644 resources/views/filament/widgets/pipeline-orders-widget.blade.php diff --git a/app/Filament/Widgets/PipelineOrdersWidget.php b/app/Filament/Widgets/PipelineOrdersWidget.php new file mode 100644 index 0000000..242cd5b --- /dev/null +++ b/app/Filament/Widgets/PipelineOrdersWidget.php @@ -0,0 +1,45 @@ + 'En corte', + 'en_confeccion' => 'En confección', + 'en_tintoreria' => 'En tintorería', + 'en_acabados' => 'En acabados', + 'finalizada' => 'Finalizada', + ]; + + public $ordersByState = []; + + public function mount() + { + $this->loadOrders(); + } + + public function loadOrders() + { + $this->ordersByState = []; + foreach (array_keys($this->states) as $s) { + $this->ordersByState[$s] = OrdenProduccion::where('estado', $s) + ->orderBy('fecha_entrega_estimada') + ->limit(12) + ->get(); + } + } + + // Allow external refresh + protected function getListeners(): array + { + return [ + 'pipelineUpdated' => 'loadOrders', + ]; + } +} diff --git a/app/Http/Controllers/Filament/OrdenProduccionController.php b/app/Http/Controllers/Filament/OrdenProduccionController.php new file mode 100644 index 0000000..412ab0d --- /dev/null +++ b/app/Http/Controllers/Filament/OrdenProduccionController.php @@ -0,0 +1,39 @@ +validate([ + 'state' => ['required', 'in:en_corte,en_confeccion,en_tintoreria,en_acabados,finalizada'], + ]); + + try { + $orden->update(['estado' => $data['state']]); + return response()->json(['ok' => true, 'state' => $data['state']]); + } catch (ValidationException $e) { + return response()->json(['ok' => false, 'message' => $e->getMessage()], 422); + } catch (\Exception $e) { + return response()->json(['ok' => false, 'message' => $e->getMessage()], 500); + } + } + + public function advance(Request $request, OrdenProduccion $orden) + { + try { + $orden->avanzarEstado(); + return response()->json(['ok' => true, 'state' => $orden->estado]); + } catch (ValidationException $e) { + return response()->json(['ok' => false, 'message' => $e->getMessage()], 422); + } catch (\Exception $e) { + return response()->json(['ok' => false, 'message' => $e->getMessage()], 500); + } + } +} diff --git a/resources/views/filament/gestion-dashboard.blade.php b/resources/views/filament/gestion-dashboard.blade.php index 81b0307..bdc5c3e 100644 --- a/resources/views/filament/gestion-dashboard.blade.php +++ b/resources/views/filament/gestion-dashboard.blade.php @@ -24,25 +24,8 @@ $recentTrans = TrasladoPrenda::latest()->limit(8)->get();