This commit is contained in:
Lizandro Guarnizo
2026-02-04 16:35:34 -05:00
parent cb7bc1229b
commit f37b2fe8d0
9 changed files with 598 additions and 105 deletions
+31 -30
View File
@@ -50,24 +50,20 @@ class TintoreriaResource extends Resource
Select::make('orden_produccion_id')
->label('Orden de Producción')
->options(fn () => \App\Models\OrdenProduccion::whereHas('ojales', function ($query) {
$query->where('terminada', true);
})->get()->mapWithKeys(function ($op) {
// Calcular cantidad disponible de ojales terminados
$cantidadOjalesTerminados = \App\Models\Ojal::where('orden_produccion_id', $op->id)
->where('terminada', true)
->sum('cantidad_enviada');
->options(fn () => \App\Models\OrdenProduccion::all()->mapWithKeys(function ($op) {
// Verificar que ambos procesos estén completos
$verificacion = $op->verificarProcesosCompletos();
// Calcular cantidad ya enviada a tintorería
$enviadasEnTint = \App\Models\Tintoreria::where('orden_produccion_id', $op->id)
->whereNull('fecha_recepcion')
->sum('cantidad_enviada');
if (!$verificacion['completo']) {
// Si no están completos, no mostrar o mostrar con advertencia
return [];
}
// Calcular disponible
$disponible = $cantidadOjalesTerminados - $enviadasEnTint;
// Calcular cantidad disponible (mínimo entre ojales y prensillas terminados - ya enviadas)
$disponible = $op->getCantidadDisponibleParaTintoreria();
if ($disponible > 0) {
return [$op->id => "{$op->numero_orden} (Disponible: {$disponible})"];
return [$op->id => "{$op->numero_orden} (Disponible: {$disponible}) [O:{$verificacion['ojales_terminados']} P:{$verificacion['prensillas_terminadas']}]"];
}
return [];
})->filter())
@@ -77,27 +73,25 @@ class TintoreriaResource extends Resource
->required()
->afterStateUpdated(function ($state, $set) {
if ($state) {
// Calcular cantidad disponible de ojales terminados
$cantidadOjalesTerminados = \App\Models\Ojal::where('orden_produccion_id', $state)
->where('terminada', true)
->sum('cantidad_enviada');
$enviadasEnTint = \App\Models\Tintoreria::where('orden_produccion_id', $state)
->whereNull('fecha_recepcion')
->sum('cantidad_enviada');
$pending = max(0, (int)$cantidadOjalesTerminados - (int)$enviadasEnTint);
$set('cantidad_enviada', $pending ?: 0);
$set('fecha_envio', now()->toDateString());
$orden = \App\Models\OrdenProduccion::find($state);
$set('prenda_nombre_info', $orden->prenda_modelo ?? 'Sin especificar');
if ($orden) {
$disponible = $orden->getCantidadDisponibleParaTintoreria();
$verificacion = $orden->verificarProcesosCompletos();
$set('cantidad_enviada', $disponible ?: 0);
$set('fecha_envio', now()->toDateString());
$set('prenda_nombre_info', $orden->prenda_modelo ?? 'Sin especificar');
// Información adicional sobre los procesos
$set('info_procesos', "Ojales: {$verificacion['ojales_terminados']} | Prensillas: {$verificacion['prensillas_terminadas']}");
}
} else {
$set('prenda_nombre_info', null);
$set('info_procesos', null);
}
})
->helperText('Solo se muestran órdenes con ojales/prensillas terminados'),
->helperText('Solo se muestran órdenes con AMBOS procesos (ojales Y prensillas) terminados'),
TextInput::make('prenda_nombre_info')
->label('Prenda')
@@ -106,6 +100,13 @@ class TintoreriaResource extends Resource
->visible(fn ($get) => $get('orden_produccion_id') !== null)
->helperText('Nombre de la prenda de la orden de producción seleccionada'),
TextInput::make('info_procesos')
->label('Estado de Procesos')
->disabled()
->dehydrated(false)
->visible(fn ($get) => $get('orden_produccion_id') !== null)
->helperText('Cantidad terminada en cada proceso'),
TextInput::make('tipo_proceso')
->label('Tipo de proceso')
->required(),