jueves, 25 de junio de 2020

25/6/2020

Hoy se termino el proceso de los consumos y ajustes de consumo, se implemento el método iterativo para esto, que consiste en sacar el id mas pequenno y el mas grande e iterar sobre ellos, dependiendo del tipo de movimiento que haya se decide que hacer por ejemplo si es de tipo 1 entonces seria simplemente una lectura, si es de tipo 2 seria un ajuste de crédito y si es de tipo 3 seria un ajuste de debito, esto se ve reflejado en los cases:



DECLARE @idMenor INT, @idMayor INT
SELECT @idMenor = min([id]), @idMayor=max([id]) FROM @inConsumo
BEGIN TRAN
WHILE @idMenor<=@idMayor
BEGIN
INSERT INTO [dbo].[MovConsumo](fecha,montoM3,lecturaConsumo,nuevoM3Consumo,id_Propiedad,idTipoMov)
SELECT 
C.Fecha,
CASE WHEN (C.idTipo = 1) THEN C.LecturaM3-P.M3acumuladosAgua
ELSE C.LecturaM3
END,
CASE WHEN (C.idTipo = 1) THEN C.LecturaM3
ELSE NULL
END,
CASE WHEN (C.idTipo = 1) THEN C.LecturaM3
WHEN (C.idTipo = 2) THEN P.M3acumuladosAgua-C.LecturaM3
ELSE P.M3acumuladosAgua+C.LecturaM3
END,
P.id,
C.idTipo
FROM [dbo].[Propiedad] P
INNER JOIN @inConsumo C ON C.numFinca = P.[numFinca]
WHERE C.id = @idMenor

UPDATE [Propiedad]
SET M3acumuladosAgua = CASE WHEN (C.idTipo = 1) THEN C.LecturaM3
WHEN (C.idTipo = 2) THEN M3acumuladosAgua-C.LecturaM3
ELSE M3acumuladosAgua+C.LecturaM3
END
FROM [Propiedad] P
INNER JOIN @inConsumo C ON C.numFinca = P.[numFinca]
WHERE C.id = @idMenor

SET @idMenor = @idMenor+1 
END

Se trabajo por 4h

No hay comentarios:

Publicar un comentario