lunes, 20 de julio de 2020

19/07/2020

Se implementaron los SP:


  • SP_ConsultarCuota: El cual saca la cuota dependiendo del monto de los recibos y de los metes  lo retorna.(inIdRecibos,inMeses)

CREATE PROC [dbo].[SP_ConsultarCuota] @inIdRecibos VARCHAR(MAX), @inMeses INT
        
                        DECLARE @idMenor INT, @idMayor INT,@sumaRecibos MONEY=0, @cuota                                     MONEY, @tasaInteres FLOAT,@montoMoratorio MONEY,@fechaOperacion DATE,
@idPropiedad INT,@fechaVence DATE,@montoRecibo MONEY,@tasaMoratoria                                 FLOAT
CREATE TABLE ##idRecibosPagarAP (id INT IDENTITY(1,1),idRecibo INT);
--GUARDA LOS IDS DE LOS RECIBOS QUE QUIERO PAGAR
INSERT INTO ##idRecibosPagarAP(idRecibo)
SELECT id
FROM OPENJSON(@inIdRecibos)
WITH(id INT)
--SET @sumaRecibos = 0
SELECT @idMenor = MIN([id]), @idMayor=MAX([id]) FROM ##idRecibosPagarAP                                                                   --SACA ID MAYOR Y MENOR PARA ITERAR LA TABLA
BEGIN TRAN
WHILE @idMenor<=@idMayor--RECORRE LOS RECIBOS
BEGIN
SET @montoMoratorio = 0
SET @fechaOperacion = GETDATE()
SET @idPropiedad = (SELECT id_Propiedad FROM [Recibos] R 
INNER JOIN ##idRecibosPagarAP idRP ON                                                                                                                                         idRP.idRecibo = R.id
WHERE @idMenor = idRP.id)
SET @fechaVence = (SELECT fechaVence FROM [dbo].[Recibos] R
INNER JOIN ##idRecibosPagarAP idRP ON                                                                                                                                             idRP.idRecibo = R.id
WHERE @idMenor = idRP.id)
SET @montoRecibo = (SELECT R.monto FROM [dbo].[Recibos] R
INNER JOIN ##idRecibosPagarAP idRP ON R.id =                                                                                                                                                idRP.idRecibo
WHERE idRP.id = @idMenor)
IF @fechaVence < @fechaOperacion
BEGIN
--SACA LA TASA MORATORIA DEL RECIBO
SET @tasaMoratoria = (SELECT CC.tasaImpuestoMoratorio FROM [dbo].                                                                                                                                [ConceptoDeCobro] CC
INNER JOIN [dbo].[Recibos] R ON R.id_CC =                                                                                                                                                             CC.id 
INNER JOIN  ##idRecibosPagarAP idRP ON                                                                                                                                        idRP.idRecibo = R.id
WHERE idRP.id = @idMenor)

--AQUI CAMBIA EL MONTO MORATORIO YA QUE SI SE DEBE                                                                                                                             CREAR RECIBO MORATORIO
SET @montoMoratorio =             (@montoRecibo*@tasaMoratoria/365)*ABS(DATEDIFF(d,@fechaVence,@fechaOperacion))
--CREA UN RECIBO DE TIPO MORATORIO
INSERT INTO [dbo].[Recibos]                                                                                                                                                          (id_CC,monto,estado,id_Propiedad,fecha,fechaVence)
SELECT         CC.id,@montoMoratorio,0,@idPropiedad,@fechaOperacion,DATEADD(d,CC.diasParaVencer,@fech                                                                                                                                                   aOperacion)
FROM [dbo].[ConceptoDeCobro] CC
WHERE CC.id = 11

--GUARDA ADEMAS LOS RECIBOS MORATORIOS A PAGAR
INSERT INTO ##idRecibosPagarAP(idRecibo)
SELECT IDENT_CURRENT('[dbo].[Recibos]')
END
SET @sumaRecibos += @montoMoratorio+@montoRecibo
SET @idMenor += 1
END
SET @tasaInteres = convert(float,(SELECT valor FROM [dbo].[ValoresConfig]                                                                                                             WHERE nombre = 'TasaInteres AP'))
SET @cuota = @sumaRecibos*            ((@tasaInteres*POWER((1+@tasaInteres),@inMeses))/(POWER((1+@tasaInteres),@inMeses)-1))
SELECT @cuota

  • SP_CrearAP: Si el usuario desea pagar entonces llama a este SP el cual paga los recibos, genera un comprobante de pago para el ap, genera un AP y un movimiento de debito.(inMeses,inCuota)
            CREATE PROC [dbo].[SP_CrearAP] @inMeses INT, @inCuota MONEY
                
                DECLARE @montoAP MONEY, @idPropiedad INT, @idComprobante INT,@TasaInteresAnual FLOAT, @idAP INT
--SACA LA TASA ANUAL DE LA TABLA DE CONFIG
SET @TasaInteresAnual = convert(float,(SELECT valor FROM [dbo].[ValoresConfig] WHERE nombre = 'TasaInteres AP'))
--GUARDA EL ID DE LA PROPIEDAD
SET @idPropiedad = (SELECT DISTINCT id_Propiedad FROM [dbo].[Recibos] R
INNER JOIN ##idRecibosPagarAP idRP ON R.id = idRP.idRecibo)
--GUARDA EL MONTO TOTAL
SET @montoAP = (SELECT SUM(monto) 
FROM [dbo].[Recibos] R 
INNER JOIN ##idRecibosPagarAP idRP ON R.id = idRP.idRecibo)
BEGIN TRAN
--ACTUALIZA EL ESTADO A PAGADOS
UPDATE [dbo].[Recibos]
SET estado = 1
FROM [dbo].[Recibos] R
INNER JOIN ##idRecibosPagarAP idRP ON R.id = idRP.idRecibo

--CREA UN COMPROBANTE DE PAGO
INSERT INTO [dbo].[ComprobantePago](fecha,total,medioDePago)
SELECT GETDATE(),@montoAP,'AP# '
SET @idComprobante = IDENT_CURRENT('[dbo].[ComprobantePago]')

--INSERTA LOS RECIBOS EN RECIBOS PAGADOS
INSERT INTO [dbo].[ReciboPagado](id_Recibo,id_Comprobante)
SELECT idRP.idRecibo,IDENT_CURRENT('[dbo].[ComprobantePago]')
FROM ##idRecibosPagarAP idRP
DROP TABLE ##idRecibosPagarAP

--CREA UN AP
INSERT INTO [dbo].[ArregloPago](IdPropiedad,IdComprobante,MontoOriginal,Saldo,TasaInteresAnual,PlazoOriginal,PlazoResta,Cuota,insertedAt,updatedAt)
SELECT @idPropiedad,@idComprobante,@montoAP,@montoAP,@TasaInteresAnual,@inMeses,@inMeses,@inCuota,GETDATE(),GETDATE()
SET @idAP = IDENT_CURRENT('[dbo].[ArregloPago]')

--ACTUALIZA EL COMPROBANTE DE PAGO CON EL ID DEL AP
UPDATE [dbo].[ComprobantePago]
SET medioDePago += @idAP

--GENERA UN MOVIMIENTO DE DEBITO, EL UNICO
INSERT INTO [dbo].[MovimientosAP](idAP,idTipoMov,Monto,interesDelMes,plazoResta,nuevoSaldo,fecha,insertedAt)
SELECT @idAP
,1
,@montoAP
,@montoAP*@TasaInteresAnual/12
,@inMeses
,@montoAP
,GETDATE()
,GETDATE()
   
Referencias:

Se trabajo por 4horas

No hay comentarios:

Publicar un comentario