martes, 30 de junio de 2020

28-29-30/06/2020

Se termino el procesamiento de pagos:

   En el cual se consigue el id del recibo mas viejo respecto a la propiedad y al concepto de cobro que viene en la tabla de pagos:
    SET @idRecibo = (SELECT TOP 1 R.id 
FROM [dbo].[Recibos] R
INNER JOIN @Pagos P ON P.idTipoRecibo = R.id_CC
INNER JOIN [dbo].[Propiedad] PR ON PR.numFinca = P.numFinca AND PR.id = R.id_Propiedad
WHERE R.estado = 0 AND P.id = @idMenor
ORDER BY R.fecha ASC)

Despues se busca el comprobante de pago:
SET @idComprobante = (SELECT CP.id--ERROR
FROM [dbo].[ComprobantePago] CP
INNER JOIN [ReciboPagado] RP ON CP.id = RP.id_Comprobante
INNER JOIN [dbo].[Recibos] R ON R.id = RP.id_Recibo 
WHERE CP.fecha = @fechaOperacion AND R.id_Propiedad = @idPropiedad)
--SI NO EXISTE LO CREA
IF @idComprobante IS NULL
BEGIN
INSERT INTO [dbo].[ComprobantePago](fecha,total)
SELECT @fechaOperacion,0
SET @idComprobante = IDENT_CURRENT('[dbo].                                                                                                   [ComprobantePago]')
END

O se crea en el caso que no exista
Y despues se verifica si es necesario realizar un recibo por morosidad:

                                                SET @fechaVence = (SELECT fechaVence FROM [dbo].[Recibos] R
   INNER JOIN @idRecibosPagar idRP ON                                                                                                     idRP.idRecibo = R.id
   WHERE @idMenorRecibo = idRP.id)
IF @fechaVence <= @fechaOperacion
BEGIN

Y se genera el recibo por morosidad, al final al comprobante de pago se le actualiza el monto y se sigue con la iteracion:

                                                UPDATE [dbo].[ComprobantePago]
SET [total] = [total]+@montoRecibo+@montoMoratorio
WHERE id = @idComprobante
SET @idMenor = @idMenor+1


y generación de recibos:
    
DECLARE @dia int
--SET @dia  = DAY(@fecha)
INSERT INTO [dbo].[Recibos](id_CC,monto,estado,id_Propiedad,fecha,fechaVence)
SELECT 
CC.id,
CASE WHEN (CC.esFijo = 'Si' AND CC.id != 1) THEN CC.monto 
WHEN (CC.esImpuesto = 'Si') THEN P.valor/100*CCPo.valorPorcentual
WHEN (CC.id = 1) THEN 
CASE WHEN (P.M3acumuladosAgua-P.M3AcumuladosUltimoRecibo)*CCC.valorPorM3>CCC.montoMinimoRecibo
THEN (P.M3acumuladosAgua-P.M3AcumuladosUltimoRecibo)*CCC.valorPorM3
ELSE CCC.montoMinimoRecibo END
END,
0,
P.id,
@fecha,
DATEADD(d,CC.diasParaVencer,@fecha)
FROM [dbo].[CCDePropiedad] CCP 
INNER JOIN [dbo].[ConceptoDeCobro] CC ON CCP.id_CC = CC.id
INNER JOIN [dbo].[Propiedad] P ON CCP.id_Propiedad = P.id
FULL OUTER JOIN [dbo].[CCPorcentaje] CCPo ON CCPo.id = CC.id
FULL OUTER JOIN [dbo].[CCConsumo] CCC ON CCC.id = CC.id
WHERE CC.diaDeCobro = @dia

 solo falta probar reconexion y corte, y hay un problema con pagos esta tratando de establecer una variable y le retorna mas de un valor.

Durante los 3 días se trabajo aproximadamente 17h en total

Referencias:

No hay comentarios:

Publicar un comentario