sábado, 27 de junio de 2020

27/06/2020

Hoy se logro probar lo que teníamos hasta el momento con los nuevos XML, inserta todas las entidades básicas bien y guarda los cambios correspondientes en la bitácora de cambios, también procesa las transacciones de agua y los cambios de valor de propiedades bien, se corrigió un el SP que cambiaba los valores de las propiedades, este era masivo y estaba dando errores con los datos, los errores eran que almacenaba en la bitácora entidades con json desuse y json antes iguales a null por lo que investigue y no encontré solución, al final me pase a iterativo y funciono muy bien y esa fue la solución:


declare @jsonAntes varchar(500), @jsonDespues varchar(500), @idMenor int, @idMayor int, @insertedAt DATE
SELECT @idMenor = min([id]), @idMayor=max([id]) FROM inserted
SET @insertedAt = (SELECT fechaDeIngreso FROM inserted WHERE [id] = @idMenor)
WHILE @idMenor<=@idMayor
BEGIN
SET @jsonAntes = (SELECT [id], [valor], [direccion], [numFinca], [fechaDeIngreso],[M3acumuladosAgua],[M3AcumuladosUltimoRecibo]
FROM deleted WHERE [id] = @idMenor AND activo = 1
FOR JSON PATH)
SET @jsonDespues = (SELECT [id], [valor], [direccion], [numFinca], [fechaDeIngreso],[M3acumuladosAgua],[M3AcumuladosUltimoRecibo]
FROM inserted WHERE [id] = @idMenor AND activo = 1
FOR JSON PATH)
EXEC [dbo].[SP_BitacoraCambioInsert] 
@inIdEntityType = 1,
@inEntityID = @idMenor, 
@inJsonAntes = @jsonAntes,
@inJsonDespues = @jsonDespues, 
@inInsertedBy = 'usuario1', 
@inInsertedIn = '1.1787.0289',
@inInsertedAt = @insertedAt
SET @idMenor = @idMenor+1 
END



Ya esta implementado el proceso de los pagos pero no se ha probado.

Ya se implemento el SP que selecciona elementos de la bitácora dependiendo de la entidad y rangos de fechas:

DECLARE @fechaDesde DATE , @fechaHasta DATE
SET @fechaDesde = CONVERT(DATE,@inFechaDesde,121)
SET @fechaHasta = CONVERT(DATE,@inFechaHasta,121)
SELECT [jsonAntes],[jsonDespues],[insertedAt],U.nombre,[insertedIn] 
FROM [dbo].[BitacoraCambio] BC
INNER JOIN [dbo].[Usuario] U ON U.id = BC.insertedBy 
WHERE (insertedAt BETWEEN @fechaDesde AND @fechaHasta) 
AND (idEntityType = @inIdEntidad)


Referencias:

No hay comentarios:

Publicar un comentario