viernes, 2 de septiembre de 2016

I Proyecto de Bases de Datos I

(2 horas)

Este proyecto consiste en crear una base de datos que será empleada en algún centro municipal o municipalidad cantonal de alguna provincia. Durante el desarrollo de este proyecto se pretende conseguir habilidades, destrezas y conocimientos acerca del funcionamiento del MS SQL Server, además de aprender el lenguaje SQL como herrmienta de trabajo con bases de datos relacionales.

A continuación se presentará la especificación del proyecto que propone el profesor Franco Quiros, del Instituto Tecnológico de Costa Rica:

ITCR – Escuela de Ing. en Computación – Base de Datos 1 – Prof. Fquiros – Set 2016
Primera tarea programada.

1) Objetivos: Implementar una base de datos física, así como escribir el código en capa lógica y física para el mantenimiento de entidades y el procesamiento de datos.

2) Descripción del problema.

Pago de servicios municipales.

Los servicios municipales que los usuarios pagan son:

Agua, mensualmente,
Recolección de basura, mensualmente,
Mantenimiento de parques, mensualmente,
Patentes, trimestralmente, en Enero, Abril, Julio y Octubre.
Impuestos a la propiedad, anualmente en Noviembre,
Reconexión de servicio de agua, en cualquier momento.

La municipalidad emite los recibos para el pago de estos servicios, los primeros de cada mes respecto de los servicios que la municipalidad proveyó el mes anterior, o lo que venció mes anterior. Los pagos deben realizarse en fecha igual o anterior al 15 del mes, a partir de esa fecha se cobran intereses moratorios diariamente.

Como este sistema estará hecho para que lo compren muchas municipalidades, la fecha de emisión de recibos, la fecha límite para su cobro sin intereses moratorios y la tasa de interés moratorio son parámetros de configuración del sistema.

El cálculo de intereses moratorios se define así: Monto a Cobrar x (tasa de interese moratorio/360) x cantidad de días de atraso. El impuesto a la propiedad es de 0.5% del valor declarado de la propiedad. Los valores para patentes, recolección de basura, mantenimiento de parques y reconexión de agua, son atributos del tipo de servicio. Para efectos de prueba, como luego se especifica, estos archivos se sustituyen por un solo archivo de entrada XML donde se simula la operación del sistema por varios meses.

Su grupo de trabajo debe implementar un proceso masivo de “emisión de recibos” el 1ero de cada mes, o más bien, el día que este configurado para la emisión de recibos, este proceso recibe como entrada un archivo con los metros cúbicos de litros de agua consumidos por el abonado, así como un archivo que contiene el valor declarado de las propiedades de cada abonado.

Para el pago de todos los servicios se emite un único recibo, con el formato de una factura, con un monto total a pagar, y si el pago es posterior a la fecha límite, se agrega un concepto más por intereses moratorios.

Para el pago de recibos, Ud. debe desarrollar varios SP que serían invocados por un API (no tiene que programar el API) que tiene las siguientes funcionalidades:

Listar recibos pendientes: 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 el total general pendiente que es la suma de todos los recibos incluyendo intereses moratorios.
Consultar un recibo: muestra el detalle del recibo: número de abonado, documento de identificación, nombre, mes del recibo, fecha límite para pagar, el detalle de todos los pagos (agua, recolección de basura, etc. …) y el total a pagar.
Pago de un recibo:  se recibe Id del recibo, se valida que el recibo que se paga es el menos reciente de todos los recibos pendientes si es así, habrá un código de error de salida, y si todo bien, se paga el recibo.
Listar recibos pagados: ídem lista de recibos pendientes, referido a recibos pagados, en el último año.
¿Qué funcionalidades debe implementar?

El proceso masivo de emisión de recibos.
Debe realizar el mantenimiento de abonados (valor de documento de identificación, Nombre e información de contacto) y tipos de servicio (Nombre, valor del servicio).
Debe proveer una interfaz de usuario para el abonado tal que que pueda consultar sus recibos pendientes, consultar el detalle de algún recibo pendiente, consultar recibos ya pagados y ver el detalle de cualquier recibo, y finalmente; simular el pago de un recibo.
Debe proveer una interfaz de usuario para el administrador de sistema que le permita realizar estas consultas:
Listado de órdenes de corta de conexión de agua, para los abonados que a la fecha (que es valor de valor de entrada del reporte) no hayan pagado el recibo pendiente del mes (valor de entrada del reporte). El listado contiene, numero de abonado, nombre y dirección, ordenado por distrito y luego por orden descendente del monto a pagar.

Los 20 abonados con la morosidad más alta: abonado, identificación, Nombre, Monto moroso, cantidad de recibos pendientes, en orden descendente de Monto Moroso.

El distrito que concentra la mayor morosidad, ya sea por cantidad de recibos pendientes o por monto.

Si un recibo se paga después de la fecha límite y hay que cobrar intereses moratorio, se debe generar un movimientos por dicho monto.

3) Qué se pide?

3.1) El código en capa lógica para la creación de dos sitios, el del administrador, el del usuario.
Sitio del administrador: contiene acciones para dar mantenimiento a entidades principales (insertar, borrar modificar), parámetros de configuración, chequear bitácora de corrida del proceso mensual (Fecha y hora de cada corrida) y para correr los reportes. Sitio del abonado: para consultar recibos pendientes, recibos pagados, consultar un recibo o pagar un recibo.

3.2) Los SP para realizar el mantenimiento, el proceso masivo de generar recibos, mas los SP para todas las consultas y el pago del recibo.

4) Datos de prueba. Simulación.

Debe realizar datos para simular consumo de m3 de agua, pagos de recibos y registro de valor de fincas; por 3 ciclos mensuales; propiciando en sus datos de que algunos abonados no pagan para poder probar los reportes de morosidad. Suponga 100 clientes y de ellos 20 no pagan el recibo que corresponde a un mes.

El archivo de entrada, suponiendo que está en formado XML, contiene datos de operación diaria, donde hay tres tipos de nodos:
registro de consumo, con otros datos como número de abonado, id de la finca, mes, y cantidad de m3.
registro de pago, con otros datos como numero de abonado y mes que paga.
Registro de finca: número de abonado, numero de finca, monto valorado de la finca.

Nota: el proceso de generar movimientos por consumo de agua o de impuestos a fincas, en la descripción, indicará el número de finca.

El archivo vendrá ordenado por fecha, la idea sería iterar sobre ese archivo desde la fecha menos reciente a la más reciente, y para cada día, procesar las operaciones de registro de consumo, registro de pago o registro; si la fecha de proceso es el último dia mes, se corre el proceso de emisión de recibos, de otra manera se procesa el pago,el registro del consumo o el registro de finca.

5) Reglas.

Documentación: una bitácora escrita en un blog en el cual día a día, para cada sesión de trabajo, se indica la cantidad de horas trabajadas, se hace un relato de los avances,   acerca de los problemas encontrados, como fueron resueltos; dudas, divergencias de criterio,  forma en que trabajó el equipo de trabajo, problemas con la instalación del software, problemas de aprendizaje del framework,  investigaciones, pruebas de concepto, experiencias, moralejas, ayuda recibida, consejos a dar, buenas prácticas descubiertas, código adaptado, etc.; que describa el proceso de solución de la tarea programada; una descripción sincera y detallada será bien evaluada.  Incluya referencias externas a recursos utilizados en internet para solventar dudas o resolver problemas, puede incluir los mensajes de error y como fueron resueltos. La última entrada del blog es un resumen que indique la cantidad de horas total de trabajo, por persona, así como un análisis de resultados de los que se está entregado.  Debe suponer que todo lo que escriba será sujeto de inspección en un tribunal, pues el profe cree que Ud. es delincuente copión, y este blog es la prueba de que no lo es, por ello debe ser exhaustivo. Grupos de 2 personas. Motor de base de datos: MS SQL 2008 o 2012. Fecha de entrega: xx de Jueves 6 de Octubre, a las 6 pm.
--
Franco Quiros

No hay comentarios:

Publicar un comentario