Hola chicos!!! antes que nada, gracias por leer mi problema...
Estoy elaborando un procedimiento almacenado la parte que me falla es el siguiente:
Código:
--Se crea el cursor que recorre los detalles e inserta en la tabla de facturas_afiliados
declare cur_facturacion cursor for
select f.codigo_suscriptor,
f.codigo_sucursal,
f.num_factura,
convert(varchar(10),f.fecha_actualizacion,120) as fecha_actualizacion,
--Este pedazo decide si es cuota unica o cuota fija
case
--Si es cuota unica
when (select isnull(cuota_unica,0)
from ea_carpeta c
where c.codigo_suscriptor = f.codigo_suscriptor
) <> 0
--Entonces Se coloca cuota unica
then (select isnull(cuota_unica,0)
from ea_carpeta c
where c.codigo_suscriptor = f.codigo_suscriptor)
--Si es cuota fija o sea consumo minimo y es mayor a lo consumido
when (select isnull(cuota_minima,0)
from acr_suscriptores c
where c.codigo_suscriptor = f.codigo_suscriptor
) > sum(f.valor)
--Entonces se coloca la cuota minima obligatoria
then (select isnull(cuota_minima,0)
from acr_suscriptores c
where c.codigo_suscriptor = f.codigo_suscriptor)
--De lo contrario, simplemente se coloca lo consumido
else sum(f.valor)
end as valor_factura,
f.usuario_actualizacion
from ea_detalles_facturas f
where f.fecha_actualizacion = @fecha_factura
group by f.codigo_suscriptor, f.codigo_sucursal, f.num_factura, f.fecha_actualizacion, f.usuario_actualizacion
open cur_facturacion
fetch cur_facturacion
into @codigo_suscriptor,
@codigo_sucursal,
@num_factura,
@fecha_factura,
@valor_factura,
@usuario_factura
--Empieza el loop del cursor
while @@fetch_status = 0
begin
insert into ea_facturas_afiliados
(codigo_suscriptor, codigo_sucursal, num_factura, fecha_factura, valor_factura,
codigo_estado, observacion_factura, concepto_factura,
usuario_factura)
values (@codigo_suscriptor, @codigo_sucursal, @num_factura, @fecha_factura, @valor_factura,
'1', 'FACTURACION DEL '+@fecha_inicio+' AL '+@fecha_final, 'FACTURA DEL '+@fecha_inicio+' AL '+@fecha_final,
@usuario_factura)
fetch cur_facturacion
into @codigo_suscriptor,
@codigo_sucursal,
@num_factura,
@fecha_factura,
@valor_factura,
@usuario_factura
end
Muestro el código con el fin de que haya una idea, no se puede entender fácilmente sin conocer la magnitud de esa Base de datos, el punto es que esa parte me genera esto:
Si ven la fila que tengo seleccionada en la columna valor_factura registra 800.000
Pero, si yo ejecuto solo el select que contiene el código anterior sin poner a correr el cursor e insertar en la tabla, sale esto:
y ahí en la columna valor_factura es 400.000 y así es como debe ser...
Cuando se hace la inserción con el cursor es cuando se duplica el valor, pero no veo por donde, no tiene lógica, si alguien entiende y puede ayudarme se lo agradecería...