This commit is contained in:
lizandrogd
2026-01-20 00:18:49 -05:00
parent c532a686f5
commit afaea4063c
8 changed files with 77 additions and 7 deletions
+37
View File
@@ -190,6 +190,43 @@ class OrdenProduccion extends Model
return false;
}
/**
* Estado calculado para mostrar en UI: si está completada o la última etapa que tiene tareas pendientes.
*/
public function getEstadoDisplayAttribute()
{
if ($this->canBeFinalized() || $this->estado === 'finalizada') {
return 'finalizada';
}
// Revisar etapas de último a primero para encontrar la etapa que aún tiene tareas pendientes
if (\App\Models\ProcesoAcabado::where('orden_produccion_id', $this->id)->whereNull('fecha_recepcion')->exists()) {
return 'en_acabados';
}
if (\App\Models\Tintoreria::where('orden_produccion_id', $this->id)->whereNull('fecha_recepcion')->exists()) {
return 'en_tintoreria';
}
if (\App\Models\Confeccion::where('orden_produccion_id', $this->id)->whereNull('fecha_recepcion')->exists()) {
return 'en_confeccion';
}
// Por defecto devolver el estado actual (incluye en_corte u otros)
return $this->estado ?? 'en_corte';
}
/**
* Forzar finalización manualmente (útil si desea marcar como finalizada aunque no esté totalmente recibida)
*/
public function manualFinalize(): void
{
$this->update(['estado' => 'finalizada']);
// Intentar crear inventario con lo recibido hasta ahora
$this->crearInventarioPorFinalizacion();
}
public function avanzarEstado(): void
{
$flujo = [