Update InventarioPrenda.php
This commit is contained in:
@@ -28,5 +28,49 @@ class InventarioPrenda extends Model
|
|||||||
// Estado automático inicial
|
// Estado automático inicial
|
||||||
$inventario->estado = 'en_bodega';
|
$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