diff --git a/app/Models/InventarioPrenda.php b/app/Models/InventarioPrenda.php index 5c7f324..f4c90b1 100644 --- a/app/Models/InventarioPrenda.php +++ b/app/Models/InventarioPrenda.php @@ -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', + ]); + }); } }