diff --git a/006-akla_2024_telus_recaudacion_registro_pago_convenios.sql b/006-akla_2024_telus_recaudacion_registro_pago_convenios.sql new file mode 100644 index 0000000..86f83e6 --- /dev/null +++ b/006-akla_2024_telus_recaudacion_registro_pago_convenios.sql @@ -0,0 +1,1053 @@ +USE [telus] +GO +/****** Object: StoredProcedure [dbo].[akla_2024_telus_recaudacion_registro_pago_convenios] Script Date: 02/01/2026 13:01:13 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +/* +MODIFICACIONES REALIZADAS - 25/12/2025 +Autor: Sistema de Gestión de Pagos - Convenios +Descripción: Implementación de distribución porcentual para costas judiciales en convenios de pago + +CAMBIOS AGREGADOS: +1. Nuevo parámetro @par_porcentaje_costas para especificar el porcentaje destinado a costas en abonos parciales +2. Variables de control para detectar abonos parciales y manejar distribución especial en convenios +3. Lógica de distribución año por año con porcentaje específico para costas + distribución normal para el resto +4. Logs de seguimiento para debugging del proceso de distribución de costas en convenios +5. Manejo de sobrantes no aplicados a costas que se redistribuyen automáticamente a otros rubros +6. Tabla de auditoría para registrar la distribución de costas en convenios + +COMPATIBILIDAD: +- Mantiene 100% de compatibilidad con llamadas existentes (parámetro opcional con valor por defecto 10.00) +- Solo aplica nueva lógica cuando es abono parcial Y se especifica porcentaje > 0 Y existen costas pendientes +*/ + +ALTER PROCEDURE [dbo].[akla_2024_telus_recaudacion_registro_pago_convenios] +--agcm_2023_usuarios_ocultos_recaudacion +--declare + @par_usuario int, + @par_tipo_pago int, + @par_valor_pagado numeric(11,2), + @par_efectivo numeric(11,2), + @par_cambio numeric(11,2), + @par_lote_id int, + @par_numero_titulo int=-2, + @par_ip varchar(max) = null, + @par_pcname varchar(max) = null, + @par_mac varchar(max) = null, + @card varchar(max)='' + ,@NumeroTransaccion varchar(max)='', -- Id de Recaudación de Olympo + @fechapago date = null, + @par_pago_atrasado int = 0, + @fecha_convenio date = null + ,@par_porcentaje_costas numeric(5,2) = 10.00 -- NUEVO PARÁMETRO 25/12/2025: Porcentaje destinado a costas judiciales en abonos parciales de convenios +AS +BEGIN + declare @base_imponible_lote numeric(25,2)=0 + declare @bandera int; + declare @cadena varchar(10)='00:00:0'; + declare @n_trasancciones int; + DECLARE @ErrorCode int + declare @observacion_seg varchar(100)='Facilidad de Pago' + declare @fechaconsiliacion date = null + + -- NUEVAS VARIABLES PARA CONTROL DE DISTRIBUCIÓN DE COSTAS - 25/12/2025 + -- Agregadas para implementar distribución porcentual de costas judiciales en convenios de pago + declare @es_abono_parcial bit = 0 + declare @deuda_total_lote numeric(11,2) = 0 + declare @monto_para_costas numeric(11,2) = 0 + declare @monto_restante numeric(11,2) = 0 + declare @sobrante_costas numeric(11,2) = 0 + + SET @ErrorCode = 0 + if @par_ip is null or @par_ip ='' + begin + SELECT @par_ip = client_net_address + FROM sys.dm_exec_connections + WHERE Session_id = @@SPID; + end + + + + if @par_pcname is null or @par_pcname ='' + begin + SELECT @par_pcname = hostname + FROM sys.sysprocesses + WHERE spid = @@SPID + end + if @fechapago is null + set @fechapago = getdate() + --insert into transacciones(id,valor) values (1,0) + + + /*Validación de Fecha de Pago Diferente*/ + DECLARE @anio_mes_actual NVARCHAR(7); + declare @fechaactual date=getdate() + if @fechapago>@fechaactual + begin + print 'Error de Fecha' + SET @ErrorCode = -120 + GOTO Cleanup + end + /*AKLA 2024-06-10 11:42 PROCESAR PAGOS CONVENIOS CORRECTOS*/ + + if @par_pago_atrasado = 0 + begin + -- Obtener el año y mes actual + SET @anio_mes_actual = CONVERT(NVARCHAR(4), YEAR(GETDATE())) + '-' + RIGHT('0' + CONVERT(NVARCHAR(2), MONTH(GETDATE())), 2); + -- Comparar y mostrar el resultado + -- PRINT 'Año y mes igual'; + IF @anio_mes_actual <> CONVERT(NVARCHAR(7), @fechapago, 23) + begin + set @fechapago = getdate() + end + set @fechaconsiliacion = @fechapago + end + else + begin + set @fechaconsiliacion = @fecha_convenio + end + + + + /*FIN*/ + set @n_trasancciones=(select top 1 valor from transacciones); + update transacciones set valor=@n_trasancciones+1 where id=1; + set @n_trasancciones=(select top 1 valor from transacciones); + if @n_trasancciones < 10 + SET @cadena=@cadena + '0' + SET @cadena=@cadena+CAST(@n_trasancciones AS VARCHAR(1)) + + WAITFOR DELAY @cadena; + +----paraque no se bloqueee + set deadlock_priority high + --SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED --REPEATABLE READ; + + + declare @procard int =0 + declare @txtdevcard varchar(255)='' + DECLARE @contador int + DECLARE @identificado int + DECLARE @titulos int + DECLARE @Length int + DECLARE @pago Numeric(11,2) + DECLARE @total_pago Numeric(11,2) + DECLARE @total_titulos int + DECLARE @valor_sin_interes Numeric(11,2) + + + + DECLARE @ROW INT = 0 + + declare @kardex table (emision_id int, lote_id int,rubro_id int,ano_id int,base_imponible numeric (25,2),rubro varchar (max), saldo numeric (11,2) ,valor_porcentaje numeric (11,2)) + declare @kardex2 table(emision_id int, lote_id int,rubro_id int,ano_id int,base_imponible numeric (25,2),rubro varchar (max), saldo numeric (11,2) ,valor_porcentaje numeric (11,2), emision_avaluo_id int) + declare @gestion_pago table (id int identity(1,1), emision_id int, lote_id int,rubro_id int,ano_id int, saldo numeric (11,2) ,valor_porcentaje numeric (11,2), valor_total numeric (11,2), valor_pagado numeric (11,2)) + declare @gestion_pago_lote table (id int identity(0,1),titulo_id int, lote_id int,ano_id int,valor_interes numeric (11,2),valor_costa numeric (11,2), valor_rubro numeric (11,2),valor_interes_deuda numeric (11,2),valor_costa_deuda numeric (11,2)) + declare @valor_emision table (emision_id int,lote_id int ,rubro_id int, ano_id int, base_imponible numeric (25,2),rubro varchar(255), + saldo numeric (10,2),valor_porcentaje numeric (10,2)) + /* +Tabla Temporal de Descuentos de Mejoras para el año 2021 +Agregado 24/06/2021 11:34 + */ + declare @agcm_descuento_mejoras table ( + idporcenmejoras int, + mes nchar(20) , + mesnum int , + anio int , + porcentaje decimal(10, 6) , + min_ava numeric(25, 2) , + max_ava numeric(25, 2) + ) + insert into @agcm_descuento_mejoras + select * from agcm_descuento_mejoras a + /*TERCERA EDAD*/ + declare @tercera int=0, @disca int =0 + set @tercera = (select a.es_tercera_edad from catastro_lotes a where a.lote_id=@par_lote_id) + if @tercera=0 + set @disca = (select a.discapacitados from catastro_lotes a where a.lote_id=@par_lote_id) + if @tercera=1 or @disca=1 + update @agcm_descuento_mejoras set porcentaje=50 where anio=year(getdate()) + /*Agrgeado 10/07/2018 21:30 Payphone*/ + if @par_numero_titulo < 0 + begin + declare @titutb table(titulo_siguiente int) + insert into @titutb + exec telus_recaudacion_registro_pago_titulo_siguiente @par_usuario + if(@par_numero_titulo=-2) + begin + set @procard=0 + end + else + begin + set @procard=1 + end + set @par_numero_titulo = (select titulo_siguiente from @titutb) + delete from @titutb + + end + + --Begin Tran Pago + + + + if (@par_usuario = 0) + BEGIN + SET @ErrorCode = -1 + -- Rollback; + GOTO Cleanup + END +if (@par_numero_titulo is null) +begin + SET @ErrorCode = -1 + -- Rollback; + GOTO Cleanup +end +if (@par_numero_titulo =0) +begin + SET @ErrorCode = -1 + -- Rollback; + GOTO Cleanup +end +/*INICIO BAJA DE COSTAS SEGUNDA NOTIFICACION*/ +declare @tipocosta int=0 + +/*FIN*/ + if exists(select 1 from agcm_2024_remision_deudas_tb a where a.lote_id=@par_lote_id and a.estado='PAGANDO') + begin + insert @kardex (emision_id, lote_id ,rubro_id,ano_id,base_imponible,rubro, saldo ,valor_porcentaje) + exec telus_avaluo_emision_consulta @par_lote_id + SET @ROW = @@ROWCOUNT + delete x from @kardex x where x.ano_id not in(select a.ano_id from agcm_2024_remision_deudas_tb a where a.lote_id=@par_lote_id and a.estado='PAGANDO') + set @observacion_seg = 'Remisión de Intereses' + end + else + begin + insert @kardex (emision_id, lote_id ,rubro_id,ano_id,base_imponible,rubro, saldo ,valor_porcentaje) + EXEC agcm_telus_avaluo_emision_consulta @par_lote_id, @fechaconsiliacion, 0 + SET @ROW = @@ROWCOUNT + end + if (@ROW = 0) + BEGIN + SET @ErrorCode = -2 + -- ROLLBACK + GOTO Cleanup + END + -- Base Imponible para Nuevo Descuento agregado 24/06/2021 11:31 + set @base_imponible_lote = isnull((select top 1 x.base_imponible from @kardex x),0) + --Agregado 26/09/2020 22:24 + declare @sumadeudacontrol numeric(25,2)=0 + set @sumadeudacontrol = isnull((select SUM( saldo +valor_porcentaje) from @kardex),0) + if @sumadeudacontrol < @par_valor_pagado + BEGIN + set @par_cambio = @par_valor_pagado - @sumadeudacontrol + set @par_valor_pagado = @sumadeudacontrol + + /* + SET @ErrorCode = -150 + ROLLBACK + GOTO Cleanup + */ + END + --drop table #valor_emision + + -- VERIFICAR SI ES ABONO PARCIAL Y CALCULAR MONTOS PARA COSTAS - 25/12/2025 + -- Nueva lógica para detectar abonos parciales en convenios y aplicar distribución porcentual a costas judiciales + set @deuda_total_lote = isnull((select SUM(saldo + valor_porcentaje) from @kardex), 0) + + if @par_valor_pagado < @deuda_total_lote + begin + set @es_abono_parcial = 1 + + -- Si se especifica porcentaje para costas en abono parcial de convenio + if @par_porcentaje_costas > 0 AND @par_porcentaje_costas <= 100 + begin + -- VALIDAR SI EXISTEN COSTAS PENDIENTES - 25/12/2025 + declare @costas_pendientes numeric(11,2) = 0 + set @costas_pendientes = isnull((select SUM(saldo + valor_porcentaje) + from @kardex + where rubro_id = 100001), 0) + + if @costas_pendientes > 0 + begin + set @monto_para_costas = @par_valor_pagado * (@par_porcentaje_costas / 100.0) + set @monto_restante = @par_valor_pagado - @monto_para_costas + print 'CONVENIO - ABONO PARCIAL DETECTADO - Costas pendientes: ' + CAST(@costas_pendientes as varchar(20)) + print 'Monto para costas (' + CAST(@par_porcentaje_costas as varchar(5)) + '%): ' + CAST(@monto_para_costas as varchar(20)) + print 'Monto restante para distribución normal: ' + CAST(@monto_restante as varchar(20)) + end + else + begin + print 'CONVENIO - ADVERTENCIA: No hay costas pendientes. Se aplicará distribución normal.' + set @par_porcentaje_costas = 0 -- Desactivar distribución especial + end + end + end + + declare @tabla_titulo as table (titulo int) + declare @titulo_siguiente_base int + + insert @tabla_titulo + exec telus_recaudacion_registro_pago_titulo_siguiente @par_usuario + + select top 1 @titulo_siguiente_base = isnull(titulo,0) from @tabla_titulo + + + if (@titulo_siguiente_base <> @par_numero_titulo) + BEGIN + SET @ErrorCode = -4 + -- Rollback; + GOTO Cleanup + END + + + insert @kardex2 + select *, (select top 1 a.emision_id from avaluo_emision_anual_cabecera as a with(nolock) where k.lote_id = a.lote_id and k.ano_id = a.ano_id) from @kardex as k + + + declare @num_filas int = 0, @titulos_restantes int + declare @deuda_total decimal(11,2) + declare @tabla_deduda as table(lote int, anio int, suma decimal(11,2)) + + insert @tabla_deduda + select distinct a.lote_id, a.ano_id,SUM(a2.saldo) as suma + from @kardex2 as a + inner join @kardex2 as a2 on + a.lote_id = a2.lote_id and a.emision_avaluo_id >= a2.emision_avaluo_id + where a.lote_id = @par_lote_id + group by a.lote_id, a.ano_id, a.rubro_id + having @par_valor_pagado > SUM(a2.saldo) + order by a.lote_id, a.ano_id + + select @num_filas = @@ROWCOUNT + + + select @deuda_total = SUM(saldo) from @kardex2 + + if(@par_valor_pagado < @deuda_total) begin + set @num_filas = @num_filas + 1 + end + + set @titulos_restantes = (select sum(total) from (select isnull((cantidad - (cantidad_pagada + cantidad_baja + cantidad_eliminada)),0) as total from rentas_talonario as t + inner join rentas_talonario_detalle as d on + t.registro_id = d.registro_id + where t.tipo_talonario = 'T' and t.usuario_titulo = @par_usuario + and cantidad - (cantidad_pagada + cantidad_baja + cantidad_eliminada) > 0) as tabla) + + + if(@num_filas > @titulos_restantes)begin + SET @ErrorCode = -3 + -- Rollback; + GOTO Cleanup + end + + + INSERT @gestion_pago + SELECT emision_id, lote_id ,rubro_id,ano_id , saldo ,valor_porcentaje, saldo + valor_porcentaje,0 + FROM @kardex + + set @contador = 1 + + -- NUEVA LÓGICA DE DISTRIBUCIÓN POR AÑO CON PORCENTAJE PARA COSTAS - 25/12/2025 + -- Implementa distribución año por año en convenios: % específico para costas + distribución normal, recursivamente + if @es_abono_parcial = 1 AND @par_porcentaje_costas > 0 + BEGIN + print 'CONVENIO - APLICANDO DISTRIBUCIÓN POR AÑO CON PORCENTAJE DE COSTAS - 25/12/2025' + + declare @monto_disponible_total numeric(11,2) = @par_valor_pagado + declare @ano_procesando int + declare @total_aplicado_global numeric(11,2) = 0 + + -- CURSOR PARA PROCESAR AÑO POR AÑO EN CONVENIOS + declare @anos_cursor cursor + set @anos_cursor = cursor for + select distinct ano_id + from @gestion_pago + where valor_total > 0 + order by ano_id asc + + open @anos_cursor + fetch next from @anos_cursor into @ano_procesando + + while @@fetch_status = 0 AND @monto_disponible_total > 0 + begin + print '=== CONVENIO - PROCESANDO AÑO ' + CAST(@ano_procesando as varchar(4)) + ' ===' + + -- CALCULAR DEUDA TOTAL DEL AÑO + declare @deuda_ano numeric(11,2) = 0 + declare @costas_ano numeric(11,2) = 0 + + select @deuda_ano = isnull(sum(valor_total - valor_pagado), 0) + from @gestion_pago + where ano_id = @ano_procesando and (valor_total - valor_pagado) > 0 + + select @costas_ano = isnull(sum(valor_total - valor_pagado), 0) + from @gestion_pago + where ano_id = @ano_procesando and rubro_id = 100001 and (valor_total - valor_pagado) > 0 + + print 'Deuda año ' + CAST(@ano_procesando as varchar(4)) + ': $' + CAST(@deuda_ano as varchar(20)) + + ' (Costas: $' + CAST(@costas_ano as varchar(20)) + ')' + + if @deuda_ano > 0 and @monto_disponible_total > 0 + begin + declare @monto_para_ano numeric(11,2) + + -- Determinar cuánto aplicar al año (completo o parcial) + if @monto_disponible_total >= @deuda_ano + begin + set @monto_para_ano = @deuda_ano + print 'Pago COMPLETO del año ' + CAST(@ano_procesando as varchar(4)) + ': $' + CAST(@monto_para_ano as varchar(20)) + end + else + begin + set @monto_para_ano = @monto_disponible_total + print 'Pago PARCIAL del año ' + CAST(@ano_procesando as varchar(4)) + ': $' + CAST(@monto_para_ano as varchar(20)) + end + + -- DETERMINAR DISTRIBUCIÓN SEGÚN DISPONIBILIDAD DE COSTAS + declare @monto_costas_ano numeric(11,2) = 0 + declare @monto_otros_ano numeric(11,2) = 0 + declare @solo_costas bit = 0 + + -- VERIFICAR SI EL AÑO TIENE SOLO COSTAS (SIN OTROS RUBROS PENDIENTES) + if @costas_ano > 0 and @costas_ano = @deuda_ano + begin + set @solo_costas = 1 + print 'Año ' + CAST(@ano_procesando as varchar(4)) + ' TIENE SOLO COSTAS PENDIENTES' + end + + if @solo_costas = 1 + begin + -- SOLO COSTAS PENDIENTES: Todo el dinero disponible va a costas (100%) + set @monto_costas_ano = @monto_para_ano + set @monto_otros_ano = 0 + + print 'Año ' + CAST(@ano_procesando as varchar(4)) + ' SOLO COSTAS: Todo el monto ($' + + CAST(@monto_costas_ano as varchar(20)) + ') va a costas al 100%' + end + else if @costas_ano > 0 + begin + -- HAY COSTAS Y OTROS RUBROS: Aplicar porcentaje + set @monto_costas_ano = @monto_para_ano * (@par_porcentaje_costas / 100.0) + set @monto_otros_ano = @monto_para_ano - @monto_costas_ano + + print 'Año ' + CAST(@ano_procesando as varchar(4)) + ' CON COSTAS Y OTROS RUBROS: ' + + CAST(@par_porcentaje_costas as varchar(5)) + '% a costas ($' + CAST(@monto_costas_ano as varchar(20)) + + '), resto a otros rubros ($' + CAST(@monto_otros_ano as varchar(20)) + ')' + end + else + begin + -- NO HAY COSTAS PENDIENTES: Todo el monto va a otros rubros + set @monto_costas_ano = 0 + set @monto_otros_ano = @monto_para_ano + + print 'Año ' + CAST(@ano_procesando as varchar(4)) + ' SIN COSTAS PENDIENTES: Todo el monto ($' + + CAST(@monto_otros_ano as varchar(20)) + ') va a otros rubros' + end + + -- PASO 1: APLICAR A COSTAS DEL AÑO (SOLO SI HAY COSTAS PENDIENTES) + if @costas_ano > 0 and @monto_costas_ano > 0 + begin + declare @costas_aplicadas_ano numeric(11,2) = 0 + + if @monto_costas_ano >= @costas_ano + begin + set @costas_aplicadas_ano = @costas_ano + set @monto_otros_ano = @monto_otros_ano + (@monto_costas_ano - @costas_ano) + print 'Costas ' + CAST(@ano_procesando as varchar(4)) + ' PAGADAS COMPLETAS: $' + CAST(@costas_aplicadas_ano as varchar(20)) + + ', sobrante $' + CAST(@monto_costas_ano - @costas_ano as varchar(20)) + ' redistribuido a otros rubros' + print 'DETALLE: monto_costas_ano=' + CAST(@monto_costas_ano as varchar(20)) + + ', costas_ano=' + CAST(@costas_ano as varchar(20)) + + ', monto_otros_ano_final=' + CAST(@monto_otros_ano as varchar(20)) + end + else + begin + set @costas_aplicadas_ano = @monto_costas_ano + print 'Costas ' + CAST(@ano_procesando as varchar(4)) + ' PAGO PARCIAL: $' + CAST(@costas_aplicadas_ano as varchar(20)) + end + + -- DIAGNÓSTICO: Verificar registros de costas antes de actualizar + declare @costas_records int = 0 + select @costas_records = count(*) from @gestion_pago where ano_id = @ano_procesando and rubro_id = 100001 + print 'DIAGNÓSTICO: Encontrados ' + CAST(@costas_records as varchar(5)) + ' registros de costas para año ' + CAST(@ano_procesando as varchar(4)) + + -- Actualizar costas en @gestion_pago + update @gestion_pago + set valor_pagado = valor_pagado + @costas_aplicadas_ano + where ano_id = @ano_procesando and rubro_id = 100001 + + print 'COSTAS ACTUALIZADAS: ' + CAST(@@ROWCOUNT as varchar(5)) + ' registros afectados' + end + + -- PASO 2: APLICAR RESTO A OTROS RUBROS DEL AÑO + if @monto_otros_ano > 0 + begin + print 'Distribuyendo $' + CAST(@monto_otros_ano as varchar(20)) + ' en otros rubros del año ' + CAST(@ano_procesando as varchar(4)) + + -- DIAGNÓSTICO: Contar rubros no-costas disponibles + declare @otros_rubros_count int = 0 + select @otros_rubros_count = count(*) + from @gestion_pago + where ano_id = @ano_procesando + and (valor_total - valor_pagado) > 0 + and rubro_id != 100001 + print 'DIAGNÓSTICO: ' + CAST(@otros_rubros_count as varchar(5)) + ' otros rubros disponibles para año ' + CAST(@ano_procesando as varchar(4)) + + declare @rubros_cursor cursor + declare @rubro_id int, @rubro_pendiente numeric(11,2) + + set @rubros_cursor = cursor for + select id, (valor_total - valor_pagado) as pendiente + from @gestion_pago + where ano_id = @ano_procesando + and (valor_total - valor_pagado) > 0 + and rubro_id != 100001 -- EXCLUIR COSTAS: ya se procesaron en el paso 1 + order by rubro_id asc + + open @rubros_cursor + fetch next from @rubros_cursor into @rubro_id, @rubro_pendiente + + while @@fetch_status = 0 AND @monto_otros_ano > 0 + begin + declare @aplicar_rubro numeric(11,2) + + if @rubro_pendiente <= @monto_otros_ano + begin + set @aplicar_rubro = @rubro_pendiente + end + else + begin + set @aplicar_rubro = @monto_otros_ano + end + + print 'Aplicando $' + CAST(@aplicar_rubro as varchar(20)) + ' a rubro ID=' + CAST(@rubro_id as varchar(10)) + + ', pendiente era $' + CAST(@rubro_pendiente as varchar(20)) + + update @gestion_pago + set valor_pagado = valor_pagado + @aplicar_rubro + where id = @rubro_id + + set @monto_otros_ano = @monto_otros_ano - @aplicar_rubro + + print 'Restante para otros rubros: $' + CAST(@monto_otros_ano as varchar(20)) + + fetch next from @rubros_cursor into @rubro_id, @rubro_pendiente + end + + close @rubros_cursor + deallocate @rubros_cursor + + print 'PASO 2 COMPLETADO. Sobrante final: $' + CAST(@monto_otros_ano as varchar(20)) + end + + set @monto_disponible_total = @monto_disponible_total - @monto_para_ano + set @total_aplicado_global = @total_aplicado_global + @monto_para_ano + + print 'Año ' + CAST(@ano_procesando as varchar(4)) + ' COMPLETADO. Restante para siguientes años: $' + CAST(@monto_disponible_total as varchar(20)) + end + + fetch next from @anos_cursor into @ano_procesando + end + + close @anos_cursor + deallocate @anos_cursor + + -- RESUMEN FINAL DE DISTRIBUCIÓN POR AÑO + declare @costas_finales_total numeric(11,2) = 0 + declare @otros_finales_total numeric(11,2) = 0 + select @costas_finales_total = isnull(sum(valor_pagado), 0) from @gestion_pago where rubro_id = 100001 + select @otros_finales_total = isnull(sum(valor_pagado), 0) from @gestion_pago where rubro_id != 100001 + + print '=== CONVENIO - RESUMEN FINAL DISTRIBUCIÓN POR AÑO ===' + print '- Total aplicado: $' + CAST(@total_aplicado_global as varchar(20)) + ' de $' + CAST(@par_valor_pagado as varchar(20)) + print '- Total a costas: $' + CAST(@costas_finales_total as varchar(20)) + print '- Total a otros rubros: $' + CAST(@otros_finales_total as varchar(20)) + print '- Sobrante no aplicado: $' + CAST(@monto_disponible_total as varchar(20)) + + END + ELSE + BEGIN + -- LÓGICA ORIGINAL DE DISTRIBUCIÓN SECUENCIAL (SIN MODIFICACIONES) + print 'CONVENIO - APLICANDO DISTRIBUCIÓN ORIGINAL SECUENCIAL' + + SET @total_pago = @par_valor_pagado + SELECT @Length = COUNT(Id) from @gestion_pago + WHILE @contador<=@Length + BEGIN + + SELECT @pago = valor_total FROM @gestion_pago WHERE id=@contador + + IF @pago > @total_pago + BEGIN + SET @pago = @total_pago + END + + IF @total_pago <= 0 + BEGIN + SET @pago = 0.00 + END + + UPDATE @gestion_pago + SET valor_pagado = @pago + WHERE id=@contador + + SET @total_pago = @total_pago - @pago + + SET @contador=@contador+1 + END + END + + -- Posiblemente aqui + UPDATE avaluo_emision_anual_detalle + SET -- valor_porcentaje = avaluo_emision_anual_detalle.valor_porcentaje + p.valor_porcentaje, + valor_pagado = avaluo_emision_anual_detalle.valor_pagado + p.valor_pagado + FROM @gestion_pago as p INNER JOIN + avaluo_emision_anual_detalle ON (p.emision_id = avaluo_emision_anual_detalle.emision_detalle_id) + and (p.rubro_id=avaluo_emision_anual_detalle.rubro_id) + -- WHERE (p.valor_pagado<>0) + + + UPDATE avaluo_emision_anual_cabecera + set + fecha_historica = fecha_pago + FROM @gestion_pago as p + INNER JOIN + avaluo_emision_anual_cabecera ON (p.ano_id = avaluo_emision_anual_cabecera.ano_id) and (avaluo_emision_anual_cabecera.lote_id=p.lote_id) + + /*Nuevo 21/10/2015*/ + + UPDATE avaluo_emision_anual_cabecera + set + fecha_pago=dbo.agcm_2023_modificar_fecha(@fechapago,null), + interes_valor = interes_valor + (k.saldo-interes_saldo) + FROM @gestion_pago as p + INNER JOIN + avaluo_emision_anual_cabecera ON (p.ano_id = avaluo_emision_anual_cabecera.ano_id) and (avaluo_emision_anual_cabecera.lote_id=p.lote_id) + INNER JOIN + @kardex AS k on (p.ano_id = k.ano_id) and (p.lote_id=k.lote_id) + WHERE (p.valor_pagado<>0 and p.rubro_id=0) + + /*Fin*/ + UPDATE avaluo_emision_anual_cabecera + set + fecha_pago=dbo.agcm_2023_modificar_fecha(@fechapago,null), + costa_valor = + dbo.agcm_CalculoCostaLote(p.lote_id,p.ano_id,@fechaconsiliacion) + --dbo.CalculoCostaLote(p.lote_id,p.ano_id) + C.costa_pagado + + FROM @gestion_pago as p + INNER JOIN + avaluo_emision_anual_cabecera C ON (p.ano_id = C.ano_id) and (C.lote_id=p.lote_id) + INNER JOIN + @kardex AS k on (p.ano_id = k.ano_id) and (p.lote_id=k.lote_id) + WHERE (p.valor_pagado<>0 and p.rubro_id=100001) + + UPDATE avaluo_emision_anual_cabecera + set + fecha_pago=dbo.agcm_2023_modificar_fecha(@fechapago,null), + costa_pagado=costa_pagado+p.valor_pagado + FROM @gestion_pago as p INNER JOIN + avaluo_emision_anual_cabecera ON + (p.ano_id = avaluo_emision_anual_cabecera.ano_id) and (avaluo_emision_anual_cabecera.lote_id=p.lote_id) + WHERE (p.valor_pagado<>0 and p.rubro_id=100001) + -- Agregado15-06/2023 control Costas Negativas + UPDATE x + set x.costa_valor=costa_pagado + FROM @gestion_pago as p INNER JOIN + avaluo_emision_anual_cabecera x ON + (p.ano_id = x.ano_id) and (x.lote_id=p.lote_id) + WHERE (p.valor_pagado<>0 and p.rubro_id=100001) and x.costa_saldo<0 + + UPDATE avaluo_emision_anual_cabecera + set + fecha_pago=dbo.agcm_2023_modificar_fecha(@fechapago,null), + interes_pagado=interes_pagado+p.valor_pagado + FROM @gestion_pago as p INNER JOIN + avaluo_emision_anual_cabecera ON (p.ano_id = avaluo_emision_anual_cabecera.ano_id) and (avaluo_emision_anual_cabecera.lote_id=p.lote_id) + WHERE (p.valor_pagado<>0) and p.rubro_id=0 + + /*Agregado 19-03-2024 Costas NUevas por Remision*/ + UPDATE x + set x.costa_valor=x.costa_pagado + FROM @gestion_pago as p INNER JOIN + avaluo_emision_anual_cabecera x ON + (p.ano_id = x.ano_id) and (x.lote_id=p.lote_id) + inner join rentas_estado ja on ja.registro_lote_id=p.lote_id + WHERE (p.rubro_id=100001) and ja.tipo_renta=0 and ja.estado=4 and ja.estado_registro='ACTIVO' + UPDATE x + set x.interes_valor=x.interes_pagado + FROM @gestion_pago as p INNER JOIN + avaluo_emision_anual_cabecera x ON + (p.ano_id = x.ano_id) and (x.lote_id=p.lote_id) + inner join rentas_estado ja on ja.registro_lote_id=p.lote_id + WHERE ja.tipo_renta=0 and ja.estado=4 and ja.estado_registro='ACTIVO' + /*FIN*/ + + + UPDATE avaluo_emision_anual_cabecera + set + fecha_pago=dbo.agcm_2023_modificar_fecha(@fechapago,null), + rubro_valor=(SELECT SUM(avaluo_emision_anual_detalle.valor_total) FROM avaluo_emision_anual_detalle WHERE avaluo_emision_anual_cabecera.emision_id = avaluo_emision_anual_detalle.emision_id), + rubro_pagado=(SELECT SUM(avaluo_emision_anual_detalle.valor_pagado) FROM avaluo_emision_anual_detalle WHERE avaluo_emision_anual_cabecera.emision_id = avaluo_emision_anual_detalle.emision_id) + FROM @gestion_pago as p INNER JOIN + avaluo_emision_anual_cabecera ON (p.ano_id = avaluo_emision_anual_cabecera.ano_id) and (avaluo_emision_anual_cabecera.lote_id=p.lote_id) + --WHERE (p.valor_pagado<>0) + + + insert [recaudacion_registro_pago] + select dbo.agcm_2023_modificar_fecha(@fechapago,null),dbo.agcm_2023_modificar_fecha(@fechapago,null),@par_usuario,@par_tipo_pago,@par_valor_pagado, @par_efectivo,@par_cambio,@par_lote_id + ,@par_ip,@par_pcname,@par_mac + select @identificado = SCOPE_IDENTITY() + + print 'aqui' + insert @gestion_pago_lote + + SELECT max(@par_numero_titulo), + MAX(p.lote_id), + p.ano_id, + ISNULL((SELECT G.valor_pagado FROM @gestion_pago AS G WHERE valor_pagado <> 0 and rubro_id = 0 AND G.ano_id=p.ano_id),0), + ISNULL((SELECT G.valor_pagado FROM @gestion_pago AS G WHERE valor_pagado <> 0 and rubro_id = 100001 AND G.ano_id=p.ano_id),0), + ISNULL((SELECT sum(G.valor_pagado) FROM @gestion_pago AS G WHERE valor_pagado <> 0 and rubro_id > 0 and rubro_id < 100001 AND G.ano_id=p.ano_id),0), + ISNULL((SELECT K.saldo FROM @kardex AS K WHERE K.saldo <> 0 and K.rubro_id = 0 AND K.ano_id=p.ano_id),0), + ISNULL((SELECT K.saldo FROM @kardex AS K WHERE K.saldo <> 0 and K.rubro_id = 100001 AND K.ano_id=p.ano_id),0) + FROM @gestion_pago as p + WHERE p.valor_pagado <> 0 + group by p.ano_id + + +/*Agregado el 26/08/2015 15:58 Controlar las secuencias ingresadas*/ +declare @secuanciasag table(id int identity (1,1),secuencia int) +DECLARE @secudispo table(id int identity (1,1),registro_detalle_id int,secuencia int,total int) + +insert @secudispo + select registro_detalle_id,isnull((secuencia_inicial + cantidad_pagada + cantidad_baja + cantidad_eliminada),0) as titulo_siguiente,0 + from rentas_talonario as t + inner join rentas_talonario_detalle as d on + t.registro_id = d.registro_id + where t.tipo_talonario = 'T' and t.usuario_titulo = @par_usuario + and cantidad - (cantidad_pagada + cantidad_baja + cantidad_eliminada) > 0 + order by d.cantidad_pagada desc -- 06/06/2014 Cambie de titulo_siguiente a d.cantidad_pagada +--select * from @secudispo +declare @i int =1 +declare @to int = (select count(*) from @secudispo) +declare @regid int=0 +declare @disponible int=0 +declare @inicio int =0 +declare @j int =0 +while @i <= @to +begin + select @regid=registro_detalle_id ,@inicio = secuencia from @secudispo where id=@i + + set @disponible = (select isnull((cantidad - (cantidad_pagada + cantidad_baja + cantidad_eliminada)),0) as total from rentas_talonario as t + inner join rentas_talonario_detalle as d on + t.registro_id = d.registro_id + where t.tipo_talonario = 'T' and t.usuario_titulo = @par_usuario + and cantidad - (cantidad_pagada + cantidad_baja + cantidad_eliminada) > 0 + and d.registro_detalle_id=@regid) + update @secudispo set total=@disponible where registro_detalle_id=@regid + set @j=@inicio + while @j<=(@inicio + @disponible -1) + begin + insert into @secuanciasag select @j + set @j = @j + 1 + end + + print @disponible + --print @i + --print @regid + set @i = @i + 1 +end +-- select * from @secudispo +-- select * from @secuanciasag +/*Fin agregado 26/08/2015 15:59*/ +declare @secua int =0 + set @contador = 0 + -- Cambio 15-Feb/2015 + Delete from @gestion_pago where valor_pagado = 0 + SELECT @Length = max(Id) from @gestion_pago_lote + declare @anose int=0 + declare @estadopa varchar(20)='' + declare @anopa int=0 + set @anose = isnull((select top 1 ano_id from agcm_separar_mejoras_tasas where lote_id=@par_lote_id and estado <> 'FINALIZADO' order by ano_id),0) + set @estadopa= isnull((select top 1 ano_id from agcm_separar_mejoras_tasas where lote_id=@par_lote_id and estado <> 'FINALIZADO' order by ano_id),'') + WHILE @contador<=@Length + BEGIN + set @secua = (select secuencia from @secuanciasag where id=@contador+1) + insert [recaudacion_registro_pago_lote] + SELECT @identificado, @secua, --titulo_id+id, + ano_id, valor_interes,valor_costa,valor_rubro,valor_interes_deuda,valor_costa_deuda + FROM @gestion_pago_lote WHERE id=@contador + select @ErrorCode = SCOPE_IDENTITY() + set @anopa = (select ano_id from recaudacion_registro_pago_lote where recaudacion_lote_id=@ErrorCode) + if @anopa = @anose + begin + if @estadopa='CEM' + update agcm_separar_mejoras_tasas set estado='TASAS', fecha_modifica = GETDATE() where lote_id=@par_lote_id and ano_id=@anopa + else + update agcm_separar_mejoras_tasas set estado='FINALIZADO', fecha_modifica = GETDATE() where lote_id=@par_lote_id and ano_id=@anopa + end + declare @titulo int = 0 + SELECT @titulo = @secua --(titulo_id+id) + FROM @gestion_pago_lote WHERE id=@contador + + + --JOSELO + + UPDATE rentas_talonario_detalle + SET cantidad_pagada = cantidad_pagada + 1 + FROM rentas_talonario AS t INNER JOIN + rentas_talonario_detalle + ON t.registro_id = rentas_talonario_detalle.registro_id + WHERE (t.usuario_titulo = @par_usuario) + AND t.tipo_talonario = 'T' + AND (@titulo BETWEEN rentas_talonario_detalle.secuencia_inicial AND + rentas_talonario_detalle.secuencia_inicial + rentas_talonario_detalle.cantidad - 1) + -- + + insert [recaudacion_registro_pago_lote_rubro] + SELECT + @ErrorCode, + p.emision_id, + p.rubro_id, + p.valor_pagado, + p.valor_porcentaje, + p.saldo, + p.valor_porcentaje , + --0 -- Descuento Acumulado + -- Condicion Agregada el dia 29/07/2016 siendo las 12:07 + case when [dbo].Agcm_Funtransferenciaspas (p.lote_id,p.ano_id)=1 then + p.valor_porcentaje + else + 0 + end + FROM @gestion_pago as p inner join + @gestion_pago_lote as l on p.ano_id=l.ano_id + WHERE p.rubro_id > 0 and p.rubro_id < 100000 and l.id=@contador + SET @contador=@contador+1 + END + + -- select * into xgestion_pago from @gestion_pago + -- select * into xgestion_pago_lote from @gestion_pago_lote + +/* Phoenix_jc: 15-Feb/2015 */ +-- Actualizo campo descuento acumulado de tabla [recaudacion_registro_pago_lote_rubro] +-- Inicio +-- Impuesto Predial + + Update recaudacion_registro_pago_lote_rubro set descuento_acumulado = + -- aqui Recargas y rebajas + case when recaudacion_registro_pago_lote_rubro.valor - recaudacion_registro_pago_lote_rubro.valor_porcentaje = recaudacion_registro_pago_lote_rubro.valor_deuda + Then recaudacion_registro_pago_lote_rubro.valor_porcentaje + -- AQUI Redondeo Recargas y Rebajas Else ((recaudacion_registro_pago_lote_rubro.valor / ((100 + d.porcentaje)/100)) * (d.porcentaje / 100)) + Else round(((recaudacion_registro_pago_lote_rubro.valor / ((100 + d.porcentaje)/100)) * (d.porcentaje / 100)),2) + End + from @gestion_pago a, avaluo_rubro b, avaluo_registro_rubros c, emision_porcentaje_pago_impuestos d + where a.emision_id = recaudacion_registro_pago_lote_rubro.emision_detalle_id + and a.rubro_id = recaudacion_registro_pago_lote_rubro.rubro_lote_id + and a.rubro_id = b.rubro_id + and b.registro_rubros_id = c.registro_rubros_id + and c.aplica_descuento = 1 + and c.aplica_intereses = 1 + and b.ano_id = d.ano_id + and b.ano_id = year(@fechaconsiliacion) + and d.numero = MONTH(@fechaconsiliacion) + and d.quincena = case when (DAY(@fechaconsiliacion) < 16 and month(@fechaconsiliacion) < 7) Then 1 + Else + case when day(@fechaconsiliacion) > 15 and month(@fechaconsiliacion) < 7 Then 2 + Else 0 + End + End + and recaudacion_registro_pago_lote_rubro.recaudacion_lote_id=@ErrorCode + -- Tipos diferentes + Update recaudacion_registro_pago_lote_rubro set descuento_acumulado = + case when (recaudacion_registro_pago_lote_rubro.valor + ABS(recaudacion_registro_pago_lote_rubro.valor_porcentaje)) = recaudacion_registro_pago_lote_rubro.valor_deuda + Then recaudacion_registro_pago_lote_rubro.valor_porcentaje + -- aqui recargos y rebajas Else ((recaudacion_registro_pago_lote_rubro.valor / ((100 - d.porcentaje)/100)) * (d.porcentaje / 100))* -1 + Else round(((recaudacion_registro_pago_lote_rubro.valor / ((100 - d.porcentaje)/100)) * (d.porcentaje / 100))* -1,2) + End + from @gestion_pago a, avaluo_rubro b, avaluo_registro_rubros c, @agcm_descuento_mejoras d + where a.emision_id = recaudacion_registro_pago_lote_rubro.emision_detalle_id + and a.rubro_id = recaudacion_registro_pago_lote_rubro.rubro_lote_id + and a.rubro_id = b.rubro_id + and b.registro_rubros_id = c.registro_rubros_id + and c.tipo_id = 2 + and b.ano_id = d.anio + and d.mesnum = month(@fechaconsiliacion) + and b.ano_id = year(@fechaconsiliacion) + and recaudacion_registro_pago_lote_rubro.descuento_acumulado =0 + and recaudacion_registro_pago_lote_rubro.recaudacion_lote_id=@ErrorCode + and @base_imponible_lote between d.min_ava and d.max_ava + -- -- Base Imponible para Nuevo Descuento agregado 24/06/2021 11:31 + -- Actualizo Descuento Acumulado de Emision detalle + + Update avaluo_emision_anual_detalle set descuento_acumulado = + (select sum(b.descuento_acumulado) + from @gestion_pago a, recaudacion_registro_pago_lote_rubro b + where avaluo_emision_anual_detalle.emision_detalle_id = a.emision_id + and avaluo_emision_anual_detalle.rubro_id = a.rubro_id + and a.emision_id = b.emision_detalle_id + and a.rubro_id = b.rubro_lote_id) + from @gestion_pago a--, recaudacion_registro_pago_lote_rubro b + where avaluo_emision_anual_detalle.emision_detalle_id = a.emision_id + and avaluo_emision_anual_detalle.rubro_id = a.rubro_id + -- and a.emision_id = b.emision_detalle_id + -- and a.rubro_id = b.rubro_lote_id + -- Agregado 13/06/2023 + Update x set x.valor_porcentaje=x.descuento_acumulado + from avaluo_emision_anual_detalle x,@gestion_pago y + where x.emision_detalle_id=y.emision_id + and x.rubro_id=y.rubro_id + and x.descuento_acumulado<>0 + -- Actualizar Saldo en Cabecera + Update x set x.rubro_valor=(select sum(a.valor_total) from avaluo_emision_anual_detalle a where a.emision_id=x.emision_id), + x.rubro_pagado = (select sum(a.valor_pagado) from avaluo_emision_anual_detalle a where a.emision_id=x.emision_id) + from avaluo_emision_anual_cabecera x,@gestion_pago y + where x.lote_id=y.lote_id and x.ano_id=y.ano_id + and x.total_saldo>0 + -- Fin +-- Final + + UPDATE avaluo_emision_anual_cabecera + SET esta_pagado = 1 + WHERE total_saldo = 0 AND lote_id=@par_lote_id + + declare @aniomaxpag int=0 + set @aniomaxpag = (select max(a.ano_id) from avaluo_emision_anual_cabecera a where a.total_pagado<>0 and a.total_saldo=0 and a.lote_id=@par_lote_id) -- agregado 17/08/2020 + if ((select isnull(sum(avaluo_emision_anual_cabecera.costa_saldo),0) from avaluo_emision_anual_cabecera where lote_id=@par_lote_id)=0) + begin + UPDATE recaudacion_notificacion_lote + SET recaudacion_notificacion_lote.activo='False', + recaudacion_notificacion_lote.fecha=GETDATE()--, + --recaudacion_notificacion_lote.usuario_activio=@par_usuario + ,recaudacion_notificacion_lote.ip = @par_ip, + recaudacion_notificacion_lote.pcname = @par_pcname, + recaudacion_notificacion_lote.mac = @par_mac + where lote_id=@par_lote_id and recaudacion_notificacion_lote.activo='True' + and year(recaudacion_notificacion_lote.fecha_emision) <= @aniomaxpag -- agregado 17/08/2020 + end + /*Detectado 29/07/2016 12:19 puede que demore por cada ejecucion*/ + + UPDATE avaluo_emision_anual_cabecera + SET fecha_pago = NULL + WHERE (total_pagado = 0) AND (NOT (fecha_pago IS NULL)) AND (esta_pagado = 0) + + /**/ + SET @ErrorCode = @identificado + select @total_titulos = COUNT(ano_id) from [recaudacion_registro_pago_lote] where recaudacion_id = @identificado + declare @tbtar table(res int) + if @procard=1 + begin + /*INSERTAR TARJETA*/ + -- + declare @par_numero_tarjeta varchar(20), + @par_tipo_tarjeta_id int, + @par_propietario varchar(max), + @idresc int=0 + declare @tbcard table(id int, texto varchar(max)) + insert into @tbcard + select * from dbo.Split_AGCM(@card,',') + set @par_numero_tarjeta = (select texto from @tbcard where id=1) + set @par_tipo_tarjeta_id = cast((select texto from @tbcard where id=2) as int) + set @par_propietario = (select texto from @tbcard where id=3) + insert into @tbtar + exec telus_recaudacion_tarjeta_insertar @identificado,@par_numero_tarjeta,@par_tipo_tarjeta_id,70,@par_propietario,'L' + set @idresc = (select res from @tbtar) + delete from @tbtar + if @idresc <=0 + begin + set @ErrorCode = -200 + end + set @txtdevcard = ',' + CONVERT(varchar(50),@par_numero_titulo) + end + -- Pago por medio de Facilito PRedios Urbanos + if @card<>'' and @par_tipo_pago=4 + begin + insert into @tbtar + exec telus_recaudacion_transferencia_insertar @identificado,@card,'L',0 + set @txtdevcard = ',' + CONVERT(varchar(50),@par_numero_titulo) + end + /*declare @divi int + set @divi = 100 /0 + */ + if @NumeroTransaccion<>'' + begin + insert into bancos.dbo.ws_bancos_movimientos(NumeroTransaccion,recaudacion_id,tipo_id,fecha_registro) + select @NumeroTransaccion,@identificado,0,GETDATE() + end + -- Insertar codigo de seguridad + if @ErrorCode>0 + begin + declare @resseg table(id int) + insert into @resseg + exec telus_recaudacion_registro_pago_seguridad 0,@ErrorCode,0,'0',@observacion_seg + end + + + + set deadlock_priority normal + if(@n_trasancciones>0) + update transacciones set valor=@n_trasancciones-1 where id=1; + + + + Cleanup: + -- LOG DE AUDITORÍA PARA DISTRIBUCIÓN DE COSTAS EN CONVENIOS - 25/12/2025 + -- Registra el uso del nuevo parámetro de porcentaje para costas en abonos parciales de convenios + if @es_abono_parcial = 1 AND @par_porcentaje_costas > 0 AND @ErrorCode > 0 + begin + declare @detalle_log varchar(500) + + -- CALCULAR VALORES REALES DE LA DISTRIBUCIÓN EJECUTADA + declare @costas_reales_aplicadas numeric(11,2) = 0 + declare @otros_reales_aplicados numeric(11,2) = 0 + declare @total_realmente_aplicado numeric(11,2) = 0 + + select @costas_reales_aplicadas = isnull(sum(valor_pagado), 0) from @gestion_pago where rubro_id = 100001 + select @otros_reales_aplicados = isnull(sum(valor_pagado), 0) from @gestion_pago where rubro_id != 100001 + select @total_realmente_aplicado = isnull(sum(valor_pagado), 0) from @gestion_pago + + -- DETALLE CON VALORES REALES DE LA DISTRIBUCIÓN POR AÑO EN CONVENIOS + set @detalle_log = 'CONVENIO - DISTRIBUCIÓN POR AÑO - Pago: $' + CAST(@par_valor_pagado as varchar(20)) + + ' de $' + CAST(@deuda_total_lote as varchar(20)) + ' total. ' + + 'Porcentaje costas configurado: ' + CAST(@par_porcentaje_costas as varchar(5)) + '%. ' + + 'APLICADO REAL: Costas $' + CAST(@costas_reales_aplicadas as varchar(20)) + + ', Otros $' + CAST(@otros_reales_aplicados as varchar(20)) + + ', Total $' + CAST(@total_realmente_aplicado as varchar(20)) + + ', Fecha: ' + CAST(isnull(@fechapago, getdate()) as varchar(20)) + + -- Solo registrar si existe la tabla de log (para evitar errores en sistemas que no la tengan) + if exists (select 1 from information_schema.tables where table_name = 'gonpi_log_distribucion_costas') + begin + insert into gonpi_log_distribucion_costas + (lote_id, recaudacion_id, fecha, usuario_id, valor_total_pago, deuda_total, + porcentaje_costas, monto_costas, monto_resto, detalle, ip, pcname) + values (@par_lote_id, @identificado, GETDATE(), @par_usuario, @par_valor_pagado, @deuda_total_lote, + @par_porcentaje_costas, @costas_reales_aplicadas, @otros_reales_aplicados, @detalle_log, @par_ip, @par_pcname) + end + end + + if exists(select 1 from agcm_2024_remision_deudas_tb a where a.lote_id=@par_lote_id and a.estado='PAGANDO') + begin + if @ErrorCode>0 + begin + update x set x.estado='PAGADO',x.recaudacion_id=@identificado,x.fecha_actualiza=getdate(),x.observacion=convert(varchar(50),@ErrorCode) + ',' + isnull(convert(varchar(50),@total_titulos),0) + @txtdevcard + from agcm_2024_remision_deudas_tb x + where x.lote_id=@par_lote_id + update rentas_estado set estado_registro='INACTIVO' where tipo_renta=0 and registro_lote_id =@par_lote_id and estado_registro<>'INACTIVO' + insert into rentas_estado(registro_lote_id,tipo_renta,estado,usuario_id,ip,pcname,detalle,estado_registro,fecha) + select distinct @par_lote_id,0,0,18,'127.0.0.1','localhost','RECAUDACIÓN REMISION IDREC:'+cast(@identificado as varchar),'ACTIVO',GETDATE() + end + else + update x set x.estado='POR_RECAUDAR',x.fecha_actualiza=getdate(),x.observacion=convert(varchar(50),@ErrorCode) + ',' + isnull(convert(varchar(50),@total_titulos),0) + @txtdevcard + from agcm_2024_remision_deudas_tb x + where x.lote_id=@par_lote_id + --select @ErrorCode as estado + end + --select convert(varchar(50),@ErrorCode) + ',' + isnull(convert(varchar(50),@total_titulos),0) + @txtdevcard as estado + insert into agcm_2023_recaudacion_id_convenio(lote_id,pago_id_ol,valor_pagado,recaudacion_id,respag) + select @par_lote_id,cast(@NumeroTransaccion as int),@par_valor_pagado,@ErrorCode,convert(varchar(50),@ErrorCode) + ',' + isnull(convert(varchar(50),@total_titulos),0) + @txtdevcard + + +END +