Sobre este proyecto
it-programming / mobile-development
Abierto
El sistema nace por la necesidad de gestionar las ventas puerta a puerta de Grupo Monge, así
como llevar una base de datos de clientes visitados, entre otras necesidades existentes.
1. Herramienta Android
Con el fin de brindarles a los vendedores una herramienta donde puedan insertar clientes a la base
de datos, así como realizar ventas, llevar una agenda, entre otras funciones; se les propone
desarrollar una aplicación a la medida donde se ofrezcan estas funciones y otras más.
Dicha aplicación como proyecto inicial se desarrolla en Android, compatibles tanto con
Smartphone como con Tablet que hospeden este sistema operativo.
ALCANCE
=======
- Autenticación de Usuario basado en roles.
- Gestionar Clientes.
- Gestionar Ventas.
- Gestionar Agenda/Calendario.
- Control de Tiempos.
- Consultar Estado de Casos.
- Consultar Tipos de Financiación.
- Consultar Cuotas vs Tiempo.
Requerimientos funcionales
==========================
- autenticar usuario basado en roles
- clientes:
- registrar cliente
- listar/buscar cliente
- editar cliente
- eliminar cliente (role admin, rol supervisor)
* listar/buscar productos
- ventas:
* registrar venta
* listar/buscar ventas
* editar venta
* cancelar venta
* eliminar venta (rol admin, rol supervisor)
- gestionar agenda/calendario:
* crear cita
* aprobar cita (rol admin, rol supervisor)
* listar/buscar cita
* editar cita
* ver cita
* visualizar modo calendario
- tiempos:
* registrar tiempo
* consultar tiempos
* consultar estado de los casos
* consultar tipos de financiación
* consultar cuotas vs tiempo
requerimientos no funcionales
=============================
- software:
* app android 5.x (Lollipop)
- Diseño:
* Adaptable para dispositivos tipo smartphone y tablets.
* Estructura basada en Roles mostrando elementos del menú según el acceso por roles
establecido.
- Apariencia:
- La aplicación mostrará los mensajes de notificación/alerta/error en la parte superior derecha
de forma flotante.
- Mostrará de forma predeterminada el logo y el nombre del sistema y en caso de encontrarse
configurado mostraría el logo con el nombre de la Empresa.
- Contendrá los datos principales del sistema y de nuestra empresa en el pie de página, así como
mecanismo de contacto de la empresa.
- Uso:
* La aplicación deberá notificar previamente al usuario cuando haya una actualización
disponible y la posibilidad de descargar dicha actualización.
* Debe ser posible trabajar con la aplicación sin conexión a internet. Por lo que debe contener
una base de datos interna en la cual almacene y registre todas las operaciones realizadas en
estado offline y en el momento en que alcance conectar a internet actualizarce con la plataforma
web.
- Seguridad:
* Autenticación basada en roles.
- Escalabilidad:
* Estructura modular y multifuncional.
- Interfaces de comunicación:
* La aplicación debe actualizar los datos con la plataforma web mediante servicios Rest usando
peticiones http.
Datos de entidades
==================
- cliente:
* nombre: string(255)
* email: string(255)
* teléfono: string(32)
* web: string(255)
* dirección: string(255)
* latitud string(32) |> coordenadas gps
* longitud string(32) |> coordenadas gps
* activo: boolean
- producto:
* nombre: string(255)
* activo: boolean
* categoría: categoría producto
* existencia: int
- categoría producto:
* nombre: string(255)
- venta:
* código: string(32)
* fecha: date
* hora: time
* cliente: cliente
* descripción: text
* estado: string(32)
* productos: productos[]
* descuento: float
* impuesto: float
* importe: float
- cita:
* título: string(255)
* descripción: text
* fecha: date
* hora inicio: time
* hora final: time
* etiqueta: string(32)
* ubicación: string(255)
- tiempos:
* título: string(255)
* descripción: text
* fecha: date
* hora: time
* duración: integer
* tipo: enum['almuerzo', 'cafe']
tener en cuenta
===============
- al registrar un cliente se debe registrar de forma automática la posición gps del dispositivo en el
momento de hacer el registro. Esta aplicación debe ser capaz de sincronizar con la plataforma
principal toda la información necesaria, además funcionar de forma autónoma manejando una
base de datos local en caso de que no exista señal de internet en la zona. Realizando
sincronizaciones cada cierto tiempo.
2. Plataforma de Gestión.
Con el fin de tener un sistema centralizado donde todos los agentes de ventas reportes su
asistencia, posición gps, lleven una agenda, inserten nuevos clientes, entre otras funciones; se
desarrollará una plataforma donde tendremos los siguientes módulos:
alcance
=======
módulo seguridad:
- gestionar usuarios.
- Autenticación de Usuario basado en roles.
- Gestionar Roles y Permisos del sistema.
- Gestionar Roles y Permisos de aplicación Android.
Módulo Clientes:
- Gestionar Clientes.
- Gestionar Regiones
- Gestionar Zonas.
Módulo Solicitudes:
- Gestionar Ventas.
- Gestionar Agentes.
Módulo Supervisión:
- Aprobar/Cancelar Solicitudes (Cambio de estados de las mismas).
Módulo Crédito:
- Gestionar Créditos.
Módulo de Entrega(CEDI):
*** por definir ***
Módulo Productos:
- Gestionar Categorías de Producto
- Gestionar Productos
Módulo Reportes:
*** por definir ***
-Api REST para interactuar con aplicación Android
requerimientos funcionales
==========================
- gestionar usuario:
* crear usuario
* modificar usuario
* ver datos de usuario
* eliminar usuario
* listar/buscar usuario
- autenticar usuario
- gestionar grupos de usuario:
* crear grupo de usuario
* listar/buscar grupo de usuario
* modificar grupo de usuario
* ver datos de grupo de usuario
* eliminar grupo de usuario
- gestionar permisos plataforma:
* adicionar permisos a usuario o grupo de usuarios
* ver datos de permisos de usuario o grupo de usuarios
* modificar permisos de usuario o grupo de usuarios
* eliminar permisos de usuario o grupo de usuarios
* listar/buscar permisos
- gestionar permisos para aplicación android:
* adicionar permisos a usuario o grupo de usuarios
* ver datos de permisos de usuario o grupo de usuarios
* modificar permisos de usuario o grupo de usuarios
* eliminar permisos de usuario o grupo de usuarios
* listar/buscar permisos
- gestionar clientes:
* crear cliente
* ver datos de cliente
* modificar cliente
* eliminar cliente
* listar/buscar cliente
- gestionar regiones [como nomenclador]
- gestionar zonas [como nomenclador]
- gestionar solicitudes:
* crear solicitud
* ver datos de solicitud
* modificar solicitud
* eliminar solicitud
* listar/buscar solicitud
* aprobar solicitudes
* cancelar solicitudes
- gestionar agentes:
* crear agente
* ver datos de agente
* modificar agente
* eliminar agente
* listar/buscar agente
* asociar agente a usuario del sistema
- gestionar créditos:
* crear crédito
* ver datos de crédito
* modificar crédito
* eliminar crédito
* listar/buscar crédito
* aprobar créditos
* cancelar créditos
- gestionar categoría de productos [como nomenclador]
- gestionar productos:
* crear producto
* ver datos de producto
* modificar producto
* eliminar producto
* listar/buscar producto
- configuración del sistema:
* modificar título de plataforma (rol admin)
* modificar logo (rol admin)
* modificar lenguaje por defecto (rol admin)
* modificar tema por defecto (rol admin)
- configuración de usuario:
* modificar lenguaje
* modificar tema
api rest para sincronizar datos con la aplicación android.
*** Por definir ****
- reportes.
- Funcionalidades para Entregas.
Requerimientos no funcionales
=============================
- software:
* cliente: html5 + css3 + javascript + angularjs
* servidor: php7 + mysql
* framework: symfony v3.2.x o superior
- Diseño:
* Sitio multilenguaje, por defecto en idioma español y traducido al idioma inglés.
* El sistema debe permitir seleccionar entre varios temas de interfaz.
* Web Responsive adaptable a dispositivos con resoluciones:(... Incluir)
* Frontend integrado con acceso a funcionalidades según roles del usuario.
- Apariencia:
- El sistema mostrará los mensajes de notificación/alerta/error en la parte superior derecha de
forma flotante.
- Mostrará de forma predeterminada el logo y el nombre del sistema y en caso de encontrarse
configurado un logo personalizado mostraría el mismo.
- El lenguaje de la plataforma, su logo y el tema podrán ser modificados globalmente mediante
la configuración. O personalizado mediante el perfil del usuario.
- Uso:
* El sistema deberá notificar previamente al usuario cuando ha sido programada una
actualización y el tiempo estimado que puede tomar dicha acción.
* Al entrar en modo mantenimiento mostrará un mensaje notificando al usuario que se
encuentra en mantenimiento y el posible tiempo que resta para que termine.
* Al realizar una modificación al sistema mostrará una notificación al usuario con el changelog
actualizado.
- Seguridad:
* Autenticación basada en roles.
* Solo el super administrador tendra acceso a los datos y acciones del sistema.
- Escalabilidad:
* Estructura modular y multifuncional.
- Interfaces de comunicación:
* El servidor debe permitir conectarse por ssh para la administración el sistema.
* Proveerá de una api rest para el intercambio y sincronización de los datos con la aplicación
android.
Datos de entidades
==================
- usuario:
* usuario/nickname: string(32)
* password: string(255)
* nombre: string(255)
* email: string(255)
* activo: boolean
* imei: string(32)
* roles: array()
* grupo: grupo usuario
- grupo de usuario:
* nombre: string(255)
* activo: boolean
* roles: array()
- cliente:
* nombre: string(255)
* email: string(255)
* teléfono: string(32)
* web: string(255)
* dirección: string(255)
* latitud string(32) |> coordenadas gps
* longitud string(32) |> coordenadas gps
* activo: boolean
- producto:
* nombre: string(255)
* activo: boolean
* categoría: categoría producto
* existencia: int
- categoría producto:
* nombre: string(255)
- solicitud:
* código: string(32)
* fecha: date
* hora: time
* cliente: cliente
* descripción: text
* estado: string(32)
* productos: productos[]
* descuento: float
* impuesto: float
* importe: float
* estado: enum('abierto', 'aprobado', 'cancelado')
- región:
* nombre: string(255)
- zona:
* nombre: string(255)
* region: región
- agente:
* nombre: string(255)
* usuario: usuario
* dirección: text
* teléfono: string(32)
* email: string(255)
- crédito:
* título: string(255)
* descripción: text
* cliente: cliente
* monto: float
* fecha: date
* fecha final: date
* estado: enum('abierto', 'aprobado', 'cancelado')
- módulo de usuarios y seguridad (este módulo gestionará todos los roles y permisos de la
plataforma, así como los usuarios, tanto de la plataforma como de las aplicaciones
celulares, amarrando el usuario con el imei del celular).
- Módulo de clientes (Gestión de los clientes, así como toda la información capturada por el
vendedor, clasificándolos por Regiones y Zonas).
- Módulo de Solicitudes (Destinado para la revisión y aprobación de las ventas realizadas
por los agentes).
- Módulo de Supervisión (Aprobación de solicitudes)
- Módulo Crédito
- Módulo de entrega(CEDI)
- Módulo de Productos (Gestión de los productos a vender por los agentes) (Código,
nombre, categoría, imagen, precio, inventario).
- Módulo de Reportes
- Módulo de Nomencladores (Se definen los combo box)
Categoría: Programación y Tecnología
Subcategoría: Programación de Apps.
Android, iOS y otros
¿Cuál es el alcance del proyecto?: Crear una aplicación nueva
¿Es un proyecto o una posición?: Un proyecto
Actualmente tengo: Tengo las especificaciones
Disponibilidad requerida: Según se necesite
Experiencia en este tipo de proyectos: No (No he administrado este tipo de proyectos anteriormente)
Plataformas requeridas: iPhone, Android
Categoría Programación y Tecnología
Subcategoría Programación de Apps. Android, iOS y otros
¿Cuál es el alcance del proyecto? Crear una aplicación nueva
¿Es un proyecto o una posición? Un proyecto
Actualmente tengo Tengo las especificaciones
Disponibilidad requerida Según se necesite
Plataformas requeridas Android, iPhone, iPad
Necesito Crear una app
Tipo de app Social media
Necesita backend Sí
Procesador de pago Sí
Plazo de Entrega: 11 Marzo, 2020
Habilidades necesarias