Update con Inner Join
Tengo una tabla con el detalle de las compras y cree un desencadenador para que actualice el inventario al momento de eliminar un registro de la tabla detalle. Reingresar la cantidad pedida.
CREATE DESENCADENADOR DelDetalleFactura
ON DetalleFacturas
FOR DELETE
AS
UPDATE KARDEX
SET SALDODOCUMENTAL = SALDODOCUMENTAL + DELETED.CANTIDAD
FROM KARDEX INNER JOIN DELETED
ON KARDEX.CODIGOZOFRIID = DELETED.CODIGOZOFRIID
El problema se produce cuando hay más de un producto con igual código en detalleFactura, en ese momento no actualiza las existencias. Pero cuando hay uno solo ningún problema.
tambien intente hacer un procedimiento almacenado
Alter PROCEDURE SPDelFactura (@FacturaID as numeric(9)) AS
DECLARE @error int
begin tran
UPDATE dbo.Kardex SET dbo.Kardex.SaldoDocumental = dbo.Kardex.SaldoDocumental + dbo.DetalleFacturas.Cantidad
FROM dbo.Kardex INNER JOIN dbo.DetalleFacturas ON
(dbo.Kardex.CodigoZofriID = dbo.DetalleFacturas.CodigoZofriID) WHERE dbo.DetalleFacturas.FacturaID = @FacturaID
SET @error = @@error
if (@error<>0) goto Deshacer
DELETE Facturas WHERE FacturaID = @FacturaID
SET @error = @@error
if (@error<>0) goto Deshacer
commit tran
goto fin
Deshacer:
rollback tran
return @error
fin:
return 0
En este caso solo recupera el saldo del primer item con el mismo código.
Ojala me puedas ayudar estoy entrampado en este tema hace varios días.
CREATE DESENCADENADOR DelDetalleFactura
ON DetalleFacturas
FOR DELETE
AS
UPDATE KARDEX
SET SALDODOCUMENTAL = SALDODOCUMENTAL + DELETED.CANTIDAD
FROM KARDEX INNER JOIN DELETED
ON KARDEX.CODIGOZOFRIID = DELETED.CODIGOZOFRIID
El problema se produce cuando hay más de un producto con igual código en detalleFactura, en ese momento no actualiza las existencias. Pero cuando hay uno solo ningún problema.
tambien intente hacer un procedimiento almacenado
Alter PROCEDURE SPDelFactura (@FacturaID as numeric(9)) AS
DECLARE @error int
begin tran
UPDATE dbo.Kardex SET dbo.Kardex.SaldoDocumental = dbo.Kardex.SaldoDocumental + dbo.DetalleFacturas.Cantidad
FROM dbo.Kardex INNER JOIN dbo.DetalleFacturas ON
(dbo.Kardex.CodigoZofriID = dbo.DetalleFacturas.CodigoZofriID) WHERE dbo.DetalleFacturas.FacturaID = @FacturaID
SET @error = @@error
if (@error<>0) goto Deshacer
DELETE Facturas WHERE FacturaID = @FacturaID
SET @error = @@error
if (@error<>0) goto Deshacer
commit tran
goto fin
Deshacer:
rollback tran
return @error
fin:
return 0
En este caso solo recupera el saldo del primer item con el mismo código.
Ojala me puedas ayudar estoy entrampado en este tema hace varios días.
Respuesta de panzaverde
1
1 respuesta más de otro experto
Respuesta de iislas
1