ASP.NET - Optimizar Codigo

 
Vista:

Optimizar Codigo

Publicado por andres (1 intervención) el 19/10/2007 16:14:22
Necesito calcular la utilidad de un trabajo para eso tengo que validar de acuerdo a 4 tablas los procesos para ir calculando la utilidad, hice en sql un Cursor pero esto no me optimiza la depuracion del proyecto en .Net.

alguien podria ayudarme a optimizar el codigo es el siguiente:

create Procedure UtilidadCalculadaSP
@pagoutil decimal(18,2),
@venta decimal(18,2),
@comisionVend decimal(18,2),
@costosutil decimal(18,2),
@Codproducto int
as

declare @pago decimal(18,2),@costo decimal(18,4),@comision decimal(18,2),@idcarta int,@codclientecarta int,@codcliente int,@utilidadcliente int,
@valorminpago int,@valormaxpago int,@valormincosto decimal(18,2),@valormaxcosto decimal(18,2),@idcosto int,@idpago int,
@idprod int,@productos decimal(18,2),@comisionvendedor decimal(18,2),@Comutil decimal(18,2),@totalcotiza decimal(18,2),@utilidad decimal(18,2)


---------------------- Calcula la utilidad segun promedio de pago-------------------------
declare cat_cursor cursor for
select idpromediopago from grupo01
open cat_cursor
fetch next from cat_cursor
into @idpago

WHILE @@FETCH_STATUS = 0
BEGIN
set @valorminpago=(select valorminimo from grupo01 where idpromediopago=@idpago)
set @valormaxpago=(select valormaximo from grupo01 where idpromediopago=@idpago)

if @idpago=6
begin
IF @pagoutil>=@valorminpago
begin
set @pago=(select resultado from grupo01 where idpromediopago=@idpago)
end
end
else
begin
if @pagoutil>=@valorminpago and @pagoutil<=@valormaxpago
begin
set @pago=(select resultado from grupo01 where idpromediopago=@idpago)
end
end

FETCH NEXT FROM Cat_cursor
INTO @idpago

End
CLOSE cat_cursor
DEALLOCATE cat_cursor


---------------------- Calcula utilidad segun el producto--------------------

declare cat_cursor2 cursor for
select codproducto from grupo02
open cat_cursor2
fetch next from cat_cursor2
into @idprod

WHILE @@FETCH_STATUS = 0
BEGIN

if @codproducto=@idprod
begin
set @productos=(select resultado from grupo02 where codproducto=@idprod)
end

FETCH NEXT FROM Cat_cursor2
INTO @idprod

End
CLOSE cat_cursor2
DEALLOCATE cat_cursor2

--------------------- Calcular utilidad segun el monto de costos---------------------------

declare cat_cursor3 cursor for
select idmonto from grupo03
open cat_cursor3
fetch next from cat_cursor3
into @idcosto

WHILE @@FETCH_STATUS = 0
BEGIN
set @valormincosto=(select valorminimo from grupo03 where idmonto=@idcosto)
set @valormaxcosto=(select valormaximo from grupo03 where idmonto=@idcosto)
if @idcosto=9
begin
if @venta>=@valormincosto
begin
set @costo=(select resultado from grupo03 where idmonto=@idcosto)
end
end
else
begin
if @venta>=@valormincosto and @venta<=@valormaxcosto
begin
set @costo=(select resultado from grupo03 where idmonto=@idcosto)
end
end

FETCH NEXT FROM Cat_cursor3
INTO @idcosto

End
CLOSE cat_cursor3
DEALLOCATE cat_cursor3

------------------------ Calcular utlidad segun comision vendedor-------------------------------------

declare cat_cursor4 cursor for
select comisionvendedor from grupo04
open cat_cursor4
fetch next from cat_cursor4
into @comisionvendedor

WHILE @@FETCH_STATUS = 0
BEGIN

if @comisionvend=@comisionvendedor
begin
set @comision=(select resultado from grupo04 where comisionvendedor=@comisionvendedor)
end

FETCH NEXT FROM Cat_cursor4
INTO @comisionvendedor

End
CLOSE cat_cursor4
DEALLOCATE cat_cursor4

if @pago is null
begin
set @pago=0
end
if @costo is null
begin
set @costo=0
end
if @productos is null
begin
set @productos=0
end
if @comision is null
begin
set @comision=0
end

set @utilidad=(@pago+@costo+@comision+@productos)
if @utilidad is null or @utilidad=0
begin
set @utilidad=25
end

select @utilidad
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder