Sobre este proyecto
it-programming /
Abierto
Queremos desarrollar una aplicacion Punto de Venta que corra sobre windows, que mantenga sincronizada la informacion entre varias terminales, que pueda imprimir "Boletos de Entrada" y que pida metadatos sobre los compradores en base a los productos comprados
Los modulos contemplados son:
ActiveRecord: Este modulo sera el unico con acceso a la base de datos, se encargara de crear y mantener las tablas necesarias, de crear los querys para insertar, actualizar, buscar o borrar registros, de serializar/deserializar objetos y registros a/de JSON y de lanzar eventos cada vez que un registro sea manipulado (no es en realidad un modulo sino una clase de la cual deberan heredar, directa o indirectamente, todas las clases que requieran almacenar datos).
ModuleManager: Se encargara de cargar todos los modulos disponibles, de construir una barra de menu con los menus expuestos por cada modulo encontrado y de proporcionar esa barra de menu para la ventana principal de la aplicacion; Tambien enviara cada entidad encontrada al ActiveRecord para mantenimiento a la base de datos
P2P: Este modulo se encargara de descubrir nodos, conectarse con ellos en redes p2p protegidas y de mantener sincronizada la informacion generada entre las diferntes computadoras apoyandose en los eventos lanzados por ActiveRecord.
Modulo de Usuarios: Se encarga de definir/administrar usuarios y perfiles de acceso, de asignar perfiles de acceso a los usuarios, de interceptar los eventos lanzados por ActiveRecord pera restringir movimientos no permitidos al usuario y sirve tambien para restringir el acceso a interfaz grafica de modulos o acciones no permitidas.
Modulo de Scursales: Se encarga de definir y administrar sucursales, las cuales tendran nombre y logo y podran ser habilitadas o deshabilitadas, al iniciar la aplicacion se debera escoger con que sucursal trabajar y opcionalmente crear una nueva
Modulo de Caja: Se encarga de definir y administrar Cajas, las cuales tendran un identificador unico (generado automaticamente) y un nombre definido por el usuario y la sucursal a la que pertenece; Las cajas que tengan operaciones realizadas no se podran borrar.
Modulo de Productos: Se encarga de definir y administrar Productos, Combos/Paquetes de Productos, Listas de Precios y Listas de Precios accesibles por Sucursal; Al abrir el editor de productos y al modificar productos, lanzara eventos que permitan a otros modulos extender la funcionalidad e interfaz grafica de este.
Modulo de Ventas: Se encarga de capturar las ventas con sus respectivos "line items" y de imprimir el ticket correspondiente; Lanzara eventos al agregar un producto y al imprimir el ticket, de modo que se permita a otros modulos intervenir en este proceso; Tendra tambien la funcionalidad de hacer "Cortes de Caja" y de visualizarlos e imprimirlos posteriormente;
Modulo de Boletaje: Extiende las propiedades de "Producto" para definir si es un boleto; Interviene en la impresion de un ticket para anexar un codigo de barras por cada "lineitem" que sea boleto. Y proporciona una interfaz para validar que el codigo de barras sea autentico, almacenar la fecha/hora en la que se uso el boleto y evitar que se use mas de una vez.
Modulo de Metadatos: Se compone de varias entidades llamadas "Metadatos" que agrupan diferentes datos que se le pueden pedir a un comprador y que extienden el comportamiento del modulo de ventas para capturar estos datos cuando un producto es seleccionado; Ademas de otra entidad que extiende las propiedades de "Producto" para que cada producto se pueda, opcionalmente, asociar con alguna de las entidades de "Metadatos"
Notas:
La sincronizacion no puede depender de un servidor central por lo que se usara una arquitectura P2P y no la tradicional Cliente-Servidor.
Ya tenemos avanzado un esquema de la aplicacion.
Ya tenemos avanzada la definicion del protocolo de comunicacion p2p
El proyecto se puede dividir en varios desarrolladores por lo que, individualmente, no es necesario tener las habilidades que requiere el proyecto en su totalidad
Categoría Programación y Tecnología
Plazo de Entrega: 28 Octubre, 2014
Habilidades necesarias