Entradas

Mostrando las entradas de julio, 2020

Preview del Portal Municipalidad v.3.0

Imagen
Algunas imágenes de las nuevas características del portal web Login del Portal Municipal Administrador de usuarios Administrador de propiedades para usuario cliente Nueva interfaz para seleccionar propiedades del cliente Visualización de recibos pendientes y pagos Interfaz para seleccionar recibos a pagar Pantalla de pago con la cotización de interese moratorios Cotización de los arreglos de pago Resultado de la cotización del arreglo de pago

Métricas y versionamiento Portal Municipalidad v.3.0

Imagen
Total horas laboradas por persona: Se trabajaron un total de 27 horas por parte de ambos integrantes del grupo.  Se genera un reducción del 38.637% en el total de horas trabajadas con respecto a la versión v.2.0 del portal web municipal. Esto indica que el uso del conocimiento previo, sumado a un mejor manejo del lenguaje SQL y el  framework  ASP.NET nos permite optimizar el tiempo y crear proyectos de mayor complejidad en menos tiempo. De igual forma, otro factor que nos permitió realizar el trabajo eficazmente fue el conocimiento previo del patrón saldo-movimiento y el flujo de control dentro del portal web. Métricas de Github: Link para clonar repositorio:   https://github.com/joseSalazar4/bases-datos.git Link de la página:   https://github.com/joseSalazar4/bases-datos Link del repositorio (generador de datos):  https://github.com/joseSalazar4/Bases_XML.git  Link de la página (generador de datos):  https://github.com/joseSalazar4/Bases_XML...

Avance #43

Avances : Se agregó el panel para los arreglos de pago. Este contiene los botones para calcular dinámicamente la cuota, el de crear el AP correspondiente y el espacio para identificar cual sería el plazo que se desea para el AP correspondiente. Además, se muestra el monto que se debía, el monto que se debe ahora y la cuota. La primera mitad de los elementos va de lado izquierdo y el resto va de lado derecho. Ahora al observar los Conceptos de cobro por pagar estos muestran el texto que corresponde a cada uno  Problemas : El label de monto ya no podía ser el mismo porque ahora se debe ver como lo que se le financiará y sobre lo que se le pagarán impuestos. Para pasar los elementos a texto es sencillo pero, la tabla que se tiene en la plataforma es la que se envía. Por lo tanto, se debe de pasar a numero de nuevo para poder enviarlo pero por esta razón es que hay que hacer dos conversiones. Solución : Se implementó un método que dependiendo de lo que se solicite, en este caso con un ...

Avance #42

Avance : El ingreso a la plataforma fue modificado para que sea más agradable a la vista. Se agregaron imágenes de fondo y también en representación de la municipalidad para que se sepa que están en la página correcta. Además, los botones y el texto cambió de posición para que vaya más de acorde al fondo de pantalla colocado. Los textos tienen diferentes fuentes y tamaños pero todos similares entre títulos y subtitulo. Se centraron los elementos tanto botones como los espacios para ingresar contraseña y el usuario. Problemas : La imagen de fondo se repetía como mosaico y de manera aleatoria. Además, el botón de ingresar no se le puede dar click.    Solución : El problema de la imagen fue solucionado con el elemento de CSS: " background-repeat: no-repeat; ". Luego de esto la imagen se colocaba correctamente. Unos pequeños cambios para que se  quedara donde se deseaba pero no fue gran problema. El problema de los botones era que la imagen de la municipalidad era muy grande ...

Avance #41

Avance : Se agregó al panel de recibos por pagar la opción de pagar y de cancelar. Anteriormente solo se tenía el botón de cotizar con su Stored Procedure ya construido en la base. Al presionar el botón de cancelar se devuelve a la pantalla anterior. Al pagar se esconden los elementos pero aun falta colocar algún mensaje Problemas : Se pensó en utilizar un GridView copia para poder manejar los pagos o el cancelar recibos pero se generan demasiadas inconsistencias y  muchos procesos que pueden generar mucha carga a la página. Hay varios labels que se muestran y no se esconden correctamente. Solución : Se empleó una estrategia bastante simple pero que funcionó bastante bien. Al darle click a cualquier de estos solamente se procesan las filas seleccionadas y se convierten en un string JSON que es mucho más eficiente en memoria y de procesar que una tabla completa. Visual Studio permite ver la memoria que emplea la página con gráficos y se notaba el cambio que esto produjo al cam...

Avance #40

Avance : Se modificó el diseño de la interfaz del usuario para que se asemeje más a la línea a la que apunta el estilo de la página con sus colores y demás. Se agregaron varios elementos. Entre ellos están el cambio de una fila completa al pasar el cursor por encima de la misma. Además, se le dio más contraste al encabezado de cada columna para que este destaque.  Otro elemento que se agregó fue un panel lateral donde se pueden seleccionar filas de manera separada en la tabla de recibos pendientes al momento de pagar. Al ver la tabla de recibos por propiedad esta opción deja de mostrarse y solo estará disponible al momento de pagar.  Problemas : Las columnas tenían el texto a la izquierda y se veía desordenado en general. Los checkboxes se marcan pero no se pueden desactivar una vez que se le dio click. En estos casos esto no debe suceder porque hasta que no presione el botón de pagar o arreglo de pago nada sucederá.   Solución : Se aplicó un justificado del texto dentro...

Avance #39

Avance : Se integra la funcionalidad de AP para el Portal Web Municipal. Se colocó la función en la misma pantalla., luego de realizar la cotización de los recibos con sus respectivos intereses moratorios. Esto ya que la funcionalidad del arreglo de pago es funcionar como un préstamo que unifica las deudas de diversos tipo de recibos y los financia a un plazo definido por el usuario. El plazo del usuario afecta directamente en el monto fijo de la cuota mensual que debe pagar. A mayor plazo, menor cuota pero aumenta el monto de los intereses.  Problemas : N/A Solución : Para cumplir con esta integración se creo el SP GenerarAPWeb. Antes de enviar los datos al SP, la interfaz del portal le da la posibilidad de generar una proyección sobre el monto de la cuota mensual y su total final. Para hacer esto, el usuario digital la cantidad de meses que quiere cotizar y con ese dato se le calculan y muestran los montos correspondientes. Una vez que el usuario se siente a gusto se le mandan lo...

Avance #38

Avance : Se crea la lectura de los atributos AP desde el archivo Operaciones.xml, así como los SP que los crean, generan los recibos y que pagan las cuotas mensuales. Problemas : No estaba claro el funcionamiento del método francés para el cálculo de préstamos.  Solución : Luego de estudiar y probar la fórmula entendimos cómo utilizar el método, por lo que procedimos a desarrollar la parte de los Arreglos de Pago para el. XML. Primeramente, utilizamos lo que anteriormente nos había funcionado para leer etiquetas de XML en un determinado día, lo cual consiste en utilizar el mismo while que itera por fecha para extraer los datos de las etiquetas <AP> de la fecha leída y colocarlos en una tabla de tipo AP que se manda como parámetro. En el SP GenerarAP se leen los datos de la tabla, se invoca la variable de configuración que contiene el interés anual. Una vez evaluados los recibos que se deben incluir y calculados sus intereses moratorios, se genera un total de recibo y se utili...

Avance #37

Avance : Se mejora en la interfaz la visualización de los comprobantes de pago y se realizan cambios. en los atributos de la tabla RecibosAP y AP. Problemas : No mostrábamos los comprobantes de pago de acuerdo con la especificación de la tarea (encabezado, detalle). Adicionalmente, se debe aprovechar la atomicidad de los atributos SQL para almacenar los detalles de los RecibosAP. Por último no teníamos una forma de generar los recibos de cada cuota mensual de los AP, ya que no se almacenaba el día de la creación.  Solución : Procedimos a cambiar la interfaz al mostrar los comprobantes de pago, asociados a una propiedad, de una manera cronológica. Desplegándolos en forma de encabezados, una vez que se pulse se alguno, se despliega un detalle, el cual incluye los recibos asociados a dichos comprobantes. Luego para aprovechar las ventajas que brindan las tablas SQL se cambia el campo de detalle, por Amortización e Intereses, esto con la finalidad de evitar almacenar ambos como un varc...

Avance #36

Avance : Se crearon los métodos para el pago de los recibos y también los que requieren en caso de la cancelación de la operación Pagar. De igual forma comenzamos a buscar formas de pasar los recibos desde la interfaz a la base para que sean utilizados como entrada del SP PagarRecibos y para la cotización de sus intereses moratorios. Problemas : No podíamos encontrar una buena forma de pasar los recibos desde el portal Web. Primeramente intentamos montando tablas, pero no resultaba porque los tipos estaban declarados internamente en la base. Solución : Luego de consultarlo con el profesor decidimos que la mejor opción era convertir los recibos seleccionados a un string con formato JSON que pueda ser leído e interpretado por la base de datos. Así lo hicimos, para nuestra sorpresa es muy parecido al parseo de una XML, por lo que nos resultó sencillo de realizar. Seguidamente, ya con un canal de comunicación establecido, procedimos a realizar el SP que cotiza los recibos que se desean pag...

Avance #35

Avance : Comenzamos con la mejora en la parte de los recibos en la interfaz web. Se necesitaban validaciones cronológicas y diferenciación por tipo de Concepto de Cobro. Debíamos ajustar el pago de los recibos con los pasos dispuestos la especificación de la tarea. Problemas : La interfaz web debía ser mejorada en diseño, ya que, aunque cumplía su función, no era estéticamente agradable para el gusto del profesor. Asimismo, teníamos que corregir el código de ciertos SP's para que no ocurrieran transacciones anidadas.  Solución : Se empezó a revisar todos los SP's, uno por uno, y agregándole el código necesario para desmodularizarlo y eliminar las transacciones anidadas. Para mejorar la parte de pagos, se utilizó el ORDER BY para agrupar los recibos basado en su antigüedad y en su tipo de recibo. En la interfaz web se le agregó estilo y movimiento a las tablas del usuario para que se vean más atractivas. Además, se implementó un sistema de " hovering ", donde al pasar ...

Avance #34

Avance : Se ajusta el modelado original para adaptarlo a las nuevas necesidades del sistema. Las nuevas disposiciones del modelado fueron dadas por el profesor en la clase del 17 de julio. Problemas : No entendimos bien como utilizar la tabla de valores de configuración que se pedía. Solución : Se crearon las tablas de AP, MovimientoAP, RecibosAP, ValoresConfiguración, TipoMovAP, TipoValorConfig. Esta entrega requería la utilización del patrón saldo movimiento para el pago de los arreglos de pago, por lo que procedimos a estudiarlo. Una consulta por medio de WhatsApp nos aclaró que los valores de configuración corresponden a lo que cada grupo considerara necesario, excepto la variable de Tasa Anual de Interés AP, la cual era obligatoria de almacenar para todos los grupos. Esta se fijó en un 10% de interés.  Consejos : El modelado del profesor es una excelente guía para la creación del modelo. Sin embargo, no siempre considera todo y está susceptible a mejoras.  Horas: 2

Avance #33 (Inicio etapa III)

Avance : Para esta nueva entrega volvimos a ser los encargados de los datos, leímos la especificación, tuvimos una reunión con el profesor  y modificamos el archivo de ConceptoDeCobro.xml para agregarle  el concepto de cobro de tipo AP. Luego modificamos el archivo de Operaciones.xml con sus nuevos nodos <AP>, que significa Arreglo de Pago y los pagos de estos.  Problemas : No fue tan sencillo buscar propiedades ideales para que tuvieran arreglos de pago, y ejemplificaran correctamente esta nueva funcionalidad.  Solución : La forma en la que hicimos las modificaciones fue estructurada de manera que no se produjeran errores en la lógica. Primero, le agregamos unos conceptos de cobro a unas propiedades que se ubican en enero. Luego, se le generó un nodo <AP NumFinca="#######" Plazo=""#"/>  a las propiedades correspondientes que no pagaron por un tiempo. Además, pagamos 2 de estas propiedades como debe ser y dejamos dos que sin pagar, para que se gener...

Portal Municipalidad v.2.0

Descripción : Para esta segunda entrega del Portal Municipalidad se trabajó sobre la v.1.0 en la cual se realizaron una serie de modificaciones a las tablas pre existentes y se modificaron ciertos CRUDS para aumentar la funcionalidad del Portal web. Asimismo se incorporaron una serie de nuevas tablas y  nuevos SP (de mayor complejidad). La página continúa simulando un portal web amigable con el usuario para una municipalidad (gobierno local en Costa Rica). Desde él se pueden consultar propiedades registradas, propietarios (incluyendo de tipo jurídico), usuarios registrados en el portal y conceptos de cobro sobre los servicios municipales. Para esta nueva versión se pueden gestionar las transacciones de consumo de agua, se habilita la generación de recibos recurrentes (de manera mensual), se pone a disposición las generación de ordenes de corta y reconexión de agua y el pago de recibos (este incluye el manejo de  intereses moratorios). Finalmente, una bitácora de cambios (tipo ...

Métricas y versionamiento Portal Municipalidad v.2.0

Imagen
Total horas laboradas por persona: Se trabajaron un total de 44 horas por parte de ambos integrantes del grupo.  Se genera un reducción del 22.08% en el total de horas trabajadas. Esto indica que el uso del conocimiento previo, sumado a un mejor manejo del lenguaje SQL y el framework ASP.NET nos permite optimizar el tiempo y crear proyectos de mayor complejidad en menos tiempo. Métricas de Github: Link para clonar repositorio:  https://github.com/joseSalazar4/bases-datos.git Link de la página:   https://github.com/joseSalazar4/bases-datos Link del repositorio (generador de datos):  https://github.com/joseSalazar4/Bases_XML.git  Link de la página (generador de datos):  https://github.com/joseSalazar4/Bases_XML  Métricas sobre desarrollo portal Municipal web v.2.0 Desarrollo de la página web medido en  commits  por meses. Días de semana más productivos. Días más productivos del mes. Métricas programa generador de datos en XML Días de semana más...

Preview del Portal Municipalidad v.2.0

Imagen
Algunas imágenes de las nuevas características del portal web  Vista de la bitácora de cambios                                   Vista del inicio de un usuario tipo cliente Recibos de una propiedad                           Historial de cambios

Avance #32

Avance : Se construyeron gridviews para los recibos por separado, ya que se hizo una solicitud al final. Los grids se pensaron que podrían estar uno al lado del otro pero no es necesario, ya que no se van a comparar los datos y no tienen una relación. Se generaron los métodos específicos para cada una de las tablas. Realmente, solo era necesario modificar en la base los SP para que fueran dos en vez de uno y luego enlazarlo con los métodos. Los botones de atrás y adelante se quitan del panel cuando no se pueden presionar más porque se llegó al inicio o al final de la lista de filas. Problemas : Historial Cambio está construyendo las tablas con errores en los tipos que se seleccionan y la información que viene. Unas tablas no se muestran del todo aunque, en la base de datos se despliegan correctamente. Los botones antes de que se eliminen se caen con un error de index en la fila que se desea obtener.  Solución : Se tenían mal acomodados los items de los radiobuttons y cuando se sele...

Avance #31

Avance : Se implementaron botones para que se pueda mover entre los cambios hechos y se tiene tanto atrás como adelante . Esto permite que se vean en toda la pantalla las tablas de cambios y así no aglomerar la visualización de la información al usuario. Además, se parsea el JSON de manera correcta y se convierte este JSON a una tabla de datos que luego alimenta al gridview y este muestra eso. No importa lo que se inserte, ya que se tiene en true a generar columnas de manera dinámica y automática. Problemas :  El JSON que devuelve la página convirtió las comillas dobles por "&quot;" por lo que no se puede parsear y da error en el texto que se pasa. Además, si viene vacío entra un texto denominado "&nbsp;" por lo que hay más errores dentro del parseo y por condiciones diferentes. Solución : Se utilizaron métodos para que se reemplazaran estas etiquetas o strings por lo que corresponden y en el caso de cuando no viene nada solamente se valida: que si viene ese...

Avance #30

Avance : Se agregó la form de Historial de Cambios y se colocó un espacio en el site master navigation bar.  Ahora cualquier administrador puede ingresar a este espacio de bitácora para hacer consultas acerca de las entidades de la base. Se encontró la forma de que se despliegue la IP del administrador que usa la página y hace modificaciones.  Problemas : Se está mostrando actualmente el site master con todas estas opciones para el usuario cliente porque está dentro del mismo site master . Esto no es permitido porque el cliente solo debe ver información de sus propiedades. El site master debe contener muchos detalles de propiedades del mismo que deben ser setteadas dependiendo de lo que se necesite. Al intentar de encontrar la IP esta indicaba localhost , esto porque las pruebas se hacen con la misma computadora. Solución : Se creó otro site master ,   ya que esto permite independencia en la página y con esto el usuario puede navegar por un lado y el administrador puede...

Avance #29

Avance : Se agregaron las plantillas de Consulta de propiedad y se modificó el login para que revisara si el usuario, que se está loggeando, es Cliente o Administrador. Esto para saber si le mostramos solamente Consulta o el resto de opciones. Además, se consiguió leer la línea de comandos como un escalar para obtener el tipo, solamente es de castearlo a string. Problemas : Al inicio, se intentó redireccionar a diferentes páginas dependiendo del tipo de Usuario pero es necesario dar dos veces click en alguna lugar de la página para que esta responda.  Solución : Se estaba utilizando una línea de código que generaba este problema, ya que solo necesitábamos redireccionar y estábamos usando "Server.Transfer()". Esto nos llevaba a esa página pero al darle click se ejecutaba la otra instrucción que sí lo hacía concretamente.  Anotaciones : La línea que se debe usar para esto es "Response.Redirect()" y se le pasa de parametro la página que se desea visitar. Horas: 2