tengo un problema y no lo he podido resolver, esta misma SP funciona
tanto en el equipo de desarrollo como en algunos de los que corren la
aplicacion cliente, pero en otros no ejecuta los comandos de
actualizacion de la tabla.
funciona en forma aleatoria en win98/win2000/winMe/WinXp ya no me
preocupo por fecha y aun eliminando el filtro por @vendedor
CREATE procedure Anula_ticket
@ticketId bigint,
@fullventa char(8000) output,
@vendedor char(6)
as
declare Allnum cursor
for
select cod_loteria,numero,monto,terminal,fecha from venta where
(numeroticket = @ticketId and rtrim(cod_vendedor) = rtrim(@vendedor))
open Allnum
SET LOCK_TIMEOUT 1800
SET NOCOUNT ON
declare @fecha datetime
declare @numero int
declare @num char(3)
declare @vende money
declare @vende2 money
declare @codigo char(8)
declare @terminal bit
declare @totlines int
declare @currline int
declare @lot char(3)
declare @equivale char(3)
declare @resultado char(8000)
declare @min_diff int
DECLARE @retcod int
set @resultado = ' '
fetch from allnum into @lot,@numero,@vende,@terminal,@fecha
set @min_diff = datediff(n,@fecha,getdate())
print convert(char(10),@min_diff)
if @min_diff > 5
begin
close allnum
deallocate allnum
return(-120)
end
if @vende < 0
begin
close allnum
deallocate allnum
return(-150)
end
while @@fetch_status = 0
Begin
print @lot
set @num = substring(convert(char(4),1000+@numero),2,3)
if @terminal = 1
set @codigo = 'M'+@lot+@num
else
set @codigo = 'T'+@lot+@num
set @vende2 = -@vende
if @terminal = 1
set @num = convert(int,@num)
execute set_top @vende = @vende2 output, @lot=@lot, @numero=@num,
@terminal=@terminal,@vendedor=@vendedor,@codigo=@codigo
print 'Vende: ' + convert(char(12),@vende)
print 'Vende2: ' + convert(char(12),@vende2)
set @resultado = @codigo + convert(char(10),@vende2) + @resultado
fetch next from allnum into @lot,@numero,@vende,@terminal
end
set @fullventa = ltrim(@resultado)
print @fullventa
close allnum
deallocate allnum
if len(@fullventa)>10
begin
begin tran
update venta set monto = -monto where numeroticket = @ticketid
if @@error > 0
begin
rollback tran
return (-100)
end
update tickets set nulo = 1,quienanula = host_id(), fechaanula = getdate
() where numeroticket = @ticketid
if @@error > 0
begin
rollback tran
return (-100)
end
commit tran
end
else
return(-155)
GO
Leer las respuestas