up
This commit is contained in:
@@ -130,6 +130,29 @@ class OrdenProduccion extends Model
|
||||
if (! isset($orden->fecha_inicio) || ! $orden->fecha_inicio) {
|
||||
$orden->fecha_inicio = now()->toDateString();
|
||||
}
|
||||
|
||||
// Reserva de tela al crear cuando la OP ya nace en 'en_corte'
|
||||
$estadoInicial = $orden->estado ?? 'en_corte';
|
||||
if ($estadoInicial === 'en_corte' && $orden->tela_id && ($orden->metros_requeridos ?? 0) > 0) {
|
||||
$tela = \App\Models\Tela::find($orden->tela_id);
|
||||
if (! $tela) {
|
||||
throw \Illuminate\Validation\ValidationException::withMessages([
|
||||
'tela_id' => 'No se encontró la tela asociada.',
|
||||
]);
|
||||
}
|
||||
|
||||
if ($tela->metros_disponibles < $orden->metros_requeridos) {
|
||||
throw \Illuminate\Validation\ValidationException::withMessages([
|
||||
'metros_requeridos' => 'No hay suficientes metros disponibles para reservar (' . $tela->metros_disponibles . ').',
|
||||
]);
|
||||
}
|
||||
|
||||
// Reservar: restar metros y marcar orden
|
||||
$tela->metros_disponibles = $tela->metros_disponibles - $orden->metros_requeridos;
|
||||
$tela->save();
|
||||
|
||||
$orden->tela_reservada = true;
|
||||
}
|
||||
});
|
||||
|
||||
// Validar y reservar tela al cambiar de estado a 'en_corte'
|
||||
|
||||
Reference in New Issue
Block a user