Update InventarioPrenda.php
This commit is contained in:
@@ -28,5 +28,49 @@ class InventarioPrenda extends Model
|
||||
// Estado automático inicial
|
||||
$inventario->estado = 'en_bodega';
|
||||
});
|
||||
|
||||
// Al crear inventario de prenda, alimentar (incrementar o crear) el stock de Producto
|
||||
static::created(function ($inventario) {
|
||||
if (! $inventario->cantidad_terminada || $inventario->cantidad_terminada <= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
$op = $inventario->ordenProduccion;
|
||||
if (! $op) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Intentar emparejar producto por nombre de prenda_modelo o referencia
|
||||
$nombre = $op->prenda_modelo ?? $op->referencia ?? null;
|
||||
if (! $nombre) {
|
||||
return;
|
||||
}
|
||||
|
||||
$producto = \App\Models\Producto::where('nombre', $nombre)->first();
|
||||
|
||||
// Si existe y no tiene variantes, incrementar stock
|
||||
if ($producto) {
|
||||
if (! $producto->variants()->exists()) {
|
||||
// Si el producto usa bodegas, sumar al stock directo (simplificado)
|
||||
$producto->increment('stock', $inventario->cantidad_terminada);
|
||||
} else {
|
||||
// Tiene variantes: no hacemos cambios automáticos aquí (se requiere asignación manual)
|
||||
// Podríamos implementar reglas adicionales si se definieran las variantes en la OP
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Si no existe el producto, crearlo automáticamente con stock inicial
|
||||
\App\Models\Producto::create([
|
||||
'nombre' => $nombre,
|
||||
'descripcion' => 'Creado automáticamente desde InventarioPrenda (OP #' . $op->id . ')',
|
||||
'stock' => $inventario->cantidad_terminada,
|
||||
'estado' => true,
|
||||
'precio_compra' => 0,
|
||||
'precio_venta' => 0,
|
||||
'unidad_medida' => 'unidad',
|
||||
]);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user