sp consulta recibo finalizado
aproximadamente 5 horas
se termina el sp de conuslta por abonado y se consultó por el calculo de la moroidad el cual está correcto y se procede a guardar el sp, este sp obtiene los recibos aún no pagos asociados a un abonado por medio de su id y procede a iterar por dichos recibos calculando subtotal de servicios morosidad en caso de existir con la fecha del día en el que se hace la consulta y los ordena por fecha descendiente de manera que quede como esta en la especificación.
ALTER PROCEDURE [dbo].[spRecibosPendientesAbonado]
@idAbonado int = 0
as
Begin
--se declaran las tablas
--recibo consulta que va a contener los datos de los recibos aún no pagados por el abonado
--resultado en el que se le va a ingresar el calculo del monto de los recibos a pagar
DECLARE @reciboConsulta table (sec int identity(1,1), idRecibo int, numeroFinca int, idmuni int, idAbonado int, valor int, nombre varchar(30), fechaEmision dateTime, fechaLimite dateTime, fechaPagado dateTime, valorMAgua float, tasaInteres int)
DECLARE @resultado table (sec int identity(1,1), idRecibo int, montoAgua float, montoAlumbrado float, montoBasura float, montoParques float, montoPatente float, intMoratorio float, morosidad float, impuestoPropiedad float, subTotal float)
--obtiene los recibos que aún no han sido pagados = null por el abonado
Insert into @reciboConsulta Select Recibo.ID, Recibo.NumeroFinca, IdMunicipalidad, IdAbonado, Valor, Abonado.Nombre, FechaEmision, FechaLimite, FechaPagado, ValorMAgua, TasaInteres from Propiedad join Abonado on Propiedad.IdAbonado = Abonado.ID
join Recibo on Propiedad.NumeroFinca = Recibo.NumeroFinca
join Municipalidad on Propiedad.IdMunicipalidad = Municipalidad.ID where Propiedad.IdAbonado = @idAbonado and FechaPagado is null ORDER BY FechaEmision desc
--se declaran variables para obtener los datos
DECLARE @low int = 1
DECLARE @high int = 0
DECLARE @montoAgua float = 0
DECLARE @montoAlumbrado float = 0
DECLARE @montoBasura float = 0
DECLARE @montoParques float = 0
DECLARE @montoPatente float = 0
DECLARE @intMoratorio float = 0
DECLARE @subTotal float = 0
DECLARE @morosidad float = 0
DECLARE @numFinca int = 0
DECLARE @idRecibo int = 0
DECLARE @fechalimite dateTime
DECLARE @interesMoratorio float = 0
DECLARE @impuestoPropiedad float = 0
Print 'comienza loop------------------------------'
Select @high = max(T.sec) from @reciboConsulta T
--procede a iterar por los recibos para obtener el valor a pagar del agua,alumbrado,parques,patente,interesMoratiorio en caso de que el servicio no sea solicitado settea un 0 en la tabla
while @low <= @high
Begin
--obtiene numero de finca e id recibo a pagar
Set @numFinca = (Select numeroFinca from @reciboConsulta where sec = @low)
Set @idRecibo = (Select idRecibo from @reciboConsulta where sec = @low)
--obtiene el valor del pago correspondiente al recibo del agua por medio del id del recibo
Execute dbo.spGetCalculoAguaPorRecibo @idRecibo,@montoAgua out
--obtiene los servicios que paga la finca al mes, en caso de no haber solicitado algún servicio se settea un 0 al valor para no afectar el subtotal
Execute spGetPagos @numFinca,@montoAlumbrado out,@montoBasura out,@montoParques out,@montoPatente out
--suma subtotal
Set @subtotal = @montoAlumbrado + @montoBasura + @montoParques + @montoPatente + @montoAgua
--obtiene el id de la municipalidad por medio del numero de finca para sacar el interes moratorio
Set @interesMoratorio = (Select Municipalidad.TasaInteres from Municipalidad where Municipalidad.ID = (Select Municipalidad.ID from Propiedad join Municipalidad on Propiedad.IdMunicipalidad = Municipalidad.ID where Propiedad.NumeroFinca = @numFinca))
Set @fechalimite = (Select FechaLimite from Recibo where Recibo.ID = @idRecibo)
Set @impuestoPropiedad = (Select Valor from Propiedad where Propiedad.NumeroFinca = @numFinca)
Set @impuestoPropiedad = @impuestoPropiedad * 0.5
--datediff = dias de atraso
if(DATEDIFF(DAY,@fechalimite,GETDATE()) > 0)
Set @morosidad = @subtotal * (@interesMoratorio/360) * DATEDIFF(DAY,@fechalimite,GETDATE())
Insert into @resultado values (@idRecibo,@montoAgua,@montoAlumbrado,@montoBasura,@montoParques,@montoPatente,@interesMoratorio,@morosidad,@impuestoPropiedad,@subTotal)
Set @low = @low + 1
end
Select idRecibo, subTotal, intMoratorio from @resultado
end
se termina el sp de conuslta por abonado y se consultó por el calculo de la moroidad el cual está correcto y se procede a guardar el sp, este sp obtiene los recibos aún no pagos asociados a un abonado por medio de su id y procede a iterar por dichos recibos calculando subtotal de servicios morosidad en caso de existir con la fecha del día en el que se hace la consulta y los ordena por fecha descendiente de manera que quede como esta en la especificación.
ALTER PROCEDURE [dbo].[spRecibosPendientesAbonado]
@idAbonado int = 0
as
Begin
--se declaran las tablas
--recibo consulta que va a contener los datos de los recibos aún no pagados por el abonado
--resultado en el que se le va a ingresar el calculo del monto de los recibos a pagar
DECLARE @reciboConsulta table (sec int identity(1,1), idRecibo int, numeroFinca int, idmuni int, idAbonado int, valor int, nombre varchar(30), fechaEmision dateTime, fechaLimite dateTime, fechaPagado dateTime, valorMAgua float, tasaInteres int)
DECLARE @resultado table (sec int identity(1,1), idRecibo int, montoAgua float, montoAlumbrado float, montoBasura float, montoParques float, montoPatente float, intMoratorio float, morosidad float, impuestoPropiedad float, subTotal float)
--obtiene los recibos que aún no han sido pagados = null por el abonado
Insert into @reciboConsulta Select Recibo.ID, Recibo.NumeroFinca, IdMunicipalidad, IdAbonado, Valor, Abonado.Nombre, FechaEmision, FechaLimite, FechaPagado, ValorMAgua, TasaInteres from Propiedad join Abonado on Propiedad.IdAbonado = Abonado.ID
join Recibo on Propiedad.NumeroFinca = Recibo.NumeroFinca
join Municipalidad on Propiedad.IdMunicipalidad = Municipalidad.ID where Propiedad.IdAbonado = @idAbonado and FechaPagado is null ORDER BY FechaEmision desc
--se declaran variables para obtener los datos
DECLARE @low int = 1
DECLARE @high int = 0
DECLARE @montoAgua float = 0
DECLARE @montoAlumbrado float = 0
DECLARE @montoBasura float = 0
DECLARE @montoParques float = 0
DECLARE @montoPatente float = 0
DECLARE @intMoratorio float = 0
DECLARE @subTotal float = 0
DECLARE @morosidad float = 0
DECLARE @numFinca int = 0
DECLARE @idRecibo int = 0
DECLARE @fechalimite dateTime
DECLARE @interesMoratorio float = 0
DECLARE @impuestoPropiedad float = 0
Print 'comienza loop------------------------------'
Select @high = max(T.sec) from @reciboConsulta T
--procede a iterar por los recibos para obtener el valor a pagar del agua,alumbrado,parques,patente,interesMoratiorio en caso de que el servicio no sea solicitado settea un 0 en la tabla
while @low <= @high
Begin
--obtiene numero de finca e id recibo a pagar
Set @numFinca = (Select numeroFinca from @reciboConsulta where sec = @low)
Set @idRecibo = (Select idRecibo from @reciboConsulta where sec = @low)
--obtiene el valor del pago correspondiente al recibo del agua por medio del id del recibo
Execute dbo.spGetCalculoAguaPorRecibo @idRecibo,@montoAgua out
--obtiene los servicios que paga la finca al mes, en caso de no haber solicitado algún servicio se settea un 0 al valor para no afectar el subtotal
Execute spGetPagos @numFinca,@montoAlumbrado out,@montoBasura out,@montoParques out,@montoPatente out
--suma subtotal
Set @subtotal = @montoAlumbrado + @montoBasura + @montoParques + @montoPatente + @montoAgua
--obtiene el id de la municipalidad por medio del numero de finca para sacar el interes moratorio
Set @interesMoratorio = (Select Municipalidad.TasaInteres from Municipalidad where Municipalidad.ID = (Select Municipalidad.ID from Propiedad join Municipalidad on Propiedad.IdMunicipalidad = Municipalidad.ID where Propiedad.NumeroFinca = @numFinca))
Set @fechalimite = (Select FechaLimite from Recibo where Recibo.ID = @idRecibo)
Set @impuestoPropiedad = (Select Valor from Propiedad where Propiedad.NumeroFinca = @numFinca)
Set @impuestoPropiedad = @impuestoPropiedad * 0.5
--datediff = dias de atraso
if(DATEDIFF(DAY,@fechalimite,GETDATE()) > 0)
Set @morosidad = @subtotal * (@interesMoratorio/360) * DATEDIFF(DAY,@fechalimite,GETDATE())
Insert into @resultado values (@idRecibo,@montoAgua,@montoAlumbrado,@montoBasura,@montoParques,@montoPatente,@interesMoratorio,@morosidad,@impuestoPropiedad,@subTotal)
Set @low = @low + 1
end
Select idRecibo, subTotal, intMoratorio from @resultado
end
Comentarios
Publicar un comentario