Tercera reunion
(aprox 5 horas)
nos reunimos para probar y verificar todos los requerimientos de la especificación y la plantilla de revisión, se generaron unas dudas como el orden en que viene el punto 4 debido a que el orden en que se presenta la simulación debería ser diferente, se consultó con el profesor para aclarar las dudas.
Y se llegó a la conclusión con el profesor de que el orden debe darse a como está hecha la tarea programada.
Se mejoró el tiempo del store procedure que carga los datos de la base pasando de un tiempo aproximadamente 1 minuto a 3 segundos haciendo tamblas para ingresar datos después de un select así se evita iterar sobre datos que no son necesarios en el momento y se itera sólo por los datos en los cuales hay que ingresar a la base de datos en ese momento, tambien se adaptaron los datos de el sp hacer pago para que fuera el mismo stored procedure para los 2 propositos que era hacer los pagos masivo y hacer pagos desde el api además que se tuvo la aprovación del profesor por medio de whatssap y se le añadió las transacciónes de bases de datos para el manejo de errores.
-Tambien se creó la bitacora para las tablas que se actualizán.
Para la adición de las transacciones de datos y la bitacora se consultaron las siguientes páginas:
https://www.youtube.com/watch?v=shkt9Z5Gz-U
https://en.wikipedia.org/wiki/Database_transaction
https://www.techopedia.com/definition/16455/transaction
https://www.codeproject.com/Articles/25600/Triggers-SQL-Server
https://docs.microsoft.com/en-us/sql/relational-databases/track-changes/enable-and-disable-change-data-capture-sql-server?view=sql-server-2017
ALTER PROCEDURE [dbo].[spHacerPago]
@numFinca int = 0,
@fechaPago datetime = null
as
begin
Begin Try
Begin Transaction
DECLARE @recibos table (sec int identity(1,1),numeroFincaID int, idRecibo int, fechaEmision datetime, fechaLimite datetime, fechaPagado datetime)
Insert into @recibos Select Propiedad.NumeroFinca,Recibo.ID as idRecibo,Recibo.FechaEmision,Recibo.FechaLimite,Recibo.FechaPagado from Propiedad
join Recibo on Propiedad.NumeroFinca = Recibo.NumeroFinca where Propiedad.NumeroFinca = @numFinca and Recibo.FechaPagado is null order by FechaEmision asc
DECLARE @count int
Select @count = max(sec) from @recibos
--si encuentra una fecha de pago en null crea el pago y actualiza el recibo ya que los recibos de la tabla están ordenados
--de más viejo a mas nuevo entonces pagaría el más viejo
--le hace un update a al recibo que tenga el id y numero de finca de la tabla donde se está iterando
--hace un break para no actualizar más recibos
if(@count > 0)
begin
if(@fechaPago is null)
begin
Update Recibo set FechaPagado = GETDATE() where Recibo.NumeroFinca = @numFinca and Recibo.ID = (Select idRecibo from @recibos where sec = 1)
Insert into Pago values (@numFinca,GETDATE())
Commit Transaction
print 'se canceló un recibo'
end
if(@fechaPago is not null)
begin
Update Recibo set FechaPagado = @fechaPago where Recibo.NumeroFinca = @numFinca and Recibo.ID = (Select idRecibo from @recibos where sec = 1)
Commit Transaction
print 'se canceló un recibo'
end
end
End Try
Begin Catch
RollBack Transaction
print 'no se hizo ningún pago ocurrió un error'
End Catch
end
También trabajamos en el desarrollo del primero punto opcional, el cual pide que se cree una tabla bitácora para llevar el control de eventos sobre las tablas que poseen actividad. Estas tablas son:
-Abonado (update)
-TipoServicio(create, update)
-Recibos(update)
-Pagos(create)
Se crearon triggers que se disparan cuando se cumplen los eventos de los parentesis de dichas tablas, en la tabla bitácora de cada entidad se alojan los datos nuevos, la fecha y la descripcion del evento.
Comenzamos el diseño de la interfaz, la cual usa los mismo recirsos del proyecto pasado, sin embargo decidimo trabajar más afondo en ello en la última reunión que tendremos del día de mañana.
nos reunimos para probar y verificar todos los requerimientos de la especificación y la plantilla de revisión, se generaron unas dudas como el orden en que viene el punto 4 debido a que el orden en que se presenta la simulación debería ser diferente, se consultó con el profesor para aclarar las dudas.
Y se llegó a la conclusión con el profesor de que el orden debe darse a como está hecha la tarea programada.
Se mejoró el tiempo del store procedure que carga los datos de la base pasando de un tiempo aproximadamente 1 minuto a 3 segundos haciendo tamblas para ingresar datos después de un select así se evita iterar sobre datos que no son necesarios en el momento y se itera sólo por los datos en los cuales hay que ingresar a la base de datos en ese momento, tambien se adaptaron los datos de el sp hacer pago para que fuera el mismo stored procedure para los 2 propositos que era hacer los pagos masivo y hacer pagos desde el api además que se tuvo la aprovación del profesor por medio de whatssap y se le añadió las transacciónes de bases de datos para el manejo de errores.
-Tambien se creó la bitacora para las tablas que se actualizán.
Para la adición de las transacciones de datos y la bitacora se consultaron las siguientes páginas:
https://www.youtube.com/watch?v=shkt9Z5Gz-U
https://en.wikipedia.org/wiki/Database_transaction
https://www.techopedia.com/definition/16455/transaction
https://www.codeproject.com/Articles/25600/Triggers-SQL-Server
https://docs.microsoft.com/en-us/sql/relational-databases/track-changes/enable-and-disable-change-data-capture-sql-server?view=sql-server-2017
ALTER PROCEDURE [dbo].[spHacerPago]
@numFinca int = 0,
@fechaPago datetime = null
as
begin
Begin Try
Begin Transaction
DECLARE @recibos table (sec int identity(1,1),numeroFincaID int, idRecibo int, fechaEmision datetime, fechaLimite datetime, fechaPagado datetime)
Insert into @recibos Select Propiedad.NumeroFinca,Recibo.ID as idRecibo,Recibo.FechaEmision,Recibo.FechaLimite,Recibo.FechaPagado from Propiedad
join Recibo on Propiedad.NumeroFinca = Recibo.NumeroFinca where Propiedad.NumeroFinca = @numFinca and Recibo.FechaPagado is null order by FechaEmision asc
DECLARE @count int
Select @count = max(sec) from @recibos
--si encuentra una fecha de pago en null crea el pago y actualiza el recibo ya que los recibos de la tabla están ordenados
--de más viejo a mas nuevo entonces pagaría el más viejo
--le hace un update a al recibo que tenga el id y numero de finca de la tabla donde se está iterando
--hace un break para no actualizar más recibos
if(@count > 0)
begin
if(@fechaPago is null)
begin
Update Recibo set FechaPagado = GETDATE() where Recibo.NumeroFinca = @numFinca and Recibo.ID = (Select idRecibo from @recibos where sec = 1)
Insert into Pago values (@numFinca,GETDATE())
Commit Transaction
print 'se canceló un recibo'
end
if(@fechaPago is not null)
begin
Update Recibo set FechaPagado = @fechaPago where Recibo.NumeroFinca = @numFinca and Recibo.ID = (Select idRecibo from @recibos where sec = 1)
Commit Transaction
print 'se canceló un recibo'
end
end
End Try
Begin Catch
RollBack Transaction
print 'no se hizo ningún pago ocurrió un error'
End Catch
end
También trabajamos en el desarrollo del primero punto opcional, el cual pide que se cree una tabla bitácora para llevar el control de eventos sobre las tablas que poseen actividad. Estas tablas son:
-Abonado (update)
-TipoServicio(create, update)
-Recibos(update)
-Pagos(create)
Se crearon triggers que se disparan cuando se cumplen los eventos de los parentesis de dichas tablas, en la tabla bitácora de cada entidad se alojan los datos nuevos, la fecha y la descripcion del evento.
Comenzamos el diseño de la interfaz, la cual usa los mismo recirsos del proyecto pasado, sin embargo decidimo trabajar más afondo en ello en la última reunión que tendremos del día de mañana.
Comentarios
Publicar un comentario