Última reunión

Nos reunimos por última vez hoy martes 29, día anterior a la entrega del proyecto

aprox (2,5hrs)

El estado de la base de datos (modelo, datos, sp's, scripts,etc) se encuentra en sus últimos detalles (los cuales enumeraremos de forma más espe´cifica posteriormente) y por esto se decide comenzar con la capa lógica (interfaz de usuario).

Requerimentos

Los requerimientos para la parte visual del proyecto consiste en implementar el ambiente para el usario Abonado y Mnucipalidad-Admi. Estos requieren que se pueda ver recibos, pagar recibos, ver los abonados más morosos y los distritos que concentran mayor morosidad, proveer mantenimiento   las tablas de Abonado y TipoServicio y ver detaller de recibos tambien.
Diseño de ventanas

En base a los requerimentos procedemos a diseñar la experiencia de usario, deseñamos las ventanas de forma que es fácil de entender y usar:

 










































Así se visualiza la estructura de ventanas de la interfaz bajo el ambiente ASP.NET de visual studio. La lógica se maneja bajo C# y como es de esperarse es rendirisado en el browser bajo HTML.

Trabajamos en unir las versiones de la base sobre las cuales estamos trabajando

Se actualizó el sp de los recibos pendientes para mostrar al usuario

ALTER PROCEDURE [dbo].[spRecibosPendientesAbonado]
    @idAbonado int = 0
as
Begin
   
    --Recibe un identificador de cliente y lista el
    --número de recibo,++
    --el monto a pagar,++
    --el monto de intereses moratorios,++
    --y monto a pagar incluyendo intereses moratorios.++
    --En orden de la fecha menos reciente a la fecha más reciente.
    --Y total general pendiente que es la suma de todos los recibos incluyendo intereses moratorios.
    --Todo esto para cada propiedad del abonado.


    --se declaran las tablas
    --recibo consulta que va a contener los datos de los recibos aún no pagados por el abonado
    --resultado en el que se le va a ingresar el calculo del monto de los recibos a pagar
    DECLARE @reciboConsulta table (sec int identity(1,1), idRecibo int, numeroFinca int, idmuni int, idAbonado int, valor int, nombre varchar(30), fechaEmision dateTime, fechaLimite dateTime, fechaPagado dateTime, valorMAgua float, tasaInteres int)
    DECLARE @resultado table (sec int identity(1,1), idRecibo int,subTotalSinInteresmoratorio float, intMoratorio float, subtotalConInteresMoratorio float)


    --obtiene los recibos que aún no han sido pagados = null por el abonado
    Insert into @reciboConsulta Select Recibo.ID, Recibo.NumeroFinca, IdMunicipalidad, IdAbonado, Valor, Abonado.Nombre, FechaEmision, FechaLimite, FechaPagado, ValorMAgua, TasaInteres from Propiedad join Abonado on Propiedad.IdAbonado = Abonado.ID
            join Recibo on Propiedad.NumeroFinca = Recibo.NumeroFinca
            join Municipalidad on Propiedad.IdMunicipalidad = Municipalidad.ID where Propiedad.IdAbonado = @idAbonado and FechaPagado is null ORDER BY FechaEmision desc

    --Select * from @reciboConsulta
    --se declaran variables para obtener los datos
    DECLARE @low int = 1
    DECLARE @high int = 0

    DECLARE @montoAgua float = 0
    DECLARE @montoAlumbrado float = 0
    DECLARE @montoBasura float = 0
    DECLARE @montoParques float = 0
    DECLARE @montoPatente float = 0
    DECLARE @intMoratorio float = 0
    DECLARE @subTotalSinInteresMoratorio float = 0
    DECLARE @subtotalConInteresMoratorio float = 0
    DECLARE @morosidad float = 0
    DECLARE @numFinca int = 0
    DECLARE @idRecibo int = 0

    DECLARE @fechalimite dateTime
    DECLARE @interesMoratorio float = 0
    DECLARE @impuestoPropiedad float = 0

    Print 'comienza loop------------------------------'

    Select @high = max(T.sec) from @reciboConsulta T
    --procede a iterar por los recibos para obtener el valor a pagar del agua,alumbrado,parques,patente,interesMoratiorio en caso de que el servicio no sea solicitado settea un 0 en la tabla
    while @low <= @high
    Begin
       
        --obtiene numero de finca e id recibo a pagar
        Set @numFinca = (Select numeroFinca from @reciboConsulta where sec = @low)

        Set @idRecibo = (Select idRecibo from @reciboConsulta where sec = @low)

        --obtiene el valor del pago correspondiente al recibo del agua por medio del id del recibo
        Execute dbo.spGetCalculoAguaPorRecibo @idRecibo,@montoAgua out
        --obtiene los servicios que paga la finca al mes, en caso de no haber solicitado algún servicio se settea un 0 al valor para no afectar el subtotal
        Execute spGetPagos @numFinca,@montoAlumbrado out,@montoBasura out,@montoParques out,@montoPatente out

        --suma subtotal
        Set @subtotalSinInteresMoratorio = @montoAlumbrado + @montoBasura +  @montoParques + @montoPatente + @montoAgua
        --obtiene el id de la municipalidad por medio del numero de finca para sacar el interes moratorio
        Set @interesMoratorio = (Select Municipalidad.TasaInteres from Municipalidad where Municipalidad.ID = (Select Municipalidad.ID from Propiedad join Municipalidad on Propiedad.IdMunicipalidad = Municipalidad.ID where Propiedad.NumeroFinca = @numFinca))


        Set @fechalimite = (Select FechaLimite from Recibo where Recibo.ID = @idRecibo)

        Set @impuestoPropiedad = (Select Valor from Propiedad where Propiedad.NumeroFinca = @numFinca)
        Set @impuestoPropiedad = @impuestoPropiedad * 0.5
        Set @subtotalConInteresMoratorio = 0

        --datediff = dias de atraso
        if(DATEDIFF(DAY,@fechalimite,GETDATE()) > 0)
        begin
            Set @morosidad = @subtotalSinInteresMoratorio * (@interesMoratorio/360) * DATEDIFF(DAY,@fechalimite,GETDATE())
            Set @subtotalConInteresMoratorio = @subTotalSinInteresMoratorio + @morosidad
        end

        Insert into @resultado values(@idRecibo,@subTotalSinInteresMoratorio,@morosidad,@subtotalConInteresMoratorio)

        Set @low = @low + 1
    end
       

        Select * from @resultado

end

 






Creamos estos stored procedures básicos que simplemente llevan el mantenimiento del punto opcional #2

estos a su vez afectan las tablas bitácora.







































 

Comentarios

Entradas populares de este blog

XML y carga de datos (actualización)

actualización