u
This commit is contained in:
@@ -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 = [
|
||||
|
||||
Reference in New Issue
Block a user