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.

Comentarios

Entradas populares de este blog

XML y carga de datos (actualización)

Última reunión

actualización