Ante todo Salu2 y gracias por leer mi mensaje
Les comento mi problema
Tengo este trigger
CREATE TRIGGER [DisminuirStock] ON [dbo].[Movimientos]
FOR INSERT
AS
DECLARE @TipoM nvarchar(1)
SELECT Cantidad, CodigoArticulo
INTO #Agregados
FROM Inserted
Select @TipoM = Documento.TipoMovimiento
from Inserted INNER join Documento ON
Inserted.NumeroMovimiento = Documento.NumeroMovimiento
IF @TipoM='D' or @TipoM='I' or @TipoM='J'
BEGIN
update dbo.Articulo
set dbo.Articulo.Stock= dbo.Articulo.Stock + Agregados.cantidad
from #Agregados Agregados inner join dbo.Articulo on
Agregados.CodigoArticulo
Articulo.CodigoArticulo
END
ELSE IF @TipoM='S'
BEGIN
update dbo.Articulo
set dbo.Articulo.Stock= dbo.Articulo.Stock - Agregados.cantidad
from #Agregados Agregados inner join dbo.Articulo on
Agregados.CodigoArticulo
Articulo.CodigoArticulo
END
Tengo uno igual para DELETE con la diferencia que cambian los signo en las
operaciones
para cada una de las condiciones, bueno ahora vamos a trabajar con otro
almacen entonces
hice este cambio ...
CREATE TRIGGER [DisminuirStock] ON [dbo].[Movimientos]
FOR INSERT
AS
DECLARE @TipoM NVARCHAR(1), @Destino NVARCHAR(2)
SELECT Cantidad, CodigoArticulo
INTO #Agregados
FROM Inserted
SELECT @TipoM Documento.TipoMovimiento,@Destino=dbo.Documento.AlmacenDestino
FROM Inserted INNER join Documento ON
Inserted.NumeroMovimiento = Documento.NumeroMovimiento
IF @TipoM='D' or @TipoM='J'
BEGIN
UPDATE dbo.Articulo
SET dbo.Articulo.Stock = dbo.Articulo.Stock + Agregados.Cantidad
FROM #Agregados Agregados INNER JOIN dbo.Articulo ON
Agregados.CodigoArticulo Articulo.CodigoArticulo
END
/*La salida produce disminucion en el stock de la tabla Articulos */
ELSE IF @TipoM='S'
BEGIN
UPDATE dbo.Articulo
SET dbo.Articulo.Stock = dbo.Articulo.Stock - Agregados.Cantidad
FROM #Agregados Agregados INNER JOIN dbo.Articulo ON
Agregados.CodigoArticulo Articulo.CodigoArticulo
END
/*Este es para cuando se inserte un ingreso en el almacen principal*/
ELSE IF @TipoM=' I ' AND @Destino='TS'
BEGIN
UPDATE dbo.Articulo
SET dbo.Articulo.Stock = dbo.Articulo.Stock + Aqregados.Cantidad
FROM #Agregados Agregados INNER JOIN dbo.Articulo ON
Agregados.CodigoArticulo Articulo.CodigoArticulo
END
/*Este es para cuando se inserte un ingreso para el otra almacen*/
ELSE IF @TipoM=' I ' AND @Destino='TC'
BEGIN
UPDATE dbo.Articulo
SET dbo.Articulo.StockInpersa = dbo.Articulo.StockInpersa +
Agregados.Cantidad
FROM #Agregados Agregados INNER JOIN dbo.Articulo ON
Agregados.CodigoArticulo Articulo.CodigoArticulo
END
Cuando hago un Ingreso desde el programa no me da ningun mensaje
de error pero cuando busco en la tabla no esta el Movimiento que agrege, y
cuando hago
una Salida y agrego los Detalles me sale el mensaje de Restriccion de la
tabla que no pueden
existir movimientos repetidos... eso es lo que no entiendo mi trigger me
parece que no tiene
nada especial
Probe quitando los ultimos dos ELSE IF y no me da problema pero por eso sigo
sin enteder???
Y mi tabla de Documento tiene una relacion con la tabla Movimientos de uno a
muchos...
Si necesitan algun tipo mas de informacion no duden en pedirmelo
Muchas gracias.
Leer las respuestas