07/06/2005, 11:48
|
| | Fecha de Ingreso: abril-2005
Mensajes: 19
Antigüedad: 19 años, 9 meses Puntos: 0 | |
Hola, disculpa que no tenga tanto tiempo para analizar tu caso pero te dejo en ejemplo de como lo hago yo
Ojala te sirva
Código:
-- AUTOR: GVV. OBJETO: Eliminar una venta, su detalle, y los abonos en caso de ser un crédito
-- También Actualiza lotes
ALTER PROCEDURE Elimina_Venta
(@Venta INT, @Sucursal INT, @Band INT, @Motivo nvarchar(150) = null, @Fecha datetime = null)
/*@Band = 1 Elimina la venta completamente
@Band = 0 Reactualiza lotes, no elimina encabezado de venta pero pone status en 2 (Cancelado) */
AS
DECLARE @Cant INT, @Prod NVARCHAR(4), @Compra INT
DECLARE DetVta CURSOR
FOR SELECT DetConCan, CatProIde, CatComIde FROM DetVtaCon WHERE VtaConIde = @Venta
OPEN DetVta
FETCH NEXT FROM DetVta INTO @Cant, @Prod, @Compra
WHILE (@@fetch_status <> -1)
BEGIN
IF (@@fetch_status <> -2)
BEGIN
UPDATE TblCatLot
SET CatLotCan = CatLotCan + @Cant
WHERE CatLotCve = @Prod + '-' + CAST(@Compra AS NVARCHAR)
AND CatSucIde = @Sucursal
END
FETCH NEXT FROM DetVta INTO @Cant, @Prod, @Compra
END
CLOSE DetVta
DEALLOCATE DetVta
if (@Band = 1)
BEGIN
DELETE FROM DetVtaCon WHERE VtaConIde = @Venta --Se Borra el detalle de la venta
DELETE FROM TblCatAbo WHERE CatVtaIde = @Venta --Se Borra cualquier abono en caso de ser
--un crédito
DELETE FROM TblVtaCon Where Id = @Venta --Se Borra el encabezado de la venta
END
ELSE IF (@Band = 0)
BEGIN
UPDATE TblVtaCon
SET VtaConSta = 2, VtaConObs = VtaConObs + ' *** ' + @Motivo, FecMovCan = @Fecha
WHERE Id = @Venta
END
Saludos |