up
This commit is contained in:
@@ -83,7 +83,58 @@ class OrdenProduccion extends Model
|
||||
return $this->belongsTo(\App\Models\Producto::class, 'producto_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* Verifica si ambos procesos (ojales y prensillas) están completos para una cantidad específica
|
||||
*
|
||||
* @param int $cantidad Cantidad de prendas a verificar
|
||||
* @return array ['completo' => bool, 'ojales_terminados' => int, 'prensillas_terminadas' => int, 'minimo' => int]
|
||||
*/
|
||||
public function verificarProcesosCom
|
||||
|
||||
pletos(int $cantidad = null): array
|
||||
{
|
||||
$cantidadVerificar = $cantidad ?? $this->cantidad_total;
|
||||
|
||||
// Cantidad de ojales terminados
|
||||
$ojalesTerminados = $this->ojales()
|
||||
->where('terminada', true)
|
||||
->sum('cantidad_enviada');
|
||||
|
||||
// Cantidad de prensillas terminadas
|
||||
$prensillasTerminadas = $this->prensillas()
|
||||
->where('terminada', true)
|
||||
->sum('cantidad_enviada');
|
||||
|
||||
// El mínimo entre ambos procesos
|
||||
$minimoCompleto = min($ojalesTerminados, $prensillasTerminadas);
|
||||
|
||||
// Están completos si el mínimo cubre la cantidad requerida
|
||||
$completo = $minimoCompleto >= $cantidadVerificar;
|
||||
|
||||
return [
|
||||
'completo' => $completo,
|
||||
'ojales_terminados' => $ojalesTerminados,
|
||||
'prensillas_terminadas' => $prensillasTerminadas,
|
||||
'minimo_completo' => $minimoCompleto,
|
||||
'cantidad_requerida' => $cantidadVerificar,
|
||||
'faltante_ojales' => max(0, $cantidadVerificar - $ojalesTerminados),
|
||||
'faltante_prensillas' => max(0, $cantidadVerificar - $prensillasTerminadas),
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Obtiene la cantidad disponible para enviar a tintorería
|
||||
* (solo las prendas que tienen ambos procesos completos)
|
||||
*/
|
||||
public function getCantidadDisponibleParaTintoreria(): int
|
||||
{
|
||||
$verificacion = $this->verificarProcesosCompletos();
|
||||
|
||||
// Ya enviadas a tintorería
|
||||
$enviadasTintoreria = $this->tintorerias()->sum('cantidad_enviada');
|
||||
|
||||
return max(0, $verificacion['minimo_completo'] - $enviadasTintoreria);
|
||||
}
|
||||
|
||||
protected static function booted()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user