Web para el sitio y gestión de un salón de belleza
Abstract
El proyecto consta de un sitio web para una empresa de tratamientos de belleza en general. Se ha creado de un área de acceso privado donde se puede llevar la gestión de la agenda de este salón de belleza, poder enviar publicidad y citar a los clientes. Asimismo se implementó una herramienta para la venta de productos y para la venta y gestión de bonos canjeables por servicios. Para completar el proyecto se ha creado una aplicación en Android para los clientes.
Full text
Web para el sitio y gestión de un salón de belleza Rubén Meré Espino Proyecto Fin de Carrera. Junio 2016. Escuela de Ingeniería Informática. Universidad de Las Palmas de Gran Canaria
Proyecto de fin de carrera de la Escuela de Ingeniería Informática de la Universidad de Las Palmas de Gran Canaria presentado por: Rubén Meré Espino Título del proyecto: Web para el sitio y gestión de un salón de belleza. Tutor: Abraham Rodríguez Rodríguez.
Dedicatoria A mi madre, Isabel Espino del Toro. Eres mi ejemplo de superación, constancia y sacrificio. ¡Gracias por todo Mamá!
Agradecimientos Quisiera agradecer a en primer lugar a mi tutor Abraham Rodríguez Rodríguez por el compromiso que adquirió conmigo, desde el primer momento que le plantee la idea del proyecto. Su dedicación y consejos durante el desarrollo del proyecto fueron los pilares para que éste haya alcanzado el hito final. Mención especial al señor Giovanni Romero Prieto por sus consejos y dedicación a este proyecto. Ha sido fundamental para asistirme en el desarrollo de este proyecto. Además del continuo apoyo y de tener siempre un trato amistoso y cordial. A mi madre, Isabel Espino del Toro, gracias a tu constante ayuda, apoyo y todo el esfuerzo incondicional que realizaste para que hoy pueda ser la persona que soy. A mis hermanos, Gara y Abel Meré Espino, gracias por siempre estar cuando hacen faltan y por aguantarme todos estos años. Un enorme lujo y placer contar con vosotros. A mi hija, Gisela Meré Santana, has sido la mayor motivación para poder finalizar este proyecto. Gracias por venir y aportarme la luz que necesito día a día. A mi prometida, María del Carmen Santana Quintana, sin ti este proyecto no tendría razón de ser. Gracias por la paciencia que dedicas a nuestra hija y a mí día a día, eres un ejemplo de superación y de valores. Y por haber realizado el esfuerzo de cuidar a nuestra hija, mientras yo realizaba este proyecto, A la familia Ramos Espino por todo el apoyo que siempre habréis brindado a mi familia. A mis compañeros de universidad que hicieron todo lo posible para que el tiempo universitario siga siendo recordado como los mejores momentos de mi vida.
Índice de Contenidos 1. Introducción .................................................................................................................. 1 2. Alcance ......................................................................................................................... 4 3. Estructura de la memoria .............................................................................................. 5 4. Metodología de desarrollo ............................................................................................ 6 4.1. Fase de Iniciación .............................................................................................. 7 4.2. Fase de Elaboración ........................................................................................... 7 4.3. Fase de Construcción ......................................................................................... 8 4.4. Fase de Transición ............................................................................................. 8 4.5. Aspectos Clave .................................................................................................. 8 5. Fase de Iniciación: Análisis ........................................................................................ 10 5.1. Requisitos de usuarios ......................................................................................... 10 5.1.1. Análisis de requisitos de usuario de la Web ................................................. 11 5.1.2. Análisis de requisitos de usuario de la Gestión de Clientes ......................... 12 5.2. Estado del arte ..................................................................................................... 16 5.3. Requisitos del Software ....................................................................................... 31 5.3.1. Objetivos Generales ...................................................................................... 31 5.4. Diagramas de casos de uso del sistema Web ....................................................... 33 5.5. Diagramas de casos de uso del sistema CRM ..................................................... 41 5.5 Prototipos de interfaz de usuario para la aplicación Web .................................... 52 5.5.1. Prototipo Iniciar Sesión ................................................................................ 54 5.5.2. Prototipo Cerrar Sesión ................................................................................ 55 5.5.3. Prototipo Visualizar Datos de Contacto ....................................................... 56 5.5.4. Prototipo Visualizar Historial ....................................................................... 57 5.5.5. Prototipo Visualizar Bonos Activos ............................................................. 58 5.5.6. Prototipo Añadir Menú ................................................................................. 59 5.5.7. Prototipo Añadir Idioma ............................................................................... 60 5.6. Prototipos de interfaz de usuario para la aplicación CRM .................................. 61 5.6.1. Prototipo Añadir Cliente ............................................................................... 63 5.6.2. Prototipo Listar Clientes ............................................................................... 64 5.6.3. Prototipo Visualizar Clientes ........................................................................ 65 5.6.4. Prototipo Modificar Clientes ........................................................................ 66 5.6.5. Prototipo Asociar Cliente a usuario .............................................................. 67 5.6.6. Prototipo Eliminar Cliente ............................................................................ 68 5.6.7. Prototipo Crear Cita ...................................................................................... 69 5.6.8. Prototipo Asociar Cliente a Cita ................................................................... 70
5.6.9. Prototipo Asociar servicios/productos a Cita ............................................... 71 5.6.10. Prototipo Listar Citas .................................................................................. 72 5.6.11. Prototipo Visualizar Cita ............................................................................ 73 5.6.12. Prototipo Modificar Cita ............................................................................. 74 5.6.13. Prototipo Listar servicios/productos de una Cita ........................................ 75 5.6.14. Prototipo Presupuestar Cita ........................................................................ 76 5.6.15. Prototipo Crear Factura .............................................................................. 77 5.6.16. Prototipo Asociar Factura a Servicios/Productos de Cita ........................... 78 5.6.17. Prototipo Asociar Tipo de pago a Factura .................................................. 79 5.6.18. Prototipo Crear Bono .................................................................................. 80 5.6.19. Prototipo Listar Bonos ................................................................................ 81 5.6.20. Prototipo Visualizar Bono .......................................................................... 82 5.6.21. Prototipo Modificar Bono ........................................................................... 83 5.6.22. Prototipo Imprimir Bono ............................................................................ 84 5.6.23. Prototipo Eliminar Bono ............................................................................. 85 5.7. Diagrama de Clases sistema CRM ...................................................................... 86 5.8. Diagrama de Secuencias ...................................................................................... 91 5.7.1. Diagrama general de las actividades ............................................................ 91 5.7.2. Diagrama de Secuencias: Añadir Clientes.................................................... 92 5.7.3. Diagrama de Secuencias: Listar y Modificar Clientes ................................. 92 5.7.4. Diagrama de Secuencias: Añadir Cita .......................................................... 93 5.7.5. Diagrama de Secuencias: Facturar una Cita ................................................. 94 6. Fase de Elaboración: Diseño ...................................................................................... 96 6.1. Estudio de las Arquitecturas Candidatas ............................................................. 96 6.1.1. Patrón Modelo – Vista – Controlador........................................................... 96 6.2. Arquitectura candidatas para la aplicación Web ................................................. 99 6.2.1. Laravel .......................................................................................................... 99 6.2.2. Symfony ..................................................................................................... 100 6.2.3. Codeigniter ................................................................................................. 102 6.2.4. Joomla ......................................................................................................... 103 6.2.5. Conclusiones de esta sección ...................................................................... 105 6.3. Arquitectura candidatas para la aplicación CRM .............................................. 106 6.3.1. OpenTaps .................................................................................................... 106 6.3.2. SugarCRM .................................................................................................. 108 6.3.4. Dolibarr ....................................................................................................... 111 6.3.5. Conclusiones de esta sección ...................................................................... 112 6.4. Diseño Arquitectónico ....................................................................................... 112
6.4.1. Interconexión de las plataformas ................................................................ 112 6.4.1.1. Plataforma Web: Joomla ......................................................................... 113 6.4.1.2. Plataforma CRM: Dolibarr ...................................................................... 113 6.4.1.3. Conclusiones ............................................................................................ 114 6.5. REST ................................................................................................................. 115 6.6. Diseño de la aplicación Web ............................................................................. 120 6.7. Diseño de la aplicación CRM ............................................................................ 132 6.8. Diseño de la aplicación Android ....................................................................... 142 6.9. Recursos Hardware ............................................................................................ 144 6.9.1. Pc Portátil ................................................................................................... 144 6.9.2.Servidor Web ............................................................................................... 144 6.9.3. Dispositivos Móviles .................................................................................. 145 6.10. Recursos Software ........................................................................................... 147 6.10.1. Ubuntu GNU/Linux .................................................................................. 147 6.10.2. Eclipse Luna 4.4.0 .................................................................................... 147 6.10.3. Apache Subversion y Subclipse 1.10 ....................................................... 147 6.10.4. Android Studio 1.5.1 ................................................................................ 147 6.10.5. Mozilla Firefox 38.0 ................................................................................. 148 6.10.6. Google Chrome 49.0 ................................................................................ 148 6.10.7. GIMP 2.8 .................................................................................................. 148 6.10.8. Geany 1.23.1 ............................................................................................. 148 6.10.9. LibreOffice Writer 4.2.7.2 ........................................................................ 148 6.10.10. Balsamiq Mockups 3.3.14 ...................................................................... 149 6.10.11. Umbrello 2.13.3 ...................................................................................... 149 6.10.12. Dia 0.97.2 ............................................................................................... 149 6.11. Tecnologías utilizadas ..................................................................................... 149 6.11.1. PHP ........................................................................................................... 149 6.11.2. HTML ....................................................................................................... 150 6.11.3. CSS ........................................................................................................... 150 6.11.4. JavaScript ................................................................................................. 150 6.11.5. AJAX ........................................................................................................ 150 6.11.6. jQuery ....................................................................................................... 151 6.11.7. Twitter Bootstrap ...................................................................................... 151 6.11.8. Google Analytics ...................................................................................... 151 6.11.9. Google Maps ............................................................................................ 151 6.11.10. Modernizr ............................................................................................... 152 7. Fase de Construcción: Implementación .................................................................... 153
7.1. Implementación de la aplicación Web............................................................... 153 7.2. Implementación de la aplicación CRM ............................................................. 160 7.3. Implementación de la solución REST ............................................................... 172 Implementación de la solución Android ................................................................... 185 8. Conclusiones y Trabajo Futuro ................................................................................ 186 8.1. Trabajo Futuro ............................................................................................... 186 Anexo I: Servicios, Bonos y precios ............................................................................ 188 Anexo II: Herramientas para el estudio de la competencia .......................................... 201 ANEXO III: Prototipos de Interfaz .............................................................................. 224 Prototipos de interfaz de usuario para la aplicación Web ........................................ 224 Prototipo Iniciar Sesión ........................................................................................ 226 Prototipo Cerrar Sesión ........................................................................................ 227 Prototipo Visualizar Datos de Contacto ............................................................... 228 Prototipo Visualizar Historial ............................................................................... 229 Prototipo Visualizar Bonos Activos ..................................................................... 230 Prototipo Añadir Menú ......................................................................................... 231 Prototipo Listar Menús ......................................................................................... 232 Prototipo Visualizar Menú ................................................................................... 233 Prototipo Modificar Menú .................................................................................... 234 Prototipo Eliminar Menú ...................................................................................... 235 Prototipo Crear Elemento de Menú ...................................................................... 236 Prototipo Listar Elementos de Menú .................................................................... 237 Prototipo Visualizar Elemento de Menú .............................................................. 238 Prototipo Modificar Elemento de Menú ............................................................... 239 Prototipo Eliminar Elemento de Menú ................................................................. 240 Prototipo Asociar Elemento de Menú a Menú ..................................................... 241 Prototipo Añadir Idioma ....................................................................................... 242 Prototipo Listar Idiomas ....................................................................................... 243 Prototipo Visualizar Idioma.................................................................................. 244 Prototipo Modificar Idioma .................................................................................. 245 Prototipo Eliminar Idioma .................................................................................... 246 Prototipo Añadir Familia de Artículos ................................................................. 247 Prototipo Listar Familias de Artículos ................................................................. 248 Prototipo Visualizar Familia de Artículos ............................................................ 249 Prototipo Modificar Familia de Artículos ............................................................ 250 Prototipo Eliminar Familia de Artículos .............................................................. 251 Prototipo Añadir Artículo ..................................................................................... 252
Ilustración 147: Análisis por paises de Alexa .............................................................. 204 Ilustración 148: Análisis por Keywords de Alexa ........................................................ 204 Ilustración 149: Análisis por BackLinks de Alexa ....................................................... 205 Ilustración 150: Análisis por Enlaces de Alexa ............................................................ 205 Ilustración 151: Análisis por relación de sitios Web de Alexa..................................... 206 Ilustración 152: Análisis por velocidad de carga de Alexa .......................................... 207 Ilustración 153: Análisis del SEO de Woorank ............................................................ 207 Ilustración 154: Análisis del SEO a nivel de cabeceras de Woorank ........................... 208 Ilustración 155: Análisis del SEO por Keywords de Woorank .................................... 208 Ilustración 156: Análisis de los links de Woorank ....................................................... 209 Ilustración 157: Análisis de Imágenes y de Ratio de Woorank .................................... 210 Ilustración 158: Análisis de páginas indezadas y la vista previa de la publiciad de Google .......................................................................................................................... 210 Ilustración 159: Análisis de diversos aspectos en WooRank ....................................... 211 Ilustración 160: Tiempo de dominio registrado, caducidad del dominio y Blog del sitio estudiado en WooRank ................................................................................................. 212 Ilustración 161: Análisis de visualización en smartphones en WooRank .................... 212 Ilustración 162: Análisis del sitio por WooRank.......................................................... 213 Ilustración 163: Análisis del módulo de impresión de la Web por WooRank ............. 213 Ilustración 164: Análisis de los dominios similares por WooRank.............................. 214 Ilustración 165: Análisis de la tecnología por WooRank ............................................. 214 Ilustración 166: Análisis de presencia de aplicaciones análiticas de la Web entre otros por WooRank ................................................................................................................ 215 Ilustración 167: Análisis de la página de FaceBook de la Web por WooRank ............ 215 Ilustración 168: Análisis del tráfico de la Web por WooRank ..................................... 216 Ilustración 169: Página principal del análisis de HubSports Marketing Grader .......... 216 Ilustración 170: Análisis del Blog del sitio Web por HubSports Marketing Grader .... 217 Ilustración 171: Página inicial del análisis de Nibbler ................................................. 218 Ilustración 172: Análisis de las redes sociales por Nibbler .......................................... 219 Ilustración 173: Análisis de las redes sociales por Nibbler .......................................... 219 Ilustración 174: Análisis de W3C por Nibbler ............................................................. 220 Ilustración 175: Análisis de Enlaces Externos por Nibbler .......................................... 220 Ilustración 176: Análisis de los enlaces Internos de Nibbler........................................ 221 Ilustración 177:Análisis del motor Moz de Nibbler ..................................................... 221 Ilustración 178: Página Inicial del análisis de Like Alyzer .......................................... 222 Ilustración 179: Análisis de las empresas del mismo sector por Like Alyzer .............. 223 Ilustración 180: Prototipo Iniciar Sesión ...................................................................... 226 Ilustración 181: Prototipo Cerrar Sesión ...................................................................... 227 Ilustración 182: Prototipo Visualizar Datos de Contacto ............................................. 228 Ilustración 183: Prototipo Visualizar Historial ............................................................. 229 Ilustración 184: Prototipo Visualizar Bonos Activos ................................................... 230 Ilustración 185: Prototipo Añadir Menú ....................................................................... 231 Ilustración 186: Prototipo Listar Menús ....................................................................... 232 Ilustración 187: Prototipo Visualizar Menú ................................................................. 233 Ilustración 188: Prototipo Modificar Menú .................................................................. 234 Ilustración 189: Prototipo Eliminar Menú .................................................................... 235 Ilustración 190: Prototipo Crear Elemento de Menú .................................................... 236 Ilustración 191: Prototipo Listar Elementos de Menú .................................................. 237 Ilustración 192: Prototipo Visualizar Elemento de Menú ............................................ 238 Ilustración 193: Prototipo Modificar Elemento de Menú ............................................. 239
Ilustración 194: Prototipo Eliminar Elemento de Menú ............................................... 240 Ilustración 195: Prototipo Asociar Elemento de Menú a Menú ................................... 241 Ilustración 196: Prototipo Añadir Idioma ..................................................................... 242 Ilustración 197: Prototipo Listar Idiomas ..................................................................... 243 Ilustración 198: Prototipo Visualizar Idioma ............................................................... 244 Ilustración 199: Prototipo Modificar Idioma ................................................................ 245 Ilustración 200: Prototipo Eliminar Idioma .................................................................. 246 Ilustración 201: Prototipo Añadir Familia de Artículos ............................................... 247 Ilustración 202: Prototipo Listar Familias de Artículos ............................................... 248 Ilustración 203: Prototipo Visualizar Familia de Artículos .......................................... 249 Ilustración 204: Prototipo Modificar Familia de Artículos .......................................... 250 Ilustración 205: Prototipo Eliminar Familia de Artículos ............................................ 251 Ilustración 206: Prototipo Añadir Artículo ................................................................... 252 Ilustración 207: Prototipo Listar Artículos ................................................................... 253 Ilustración 208: Prototipo Visualizar Artículo ............................................................. 254 Ilustración 209: Prototipo Modificar Artículo .............................................................. 255 Ilustración 210: Prototipo Eliminar Artículo ................................................................ 256 Ilustración 211: Prototipo Publicar Artículos ............................................................... 257 Ilustración 212: Prototipo Despublicar Artículos ......................................................... 258 Ilustración 213: Prototipo Asociar Artículo a Familia de Artículos ............................. 259 Ilustración 214: Prototipo Añadir Grupo de Usuarios .................................................. 260 Ilustración 215: Prototipo Listar Grupos de Usuarios .................................................. 261 Ilustración 216: Prototipo Visualizar Grupo de Usuarios ............................................ 262 Ilustración 217: Prototipo Modificar Grupo de Usuarios ............................................. 263 Ilustración 218: Prototipo Asociar Usuarios a Grupos de Usuarios ............................. 264 Ilustración 219: Prototipo Eliminar Grupo de Usuarios ............................................... 265 Ilustración 220: Prototipo Añadir Usuario ................................................................... 266 Ilustración 221: Prototipo Listar Usuarios ................................................................... 267 Ilustración 222: Prototipo Visualizar Usuario .............................................................. 268 Ilustración 223: Prototipo Modificar Usuario .............................................................. 269 Ilustración 224: Prototipo Eliminar Usuario ................................................................ 270 Ilustración 225: Prototipo Añadir Plantilla ................................................................... 271 Ilustración 226: Prototipo Listar Plantillas ................................................................... 272 Ilustración 227: Prototipo Visualizar Plantilla ............................................................. 273 Ilustración 228: Prototipo Modificar Plantilla .............................................................. 274 Ilustración 229: Prototipo Publicar por Posiciones los elementos ............................... 275 Ilustración 230: Prototipo Modificar aspectos de los elementos .................................. 276 Ilustración 231: Prototipo Listar las Posiciones los elementos .................................... 277 Ilustración 232: Prototipo Eliminar Plantilla ................................................................ 278 Ilustración 233: Prototipo Añadir Cliente .................................................................... 281 Ilustración 234: Prototipo Listar Clientes ..................................................................... 282 Ilustración 235: Prototipo Visualizar Clientes ............................................................. 283 Ilustración 236: Prototipo Modificar Clientes .............................................................. 284 Ilustración 237: Prototipo Asociar Cliente a usuario ................................................... 285 Ilustración 238: Prototipo Eliminar Cliente ................................................................. 286 Ilustración 239: Prototipo Crear Cita ........................................................................... 287 Ilustración 240: Prototipo Asociar Cliente a Cita ......................................................... 288 Ilustración 241: Prototipo Asociar servicios/productos a Cita ..................................... 289 Ilustración 242: Prototipo Listar Citas ......................................................................... 290 Ilustración 243: Prototipo Visualizar Cita .................................................................... 291
Ilustración 244: Prototipo Modificar Cita .................................................................... 292 Ilustración 245: Prototipo Listar servicios/productos de una Cita ............................... 293 Ilustración 246: Prototipo Eliminar servicio/producto de una Cita .............................. 294 Ilustración 247: Prototipo Modificar servicios/productos de una Cita ......................... 295 Ilustración 248: Prototipo Presupuestar Cita ................................................................ 296 Ilustración 249: Prototipo Eliminar Cita ...................................................................... 297 Ilustración 250: Prototipo Crear Factura ...................................................................... 298 Ilustración 251: Prototipo Asociar Factura a Servicios/Productos de Cita .................. 299 Ilustración 252: Prototipo Asociar Tipo de pago a Factura .......................................... 300 Ilustración 253: Prototipo Listar Facturas .................................................................... 301 Ilustración 254: Prototipo Visualizar Factura ............................................................... 302 Ilustración 255: Prototipo Modificar Factura ............................................................... 303 Ilustración 256: Prototipo Consolidar Factura ............................................................. 304 Ilustración 257: Prototipo Abonar Factura ................................................................... 305 Ilustración 258: Prototipo Listar Abonos ..................................................................... 306 Ilustración 259: Prototipo Realizar cuadre de cierre de cajas ...................................... 307 Ilustración 260: Prototipo Crear Bono ......................................................................... 308 Ilustración 261: Prototipo Listar Bonos ....................................................................... 309 Ilustración 262: Prototipo Visualizar Bono .................................................................. 310 Ilustración 263: Prototipo Modificar Bono .................................................................. 311 Ilustración 264: Prototipo Imprimir Bono .................................................................... 312 Ilustración 265: Prototipo Eliminar Bono .................................................................... 313 Ilustración 266: Prototipo Crear Servicio/Producto ..................................................... 314 Ilustración 267: Prototipo Listar Servicios/Productos .................................................. 315 Ilustración 268: Prototipo Visualizar Servicio/Producto .............................................. 316 Ilustración 269: Prototipo Modificar Servicio/Producto .............................................. 317 Ilustración 270: Prototipo Eliminar Servicio/Producto ................................................ 318 Ilustración 271: Prototipo Crear Pago .......................................................................... 319 Ilustración 272: Prototipo Listar Pagos ........................................................................ 320 Ilustración 273: Prototipo Visualizar Pago ................................................................... 321 Ilustración 274: Prototipo Modificar Pago ................................................................... 322 Ilustración 275: Prototipo Eliminar Pago ..................................................................... 323 Ilustración 276: Prototipo Informe de Pagos ................................................................ 324 Ilustración 277: Prototipo Informe de Facturación ...................................................... 325 Ilustración 278: Prototipo Crear Cuenta ....................................................................... 326 Ilustración 279: Prototipo Listar Cuentas ..................................................................... 327 Ilustración 280: Prototipo Visualizar Cuenta ............................................................... 328 Ilustración 281: Prototipo Eliminar Cuenta .................................................................. 329 Ilustración 282: Prototipo Crear Tipo de Pago ............................................................. 330 Ilustración 283: Prototipo Listar Tipos de Pago ........................................................... 331 Ilustración 284: Prototipo Visualizar Tipo de Pago ..................................................... 332 Ilustración 285: Prototipo Modificar Tipo de Pago ...................................................... 333 Ilustración 286: Prototipo Eliminar Tipo de Pago ........................................................ 334 Ilustración 287: Prototipo Añadir Grupo Usuarios ...................................................... 335 Ilustración 288: Prototipo Listar Grupos Usuarios ....................................................... 336 Ilustración 289: Prototipo Visualizar Grupo Usuarios ................................................. 337 Ilustración 290: Prototipo Modificar Grupo Usuarios .................................................. 338 Ilustración 291: Prototipo Establecer Permisos ............................................................ 339 Ilustración 292: Prototipo Asociar Usuario a Grupo de Usuarios ................................ 340 Ilustración 293: Prototipo Eliminar Grupo de Usuarios ............................................... 341
Ilustración 294: Prototipo Añadir Usuario ................................................................... 342 Ilustración 295: Prototipo Listar Usuarios ................................................................... 343 Ilustración 296: Prototipo Visualizar Usuario .............................................................. 344 Ilustración 297: Prototipo Modificar Usuario .............................................................. 345 Ilustración 298: Prototipo Eliminar Usuario ................................................................ 346 Ilustración 299: Login Dolibarr .................................................................................... 347 Ilustración 300: Pantalla Inicio Dolibarr ...................................................................... 347 Ilustración 301: Pantalla Módulos Dolibarr ................................................................. 348 Ilustración 302: Grupos Usuarios Dolibarr .................................................................. 349 Ilustración 303: Pantalla de permisos Dolibarr ............................................................ 350 Ilustración 304: Pantalla Cliente Dolibarr .................................................................... 351 Ilustración 305: Comando para generar un módulo en Dolibarr .................................. 353
Índice de tablas Tabla 1: Comparativa SEO ............................................................................................. 22 Tabla 2: Comparativa Tecnológica................................................................................. 24 Tabla 3: Comparativa Contenido .................................................................................... 28 Tabla 4: Funcionalidades aplicación Web ...................................................................... 32 Tabla 5: Funcionalidades aplicación CRM .................................................................... 32 Tabla 6: Prototipos de interfaz de usuario para la aplicación Web ................................ 53 Tabla 7: Prototipos de interfaz de usuario para la aplicación CRM ............................... 62 Tabla 8: Listado de precios Bonos Fotodepilación Zonas Comunes ........................... 194 Tabla 9: Listado de precios Bonos Fotodepilación Zonas reducidad ........................... 195 Tabla 10: Listado de precios Bonos Fotodepilación Zonas Rostro .............................. 195 Tabla 11: Listado de precios Bonos Fotodepilación Entrecejo .................................... 195 Tabla 12: Listado de precios Bonos Limpieza Facial................................................... 195 Tabla 13: Listado de precios Bonos RF, ampolla de ácido Hialurónico y presoterapia195 Tabla 14: Listado de precios Bonos RF y ampolla de ácido Hialurónico .................... 195 Tabla 15: Listado de precios Bonos de Magnetoterapia .............................................. 195 Tabla 16: Listado de precios Bonos Aromaterapia ...................................................... 196 Tabla 17: Listado de precios Bonos Masaje Relajante ................................................. 196 Tabla 18: Listado de precios Bonos Fototerapia .......................................................... 196 Tabla 19: Listado de precios Bonos de Presoterapia .................................................... 196 Tabla 20: Listado de precios Bonos Lipoláser, Bono Presoterapia y Radio Frecuencia, Bono Cavitación, Presoterapia y Radio Frecuencia, y Bono de Cavitación y Presoterapia ...................................................................................................................................... 196 Tabla 21: Listado de precios ......................................................................................... 200 Tabla 22: Prototipos de interfaz de usuario para la aplicación Web ............................ 225 Tabla 24: Prototipos de interfaz de usuario para la aplicación CRM ........................... 280
1 1. Introducción El presente proyecto nace con el objetivo de cubrir la necesidad personal de poder terminar la carrera universitaria de Ingeniero Informático en la Universidad de Las Palmas de Gran Canaria. He escogido este proyecto ya que se me planteó una solución software para un negocio de una persona de mi círculo familiar. Esta persona tiene una empresa dedicada a un salón de belleza llamado FreeBody. Este salón se encuentra situado en la calle Fernando Guanarteme, 1 en el municipio de Santa Lucía de Tirajana (Las Palmas). FreeBody nació el 25/01/2010 como el sueño de su propietaria. Ella quería tener su propio negocio donde poder realizarse como emprendedora y mejorar profesionalmente en el mundo de la estética, su auténtica pasión. La empresa proporciona una serie de grupos de servicios entre los que se destacan: • Fotodepilación IPL y Láser: Depilación de vello mediante la exposición a haces de luz pulsada o procedente de un rayo láser. • Tratamientos estéticos: como pueden ser la presoterapia, radio frecuencia, fototerapia, cavitación, manicura y pedicura. • Servicios de Peluquería: Tintes, cortes de cabello, lavados, etc. Desde el punto de vista de la venta, los servicios son el centro sobre el que gira el negocio ya que es la parte principal de la facturación del centro de estética. En el “Anexo I: Servicios, Bonos y precios” se explica detalladamente cada servicio, los diferentes tipos de bonos que existen y los precios de éstos. Para el control de estos servicios, el personal del centro utilizan unas agendas físicas, donde registran todos los trabajos que han desempleado durante su turno laboral. Existen tres agendas correspondientes a cada grupo de servicios. En ella anotan el nombre del cliente, el total de lo cobrado y el tipo de pago a la hora de realización de los servicios. Además, se utilizan para realizar el control de la caja de empresa y conocer los trabajos que ha realizado en el centro de estética diariamente. Estos datos son utilizados por la dirección de la empresa en diversas tareas como las que pueden ser la de conocer los servicios realizados a los clientes, como apoyo financiero necesario para poder llevar el saneamiento económico del centro, control del personal del centro, etc. El centro cuenta con un personal especializado y con experiencia para poder llevar a cabo las tareas propias de un centro de estética con garantía de éxito. Como apoyo, el centro cuenta con maquinaria especializada y productos que ayudan a la aplicación correcta de los deseos de los clientes.
2 FreeBody ha crecido en estos años de forma progresiva aumentando sus necesidades entre las que se encuentran: • Creación de la imagen del centro en la red. Montar un sitio Web donde darse a conocer a través de la red. Aprovechar, así, las oportunidades de comunicación que proporciona internet. En un mundo conectado tecnológicamente, como en el que estamos, es imprescindible tener presencia online para que los clientes puedan conocer las ventas que ofrece el centro. La web de FreeBody tiene que ser alegre, que exprese felicidad y positivismo. Las personas al vernos sometidos a una cambio de aspecto y/o mejoras a nuestra salud y/o aspecto, nos sentimos mejor, siendo este el sentimiento por el cual nace la idea de transmitirlo a través de un portal web. • Gestión de las agendas del negocio de forma digital y online para el acceso a ellas desde cualquier lugar del mundo. Y con acceso a que los clientes puedan acceder a su perfil, conocer y/o confirmar sus citas, revisar el historial de servicios, etc. • Gestión económica de la empresa para el control de la caja gracias a la prestación de los servicios y/o productos facturados. • Gestión de los clientes del centro de estética para poder analizar las preferencias de los clientes, permitiendo tener conocimiento para una estrategia de marketing más exitosa. • Gestión del personal necesario para que el centro de estética tenga la garantía de cubrir la demanda. Además de tener que ser optimizada para que el coste por personal no necesario sea el mínimo posible. Para todo ello, el software planteado requiere de un portal Web donde la empresa pueda publicar la información y las diferentes ofertas de servicios y de productos que vende. Para poder cubrir las necesidades de control se propone usar una plataforma CRM donde puedan añadir a los clientes, generar facturar, bonos, etc. En la primera parte del documento se citará el estudio realizado de las plataformas del mercado de la competencia (nacional e internacional) del sector, los puntos fuertes de esas plataformas y qué novedades va a añadir a esta solución en el mercado. Además se expondrá las decisiones que han determinado la razón por la cual se seleccionó la solución adoptada. Seguidamente, se expondrá el CRM la elección de este y los aspectos fundamentales del software. Cómo se han realizado las adaptaciones para que se ajuste a las necesidades del negocio, las nuevas características a implementar y cómo se ha implementado las comunicaciones con el portal Web. Por último, se expondrán las conclusiones, las mejoras futuras y una serie de anexos
3 necesarios para el desarrollo del actual proyecto.
4 2. Alcance El proyecto que se plantea constará de un sitio Web para una empresa de tratamientos de belleza en general. Se propone crear un área de acceso privado donde se puede llevar la gestión de la agenda de este salón de belleza, poder citar a los clientes y envío de publicidad y recordatorios de estas citas. Así mismo, se propone crear una herramienta para la venta de productos de esta índole y para la venta y gestión de bonos canjeables por servicios. Para cumplimentar el proyecto se propone realizar una pequeña aplicación disponible para Android, para que los clientes que deseen puedan consultar sus citas y recibir sus notificaciones de manera gratuita. El objetivo fundamental de ese proyecto fin de carrera es la de utilizar las herramientas de la ingeniería del Software para la creación de un sitio Web para un salón de belleza. Los puntos a cumplir para alcanzar el objetivo son: • Realización de un análisis completo donde se estudiará la competencia actual para el sitio Web, se realizará un estudio de los requisitos de los usuarios de la Web, así como los casos de uso. • Diseño de las interfaces de los usuarios con la incorporación de las técnicas necesarias para que adapte a los dispositivos móviles (Responsive Web Design) del mercado así como de los navegadores más importantes. • El sitio contará con la siguiente funcionalidad: ◦ Gestión completa de la agenda del centro de estética. Posibilidad de añadir, modificar y cancelar eventos. ◦ Gestión de clientes: dar de altas, bajas y modificaciones a clientes. ◦ Gestión de bonos canjeables por servicios ◦ Exportación de CSV para envío de SMS masivos • Creación del mapa Web e indexación del dominio para los motores de búsqueda.
5 3. Estructura de la memoria En el presente documento se reflejarán datos e información necesaria para entender las razones y la manera en la que se ha enfocado la solución adoptada. Comenzará con la metodología de desarrollo utilizada en el transcurso del proyecto. Seguidamente, se procede con la descripción de los requisitos, tanto de la aplicación Web como del CRM. Se adjuntarán los diagramas de casos de uso, con una descripción detallada de ellos. Se presentarán una serie de negocios, con presencia Web cerca del lugar donde se encuentra el centro de estética, para estudiar la competencia de mercado que la rodea. Este estudio tiene como base aprender qué utilizan los buscadores web del mercado para posicionar el portal entre los mejores resultados. A continuación se presenta el análisis de requisitos del software para ambas plataformas junto con una serie de diagramas que apoyen el proyecto arquitectónico. Se estudiarán las diferentes alternativas existentes en el mercado de ambos para sacar una conclusión de cuáles son las mejores para llevar a cabo este proyecto, en el apartado para el diseño. Seguidamente, se presentará la implementación y los aspectos más importantes de ella. Por último, se relatan los resultados y conclusiones, y se establecerán las líneas de trabajo futuro para ampliar las capacidades y funcionalidades del proyecto. Como complemento se añaden una serie de Anexos que contienen los detalles de la información utilizada durante este documento y así facilitar la comprensión lectora del mismo. Junto a esta documentación, se adjunta un CD con el código de las plataformas Web, y CRM.
12 legislación vigente. • El cliente tenga la posibilidad de una zona privada para: ◦ Visualizar, confirmar y/o rechazar citas futuras. ◦ Visualizar el historial. ◦ Acceso a los bonos por utilizar. ◦ Recibir avisos de ofertas y/o promociones de la empresa. Los actores que intervienen en la aplicación Web son: • Usuario: Cualquier persona que acceda a la web en un usuario. El usuario puede visualizar el contenido de la web y acceder a sus diferentes apartados. • Usuario Privado: Persona que tiene un nombre de login y password para acceder a la zona privada de la web. Este usuario puede realizar una serie de acciones: ◦ Iniciar y finalizar la sesión. ◦ Acceder a sus datos de contacto ◦ Acceder al historial de servicios. ◦ Visualizar los bonos activos. ◦ Acceder a las citas con el centro para poder recordarlas, cancelarlas y/o confirmarlas. • Administrador: Encargado de crear, modificar, ocultar, publicar y/o eliminar contenidos y apartados del sitio Web. Así mismo, puede añadir novedades y ofertas para la correcta actualización del sitio. 5.1.2. Análisis de requisitos de usuario de la Gestión de Clientes Para el mantenimiento de los datos de los clientes y agendas se hace necesario un software cumpla con una serie de características: • Administración de Usuarios. El software tiene que tener la posibilidad de crear, administrar y eliminar usuarios en el sistema. A estos hay que definirlos mediante grupos para limitar la visión del software. • Gestión de Servicios y Productos. La solución tiene que permitir que se
13 puedan definir nuevos productos y servicios al sistema. Esta administración tiene que adaptarse a: ◦ Datos asociados a los servicios como pueden ser a la familia a la que pertenece (fotodepilación, estética y peluquería). ◦ Posibilidad de definir, mantener y facturar un producto especial denominado “bono”. Este producto es un documento que se utiliza para que los clientes puedan adquirir un número de sesiones de un determinado servicio. En ellos se registran las cantidades de sesiones consumidas por los clientes. Para que sean más atractivos al cliente, estos tienen una facturación especial, detallada en “Anexo I: Servicios, Bonos y precios”. ◦ Conocer el listado de los productos y/o servicios que más se venden para poder focalizar mejor la venta de estos y apoyar a los que menos, para que la empresa pueda tener mejor estabilidad • Gestión de Clientes. Una herramienta que permita mantener clientes con los datos de estos y así poder realizar acciones de marketing y de apoyo a la venta de los servicios del centro. La gestión tiene que permitir: ◦ Crear, administrar y eliminar clientes del sistema ◦ Adquisición de los datos de contacto de los clientes (Teléfonos, email, etc.) ◦ Asociar el historial de servicios adquiridos y los detalles de estos. ◦ Marcar a aquellos clientes que teniendo una cita no acuden. • Gestión de Agendas. El centro de estética utilizan las agendas para controlar el negocio ya que ellas son fundamentales para la gestión del centro de estética porque se utilizan para citar a los clientes y reservar las horas que necesitan para la aplicación de sus terapias. La gestión de agenda deseada tiene que cumplir una serie de características: ◦ Posibilidad de crear, editar, eliminar citas. ◦ Asociar citas a clientes y/o servicios por realizar o realizados. ◦ Posibilidad de poder cancelar una cita y definir el tipo de cancelación, como pueden ser que el cliente comunicó la cancelación de la cita, ausencia del cliente, rotura de maquinaria, etc. ◦ Asociar una cita a un empleado y/o usuario del sistema. • Gestión Financiera: Para poder tener un control financiero de la empresa, se
14 hace necesario contabilizar cada factura realizada por los servicios prestados. Para ello se hace uso de las agendas comentadas en el punto anterior, ya que en ellas se va anotando lo facturado y qué tipo de pago se ha realizado para cada venta, para poder realizar el cuadre de caja al final del día. La gestión financiera debe cumplir una serie de características: ◦ Crear facturas a los clientes ◦ Asociar los servicios prestados a estas facturas. ◦ Asociar la forma de cobrar de las facturas ◦ Consolidar estos cobros en las cuentas de la empresa. ◦ Posibilidad de realizar abonos de las facturas. ◦ Impresión de los documentos de factura y abono. ◦ Informes de cierre de caja, etc. • Gestión del Personal: El centro de estética cuenta con un personal para realizar las labores deseadas por los clientes, el control de los costes de estos es fundamental para la empresa. La gestión del personal también se necesita para poder satisfacer la demanda y que el centro pueda dar el servicio al mayor número de clientes posible. Uno de los puntos más fuertes del negocio es el control de la agenda. En la empresa existen 3 agendas asociadas a cada familia de servicios: • Peluquería: donde se establecen las citas de los clientes que deciden realizarse algún servicio asociado a la peluquería. • Estética: se listan y/o citan a los clientes que requieren de este tipo de servicios. • Fotodepilación: cuadrante donde refleja cuantas sesiones se va a dar o se ha dado un cliente para un día dado. Cuando un cliente llama o accede a la empresa con el objetivo de fijar una cita futura, este dará su nombre y apellidos, su número de teléfono y los servicios y/o sesiones que desea disfrutar. Un día antes de esa cita, la empresa le manda mensajes ya sea por Whatsapp® o por SMS recordándole la cita con la empresa. Esta es una tarea muy importante, ya que, así se consigue que los clientes, si no pueden asistir por razones de diversa índole puedan avisar con tiempo para cancelar y/o mover su cita de día u hora, siempre y cuando exista hueco para eso.
15 Si un cliente no avisara y no acudiera a su cita, puede suponer que la empresa pierda rentabilidad, ya que, tiene que pagar al empleado o a los empleados necesarios para poder realizar estos servicios no prestados, por lo que es sumamente importante tener la agenda bien definida y clara. Así mismo, la empresa está interesada en poder determinar qué citas no se han cumplido y poder saber qué clientes tienen ese comportamiento para poder controlarlo y permitirles o no, volver a adquirir una cita futura. Se remarca el hecho de que hay servicios que tienen una duración de tiempo bastante alta (5 ó 6 horas seguidas) por lo que si una cita así fallara, sin previo aviso, todas esas horas la maquinaria y/o empleados estarían en desuso, además de haber imposibilitando que otros clientes ocupasen ese rango de horas. Además, se hace necesario poder acceder a las agendas desde cualquier lugar, ya que muchas veces hay citas a las que los empleados tienen que acudir ya sea por razones médicas, familiares, roturas de máquinas, etc., y necesitan avisar a los clientes si hubiera que cancelar y/o mover estas citas. Una vez el cliente recibe los servicios y/o productos deseados, en las agendas se registra el nombre del cliente, el total facturado y el tipo de pago en la franja de horario donde se han realizado los servicios. Si el cliente es desconocido se le conoce como “Contado”. Al final del día el operario responsable de la caja, suma por el tipo de pago la cuantía para poder realizar el conteo del dinero en efectivo y de las boletas de tarjetas. A esto le resta las facturas que paga el centro de estética para cubrir sus necesidades. A este proceso se le conoce como “hacer la caja”. Se hace evidente que lo cobrado tiene que coincidir con lo registrado en la agenda. Los actores que intervienen en el módulo de gestión de clientes son: • Usuario: Persona con un nombre de login y usuario donde puede gestionar clientes, citas y/o realizar las acciones para la facturación de los servicios de la empresa. Este usuario tendrá restringido poder modificar los productos y/o servicios, así como no podrá acceder a la zona financiera de la empresa. • Usuario Avanzado: Usuario capaz de acceder a toda la operativa de los usuarios unido a que puede gestionar productos y/o servicios y gestionar el apartado financiero de la empresa.
16 5.2. Estado del arte Para poder tener unas referencias sobre cómo hay que plantear el portal Web, se van a presentar una serie de Web de la competencia directa del salón para saber qué es lo que ofrece el mercado en internet, cómo se estructuran, etc. Se comentarán una serie de puntos para saber cuáles son los puntos fuertes y débiles y así poder sentar las bases referenciales sobre lo que se quiere construir para el portal Web. Internet nos ofrece un conjunto de herramientas que ayudan a estudiar la competencia web para conocer qué términos, y/o frases son las más solicitadas, qué posiciones ocupan las competencias del negocio, sector y/o empresa y, por consiguiente, qué estrategias se deben acometer para conseguir un mejor posicionamiento natural frente a la competencia en los buscadores. Como punto de partida, podemos referenciar al posicionamiento de las Web de la competencia. Según la wikipedia, el posicionamiento 6 se define como el proceso técnico mediante el cual se realizan cambios en la estructura e información de una página web, con el objetivo de mejorar la visibilidad de un sitio web en los resultados orgánicos de los diferentes buscadores. También es frecuente encontrar la denominación en inglés, "Search Engine Optimization", y especialmente sus iníciales SEO. En el "Anexo II: Herramientas para el estudio de la competencia", se presentarán una serie de Webs que proporcionarán los datos para conseguir una estrategia válida para que se pueda afrontar el reto del posicionamiento. La diferencia entre el éxito y fracaso está en saber estudiar y analizar estos datos de la competencia a nivel de palabras, frases y/o términos. Las empresas de la competencia que realizan sus servicios cerca geográficamente del salón de belleza FreeBody y que cuentan con presencia online son: • Pravela Peluqueros (www.pravelapeluqueros.es): Página web moderna y de aspecto jovial de la cadena de peluquerías Pravela. Esta web tiene 3 años de vida y con un mantenimiento constante, la hace que sea dinámica y contenidos nuevos. La actividad en redes sociales es notable. 6 Posicionamiento: https://es.wikipedia.org/wiki/Posicionamiento_en_buscadores
• Nuevo Look (www.peluqueriasnuevolook.com): Esta peluquería el Centro comercial Atlántico en Vecindario, además de estar presente en diferentes municipios de la isla. Ofrece una serie de servicios y productos muy similares a FreeBody • Centros Único ( www.centrosunico.com cade na de franquiciados (www.peluqueriasnuevolook.com): Esta peluquería el Centro comercial Atlántico en Vecindario, además de estar presente en diferentes municipios de la isla. Ofrece una serie de servicios y productos muy FreeBody . Web de diseño se rio, destacando sus colores corporativos. www.centrosunico.com ): Este establecimiento pertenece a la na de franquiciados de Centros Ú nico presente en el centro comercial Ilustración 2: Sitio Web Pravela Ilustración 3: Sitio Web Nuevo Look 17 (www.peluqueriasnuevolook.com): Esta peluquería está situada en el Centro comercial Atlántico en Vecindario, además de estar presente en diferentes municipios de la isla. Ofrece una serie de servicios y productos muy rio, destacando sus colores corporativos. ): Este establecimiento pertenece a la nico presente en el centro comercial
Vecindario. La Web semanales. Las redes sociales tienen una gran actividad. • Salón Erika ( www.salonerika.es Vecindario. Es una Web sencilla donde aparece la información principal para el cliente. Este negocio es competencia directa ya que se encuentra muy salón de belleza FreeBody y por ser una empresa de un tamaño similar a FreeBody. Vecindario. La Web está muy bien implementada, con mantenimientos semanales. Las redes sociales tienen una gran actividad. www.salonerika.es ): Portal salón de belleza Erika situado en Vecindario. Es una Web sencilla donde aparece la información principal para el cliente. Este negocio es competencia directa ya que se encuentra muy salón de belleza FreeBody y por ser una empresa de un tamaño similar a Ilustración 4: Sitio Web Centros Único Ilustración 5: Sitio Web Salón Erika 18 muy bien implementada, con mantenimientos ): Portal salón de belleza Erika situado en Vecindario. Es una Web sencilla donde aparece la información principal para el cliente. Este negocio es competencia directa ya que se encuentra muy cerca del salón de belleza FreeBody y por ser una empresa de un tamaño similar a
• Peluqueros Naranjo situado en Vecindario, su actividad y tamaño son similares a la de lo que es un buen caso de Estas cinco Webs son un buen conjunto para poder realizar el estudio de las empresas que tienen una actividad parecida al del salón de Belleza geográficamente cerca y tienen presencia en internet. Se van a presentar los diferentes as pectos que utilizan los navegadores para puntuar a las webs y que por tanto, su posicionamiento sea mejor: • Datos de la población: Información acerca del perfil de la persona que ha contactado con la Web. • Palabras clave o elegidas para ayudar a los buscadores a localizar el portal Web. El estudio de estas palabras se hace imprescindible para tener un mayor éxito. • Uso de encabezados, se puntúa mejor una web donde aparezcan bien definidas las cabeceras p ara que la información que se presente de forma más clara para el cliente. También se tiene en cuenta que estos encabezados tengan las 7 KeyWord: https://en.wikipedia.org/wiki/Keyword_research Peluqueros Naranjo (www.naranjopeluquerosunisex.com ): Salón de belleza situado en Vecindario, su actividad y tamaño son similares a la de lo que es un buen caso de estudio. Estas cinco Webs son un buen conjunto para poder realizar el estudio de las empresas que tienen una actividad parecida al del salón de Belleza FreeBody geográficamente cerca y tienen presencia en internet. Se van a presentar los diferentes pectos que utilizan los navegadores para puntuar a las webs y que por tanto, su posicionamiento sea mejor: Datos de la población: Información acerca del perfil de la persona que ha contactado con la Web. Palabras clave o Keywords 7 definidas en el portal, e stas son las palabras elegidas para ayudar a los buscadores a localizar el portal Web. El estudio de estas palabras se hace imprescindible para tener un mayor éxito. Uso de encabezados, se puntúa mejor una web donde aparezcan bien definidas ara que la información que se presente de forma más clara para el cliente. También se tiene en cuenta que estos encabezados tengan las https://en.wikipedia.org/wiki/Keyword_research Ilustración 6: Sitio Web Peluqueros Naranjo 19 ): Salón de belleza situado en Vecindario, su actividad y tamaño son similares a la de FreeBody, por Estas cinco Webs son un buen conjunto para poder realizar el estudio de las empresas FreeBody , además están geográficamente cerca y tienen presencia en internet. Se van a presentar los diferentes pectos que utilizan los navegadores para puntuar a las webs y que por tanto, su Datos de la población: Información acerca del perfil de la persona que ha stas son las palabras elegidas para ayudar a los buscadores a localizar el portal Web. El estudio de estas palabras se hace imprescindible para tener un mayor éxito. Uso de encabezados, se puntúa mejor una web donde aparezcan bien definidas ara que la información que se presente de forma más clara para el cliente. También se tiene en cuenta que estos encabezados tengan las
20 palabras clave • Enlaces de retorno o BackLink 8 en inglés. Listados de enlaces de retorno y de dominios que enlazan al sitio. • Enlaces Rotos, la presencia de enlaces que no lleven a un destino activo empeora el SEO, ya que da la sensación de abandono. • Atributos ALT 9 para las imágenes, se puntúa muy positivamente que cada imagen del portal tenga su texto alternativo, para permitir a los buscadores entender el contenido de esa imagen. • Número de páginas indexadas: es el número de páginas de su sitio web que están indexadas por los motores de búsqueda. Cuantas más páginas indexen los motores de búsqueda, mejor, ya que esto ofrece más oportunidades de que su sitio web se encuentre. • Resolver WWW 10 : Las solicitudes de redireccionamiento de un dominio secundario es muy importante porque los motores de búsqueda interpretan las URL con y sin www como dos sitios web diferentes, por lo que hay que configurar la redirección en el fichero “.htacess 11 ”, para no ser penalizado por los buscadores. De no hacerlo correctamente, el servidor de páginas Web puede dar un error http 301 (“Moved Permanently”). • Página 404 12 : Relacionado con la configuración del fichero “htacess”, el sitio puede tener configurada una página de error 404 (“not found”) para cuando se acceda a páginas no existentes en el sitio. • Canonicalización de la IP: La dirección IP de su sitio web remite hacia el dominio de su sitio web. • Configuración de robots.txt 13 : El archivo robots.txt permite restringir el acceso a los robots de los motores de búsqueda que rastrean la web y puede evitar que accedan a directorios y páginas determinadas. También especifica la ubicación del archivo del mapa del sitio XML. • Mapa del sitio XML 14 : Un mapa del sitio enumera las URL que pueden rastrearse y puede incluir información adicional, como las últimas actualizaciones del sitio web, la frecuencia de cambios y la importancia de las URL. Esto permite a los motores de búsqueda rastrear el sitio web de una forma más exhaustiva. 8 BackLink: https://es.wikipedia.org/wiki/Backlink 9 Texto alternativo: https://es.wikipedia.org/wiki/Texto_alternativo 10 www: https://es.wikipedia.org/wiki/World_Wide_Web 11 Fichero htacess: https://es.wikipedia.org/wiki/.htaccess 12 Error HTTP 404: https://en.wikipedia.org/wiki/HTTP_404 13 Fichero robots.txt: https://es.wikipedia.org/wiki/Est%C3%A1ndar_de_exclusi%C3%B3n_de_robots 14 Mapa del sitio: https://es.wikipedia.org/wiki/Mapa_de_sitio_web
21 • Email Público: Existen bots 15 maliciosos que rastrean la web en busca de direcciones de correo que estén publicadas en texto plano. Éstas tienen más tendencia a recibir spam 16 las direcciones de correo en texto plano. • Reescribir URL 17 : Que la URL no contenga caracteres especiales favorece el posicionamiento SEO de la web, sino que también son importantes por su facilidad de uso. • Icono de Favorito 18 : El icono es especialmente útil cuando los clientes almacenan la URL en los favoritos de los navegadores. • Utilización de herramientas analíticas: Estas herramientas permiten un estudio de las diferentes conexiones que se producen hacia un sitio Web, recogiendo datos de diversa índole. Realizan informes y dibujan gráficas que asistan a la actualización de los datos para el SEO, realizar acciones publicitarias, etc. La utilización de estas herramientas puntúan positivamente a un sitio Web. Se presenta una tabla comparativa con todas estas características del SEO analizadas para las Webs de la competencia. 15 Bots: https://es.wikipedia.org/wiki/Bot 16 Spam: https://es.wikipedia.org/wiki/Spam 17 URL: https://es.wikipedia.org/wiki/Localizador_de_recursos_uniforme 18 Favicon: https://es.wikipedia.org/wiki/Favicon
28 PRAVELA NUEVO LOOK ÚNICO ERIKA NARANJO Idiomas Español Español Español, Italiano, Portugués y Alemán Español Español Datos de contacto Sí Sí Sí Sí Sí Formulario de contacto Sí Sí Sí No Sí Contenido Multimedia Sí Sí Sí Sí Sí Productos Sí Sí Sí No Sí Servicios Sí Sí Sí Sí Sí Tienda Web Sí Sí Sí No No Presencia de Ofertas Sí Sí Sí No No Reservas de citas Sí No No No No Programas Fidelización Sí Sí Sí No No Blog Sí Sí Sí No No Portfolio No No No No Sí Mapas Sí Sí Sí Sí Sí Utilización de Captchas Sí No No No No Aviso Legal No No Sí No Sí Política de privacidad No No Sí No No Redes Sociales Facebook, Google + e Instagram Facebook Facebook, Twitter y Google + Facebook Facebook Tabla 3: Comparativa Contenido Gracias a estos parámetros, se comenta una serie de conclusiones a nivel general sobre cada sitio Web: • Pravela: Este establecimiento tiene una dimensión empresarial superior a FreeBody, ya que está presente en varios municipios de la provincia y es muy buen competidor ya que la Web en general está muy bien, el contenido se suele actualizar con cierta regularidad y su Blog presenta entradas mensuales. Desde el punto de vista del SEO tiene una serie de parámetros que penalizan pero que son de fácil solución como son Alt de las imágenes, Mapa del sitio XML y el email
29 en texto, otros como Keywords están poco definidos. Este sitio Web esta desarrollado con tecnologías de última generación y una Web con un diseño bastante atractivo, pero es un poco lento en la carga de la portada. En función de los contenidos, se destaca que sólo utiliza el idioma Español, no hace uso del Portfolio ni de los avisos legales necesarios, como puntos fuertes se destaca la tienda online, la posibilidad de reservas de citas online y el programa de fidelización. Por último, se destaca que tiene una buena presencia en redes sociales. • Nuevo Look: Esta empresa tiene una dimensión superior empresarial al de FreeBody, ya que es un establecimiento con varias sucursales en diferentes municipios de la provincia. Su web respeta mucho la imagen corporativa de la empresa, aunque denota que no actualiza su contenido ni su estructura desde hace mucho tiempo. Desde el punto de vista del SEO, tiene un punto fuerte en las Web que enlazan al sitio (BackLinks), pero como puntos a mejorar están las Keywords (muy escasas), tiene muchas imágenes sin comentarios, no dispone del mapa de Web en XML, tiene el email público y no utiliza las herramientas analíticas. Tecnológicamente está un poco obsoleto, pero siendo el tiempo de carga muy óptimo. En cuanto a los contenidos, sólo están disponibles en español y las redes sociales sólo hacen uso del Facebook. • Centros Único: Esta compañía es una gran empresa con presencia en ámbito nacional e internacional, por lo que la competencia es muy fuerte. Su Web está muy bien estructurada y dispone de la última tecnología. Se actualiza con bastante frecuencia y su actividad en redes sociales es notoria. En cuanto al SEO se puede afirmar que está muy bien elaborada, teniendo la Canonicalización de la IP como único punto a mejorar. Tecnológicamente está muy completa con un tiempo de carga bastante aceptable. Desde el punto de vista de los contenidos es la mejor, estando disponible en múltiples idiomas, tiene Tienda Online y un amplio catálogo de servicios y de ofertas, además que su presencia en redes sociales es prácticamente diaria. Como punto a mejorar se le recomendaría utilizar un álbum de fotos con sus resultados. • Erika: Empresa de dimensión empresarial similar a FreeBody, teniendo un local comercial en el municipio de Santa Lucia de Tirajana. Su web es muy sencilla y tiene un diseño bastante llamativo. El portal Web no tiene una actualización periódica, pero su actividad en redes sociales es diaria. En cuando a los parámetros del SEO tiene muchos puntos a mejorar, tecnológicamente está desfasada teniendo su velocidad de carga muy lenta a pesar de su sencillez. En cuanto a los contenidos, sólo está en español, no posee contenidos relacionados con los productos, éstos son referenciados mediante imágenes. No dispone de los apartados de Portfolio ni de Blog. En redes sociales sólo tiene Facebook pero muy bien actualizado.
30 • Naranjo: Empresa de dimensión empresarial parecida a FreeBody, estando en Vecindario (Santa Lucía de Tirajana). Su web en sencilla con un diseño clásico. La actualización es anual y una actividad diaria en redes sociales. En cuanto al SEO, tiene que mejorar las Keywords, los comentarios de las imágenes y el email público. En cuanto a la tecnología está bastante desfasada, utilizando herramientas de hace más de 5 años. Sobre los contenidos sólo están disponibles en español y no tienen ni tienda virtual ni Blog. El punto fuerte son los contenidos sobre los servicios y productos y su portfolio, muy actualizado. El Facebook tiene una actividad diaria. Este conocimiento es muy importante para poder saber qué puntos tener cubiertos en el portal Web para que los buscadores de internet lo posicionen entre los primeros resultados. Se hace evidente que si la empresa contrata directamente los servicios con coste de estos buscadores, los resultados son más efectivos.
31 5.3. Requisitos del Software Existen varias empresas de competencia de mercado directa en el ámbito de la empresa que tienen presencia online. Éstas, como se ha expuesto, son una muy buena competencia teniendo Webs y redes sociales actualizadas prácticamente a diario. Hay que destacar que no se encontró ninguna donde los clientes puedan ver, confirmar sus citas ni tener la información de sus bonos en un ámbito online. Tampoco tienen presencia en aplicaciones para dispositivos móviles. Unido a esto, hay que implementar una solución software donde mantener la información necesaria relativa a los clientes del salón de belleza y los servicios que han disfrutado. Este software tiene que cubrir las necesidades financieras, necesarias para mantener la salud del negocio, conocer el perfil de los clientes y así poder explotar el marketing de los servicios más utilizados y/o potenciar los menos necesitados. Así mismo, tiene que tener soporte para los bonos, un tipo de producto que la empresa utiliza para vender parte de sus servicios. Con todo ello, se definen los objetivos globales del proyecto presentes en el Proyecto Final de Carrera realizado por Rubén Meré Espino titulado “Web para el sitio y gestión de un salón de belleza”. 5.3.1. Objetivos Generales El objetivo de este proyecto es la de poner en marcha dos aplicaciones; una de ellas un portal Web de la empresa FreeBody y una solución Software para el mantenimiento de la cartera de clientes y la facturaciones que se realicen en el negocio, así como el control de la agenda de los diferentes servicios a realizar. Así mismo, se creará una aplicación móvil para que los clientes puedan tener un acceso más rápido al sitio Web. A continuación se describen los objetivos que debe cumplir cada aplicación con más detalle. El portal Web deberá contemplar la siguiente funcionalidad:
32 Publicitario Posibilidad de dar soporte de marketing de los servicios y productos que la empresa pone a disposición de los clientes. Dar a conocer la situación geográfica del local y los datos de contacto de la empresa para que los clientes puedan ponerse en contacto. Adaptar el sitio al SEO necesario a los diferentes buscadores Exposición de las ofertas que se ponen a disposición de los clientes. Incorporación de un blog con información y contenido multimedia de los resultados de los servicios. Incorporación de las técnicas que respeten el Responsive Web Design Posibilidad de notificar las novedades a los clientes Creación de la aplicación móvil donde se presente la web Acceso privado a Clientes Mantenimiento de los usuarios de la plataforma Posibilidad de que los clientes puedan visualizar sus citas pasadas y sus datos Visualización de los bonos activos del cliente Tabla 4: Funcionalidades aplicación Web En cuanto a la aplicación para el mantenimiento de los clientes tiene que tener la siguiente funcionalidad: Módulo de Usuarios Crear, administrar y eliminar roles. Crear, administrar y eliminar usuarios. Módulo de Clientes Crear, modificar y eliminar clientes. Administrar datos de contacto. Módulo de Agenda Creación y administración de una agenda Creación e información relativa a las citas de los clientes. Informes para los usuarios Módulo de Productos y Servicios Crear, administrar y eliminar servicios y productos. Tarificación de servicios y productos Módulo de Bonos Crear, administrar los diferentes tipos de bonos. Administración de los bonos y cálculo de los costes. Impresión de bonos. Módulo Financiero Creación y mantenimientos de las facturas y los datos asociados. Consolidación de las facturas y asignación a cobros. Impresión de facturas. Creación y mantenimiento de informes. Tabla 5: Funcionalidades aplicación CRM
33 5.4. Diagramas de casos de uso del sistema Web A continuación se muestra el diagrama de casos de uso del sistema Web. Se basan en la definición de los actores del apartado de requisitos de usuario. Para el caso del Actor “Usuario”: Un usuario puede ser cualquier persona que accede al sitio Web para consultar los diferentes apartados y páginas que componen el sitio Web. Para el caso del actor “Usuario Avanzado”: El Usuario Avanzado es una persona que tiene en su posesión de un nombre de usuario (login) y una palabra de paso (password). Las acciones que puede realizar son: • Iniciar sesión: Acción por la cual el usuario establece el nombre de login y password y con estos datos, se mandan al servidor que comprueba si son correctos. Si es correcto, se permite al usuario acceder al área privada, abriendo una sesión temporal. Si no es correcto, se muestra un aviso por error. Ilustración 7: Caso de Uso para "Usuario" Web Ilustración 8: Caso de Uso para "Usuario Avanzado" Web
34 • Cerrar sesión: Acción por la cual el usuario cierra la sesión de acceso al área privada, por lo que se finaliza la sesión temporal. • Visualizar Datos de Contacto: Permite al usuario visualizar sus datos de contacto, como pueden ser el email, teléfonos, etc. del usuario actual. • Visualizar Datos Historial: Permite acceder al usuario visualizar las citas donde el cliente ha accedido al centro, los servicios y los datos relativos. • Visualizar Bonos Activos: Posibilidad de mostrar los bonos que el cliente ha adquirido y que aún no ha consumido. Para el caso del actor “Administrador”: • El Actor “Administrador” es el encargado actualizar e incorporar nuevas funcionalidades y/o apartados en la Web. Las acciones que tiene que realizar se pueden agrupar en: ◦ “Package” Gestionar Menús: En este caso permite las acciones necesarias para la correcta gestión de menús de la página. Dentro de estas acciones se destacan: Ilustración 9: Caso de Uso para "Usuario Administrador" Web
35 Añadir Menú: Posibilidad de que el actor pueda crear menús en la Web. En el menú se mostrarán los diferentes apartados del sitio Web. Listar Menús: Obtener el conjunto de menús creados en el sistema y permitir búsquedas dentro de él y las acciones asociadas. Visualizar Menú: Mostrar el listado y el valor de las características de los menús. Modificar Menú: Acción por la cual se permite modificar los datos relacionar con el menú. Eliminar Menú: Operación por la cual se permite que el actor elimine menús del sitio Web. Crear elemento de menú: Posibilidad de asociar un elemento que forme parte del menú. Este elemento permite que el administrador le asocie un elemento del sitio Web para que los usuarios puedan acceder a los diferentes apartados y asociado a un menú creado en el sitio. Listar Elementos de Menú: Extraer los diferentes elementos de menú del sitio y poder establecer unos criterios para ayudar a buscarlos y realizar las acciones sobre ellos. Visualizar Elemento de Menú: Muestra las características de los elementos del menú Ilustración 10: Paquete Gestionar Menú Web
36 Modificar Elemento de Menú: Acción que permite que el administrador modifique los datos relacionados con un elemento de menú. Eliminar Elemento de Menú: Operación que permite eliminar un elemento de menú del sitio. Asociar Elemento de Menú a Menú: Acción necesaria para añadir un elemento de menú al menú. Añadir Idioma: Permite que se pueda crear los diferentes idiomas para el sitio web. Listar Idiomas: Obtener todos los idiomas creados en el sistema y permitir realizar búsquedas de ellos a través de unos criterios. Visualizar Idioma: Muestra las características de los idiomas y sus valores. Eliminar Idioma: Acción para eliminar un idioma previamente creado en el sistema. Modificar Idioma: Posibilidad de modificar los datos relacionados con los idiomas definidos en la plataforma Web. o “Package” Gestionar Artículos: Se definen las acciones necesarias para la definición de los diferentes artículos que componen el contenido del sitio Web. Entre las acciones se destacan:
37 Añadir Familia de Artículos: Acción para poder definir una familia de artículos. Las familias de los artículos definen características comunes a los artículos que componen la Web. Listar Familias de Artículos: Realizar un listado de todas las familias de artículos creadas en el sistema y poder realizar búsquedas sobre ellas. Visualizar Familia de Artículos: Muestra las diferentes capacidades de las familias de artículos. Modificar Familia de Artículos: Posibilidad de cambiar las diferentes características que definen una familia de artículos. Eliminar Familia de Artículos: Suprimir la familia de artículos, por lo que los artículos dependientes, se quedan sin familia. Añadir Artículo: Adición de un artículo con contenido para la Web. Listar Artículos: Obtener todos los artículos creados en el sistema y poder establecer criterios para las búsquedas. Ilustración 11: Paquete Gestionar Artículos Web
44 Listar servicios/productos de una cita: Posibilidad de conocer los productos y/o servicios que contienen una cita del sistema. Presupuestar Citas: Acción que permite realizar un presupuesto de los servicios y/o productos que un cliente necesite. Facturar Citas: En el siguiente diagrama se explica detalladamente este caso de uso. o “Package” Gestionar Facturación: Este paquete está directamente relacionado con el estado financiero de la empresa. Entre las acción que completan este paquete destacamos: Crear Factura: Realización de la factura en el sistema sobre los servicios y/o productos que el cliente se ha aplicado. Asociar Factura a servicios/productos de citas: Acción que permite desde una cita con una relación de servicios y/o productos poder realizar una factura asociada al cliente de la cita. Asociar tipos de pago a Factura: Posibilidad de asociar una factura a los tipos de pagos que pueden utilizar los clientes para costear sus tratamientos. Listar Facturas: Posibilidad para que el usuario pueda establecer unos criterios con el objetivo de localizar una factura creada en el sistema y Ilustración 17: Paquete Gestionar Facturación CRM
45 otras acciones. Visualizar Factura: Acción que permite mostrar los datos relevantes de la factura. Modificar Factura: Acción controlada que permite modificar ciertos aspectos de la factura que sean legales (modificar datos del cliente facturado). Consolidar Facturas: Acción que permite registrar en el sistema si la factura ha sido pagada revisando los canales de pagos. Abonar Facturas: Permite crear abonos que justifiquen la modificación de una factura del sistema. Listar Abonos: Enumerar los abonos creados en el sistema. Realizar cuadre de cierre de caja: Informar desde el sistema al usuario para que este pueda asegurarse de lo cobrado físicamente corresponde con lo registrado en el sistema. o “Package” Gestionar Bonos: Paquete de acciones que serán necesarios para poder mantener los bonos en el sistema. Las acciones son: Crear Bono: Acción que permite la creación de bonos en el sistema. Listar Bono: Facilita al usuario la localización de un bono creado en el sistema. Visualizar Bono: Muestra los datos relacionados con los bonos creados Ilustración 18: Paquete Gestionar Bonos CRM
46 en el sistema. Modificar Bono: Posibilidad de actualizar los datos de un bono. Eliminar Bonos: Permite la supresión de un bono del sistema. Imprimir Bono: Acción que permite a los usuarios la impresión en papel físico de un bono. • Para el caso del Usuario Avanzado tendrá las acciones del usuario más una serie de acciones propias de este. ◦ “Package” Gestionar Servicios/productos: Acciones relacionadas con los servicios y/o productos que vende la empresa: Ilustración 19: Casos de Uso usuario "Administrador" CRM Ilustración 20: Paquete Gestionar Servicios/Productos CRM
47 Crear Servicio/Producto: Posibilidad de añadir en el sistema un nuevo servicio y/o producto. Listar Servicios/Productos: Permite buscar los servicios y/o productos del sistema. Visualizar Servicio/Producto: Mostrar los datos relacionados al servicio o producto del sistema. Modificar Servicio/Producto: Acción de editar los datos de un servicio y/o producto. Eliminar Servicio/Producto: Permite suprimir un servicio y/o producto del sistema. o “Package” Gestionar Financiación: Paquete que contempla las diferentes acciones necesarias para tener un completo sistema de financiación de la empresa:
48 Ilustración 21: Paquete Gestionar Financiación CRM Crear Pago: Poder crear en el sistema el registro el pago de las facturas de la empresa. Listar Pago: Posibilidad de buscar un pago dentro del sistema y poder obtener el conjunto de los que están creados en el sistema. Visualizar Pago: Muestra los detalles del pago. Modificar Pago: Acción que permite editar los datos de un pago que se ha registrado en la empresa. Eliminar Pago: La supresión del sistema de un pago creado anteriormente. Informe de Pagos: Conjunto de informes para poder controlar los pagos que realizan a la empresa. Informes de Facturación: Conjunto de informes necesarios para poder controlar las facturas creadas en la empresa.
49 Crear cuenta: Posibilidad de añadir al sistema una cuenta para reflejar la entrada y salida de dinero. Listar cuentas: Enumerar las cuentas que existen en el sistema y realizar búsquedas sobre ellas. Visualizar Cuenta: Capacidad de mostrar los datos relacionados con una cuenta en concreto. Eliminar cuenta: acción por la cual permite la supresión de una cuenta previamente creada en el sistema. Crear tipo de pagos: Posibilidad de definir los tipos de pago que pueden hacer uso los clientes. Listar tipos de pagos: Obtener un listado con los tipos de pago definidos en el sistema y poder realizar acciones con ellos. Visualizar tipo de pago: Muestra los detalles del tipo de pago en concreto. Modificar tipo de pago: Posibilidad de modificar los tipos de pagos definidos en el sistema. Eliminar tipos de pago: Acción que permite suprimir del sistema un tipo de pago previamente creado. o “Package” Gestionar Usuarios: Paquete que contempla las diferentes acciones necesarias para el mantenimiento de los usuarios del sistema.
50 Ilustración 22: Paquete Gestionar Usuarios CRM Añadir Grupo de Usuarios: Permite que se pueda adicionar al sistema grupos de usuarios. Listar Grupos de Usuarios: Permitir que aparezcan todos los grupos de usuarios del sistema y realizar búsquedas sobre ellos. Visualizar Grupo de Usuarios: Se permite que el usuario pueda ver los diferentes datos de los grupos de usuarios. Modificar Grupo de Usuarios: Cambiar la configuración de los grupos de los usuarios. Establecer permisos: Acción para asignar permisos de modificación y/o acceso a la plataforma por parte de los grupos de usuarios. Asociar Usuarios a Grupos de Usuarios: Permite establecer los usuarios en los grupos correspondientes. Eliminar Grupo de Usuarios: Borrado de un grupo de usuarios. Añadir Usuario: Acción que permite adicionar un usuario al sistema. Listar Usuarios: Obtener un listado con todos los usuarios del sistema y que se permita realizar búsquedas sobre estos para poder realizar las acciones relacionadas.
51 Visualizar Usuario: Mostrar las diferentes características del usuario seleccionado. Modificar Usuario: Posibilidad de editar los datos relacionado con los usuarios del sistema. Eliminar Usuario: Suprimir un usuario del sistema.
52 5.5 Prototipos de interfaz de usuario para la aplicación Web Durante las fases anteriores se esbozaron los siguientes prototipos, con ellos se pudieron validar los requisitos de interfaz y una revisión de cómo sería el diseño de las vistas de la aplicación. Los prototipos elaborados se muestran en la siguiente tabla: Sistema Actor Identificador Prototipo WEB Usuario P00 Navegar por el sitio Web Usuario Avanzado P01 Iniciar Sesión P02 Cerrar Sesión P03 Visualizar Datos de Contacto P04 Visualizar Historial P05 Visualizar Bonos Activos Administrador P06 Añadir Menú P07 Listar Menús P08 Visualizar Menú P09 Modificar Menú P10 Eliminar Menú P11 Crear Elemento de Menú P12 Listar Elementos de Menú P13 Visualizar Elemento de Menú P14 Modificar Elemento de Menú P15 Eliminar Elemento de Menú P16 Asociar Elemento de Menú a Menú P17 Añadir Idioma P18 Listar Idiomas P19 Visualizar Idioma P20 Modificar Idioma P21 Eliminar Idioma P22 Añadir Familia de Artículos P23 Listar Familias de Artículos P24 Visualizar Familia de Artículos P25 Modificar Familia de Artículos P26 Eliminar Familia de Artículos P27 Añadir Artículo P28 Listar Artículos P29 Visualizar Artículo P30 Modificar Artículo P31 Eliminar Artículo P32 Publicar Artículo P33 Despublicar Artículo P34 Asociar artículo a Familia de Artículos P35 Añadir Grupo Usuarios P36 Listar Grupos Usuarios P37 Visualizar Grupo de Artículos P38 Modificar Grupo Usuarios P39 Establecer Permisos P40 Asociar Usuarios a Grupos de Usuarios
53 P41 Eliminar Grupo Usuarios P42 Añadir Usuario P43 Listar Usuarios P44 Visualizar Usuario P45 Modificar Usuario P46 Eliminar Usuario P47 Añadir Plantilla P48 Listar Plantillas P49 Visualizar Plantilla P50 Modificar Plantilla P51 Publicar por posiciones los elementos P52 Listar posiciones de elementos P53 Modificar aspectos de los elementos P54 Eliminar Plantilla Tabla 6: Prototipos de interfaz de usuario para la aplicación Web Todos los prototipos destacados se encuentran diseñados en el “Anexo III: Prototipos de Interfaz”. En este artículo se van a destacar los más importantes:
5.5.7. Prototipo Añadir Idioma Nombre Añadir Idioma Creado por Rubén Meré Casos de Uso Añadir Idioma Pantalla donde se puede definir un nuevo idioma en la plataforma. Prototipo Añadir Idioma Añadir Idioma Identificador Rubén Meré Fecha Añadir Idioma Ilustración 29: Prototipo Añadir Idioma puede definir un nuevo idioma en la plataforma. 60 P17 02/02/2015
61 5.6. Prototipos de interfaz de usuario para la aplicación CRM En la fase de requisitos de usuarios para el CRM se detectaron una serie de prototipos necesarios para cubrir las necesidades de los usuarios. Los prototipos se muestran en la siguiente tabla: Sistema Actor Identificador Prototipo Usuario C01 Añadir Cliente C02 Listar Clientes C03 Visualizar Cliente C04 Modificar Cliente C05 Asociar cliente a usuario C06 Eliminar Cliente C07 Crear Cita C08 Asociar cliente a Cita C09 Asociar servicios/productos a Cita C10 Listar Citas C11 Visualizar Cita C12 Modificar Cita C13 Listar servicios/productos de una Cita C14 Eliminar servicios/productos de Cita C15 Modificar servicios/productos a Cita C16 Presupuestar Cita C17 Eliminar Citas C18 Crear Factura C19 Asociar facturas a servicios/productos de citas C20 Asociar tipo de pagos de Factura C21 Listar Facturas C22 Visualizar Factura C23 Modificar Factura C24 Consolidar Facturas C25 Abonar Facturas C26 Listar Abonos C27 Realizar cuadre de cierre de caja C28 Crear Bono C29 Listar Bonos C30 Visualizar Bono C31 Modificar Bonos C32 Imprimir Bono C33 Eliminar Bonos Administrador C34 Crear Servicio/Producto C35 Listar Servicios/Productos C36 Visualizar Servicio/Producto C37 Modificar Servicio/Producto C38 Eliminar Servicio/Producto C39 Crear Pago C40 Listar Pagos C41 Visualizar Pago
62 C42 Modificar Pago C43 Eliminar Pago C44 Informe de Pagos C45 Informes de Facturación C46 Crear Cuenta C47 Listar Cuentas C48 Visualizar Cuenta C49 Eliminar Cuenta C50 Crear Tipo de pago C51 Listar Tipos de pago C52 Visualizar Tipo de pago C53 Modificar Tipo de pago C54 Eliminar Tipo de pago C55 Añadir Grupo Usuarios C56 Listar Grupos Usuarios C57 Visualizar Grupo de Artículos C58 Modificar Grupo Usuarios C59 Establecer Permisos C60 Asociar Usuarios a Grupos de Usuarios C61 Eliminar Grupo Usuarios C62 Añadir Usuario C63 Listar Usuarios C64 Visualizar Usuario C65 Modificar Usuario C66 Eliminar Usuario Tabla 7: Prototipos de interfaz de usuario para la aplicación CRM Todos los prototipos destacados se encuentran diseñados en el “Anexo III: Prototipos de Interfaz”. En este artículo se van a destacar los más importantes:
5.6.1. Prototipo Añadir Cliente Nombre Añadir Cliente Creado por Rubén Meré Casos de Uso Añadir Cliente Pantalla para la creación del cliente en la plataforma, definiendo el usuario los datos requeridos. Prototipo Añadir Cliente Añadir Cliente Identificador Rubén Meré Fecha Añadir Cliente Pantalla para la creación del cliente en la plataforma, definiendo el usuario los datos Ilustración 30: Prototipo Añadir Cliente 63 Identificador C01 05/02/2015 Pantalla para la creación del cliente en la plataforma, definiendo el usuario los datos
5.6.2. Prototipo Listar Clientes Nombre Listar Clientes Creado por Rubén Meré Casos de Uso Listar Clientes En esta pantalla se puede apreciar los los campos que forman parte del visualizar en detalle el cliente ó eliminarlo. Por último, permite que se añadan más clientes. Prototipo Listar Clientes Listar Clientes Identificador Rubén Meré Fecha Listar Clientes En esta pantalla se puede apreciar los distintos clientes creados. Se permite buscar por que forman parte del listado y añade los botones para las acciones de visualizar en detalle el cliente ó eliminarlo. Por último, permite que se añadan más Ilustración 31: Prototipo Listar Clientes 64 Identificador C02 05/02/2015 clientes creados. Se permite buscar por listado y añade los botones para las acciones de visualizar en detalle el cliente ó eliminarlo. Por último, permite que se añadan más
5.6.3. Prototipo Visualizar Clientes Nombre Visualizar Clientes Creado por Rubén Meré Casos de Uso Visualizar Clientes En este prototipo se puede visualizar los datos en detalle de un cliente. En este caso los campos no se pueden modificar, para eso hay que pulsar el botón que activa la posibilidad de modificación. Prototipo Visualizar Clientes Visualizar Clientes Identificador Rubén Meré Fecha Visualizar Clientes En este prototipo se puede visualizar los datos en detalle de un cliente. En este caso los campos no se pueden modificar, para eso hay que pulsar el botón que activa la posibilidad de modificación. Ilustración 32: Prototipo Visualizar Clientes 65 Identificador C03 05/02/2015 En este prototipo se puede visualizar los datos en detalle de un cliente. En este caso los campos no se pueden modificar, para eso hay que pulsar el botón que activa la
5.6.4. Prototipo Modificar Clientes Nombre Modificar Clientes Creado por Rubén Meré Casos de Uso Modificar Clientes En este prototipo se puede editar Prototipo Modificar Clientes Modificar Clientes Identificador Rubén Meré Fecha Modificar Clientes En este prototipo se puede editar los datos de un cliente. Ilustración 33: Prototipo Modificar Clientes 66 Identificador C04 05/02/2015
5.6.5. Prototipo Asociar Cliente a usuario Nombre Asociar Cliente a usuario Creado por Rubén Meré Casos de Uso Asociar Cliente a usuario Prototipo que ilustra el mecanismo por el cual se puede asociar un cliente a un usuario. Ilustración Prototipo Asociar Cliente a usuario Asociar Cliente a usuario Identificador Rubén Meré Fecha Asociar Cliente a usuario Prototipo que ilustra el mecanismo por el cual se puede asociar un cliente a un usuario. Ilustración 34: Prototipo Asociar Cliente a usuario 67 Identificador C05 05/02/2015 Prototipo que ilustra el mecanismo por el cual se puede asociar un cliente a un usuario.
5.6.6. Prototipo Eliminar Cliente Nombre Eliminar Cliente Creado por Rubén Meré Casos de Uso Eliminar Cliente En este prototipo el usuario ha accionado la acción de eliminar, y la plataforma le ha de preguntar si está seguro de eliminarlo. Prototipo Eliminar Cliente Eliminar Cliente Identificador Rubén Meré Fecha Eliminar Cliente En este prototipo el usuario ha accionado la acción de eliminar, y la plataforma le ha de seguro de eliminarlo. Ilustración 35: Prototipo Eliminar Cliente 68 Identificador C06 05/02/2015 En este prototipo el usuario ha accionado la acción de eliminar, y la plataforma le ha de
5.6.7. Prototipo Crear Cita Nombre Crear Cita Creado por Rubén Meré Casos de Uso Crear Cita Permite la definición de las citas, en este caso se solicitan los datos necesarios para crear una en el sistema. Prototipo Crear Cita Crear Cita Identificador Rubén Meré Fecha Crear Cita Permite la definición de las citas, en este caso se solicitan los datos necesarios para crear Ilustración 36: Prototipo Crear Cita 69 Identificador C07 05/02/2015 Permite la definición de las citas, en este caso se solicitan los datos necesarios para crear
5.6.14. Prototipo Presupuestar Cita Nombre Presupuestar Cita Creado por Rubén Meré Casos de Uso Presupuestar Cita Una vez el usuario ha modificado los servicios como desee, puede presionar el botón “Presupuestar”, este informa al usuario de cuál es la cuantía de estos servicios. Prototipo Presupuestar Cita Presupuestar Cita Identificador Rubén Meré Fecha Presupuestar Cita Una vez el usuario ha modificado los servicios como desee, puede presionar el botón “Presupuestar”, este informa al usuario de cuál es la cuantía de estos servicios. Ilustración 43: Prototipo Presupuestar Cita 76 Identificador C16 05/02/2015 Una vez el usuario ha modificado los servicios como desee, puede presionar el botón “Presupuestar”, este informa al usuario de cuál es la cuantía de estos servicios.
5.6.15. Prototipo Crear Factura Nombre Crear Factura Creado por Rubén Meré Casos de Uso Crear Factura A la hora de facturar, el usuario selecciona una cita de las creadas. de establecer un concepto general a la factura y la fecha correspondiente. Prototipo Crear Factura Crear Factura Identificador Rubén Meré Fecha Crear Factura A la hora de facturar, el usuario selecciona una cita de las creadas. En esta pantalla se ha de establecer un concepto general a la factura y la fecha correspondiente. Ilustración 44: Prototipo Crear Factura 77 Identificador C18 06/02/2015 En esta pantalla se ha de establecer un concepto general a la factura y la fecha correspondiente.
5.6.16. Prototipo Asociar Factura a Servicios/Productos de Cita Nombre Asociar Factura a Servicios/Productos de Cita Creado por Rubén Mer Casos de Uso Asociar Factura a Servicios/Productos de Cita Durante el proceso de facturar, el usuario anteriormente, qué servicios son los que desea facturar. Ilustración 45 Prototipo Asociar Factura a Servicios/Productos de Cita Asociar Factura a Servicios/Productos de Cita Identificador Rubén Mer é Fecha Asociar Factura a Servicios/Productos de Cita Durante el proceso de facturar, el usuario selecciona para la cita seleccionada anteriormente, qué servicios son los que desea facturar. 45 : Prototipo Asociar Factura a Servicios/Productos de Cita 78 Prototipo Asociar Factura a Servicios/Productos de Cita Identificador C19 Fecha 06/02/2015 selecciona para la cita seleccionada
5.6.17. Prototipo Asociar Tipo de pago a Factura Nombre Asociar Tipo de Pago a Factura Creado por Rubén Meré Casos de Uso Asociar Tipo de Pago a Factura Para finalizar el proceso de facturar, el usuario selecciona los tipos de pago que el cliente requiere para registrarlos en el sistema, necesarios para el informe de cierre de caja. Ilustración Prototipo Asociar Tipo de pago a Factura Asociar Tipo de Pago a Factura Identificador Rubén Meré Fecha Asociar Tipo de Pago a Factura Para finalizar el proceso de facturar, el usuario selecciona los tipos de pago que el registrarlos en el sistema, necesarios para el informe de cierre de Ilustración 46: Prototipo Asociar Tipo de pago a Factura 79 Identificador C20 Fecha 06/02/2015 Para finalizar el proceso de facturar, el usuario selecciona los tipos de pago que el registrarlos en el sistema, necesarios para el informe de cierre de
5.6.18. Prototipo Crear Bono Nombre Crear Bono Creado por Rubén Meré Casos de Uso Crear Bono Prototipo que muestra la pantalla de citas, en ella hay unos servicios que admiten la creación de los bonos. Prototipo Crear Bono Crear Bono Identificador Rubén Meré Fecha Crear Bono Prototipo que muestra la pantalla de citas, en ella hay unos servicios que admiten la Ilustración 47: Prototipo Crear Bono 80 Identificador C28 Fecha 06/02/2015 Prototipo que muestra la pantalla de citas, en ella hay unos servicios que admiten la
5.6.19. Prototipo Listar Bonos Nombre Listar Bonos Creado por Rubén Meré Casos de Uso Listar Bonos Pantalla donde se pueden visualizar todos los bonos creados en el sistema. Se permite buscar por los datos y realizar su código. Prototipo Listar Bonos Listar Bonos Identificador Rubén Meré Fecha Listar Bonos Pantalla donde se pueden visualizar todos los bonos creados en el sistema. Se permite buscar por los datos y realizar las acciones de visualizar sus datos, eliminarlo o imprimir Ilustración 48: Prototipo Listar Bonos 81 Identificador C29 Fecha 06/02/2015 Pantalla donde se pueden visualizar todos los bonos creados en el sistema. Se permite las acciones de visualizar sus datos, eliminarlo o imprimir
5.6.20. Prototipo Visualizar Bono Nombre Visualizar Bono Creado por Rubén Meré Casos de Uso Visualizar Bono Pantalla que permite la visualización de los datos de un bono en concreto. Prototipo Visualizar Bono Visualizar Bono Identificador Rubén Meré Fecha Visualizar Bono Pantalla que permite la visualización de los datos de un bono en concreto. Ilustración 49: Prototipo Visualizar Bono 82 Identificador C30 Fecha 06/02/2015 Pantalla que permite la visualización de los datos de un bono en concreto.
5.6.21. Prototipo Modificar Bono Nombre Modificar Bono Creado por Rubén Meré Casos de Uso Modificar Bono Pantalla que permite modificar de los datos de un bono en concreto. Prototipo Modificar Bono Modificar Bono Identificador Rubén Meré Fecha Modificar Bono Pantalla que permite modificar de los datos de un bono en concreto. Ilustración 50: Prototipo Modificar Bono 83 Identificador C31 Fecha 06/02/2015
5.6.22. Prototipo Imprimir Bono Nombre Imprimir Bono Creado por Rubén Meré Casos de Uso Imprimir Bono Prototipo de pantalla donde se puede visualiza bono y de su código de barras. Prototipo Imprimir Bono Imprimir Bono Identificador Rubén Meré Fecha Imprimir Bono Prototipo de pantalla donde se puede visualiza r el contenido de la información de un bono y de su código de barras. Ilustración 51: Prototipo Imprimir Bono 84 Identificador C32 Fecha 06/02/2015 el contenido de la información de un
5.6.23. Prototipo Eliminar Bono Nombre Eliminar Bono Creado por Rubén Meré Casos de Uso Eliminar Bono El usuario ha expresado su deseo de eliminar un bono del sistema y, éste le pregunta si es correcta la opción seleccionada. Prototipo Eliminar Bono Eliminar Bono Identificador Rubén Meré Fecha Eliminar Bono El usuario ha expresado su deseo de eliminar un bono del sistema y, éste le pregunta si es correcta la opción seleccionada. Ilustración 52: Prototipo Eliminar Bono 85 Identificador C33 Fecha 06/02/2015 El usuario ha expresado su deseo de eliminar un bono del sistema y, éste le pregunta si
92 5.7.2. Diagrama de Secuencias: Añadir Clientes El actor del diagrama es un usuario del sistema. El usuario rellena el formulario de los datos necesarios para definir un cliente. El controlador recibe los datos del cliente, comprobándolos para asegurarse que cumple con los requisitos de los clientes. Si es erróneo, informa a la vista para avisar al usuario, sino envía los datos al modelo que se encarga de insertar al cliente en el sistema. Cuando el modelo finaliza su tarea, informa del estado al controlador y éste a su vez a la vista, para informar al usuario del resultado de la adición del cliente al sistema. 5.7.3. Diagrama de Secuencias: Listar y Modificar Clientes El usuario, que tiene que estar registrado en el sistema, realiza la petición al controlador y éste se la envía al modelo para obtener los diferentes clientes definidos en el sistema. Una vez seleccionado un usuario, desea modificar los datos de éste y su petición se envía al modelo mediante el controlador. Si el modelo retorna el resultado de la operación al controlador para que este la envíe a la vista para que el usuario sea informado. Ilustración 60: Diagrama secuencias Añadir Clientes
93 5.7.4. Diagrama de Secuencias: Añadir Cita El usuario registrado en el sistema, solicita la creación de una cita, para ello le solicita al controlador dicha acción, el controlador le solicita el listado de clientes al modelo y los datos relacionados con la cita. Una vez obtiene todos los datos, el controlador le manda éstos a la vista. Cuando el usuario rellena los datos de las citas y selecciona al cliente, el proceso entra en un bucle donde cada iteración, el cliente seleccionará los datos de los servicios y/o productos disponibles. En cada iteración, el controlador le va solicitando los datos de los servicios y productos para que el usuario pueda definir los datos relacionados a estos. Por último el cliente, realiza la acción de guardar la cita, donde el controlador le mandará los datos de la cita, el cliente seleccionado y cada uno de los servicios y/o productos seleccionados. Para ello le manda todo esto al controlador que es el encargado de insertarlos en el gestor de base de datos. El diagrama que representa esta acción se muestra en la siguiente ilustración: Ilustración 61: Diagrama secuencias Listar y Modificar Clientes
94 5.7.5. Diagrama de Secuencias: Facturar una Cita El usuario registrado en el sistema, solicita la visualización de una cita, para ello le solicita al controlador dicha acción, el controlador le solicita los datos del cliente, los servicios y/o productos al modelo. Una vez obtiene todos los datos, el controlador le Ilustración 62: Diagrama secuencias Añadir Cita
95 manda éstos a la vista. El usuario selecciona de los servicios no facturados, cuáles quiere facturar y con esto se calcula el total a pagar por el cliente. El cliente decide las formas de pagos y el usuario decide facturar los servicios, le manda esto al controlador. Éste contiene la lógica necesaria para poder insertar las líneas de las facturas, los datos de estas y las formas de pago al modelo. Una vez realizadas todas estas acciones, la vista retorna al usuario el resultado de esta acción. El diagrama que representa esta acción se muestra en la siguiente ilustración: Ilustración 63: Diagrama secuencias Facturar una Cita
96 6. Fase de Elaboración: Diseño En el diseño se modela el sistema para enfocar la forma, incluida la arquitectura, para que dé soporte a todos los requisitos, funcionales y no funcionales. El modelo de diseño es un modelo físico, ya que está elaborado en términos específicos de la implementación. Una entrada esencial en el diseño es el modelo de análisis. Dicho modelo proporciona una comprensión detallada de los requisitos. En esta sección de la memoria se detallará toda la información relevante del diseño de la aplicación Web y los fundamentos arquitectónicos en los que se basa el diseño. Para abordar los requisitos de usuario y del software se van a plantear una serie de arquitecturas para la aplicación Web como para la de CRM. Se descarta implementar el proyecto sin la ayuda de software de mercado de código abierto que faciliten la gestión del mayor número posible de requerimientos. 6.1. Estudio de las Arquitecturas Candidatas Se va a desarrollar una aplicación siguiendo el paradigma de programación orientado a objetos. En este apartado se abordará las posibles patrones de diseño y arquitectónicos que soporten los requisitos del proyecto. 6.1.1. Patrón Modelo – Vista – Controlador El patrón modelo-vista-controlador 26 , o más conocido por las siglas MVC, es una norma de arquitectura del software que separa los datos y la lógica de negocio de una aplicación de la interfaz del usuario y el módulo encargado de gestionar los eventos y las comunicaciones. Para ello el MVC propone la construcción de tres componentes distintos que son: • Modelo: Es la representación de la información con la cual el sistema opera, por lo tanto, gestiona todos los accesos a dicha información, tanto consultas como actualizaciones, implementando también los privilegios de acceso que se hayan descrito en las especificaciones de la aplicación (lógica de negocio). Envía a la 'vista' o al 'controlador' aquella parte de la información que en cada momento se le solicita para que sea mostrada (típicamente a un usuario). Las peticiones de acceso o manipulación de información llegan al 'modelo' a través del 26 https://es.wikipedia.org/wiki/Modelo-vista-controlador
97 'controlador'. • Vista: Presenta el 'aspecto' (información y lógica de negocio) en un formato adecuado para interactuar (usualmente la interfaz de usuario) por tanto requiere de dicho 'modelo' la información que debe representar como salida. • Controlador: Responde a eventos (usualmente acciones del usuario a través de la 'vista') e invoca peticiones al 'modelo' cuando se hace alguna solicitud sobre la información (por ejemplo, editar un documento o un registro en una base de datos). También puede enviar comandos a su 'vista' asociada si se solicita un cambio en la forma en que se presenta el 'modelo' (por ejemplo, desplazamiento o scroll por un documento o por los diferentes registros de una base de datos), por tanto se podría decir que el 'controlador' hace de intermediario entre la 'vista' y el 'modelo'. El siguiente diagrama muestra gráficamente el patrón: Se pueden encontrar multitud de implementaciones de MVC, el flujo de control que sigue normalmente se puede enumerar en: 1. El usuario interactúa con la interfaz de usuario de alguna forma (por ejemplo, el usuario pulsa un botón, enlace, etc.) 2. El controlador recibe (por parte de los objetos de la interfaz-vista) la notificación de la acción solicitada por el usuario. El controlador gestiona el evento que llega, frecuentemente a través de un gestor de eventos (handler) o callback.
98 3. El controlador accede al modelo, actualizándolo, posiblemente modificándolo de forma adecuada a la acción solicitada por el usuario (por ejemplo, el controlador actualiza el carro de la compra del usuario). Los controladores complejos están a menudo estructurados usando un patrón de comando que encapsula las acciones y simplifica su extensión. 4. El controlador delega a los objetos de la vista la tarea de desplegar la interfaz de usuario. La vista obtiene sus datos del modelo para generar la interfaz apropiada para el usuario donde se reflejan los cambios en el modelo (por ejemplo, produce un listado del contenido del carro de la compra). El modelo no debe tener conocimiento directo sobre la vista. Sin embargo, se podría utilizar el patrón Observador para proveer cierta indirección entre el modelo y la vista, permitiendo al modelo notificar a los interesados de cualquier cambio. Un objeto vista puede registrarse con el modelo y esperar a los cambios, pero aun así el modelo en sí mismo sigue sin saber nada de la vista. En general el controlador no pasa objetos de dominio (el modelo) a la vista aunque puede dar la orden a la vista para que se actualice. En algunas implementaciones la vista no tiene acceso directo al modelo, dejando que el controlador envíe los datos del modelo a la vista. 5. La interfaz de usuario espera nuevas interacciones del usuario, comenzando el ciclo nuevamente.... Para el Sistema de Gestión de Base de Datos, que debe utilizar la aplicación, se utiliza la capa del modelo. La unión entre capa de presentación y capa de negocio conocido en el paradigma de la Programación por capas representaría la integración entre la Vista y su correspondiente Controlador de eventos y acceso a datos, MVC no pretende discriminar entre capa de negocio y capa de presentación pero si pretende separar la capa visual gráfica de su correspondiente programación y acceso a datos, algo que mejora el desarrollo y mantenimiento de la Vista y el Controlador en paralelo, ya que ambos cumplen ciclos de vida muy distintos entre sí. Aunque originalmente MVC fue desarrollado para aplicaciones de escritorio, ha sido ampliamente adaptado como arquitectura para diseñar e implementar aplicaciones web en los principales lenguajes de programación. Se han desarrollado multitud de frameworks, comerciales y no comerciales, que implementan este patrón; estos frameworks se diferencian básicamente en la interpretación de como las funciones MVC se dividen entre cliente y servidor Los primeros frameworks MVC para desarrollo web planteaban un enfoque de cliente ligero en el que casi todas las funciones, tanto de la vista, el modelo y el controlador recaían en el servidor. En este enfoque, el cliente manda la petición de cualquier hiperenlace o formulario al controlador y después recibe de la vista una página completa
99 y actualizada (u otro documento); tanto el modelo como el controlador (y buena parte de la vista) están completamente alojados en el servidor. 6.2. Arquitectura candidatas para la aplicación Web Para poder abordar todos los requisitos del software recopilados para la aplicación Web, se buscarán herramientas que ofrece el mercado para poder cumplir con ellos. Entre los frameworks 27 MVC que existen, se estudiarán los más utilizados, para abordar la solución de una forma correcta. Por la experiencia que he adquirido, he decidido utilizar un framework MVC implementando la tecnología PHP, ya que: • La curva de aprendizaje del lenguaje ayuda al desarrollo rápido de aplicaciones. • Provee de un código bien organizado, reusable facilitando el mantenimiento del éste. • Permite que la aplicación crezca sin perder calidad en los servicios ofrecidos, facilitando así la escalabilidad. • Da soporte de última tecnología sobre seguridad a bajo nivel del sitio Web. 6.2.1. Laravel 28 Es un framework que apareció en 2011 y es el más popular entre los frameworks en PHP. Laravel utiliza un motor para el implementar el patrón MVC bastante ligero denominado “Blade”. Provee de una sintaxis elegante y expresiva que permite que sea fácil de aprender para controlar las tareas básicas de un software de estas características, como pueden ser la autenticación, mantenimiento de sesiones, etc... El Modelo de este framework es un sistema de mapeo de datos relacional denominado Eloquent ORM que facilita la creación de los modelos. Se fundamenta en el patrón active record para apoyar su funcionamiento. El uso de este ORM es opcional ya que dispone de otros recursos, que facilitan la interacción con los datos, o específicamente la creación de los modelos. Así mismo, utiliza el paradigma donde se favorece la “convención sobre la configuración”, por lo que si el nombre de la clase coincide con el nombre en el mapeo del sistema de Bases de Datos, el código para acceder a un recurso directo. Por ejemplo, 27 https://es.wikipedia.org/wiki/Framework 28 https://laravel.com/
si se desea acceder a “ http://mi_app/libros/listar servidor e interactuar con el modelo “Libro”, el código necesario sería: En cuanto a la Vista, basa en “ Este sistema utiliza un código limpio ayudando en el desarrollo de las vistas y del uso de la Caché que acelera sus accesos. Las plantillas en “Blade ” so página con etiquetas que representan elementos o zonas a incluir en la plantilla, o vistas parciales como se conocen en otros elementos incrustados se o organización de las vistas y su rendimiento. Sobre todo cuando las vistas pueden llegar a ser muy complejas incluso con elementos anidados. En la renderización de una Vista completa en Lavarel se usan dos archivos: la plantilla definiendo el zonas a incluir. Un sólo archivo, la Vista, con los elementos ( El Controlador permite organizar el código en clases sin tener que escribirlo todo en las rutas. Todos los contr oladores deben extenderse de la clase “ organizan en carpetas utilizando la conversión de la primera letra del nombre en mayúscula y tener el sufijo “C controladores. Para ayuda r a la creación de los controlares del sistema, “artisan ” para crear una nueva clase controlador de manera automática. 6.2.2. Symfony 29 Los componentes de este framework como pueden ser los sistema Wordpress 31 ó Drupal 32 . Incluso Estos componentes son librerías reutilizables escritas en 29 http://www.getsymphony.com/ 30 https://es.wikipedia.org/wiki/Sistema_de_gesti 31 https://es.wordpress.com/ 32 https://www.drupal.org/ http://mi_app/libros/listar ”, sólo bastaría crear la ruta en el servidor e interactuar con el modelo “Libro”, el código necesario sería: Ilustración 64: Ejemplo código Laravel En cuanto a la Vista, basa en “ Blade ” para el sistema de procesamiento de plantillas. Este sistema utiliza un código limpio ayudando en el desarrollo de las vistas y del uso que acelera sus accesos. ” so n archivos de texto plano que contiene todo el página con etiquetas que representan elementos o zonas a incluir en la plantilla, o vistas parciales como se conocen en otros frameworks PHP . Sin embargo, en “ elementos incrustados se o rganizan en un sólo archivo. Con esta filosofía se organización de las vistas y su rendimiento. Sobre todo cuando las vistas pueden llegar a ser muy complejas incluso con elementos anidados. En la renderización de una Vista usan dos archivos: la plantilla definiendo el HTML zonas a incluir. Un sólo archivo, la Vista, con los elementos ( partial views El Controlador permite organizar el código en clases sin tener que escribirlo todo en las oladores deben extenderse de la clase “ BaseController organizan en carpetas utilizando la conversión de la primera letra del nombre en mayúscula y tener el sufijo “C ontroller ”, facilitando la identificación del código de los r a la creación de los controlares del sistema, Laravel provee del comando ” para crear una nueva clase controlador de manera automática. framework se utilizan en un amplísimo conjunto de proyectos sistema s de manejadores de contenidos 30 (CMS) como pueden ser . Incluso Laravel utiliza componentes. Estos componentes son librerías reutilizables escritas en PHP que permiten la gestión http://www.getsymphony.com/ https://es.wikipedia.org/wiki/Sistema_de_gesti on_de_contenidos 100 ”, sólo bastaría crear la ruta en el ” para el sistema de procesamiento de plantillas. Este sistema utiliza un código limpio ayudando en el desarrollo de las vistas y del uso n archivos de texto plano que contiene todo el HTML de la página con etiquetas que representan elementos o zonas a incluir en la plantilla, o vistas . Sin embargo, en “ Blade” estos filosofía se mejora la organización de las vistas y su rendimiento. Sobre todo cuando las vistas pueden llegar a ser muy complejas incluso con elementos anidados. En la renderización de una Vista HTML global y las partial views ). El Controlador permite organizar el código en clases sin tener que escribirlo todo en las BaseController ”. Se organizan en carpetas utilizando la conversión de la primera letra del nombre en ”, facilitando la identificación del código de los provee del comando ” para crear una nueva clase controlador de manera automática. se utilizan en un amplísimo conjunto de proyectos como pueden ser que permiten la gestión
101 de diferentes tareas del sistema, como pueden ser la creación de formularios, configuración de objetos, autenticación, gestión de plantillas, etc... Permite la instalación de nuevos componentes gracias a la herramienta Composer como gestor de dependencias. Ilustración 65: Interfaz Symphony Cada capa de la infraestructura de gestión de contenidos de Symphony está compuesta por componentes distintos totalmente configurables. En sus páginas se proporcionan un conjunto de interfaces para alimentar al front-end de los datos necesarios para su presentación a través de la plantilla de la página. Desde el punto de vista del patrón MVC, se puede definir el modelo a través de las secciones y campos del framework. Las plantillas y utilidades forman las vistas y las páginas, fuentes de datos y los eventos forman parte de los controladores. Además provee de herramientas para la gestión de los usuarios de la plataforma, gestión de configuración que permite ajustar preferencias del sistema como puede ser los idiomas, etc., y gestión de extensiones que permite que se puedan añadir al sistema funcionalidad adicional de fuentes externas.
108 administra cuentas a pagar y a cobrar, incluyendo facturas, pagos, estados de cuentas, etc. Elaboración de una serie de informes necesarios para el control financiero, balances y resumen de impuestos, etc. 6.3.2. SugarCRM 37 SugarCRM se ha convertido en un estándar para las soluciones de código abierto de la Gestión de la Relación con el Cliente (CRM). La aplicación está escrita en PHP y funciona con la base de datos del Servidor MySQL y/o SQL de Microsoft. Gracias a las mejoras realizadas a la interfaz del usuario, el soporte móvil, la base del conocimiento, etc., y varios aspectos de ventas de la edición Empresarial demuestran como SugarCRM se ha enfocado en la competencia con las aplicaciones patentadas, al tiempo que aprovecha la tecnología del código abierto. SugarCRM es un sistema CRM basado en web que ofrece casi todas las características estándar de un sistema CRM. Se adapta fácilmente a cualquier entorno empresarial, ofreciendo una alternativa más flexible que las aplicaciones propietarias. La arquitectura de código abierto de SugarCRM permite a las empresas personalizar e integrar los procesos de negocio de cara al cliente con el fin de construir y mantener relaciones más rentables con mayor facilidad. Las características más destacables de este paquete software son: • Gestión de Ventas: Contacto y gestión de oportunidades para compartir información a nuevos negocios. Gestión de cuentas para todas las interacciones con los clientes. • Automatización de marketing: Gestión de clientes potenciales para el seguimiento y la captación de nuevos clientes potenciales. Marketing por correo electrónico con ofertas relevantes. Gestión de la campaña para las campañas de seguimiento a través de múltiples canales. Informes sobre Campañas para analizar la eficacia de las actividades de marketing. • Colaboración: Gestión de la actividad de correos electrónicos, tareas, llamadas y reuniones. • Administración: Permite la gestión de usuarios, opiniones y diseños en una única ubicación. En la siguiente imagen se muestra la pantalla de inicio de SugarCRM: 37 https://www.sugarcrm.com/es/micro
109 Ilustración 68: Interfaz SugarCRM 6.3.3. SuiteCRM 38 SuiteCRM procede del sistema SugarCRM, desarrollado y mantenido por SalesAgility para proporcionar una aplicación código abierto. Contiene un directorio de extensiones donde hay mejoras disponibles gratuitas y de pago. El proyecto mantiene "suitecrmondemand.com", un software como un servicio postventa para los usuarios que buscan un despliegue rápido y sin necesidad de mantenimiento. SuiteCRM viene pre empaquetado con los siguientes módulos comunitarios: • Gestión de Ventas: administración de productos • Gestión de clientes potenciales, clientes y usuarios. • Contiene un módulo de agendas, contratos y plantillas en PDF. • Gestión Financiera: Módulo de facturas y contratos. • Gestión de control de flujos donde los nuevos usuarios podrán producir flujos de trabajo significativas en cuestión de minutos. • Generación de informes avanzada con exportación en dashlets o en CSV, HTML 38 https://suitecrm.com/
o PDF . Facilita la creación de informes con una interfaz de usuario intuitiva y potente con generación de gráficos y tablas. • Proporciona un componente con integridad entre Joomla y permite a los usuarios desplegar un portal fácil de usar para la gestión de SuiteCRM casos a través de una interfaz web amigable. El Portal es un componente de Joomla para comunicarse con • Gestión de agendas y de eventos para eventos de tamaño medio, como seminarios y webinars para realizar un seguimiento de cuántos delegados van a asistir a través del envío de emailing. Esta desarrollado bajo el patrón Modelo recuperación de los datos en objetos, admitiendo la persistencia y la edición de registros. Los controladores proporcionan la salida de datos y de estado a la vista. . Facilita la creación de informes con una interfaz de usuario intuitiva y potente con generación de gráficos y tablas. Proporciona un componente con integridad entre Joomla y permite a los usuarios desplegar un portal fácil de usar para la gestión de casos a través de una interfaz web amigable. El Portal es un Joomla arquitectura cohesiva que utiliza la API REST para comunicarse con SuiteCRM. Gestión de agendas y de eventos para eventos de tamaño medio, como webinars . Permite la monitorización de los invitados que aceptan para realizar un seguimiento de cuántos delegados van a asistir a través del envío desarrollado bajo el patrón Modelo – Vista – Controlador ya que permite la recuperación de los datos en objetos, admitiendo la persistencia y la edición de registros. Los controladores proporcionan la salida de datos y de estado a la vista. Ilustración 69: Interfaz SuiteCRM 110 . Facilita la creación de informes con una interfaz de usuario intuitiva y Proporciona un componente con integridad entre Joomla y SuiteCRM que permite a los usuarios desplegar un portal fácil de usar para la gestión de casos a través de una interfaz web amigable. El Portal es un arquitectura cohesiva que utiliza la API REST SuiteCRM Gestión de agendas y de eventos para eventos de tamaño medio, como . Permite la monitorización de los invitados que aceptan para realizar un seguimiento de cuántos delegados van a asistir a través del envío Controlador ya que permite la recuperación de los datos en objetos, admitiendo la persistencia y la edición de registros. Los controladores proporcionan la salida de datos y de estado a la vista.
111 6.3.4. Dolibarr 39 Dolibarr ERP & CRM es un software completamente modular para gestión de PYMES o profesionales independientes. Al ser modular permite la activación de los módulos necesarios para ajustarse a las necesidades del software. Es un proyecto de código abierto desarrollado bajo PHP. Dolibarr proporciona una serie de mejoras donde se desmarca de otras aplicaciones de gestión empresarial por el hecho de que se hace todo lo posible por ser: • Sencillo de instalar, con asistentes para los que ignoran como instalar un servidor Web. • Sencillo de usar ya que ofrece una serie de funciones modulares para no sobrecargar los menús, con informaciones claras y concisas. • Sencillo de desarrollar, ya que no contiene frameworks pesados. De hecho, integra su propio patrón de diseño para permitir a cualquier desarrollador empezar a trabajar inmediatamente, sin tener conocimiento de otra cosa que no sea PHP. • Catálogo de productos y servicios con administración del Stock. • Gestión de clientes, proveedores y clientes potenciales permitiendo el envío de emailing a todo tipo de clientes o usuarios. • Gestión financiera: Gestión de facturación, de pagos y de cuentas bancarias. • Gestión de usuarios y administración de permisos. • Agenda compartida que permite enviar los eventos Dolibarr directamente a Webcalendar. • Gestión de vacaciones de empleados o usuarios. • Informes y estadísticas, con salidas en los formatos CVS o Excel. Utiliza el patrón Modelo – Vista – Controlador mediante objetos que contienen las operaciones relacionadas a los datos y los controladores que manejan los datos y le proporciona los datos necesarios a la vista. 39 http://www.dolibarr.es/
6.3.5. Conclusiones de esta sección Las cuatro soluciones presentadas son muy buenas herramientas de código abierto desarrollado en PHP . Comparando los requisitos del usuario y del software entre las soluciones mencionadas, se puede concluir que las herramientas son las que más se ajustan a ellos. La solución manufactureras de pr oductos y las características de SuiteCRM en su versión gratuita. Para el desarrollo del proyecto se optará por la opción conocido por mí, además supone un reto el conectarlo con la aplicación esto está ya desarrollado por la otra solución. 6.4. Diseño Arquitectónico 6.4.1. Interconexión de las plataformas Como se ha visto en el apartado de análisis del presente documento, se pretende que desde la aplicación Web se acceda a la ficha d lo que para poder conseguir este objetivo, se hace necesario interconectar ambas plataformas. En la actualidad el Dolibarr Joomla, lo que convierte a este hit Ilustración 70: Interfaz Dolibarr Conclusiones de esta sección Las cuatro soluciones presentadas son muy buenas herramientas de código abierto . Comparando los requisitos del usuario y del software entre las soluciones mencionadas, se puede concluir que las herramientas SuiteCRM son las que más se ajustan a ellos. La solución OpenTaps está más orientada a empresas oductos y las características de SugarCRM están soportadas por gratuita. Para el desarrollo del proyecto se optará por la opción Dolibarr porque es el más conocido por mí, además supone un reto el conectarlo con la aplicación ya desarrollado por la otra solución. Diseño Arquitectónico Interconexión de las plataformas Como se ha visto en el apartado de análisis del presente documento, se pretende que desde la aplicación Web se acceda a la ficha d e los clientes registrados en el lo que para poder conseguir este objetivo, se hace necesario interconectar ambas Dolibarr no posee esta capacidad de conectarse con el lo que convierte a este hit o en fundamental, para conseguir el resultado 112 Las cuatro soluciones presentadas son muy buenas herramientas de código abierto . Comparando los requisitos del usuario y del software entre las SuiteCRM y Dolibarr orientada a empresas están soportadas por porque es el más conocido por mí, además supone un reto el conectarlo con la aplicación Joomla ya que Como se ha visto en el apartado de análisis del presente documento, se pretende que e los clientes registrados en el CRM, por lo que para poder conseguir este objetivo, se hace necesario interconectar ambas no posee esta capacidad de conectarse con el framework o en fundamental, para conseguir el resultado
deseado. 6.4.1.1. Plataforma Web: Joomla La plataforma Joomla en su paquete original no da soporte a acceso de datos procedentes de fuentes de tipo de comunicación. Pero proporciona un mecanismo por el cual permite la autenticación a zona privada a través de un servicio permitiría que el usuario se autenti comunicárselo a la plataforma Web unido a la información necesaria para que esta plataforma la presente e incluso realizar acciones mientras tenga el usuario una sesión abierta. Para poder realizar la ape rtura de sesiones que proporciona autenticarse en esta, por lo que si una aplicación externa accede a las sesiones tiene que usar un usuario registrado en la plataforma 6.4.1.2. Plataforma CRM: Dolibarr Uno de los módulo s que posee bajo la tecnología SOAP . Este módulo permite previa activación a acceder a ciertos datos de la plataforma. Al ac tivar el módulo, éste provee de una clave ( consumir los mensajes SOAP que admite la plataforma. Algunos de los métodos que tiene el paquete por defecto de • Autenticación de través de la • Ac ceso al Gestor al administrador de eventos de la plataforma. • Posibilidad de administrar los contactos a la plataforma, ya sean de clientes o de proveedores. Plataforma Web: Joomla en su paquete original no da soporte a acceso de datos procedentes de fuentes de tipo Webservices , ni permite la autenticación por esta forma de comunicación. Pero proporciona un mecanismo por el cual permite la autenticación a zona privada a través de un servicio HTTP a un servidor externo. Gracias a esta ventaja, permitiría que el usuario se autenti case contra la aplicación CRM , si es correcta puede comunicárselo a la plataforma Web unido a la información necesaria para que esta plataforma la presente e incluso realizar acciones mientras tenga el usuario una sesión rtura de sesiones que proporciona Joomla , un usuario ha de autenticarse en esta, por lo que si una aplicación externa accede a las sesiones tiene que usar un usuario registrado en la plataforma Joomla. Plataforma CRM: Dolibarr s que posee Dolibarr es el uso de ciertos Webservices . Este módulo permite previa activación a acceder a ciertos Ilustración 71: Clave WebService Dolibarr tivar el módulo, éste provee de una clave ( key ) que es necesaria para poder consumir los mensajes SOAP que admite la plataforma. Algunos de los métodos que tiene el paquete por defecto de Dolibarr son: Autenticación de través de la key, login, password. ceso al Gestor al administrador de eventos de la plataforma. Posibilidad de administrar los contactos a la plataforma, ya sean de clientes o de 113 en su paquete original no da soporte a acceso de datos , ni permite la autenticación por esta forma de comunicación. Pero proporciona un mecanismo por el cual permite la autenticación a a un servidor externo. Gracias a esta ventaja, , si es correcta puede comunicárselo a la plataforma Web unido a la información necesaria para que esta plataforma la presente e incluso realizar acciones mientras tenga el usuario una sesión , un usuario ha de autenticarse en esta, por lo que si una aplicación externa accede a las sesiones tiene que Webservices desarrollados . Este módulo permite previa activación a acceder a ciertos ) que es necesaria para poder consumir los mensajes SOAP que admite la plataforma. Algunos de los métodos que Posibilidad de administrar los contactos a la plataforma, ya sean de clientes o de
114 • Mecanismos acceder a la situación financiera de la empresa y los contratos generados en la misma. Estos elementos son muy susceptibles de ser atacados por posibles intrusos, ya que, al estar publicados por defecto en la plataforma, los convierte en una entrada pública ante un ataque intencionado, por lo que se recomienda, si se van a hacer uso de ellos de renombrarlos. Unido a esto, SOAP no es la mejor solución, ya que es una estructura basada en XML, cada objeto puede tener métodos definidos por el programador, por lo que su uso no es estándar. 6.4.1.3. Conclusiones El método SOAP es parte de los conocidos como Webservices, y cómo se puede apreciar en el análisis de Joomla, ésta no da soporte a autenticación bajo esta técnica. Lo que sí admite es que sea a través de un recurso Web que utilice la especificación de HTTP para este menester. Esto obliga a que se desarrolle una solución REST para la autenticación y el intercambio de comunicación entre ambas plataformas. Además que se pretende cubrir una de las necesidades de la comunidad de desarrolladores de Dolibarr, que es la de implementar una solución para arquitectura REST.
115 6.5. REST La Transferencia de Estado Representacional (Representational State Transfer) o REST 40 es un estilo de arquitectura software para sistemas distribuidos. El término se originó en el año 2000, en una tesis doctoral sobre la web escrita por el Doctor Roy Fielding 41 , uno de los principales autores de la especificación del protocolo HTTP y ha pasado a ser ampliamente utilizado por la comunidad de desarrollo. Si bien el término REST se refería originalmente a un conjunto de principios de arquitectura, en la actualidad se usa en el sentido más amplio para describir cualquier interfaz entre sistemas que utilice directamente HTTP para obtener datos o indicar la ejecución de operaciones sobre los datos, en cualquier formato (XML, JSON, etc.) sin las abstracciones adicionales de los protocolos basados en patrones de intercambio de mensajes, como por ejemplo SOAP. Los sistemas que siguen los principios REST se denominan, con frecuencia, RESTful. Un concepto importante en REST es la existencia de recursos, que pueden ser accedidos utilizando un identificador global. Para manipular estos recursos, los componentes de la red, clientes y/o servidores, se comunican a través de una interfaz estándar HTTP e intercambian representaciones de estos recursos. Así, una aplicación puede interactuar con un recurso conociendo el identificador del recurso y la acción requerida, por lo tanto, no necesita conocer si existe cualquier obstáculo entre ella y el servidor que almacena la información. La aplicación, sin embargo, debe comprender el formato de la información devuelta, que es por lo general un documento HTML o XML, aunque también puede ser una imagen o cualquier otro contenido. REST afirma que la web ha disfrutado de escalabilidad como resultado de una serie de diseños fundamentales clave. Existen tres niveles de calidad a la hora de aplicar REST en el desarrollo de una aplicación web: • Un conjunto de operaciones bien definidas que se aplican a todos los recursos de información: HTTP en sí define un conjunto pequeño de operaciones para manipular los recursos: ▪ GET: Para consultar y leer recursos ▪ POST: Para crear recursos ▪ PUT: Para editar recursos ▪ DELETE: Para eliminar recursos. ▪ PATCH: Para editar partes concretas de un recurso. 40 REST: https://es.wikipedia.org/wiki/Representational_State_Transfer 41 Fielding, Roy Thomas (2000). "Architectural Styles and the Design of Network-based Software Architectures". Dissertation. University of California, Irvine.
Además el protocolo conocer si una operación se ha realizado con éxito o en caso contrario, una descripción del error. Para conseguir una solución completamente qu e hacer un correcto uso de estos códigos. Unido a lo anterior también provee de mecanismos para la aceptación de tipos de contenido, ya que HTTP recurso, pudiendo indicar varios en orden de preferencia cabecera Accept. Un protocolo cliente/servidor sin estado: cada mensaje información necesaria para comprender la petición. Como resultado, ni el cliente ni el servidor necesitan recordar ningún estado de las mensajes. Sin embargo, en la práctica, muchas aplicaciones basadas en utilizan cookies y otros mecanismos para mantener el estado de la sesión. • Una sintaxis universal cada re curso es direccionable únicamente a través de su reglas básicas para ponerle nombre a la ◦ Los nombres de evitarse usar verbos en ellos. ◦ Deben ser únicas, no debemos t mismo recurso. ◦ Deben ser independiente de formato. ◦ Deben mantener una jerarquía lógica. ◦ Los filtrados de información de un recurso no se hacen en la • El uso de hipermedia transiciones de estado de la aplicación: la representación de este estado son típicamente HTML recurso REST a muchos otr de registros u otra infraestructura adicional. Además el protocolo HTTP pone a disposición los códigos de estado vital para conocer si una operación se ha realizado con éxito o en caso contrario, una descripción del error. Para conseguir una solución completamente e hacer un correcto uso de estos códigos. Unido a lo anterior también provee de mecanismos para la aceptación de tipos de HTTP permite especificar en qué formato se desea recibir el recurso, pudiendo indicar varios en orden de preferencia , para ello Un protocolo cliente/servidor sin estado: cada mensaje HTTP información necesaria para comprender la petición. Como resultado, ni el cliente ni el servidor necesitan recordar ningún estado de las comunicaciones entre mensajes. Sin embargo, en la práctica, muchas aplicaciones basadas en y otros mecanismos para mantener el estado de la sesión. Una sintaxis universal URI para identificar los recursos. En un sistema curso es direccionable únicamente a través de su URI reglas básicas para ponerle nombre a la URI de un recurso: Los nombres de URI no deben implicar una acción, por lo tanto debe evitarse usar verbos en ellos. Deben ser únicas, no debemos t ener más de una URI para identificar un Deben ser independiente de formato. Deben mantener una jerarquía lógica. Los filtrados de información de un recurso no se hacen en la hipermedia , tanto para la información de la aplicación como para las transiciones de estado de la aplicación: la representación de este estado son o XML . Como resultado de esto, es posible navegar de un a muchos otr os, simplemente siguiendo enlaces sin requerir el uso de registros u otra infraestructura adicional. Ilustración 72: Formato URI 116 pone a disposición los códigos de estado vital para conocer si una operación se ha realizado con éxito o en caso contrario, una descripción del error. Para conseguir una solución completamente REST tiene Unido a lo anterior también provee de mecanismos para la aceptación de tipos de permite especificar en qué formato se desea recibir el , para ello se utiliza la contiene toda la información necesaria para comprender la petición. Como resultado, ni el cliente comunicaciones entre mensajes. Sin embargo, en la práctica, muchas aplicaciones basadas en HTTP y otros mecanismos para mantener el estado de la sesión. para identificar los recursos. En un sistema REST, URI . Existen varias no deben implicar una acción, por lo tanto debe para identificar un Los filtrados de información de un recurso no se hacen en la URI. , tanto para la información de la aplicación como para las transiciones de estado de la aplicación: la representación de este estado son . Como resultado de esto, es posible navegar de un os, simplemente siguiendo enlaces sin requerir el uso
117 Ilustración 73: Diagrama REST Se va a implementar una solución para Dolibarr que cumpla con todos estos requisitos de calidad. Además, para aumentar la seguridad del componente REST y así evitar que accesos no deseados se pueden aplicar métodos de encriptación a nivel de datos y a nivel de acceso a los recursos. Existen implementaciones que dada una semilla y una combinación con los datos de la petición HTTP genera un código que al llegar al servidor se chequea para comprobar su validez, como seguridad extra, ya que ambos tienen que coincidir. Para alcanzar la solución, se implementará una solución REST en la plataforma Dolibarr que sea el recurso necesario para que Joomla pueda autenticarse y recuperar los datos, además de que cumpla con los requisitos de calidad exigidos. Un punto, muy importante son las sesiones en la plataforma Joomla. La sesión se mantiene activa gracias a que un usuario de su plataforma está en modo activo, por lo que esta exigencia tiene que verse abordada. El usuario de la plataforma Joomla que se vaya a autenticar, accederá al CRM con los datos de autenticación gracias a los recursos REST. Si la autenticación sobre el servidor es correcta, este le responderá con un objeto conteniendo los datos asociados a ese usuario. Antes de abrir una sesión en la plataforma Joomla, ésta comprueba que exista un usuario activo, sino lo estuviera daría un error desde su motor. Para evitarlo, en el momento de que la autenticación con REST se reciba como correcta, se crearía un usuario desde los mismos datos que retorna el REST. De esta manera se puede abrir una sesión permitiendo que el motor de Joomla se encargue de la gestión de sesiones. El siguiente diagrama muestra gráficamente el diagrama de secuencias:
Para la definición de los contenidos el esto. Se pueden crear categorías y asignarles artículos a ellos. La siguiente ilustración muestra esta herramienta: Para la definición de los contenidos el CMS provee de una herramienta excelente para esto. Se pueden crear categorías y asignarles artículos a ellos. La siguiente ilustración Ilustración 78: Gestor Idiomas Joomla Ilustración 79: Gestor de Artículos 124 provee de una herramienta excelente para esto. Se pueden crear categorías y asignarles artículos a ellos. La siguiente ilustración
Como se puede apreciar la herramienta es muy completa a la hora de poder definir los a rtículos del sitio Web. Se va a hacer mención especial a la página de contactar ya que requiere un análisis debido a la importancia que los clientes puedan conocer donde ubicado el centro: Como se puede apreciar la herramienta es muy completa a la hora de poder definir los rtículos del sitio Web. Se va a hacer mención especial a la página de contactar ya que requiere un análisis debido a la importancia que los clientes puedan conocer donde Ilustración 80: Gestor de Artículos Joomla 125 Como se puede apreciar la herramienta es muy completa a la hora de poder definir los rtículos del sitio Web. Se va a hacer mención especial a la página de contactar ya que requiere un análisis debido a la importancia que los clientes puedan conocer donde está
Ilustración 81: Interfaz Contactar Web 126
Así mismo, se definen una serie de características secundarias, que ayudan a mejorar el SEO, entre las que se destacan • Definición de página 404 personalizada: Para esto, la plataforma permite que se cree un artículo sin categoría y con el mens plantilla podemos establecerlas: • Resolución WWW : Para que el posicionamiento sea mejor, hay que definir que la web se puede acceder con disponible en la plataforma hay que añadir: • Configuración de robots.txt del proyecto un fichero llamado así con la siguiente estructura: Ilustración una serie de características secundarias, que ayudan a mejorar el entre las que se destacan : Definición de página 404 personalizada: Para esto, la plataforma permite que se cree un artículo sin categoría y con el mens aje de error. En la configuración de la plantilla podemos establecerlas: : Para que el posicionamiento sea mejor, hay que definir que la web se puede acceder con o sin www, para ello en el fichero .h disponible en la plataforma hay que añadir: robots.txt : Para esto es necesario añadir en el directorio raíz proyecto un fichero llamado así con la siguiente estructura: Ilustración 82: Configuración Error HTTP 404 Ilustración 83: Fichero .htacess Ilustración 84: Fichero robots.txt 127 una serie de características secundarias, que ayudan a mejorar el Definición de página 404 personalizada: Para esto, la plataforma permite que se aje de error. En la configuración de la : Para que el posicionamiento sea mejor, hay que definir que la .h tacess que está : Para esto es necesario añadir en el directorio raíz
128 Con este comando le indicamos los directorios que los motores no deben incluir sus búsquedas ya que no contienen artículos que sean indexados. • Mapa del sitio XML: Para esto la plataforma cuenta con una extensión que es capaz de generar él para de sitio para que sea accesible a los usuarios o exportarlo a formato XML. • Reescritura URL: La plataforma nos provee de la posibilidad de que las URL sean amigables, para ello hay que activar el siguiente parámetro dentro de la configuración de la plataforma. • Permitir interconectividad con redes sociales, el framework en su versión por defecto permite la interconexión con las redes sociales Facebook, Twitter y Google +. El diagrama de clases resumido de este framework se puede visualizar en la siguiente ilustración:
129 Para la adaptación de la solución REST para Joomla, requiere añadir un nuevo módulo al framework que permita la autenticación desde una fuente externa a la plataforma. El módulo contendrá: • Plugin será el que recoja los datos desde la vista de la pantalla de administrador del framework, donde se van a definir la URL del recurso generado por el Dolibarr y la clave de acceso. • Componente: Es el encargado de recoger los datos de autenticación de usuarios desde el front-end del sitio, construir la petición de HTTP y Ilustración 85: Diagrama clases Joomla
gestiona la respuesta recibida. Hay que informar al usuario del resultado del intento de acceso y los datos para el caso que acceso correcto. En la ilustración siguiente se puede visualizar el prototipo para la interfaz del para el administrador del framework El diagrama de secuencias que represente las diferentes acciones que se han de producir en la plataforma Joomla para que el proce en la siguiente ilustración: Ilustración gestiona la respuesta recibida. Hay que informar al usuario del resultado del intento de acceso y los datos para el caso que acceso correcto. En la ilustración siguiente se puede visualizar el prototipo para la interfaz del framework : El diagrama de secuencias que represente las diferentes acciones que se han de producir para que el proce so de autenticación sea el correcto se muestra Ilustración 87: Diagrama de secuencias autenticación General Ilustración 86: Prototipo Plugin Joomla 130 gestiona la respuesta recibida. Hay que informar al usuario del resultado del intento de acceso y los datos para el caso que acceso correcto. En la ilustración siguiente se puede visualizar el prototipo para la interfaz del plugin El diagrama de secuencias que represente las diferentes acciones que se han de producir so de autenticación sea el correcto se muestra
131 El diagrama de control de flujo que refleje las distintas acciones en ambos sistemas es: Ilustración 88: Diagrama de Flujos completo de autenticación Con esta solución se consigue que el mantenimiento de los usuarios, que accedan a la zona privada, sea responsabilidad únicamente del Dolibarr. Esto proporciona una gran ventaja, ya que sólo hay que administrar estos usuarios en uno de los dos frameworks.
132 6.7. Diseño de la aplicación CRM En el “Anexo IV: Dolibarr” se describirá el funcionamiento con una pequeña descripción de los módulos con los que cuenta, y las normativas de desarrollo de software publicadas por la comunidad de desarrolladores de Dolibarr. En las siguientes ilustraciones se mostrarán los diagramas de clases de los principales objetos del framework: La idea principal para este apartado es la de realizar el diseño de las necesidades que el Dolibarr por sí mismo no cubre. La personalización al tipo de negocio es uno de los dos puntos fundamentales que se van a diseñar en este apartado. Los detalles de la lógica de negocio se encuentran en el anexo “Anexo I: Servicios, Bonos y precios”. La idea de personalizar el software, para FreeBody, es la de adaptarlo para que funcione tal y como lo hacen sin sistema, así será más sencillo el aprendizaje del manejo del software por parte del personal del centro de estética. Bajo mi experiencia personal, he de decir que la manera en la que abordar estas tareas es fundamental para que los usuarios utilicen el software. Si se implementa una herramienta demasiado compleja y rígida, los usuarios no querrán usarlo, por la sencilla razón de que haciéndolo a papel es más rápido. Se trata de realizar una solución ágil que dé respuestas rápidas y que las acciones que tengan que realizar sean las mínimas posibles. La agenda, como ya se mencionó en apartados anteriores, es fundamental ya que en ella se almacenan gran cantidad de datos que son utilizados por la empresa para infinidad de utilidades. A la hora de citar a un cliente, se recoge los datos de este y se anota en la Ilustración 89: Diagrama de clases de Dolibarr
133 agenda correspondiente dependiendo de los servicios que el cliente se vaya a dar o se haya dado. Además, esto se extrapola a los clientes improvisados, que acceden al centro sin cita previa. Si durante la cita, el cliente ha utilizado sesiones de los bonos, que la empresa vende, estos se apuntan para dejar constancia de esta consumición. Para aprovechar el encapsulamiento de la plataforma se va a utilizar el módulo de agenda por defecto del Dolibarr. En la instalación, por defecto, da soporte a tener una sola agenda en el sistema, por lo tanto, hay que adaptar la solución a este requerimiento. Revisando la cantidad de servicios que hay dentro de cada tipo de servicios, para que a la hora de seleccionar un servicio por parte de un usuario, no se vea perjudicado porque el listado sea muy extenso, incluso con posibles scrollbars, y menos claro, hay que clasificar los productos como ilustra el siguiente diagrama: Ilustración 90: Diagrama clases Producto Dolibarr Para organizar los productos por tipos y para adaptar, hay que modificar la estructura de productos que trae por defecto el Dolibarr. Para adaptar la solución a los bonos que la empresa vende, que se describen en el “Anexo I: Servicios, Bonos y precios”, para Dolibarr se va a implementar un nuevo módulo. Para ello se presentarán los diagramas de clases relacionados con los objetos del Dolibarr y cómo añadir los bonos a esta solución. Para empezar, se ilustra la relación que tiene que haber con el objeto productos y los bonos:
Prototipo Crear Elemento de Menú Nombre Crear Elemento de Menú Creado por Rubén Meré Casos de Uso Crear Elemento de Menú Ilustración Prototipo Crear Elemento de Menú Crear Elemento de Menú Identificador Rubén Meré Fecha Crear Elemento de Menú Ilustración 190: Prototipo Crear Elemento de Menú 236 P11 02/02/2015
Prototipo Listar Elementos de Menú Nombre Listar Elementos de Menú Creado por Rubén Meré Casos de Uso Listar Elementos de Menú Ilustración Prototipo Listar Elementos de Menú Listar Elementos de Menú Identificador Rubén Meré Fecha Listar Elementos de Menú Ilustración 191: Prototipo Listar Elementos de Menú 237 P12 02/02/2015
Prototipo Visualizar Elemento de Menú Nombre Visualizar Elemento de Menú Creado por Rubén Meré Casos de Uso Visualizar Elemento de Ilustración Prototipo Visualizar Elemento de Menú Visualizar Elemento de Menú Identificador Rubén Meré Fecha Visualizar Elemento de Menú Ilustración 192: Prototipo Visualizar Elemento de Menú 238 P13 02/02/2015
Prototipo Modificar Elemento de Menú Nombre Modificar Elemento de Menú Creado por Rubén Meré Casos de Uso Modificar Ilustración Prototipo Modificar Elemento de Menú Modificar Elemento de Menú Identificador Rubén Meré Fecha Modificar Elemento de Menú Ilustración 193: Prototipo Modificar Elemento de Menú 239 P14 02/02/2015
Prototipo Eliminar Elemento de Menú Nombre Eliminar Elemento de Menú Creado por Rubén Meré Casos de Uso Eliminar Elemento de Menú Ilustración Prototipo Eliminar Elemento de Menú Eliminar Elemento de Menú Identificador Rubén Meré Fecha Eliminar Elemento de Menú Ilustración 194: Prototipo Eliminar Elemento de Menú 240 P15 02/02/2015
Prototipo Asociar Elemento de Menú a Menú Nombre Asociar Elemento de Menú a Menú Creado por Rubén Meré Casos de Uso Asociar Elemento de Menú a Menú Ilustración Prototipo Asociar Elemento de Menú a Menú Asociar Elemento de Menú a Menú Identificador Rubén Meré Fecha Asociar Elemento de Menú a Menú Ilustración 195: Prototipo Asociar Elemento de Menú a Menú 241 Identificador P16 02/02/2015
Prototipo Añadir Idioma Nombre Añadir Idioma Creado por Rubén Meré Casos de Uso Añadir Idioma Prototipo Añadir Idioma Añadir Idioma Identificador Rubén Meré Fecha Añadir Idioma Ilustración 196: Prototipo Añadir Idioma 242 P17 02/02/2015
Prototipo Listar Idiomas Nombre Listar Idiomas Creado por Rubén Meré Casos de Uso Listar Idiomas Prototipo Listar Idiomas Listar Idiomas Identificador Rubén Meré Fecha Listar Idiomas Ilustración 197: Prototipo Listar Idiomas 243 P18 02/02/2015
Prototipo Visualizar Idioma Nombre Visualizar Idioma Creado por Rubén Meré Casos de Uso Visualizar Idioma Prototipo Visualizar Idioma Visualizar Idioma Identificador Rubén Meré Fecha Visualizar Idioma Ilustración 198: Prototipo Visualizar Idioma 244 P19 02/02/2015
Prototipo Modificar Idioma Nombre Modificar Idioma Creado por Rubén Meré Casos de Uso Modificar Idioma Prototipo Modificar Idioma Modificar Idioma Identificador Rubén Meré Fecha Modificar Idioma Ilustración 199: Prototipo Modificar Idioma 245 P20 02/02/2015
Prototipo Añadir Artículo Nombre Añadir Artículo Creado por Rubén Meré Casos de Uso Añadir Artículo Prototipo Añadir Artículo Añadir Artículo Identificador Rubén Meré Fecha Añadir Artículo Ilustración 206: Prototipo Añadir Artículo 252 P27 03/02/2015
Prototipo Listar Artículos Nombre Listar Artículos Creado por Rubén Meré Casos de Uso Listar Artículos Prototipo Listar Artículos Listar Artículos Identificador Rubén Meré Fecha Listar Artículos Ilustración 207: Prototipo Listar Artículos 253 P28 03/02/2015
Prototipo Visualizar Artículo Nombre Visualizar Artículo Creado por Rubén Meré Casos de Uso Visualizar Artículo Prototipo Visualizar Artículo Visualizar Artículo Identificador Rubén Meré Fecha Visualizar Artículo Ilustración 208: Prototipo Visualizar Artículo 254 P29 03/02/2015
Prototipo Modificar Artículo Nombre Modificar Artículo Creado por Rubén Meré Casos de Uso Modificar Artículo Prototipo Modificar Artículo Modificar Artículo Identificador Rubén Meré Fecha Modificar Artículo Ilustración 209: Prototipo Modificar Artículo 255 P30 03/02/2015
Prototipo Eliminar Artículo Nombre Eliminar Artículo Creado por Rubén Meré Casos de Uso Eliminar Artículo Prototipo Eliminar Artículo Eliminar Artículo Identificador Rubén Meré Fecha Eliminar Artículo Ilustración 210: Prototipo Eliminar Artículo 256 P31 03/02/2015
Prototipo Publicar Artículos Nombre Publicar Artículos Creado por Rubén Meré Casos de Uso Publicar Artículos Prototipo Publicar Artículos Publicar Artículos Identificador Rubén Meré Fecha Publicar Artículos Ilustración 211: Prototipo Publicar Artículos 257 P32 03/02/2015
Prototipo Despublicar Artículos Nombre Despublicar Artículos Creado por Rubén Meré Casos de Uso Despublicar Artículos Ilustración Prototipo Despublicar Artículos Despublicar Artículos Identificador Rubén Meré Fecha Despublicar Artículos Ilustración 212: Prototipo Despublicar Artículos 258 P33 03/02/2015
Prototipo Asociar Artículo a Familia de Artículos Nombre Asociar Artículo a Familia de Artículos Creado por Rubén Meré Casos de Uso Asociar Artículo a Familia de Artículos Ilustración Prototipo Asociar Artículo a Familia de Artículos Asociar Artículo a Familia de Artículos Identificador Rubén Meré Fecha Asociar Artículo a Familia de Artículos Ilustración 213: Prototipo Asociar Artículo a Familia de Artículos 259 Identificador P34 03/02/2015
Prototipo Añadir Grupo de Usuarios Nombre Añadir Grupo de Usuarios Creado por Rubén Meré Casos de Uso Añadir Grupo de Usuarios Ilustración Prototipo Añadir Grupo de Usuarios Añadir Grupo de Usuarios Identificador Rubén Meré Fecha Añadir Grupo de Usuarios Ilustración 214: Prototipo Añadir Grupo de Usuarios 260 P35 04/02/2015
Prototipo Listar Grupos de Usuarios Nombre Listar Grupos de Usuarios Creado por Rubén Meré Casos de Uso Listar Grupos de Ilustración Prototipo Listar Grupos de Usuarios Listar Grupos de Usuarios Identificador Rubén Meré Fecha Listar Grupos de Usuarios Ilustración 215: Prototipo Listar Grupos de Usuarios 261 P36 04/02/2015
Prototipo Visualizar Usuario Nombre Visualizar Usuario Creado por Rubén Meré Casos de Uso Visualizar Usuario Prototipo Visualizar Usuario Visualizar Usuario Identificador Rubén Meré Fecha Visualizar Usuario Ilustración 222: Prototipo Visualizar Usuario 268 P44 04/02/2015
Prototipo Modificar Usuario Nombre Modificar Usuario Creado por Rubén Meré Casos de Uso Modificar Usuario Prototipo Modificar Usuario Modificar Usuario Identificador Rubén Meré Fecha Modificar Usuario Ilustración 223: Prototipo Modificar Usuario 269 P45 04/02/2015
Prototipo Eliminar Usuario Nombre Eliminar Usuario Creado por Rubén Meré Casos de Uso Eliminar Usuario Prototipo Eliminar Usuario Eliminar Usuario Identificador Rubén Meré Fecha Eliminar Usuario Ilustración 224: Prototipo Eliminar Usuario 270 P46 04/02/2015
Prototipo Añadir Plantilla Nombre Añadir Plantilla Creado por Rubén Meré Casos de Uso Añadir Plantilla Prototipo Añadir Plantilla Añadir Plantilla Identificador Rubén Meré Fecha Añadir Plantilla Ilustración 225: Prototipo Añadir Plantilla 271 P47 04/02/2015
Prototipo Listar Plantillas Nombre Listar Plantillas Creado por Rubén Meré Casos de Uso Listar Plantillas Prototipo Listar Plantillas Listar Plantillas Identificador Rubén Meré Fecha Listar Plantillas Ilustración 226: Prototipo Listar Plantillas 272 P48 04/02/2015
Prototipo Visualizar Plantilla Nombre Visualizar Plantilla Creado por Rubén Meré Casos de Uso Visualizar Plantilla Plantilla Visualizar Plantilla Identificador Rubén Meré Fecha Visualizar Plantilla Ilustración 227: Prototipo Visualizar Plantilla 273 P49 04/02/2015
Prototipo Modificar Plantilla Nombre Modificar Plantilla Creado por Rubén Meré Casos de Uso Modificar Plantilla Prototipo Modificar Plantilla Modificar Plantilla Identificador Rubén Meré Fecha Modificar Plantilla Ilustración 228: Prototipo Modificar Plantilla 274 P50 04/02/2015
Prototipo Publicar por Posiciones los elementos Nombre Publicar por posiciones los elementos Creado por Rubén Meré Casos de Uso Publicar por posiciones los elementos Ilustración Prototipo Publicar por Posiciones los elementos Publicar por posiciones los elementos Identificador Rubén Meré Fecha Publicar por posiciones los elementos Ilustración 229: Prototipo Publicar por Posiciones los elementos 275 Identificador P51 04/02/2015
Prototipo Modificar aspectos de los elementos Nombre Modificar aspectos de los elementos Creado por Rubén Meré Casos de Uso Modificar aspectos de los elementos Ilustración Prototipo Modificar aspectos de los elementos Modificar aspectos de los elementos Identificador Rubén Meré Fecha Modificar aspectos de los elementos Ilustración 230: Prototipo Modificar aspectos de los elementos 276 Identificador P52 04/02/2015
Prototipo Listar las Posiciones los elementos Nombre Listar las posiciones los elementos Creado por Rubén Meré Casos de Uso Listar las posiciones los elementos Ilustración Prototipo Listar las Posiciones los elementos Listar las posiciones los elementos Identificador Rubén Meré Fecha Listar las posiciones los elementos Ilustración 231: Prototipo Listar las Posiciones los elementos 277 Identificador P53 04/02/2015
Prototipo Modificar Clientes Nombre Modificar Clientes Creado por Rubén Meré Casos de Uso Modificar Clientes Prototipo Modificar Clientes Modificar Clientes Identificador Rubén Meré Fecha Modificar Clientes Ilustración 236: Prototipo Modificar Clientes 284 Identificador C04 05/02/2015
Prototipo Asociar Cliente a usuario Nombre Asociar Cliente a usuario Creado por Rubén Meré Casos de Uso Asociar Cliente a usuario Ilustración Prototipo Asociar Cliente a usuario Asociar Cliente a usuario Identificador Rubén Meré Fecha Asociar Cliente a usuario Ilustración 237: Prototipo Asociar Cliente a usuario 285 Identificador C05 05/02/2015
Prototipo Eliminar Cliente Nombre Eliminar Cliente Creado por Rubén Meré Casos de Uso Eliminar Cliente Prototipo Eliminar Cliente Eliminar Cliente Identificador Meré Fecha Eliminar Cliente Ilustración 238: Prototipo Eliminar Cliente 286 Identificador C06 05/02/2015
Prototipo Crear Cita Nombre Crear Cita Creado por Rubén Meré Casos de Uso Crear Cita Crear Cita Identificador Rubén Meré Fecha Cita Ilustración 239: Prototipo Crear Cita 287 Identificador C07 05/02/2015
Prototipo Asociar Cliente a Cita Nombre Asociar Cliente a Cita Creado por Rubén Meré Casos de Uso Asociar Cliente a Cita Ilustración Prototipo Asociar Cliente a Cita Asociar Cliente a Cita Identificador Rubén Meré Fecha Asociar Cliente a Cita Ilustración 240: Prototipo Asociar Cliente a Cita 288 Identificador C08 05/02/2015
Prototipo Asociar servicios/productos a Cita Nombre Asociar servicios/productos a Cita Creado por Rubén Meré Casos de Uso Asociar servicios/productos a Cita Ilustración Prototipo Asociar servicios/productos a Cita Asociar servicios/productos a Cita Identificador Rubén Meré Fecha servicios/productos a Cita Ilustración 241: Prototipo Asociar servicios/productos a Cita 289 Identificador C09 05/02/2015
Prototipo Listar Citas Nombre Listar Citas Creado por Rubén Meré Casos de Uso Listar Citas Prototipo Listar Citas Listar Citas Identificador Rubén Meré Fecha Listar Citas Ilustración 242: Prototipo Listar Citas 290 Identificador C10 05/02/2015
Prototipo Visualizar Cita Nombre Visualizar Cita Creado por Rubén Meré Casos de Uso Visualizar Cita Prototipo Visualizar Cita Visualizar Cita Identificador Rubén Meré Fecha Visualizar Cita Ilustración 243: Prototipo Visualizar Cita 291 Identificador C11 05/02/2015
Prototipo Modificar Cita Nombre Modificar Cita Creado por Rubén Meré Casos de Uso Modificar Cita Prototipo Modificar Cita Modificar Cita Identificador Rubén Meré Fecha Modificar Cita Ilustración 244: Prototipo Modificar Cita 292 Identificador C12 05/02/2015
Prototipo Listar servicios/productos de una Cita Nombre Listar servicios/productos de una Cita Creado por Rubén Meré Casos de Uso Listar servicios/productos de una Cita Ilustración Prototipo Listar servicios/productos de una Cita Listar servicios/productos de una Cita Identificador Rubén Meré Fecha Listar servicios/productos de una Cita Ilustración 245: Prototipo Listar servicios/productos de una Cita 293 Identificador C13 05/02/2015
Prototipo Asociar Tipo de pago a Factura Nombre Asociar Tipo de Pago a Creado por Rubén Meré Casos de Uso Asociar Tipo de Pago a Factura Ilustración Prototipo Asociar Tipo de pago a Factura Asociar Tipo de Pago a Factura Identificador Rubén Meré Fecha Asociar Tipo de Pago a Factura Ilustración 252: Prototipo Asociar Tipo de pago a Factura 300 Identificador C20 Fecha 06/02/2015
Prototipo Listar Facturas Nombre Listar Facturas Creado por Rubén Meré Casos de Uso Listar Facturas Prototipo Listar Facturas Facturas Identificador Rubén Meré Fecha Listar Facturas Ilustración 253: Prototipo Listar Facturas 301 Identificador C21 Fecha 06/02/2015
Prototipo Visualizar Factura Nombre Visualizar Factura Creado por Rubén Meré Casos de Uso Visualizar Factura Prototipo Visualizar Factura Visualizar Factura Identificador Rubén Meré Fecha Visualizar Factura Ilustración 254: Prototipo Visualizar Factura 302 Identificador C22 Fecha 06/02/2015
Prototipo Modificar Factura Nombre Modificar Factura Creado por Rubén Meré Casos de Uso Modificar Factura Prototipo Modificar Factura Modificar Factura Identificador Rubén Meré Fecha Modificar Factura Ilustración 255: Prototipo Modificar Factura 303 Identificador C23 Fecha 06/02/2015
Prototipo Consolidar Factura Nombre Consolidar Factura Creado por Rubén Meré Casos de Uso Consolidar Factura Prototipo Consolidar Factura Consolidar Factura Identificador Rubén Meré Fecha Consolidar Factura Ilustración 256: Prototipo Consolidar Factura 304 Identificador C24 Fecha 06/02/2015
Prototipo Abonar Factura Nombre Abonar Factura Creado por Rubén Meré Casos de Uso Abonar Factura Prototipo Abonar Factura Abonar Factura Identificador Rubén Meré Fecha Abonar Factura Ilustración 257: Prototipo Abonar Factura 305 Identificador C25 Fecha 06/02/2015
Prototipo Listar Abonos Nombre Listar Abonos Creado por Rubén Meré Casos de Uso Listar Abonos Prototipo Listar Abonos Listar Abonos Identificador Rubén Meré Fecha Listar Abonos Ilustración 258: Prototipo Listar Abonos 306 Identificador C26 Fecha 06/02/2015
Prototipo Realizar cuadre de cierre de cajas Nombre Realizar cuadre de cierre de cajas Creado por Rubén Meré Casos de Uso Realizar cuadre de cierre de cajas Ilustración Prototipo Realizar cuadre de cierre de cajas Realizar cuadre de cierre de cajas Identificador Rubén Meré Fecha Realizar cuadre de cierre de cajas Ilustración 259: Prototipo Realizar cuadre de cierre de cajas 307 Identificador C27 Fecha 06/02/2015
Prototipo Crear Bono Nombre Crear Bono Creado por Rubén Meré Casos de Uso Crear Bono Prototipo Crear Bono Crear Bono Identificador Rubén Meré Fecha Crear Bono Ilustración 260: Prototipo Crear Bono 308 Identificador C28 Fecha 06/02/2015
Prototipo Listar Bonos Nombre Listar Bonos Creado por Rubén Meré Casos de Uso Listar Bonos Prototipo Listar Bonos Listar Bonos Identificador Rubén Meré Fecha Listar Bonos Ilustración 261: Prototipo Listar Bonos 309 Identificador C29 Fecha 06/02/2015
Prototipo Visualizar Servicio/Producto Nombre Visualizar Servicio/Producto Creado por Rubén Meré Casos de Uso Visualizar Ilustración Prototipo Visualizar Servicio/Producto Visualizar Servicio/Producto Identificador Rubén Meré Fecha Visualizar Servicio/Producto Ilustración 268: Prototipo Visualizar Servicio/Producto 316 Identificador C36 Fecha 06/02/2015
Prototipo Modificar Servicio/Producto Nombre Modificar Servicio/Producto Creado por Rubén Meré Casos de Uso Modificar Servicio/Producto Ilustración Prototipo Modificar Servicio/Producto Modificar Servicio/Producto Identificador Rubén Meré Fecha Modificar Servicio/Producto Ilustración 269: Prototipo Modificar Servicio/Producto 317 Identificador C37 Fecha 06/02/2015
Prototipo Eliminar Servicio/Producto Nombre Eliminar Servicio/Producto Creado por Rubén Meré Casos de Uso Eliminar Servicio/Producto Ilustración Prototipo Eliminar Servicio/Producto Eliminar Servicio/Producto Identificador Rubén Meré Fecha Eliminar Servicio/Producto Ilustración 270: Prototipo Eliminar Servicio/Producto 318 Identificador C38 Fecha 06/02/2015
Prototipo Crear Pago Nombre Crear Pago Creado por Rubén Meré Casos de Uso Crear Pago Crear Pago Identificador Rubén Meré Fecha Crear Pago Ilustración 271: Prototipo Crear Pago 319 Identificador C39 Fecha 06/02/2015
Prototipo Listar Pagos Nombre Listar Pagos Creado por Rubén Meré Casos de Uso Listar Pagos Prototipo Listar Pagos Listar Pagos Identificador Rubén Meré Fecha Listar Pagos Ilustración 272: Prototipo Listar Pagos 320 Identificador C40 Fecha 06/02/2015
Prototipo Visualizar Pago Nombre Visualizar Pago Creado por Rubén Meré Casos de Uso Visualizar Pago Prototipo Visualizar Pago Visualizar Pago Identificador Rubén Meré Fecha Visualizar Pago Ilustración 273: Prototipo Visualizar Pago 321 Identificador C41 Fecha 06/02/2015
Prototipo Modificar Pago Nombre Modificar Pago Creado por Rubén Meré Casos de Uso Modificar Pago Prototipo Modificar Pago Modificar Pago Identificador Rubén Meré Fecha Modificar Pago Ilustración 274: Prototipo Modificar Pago 322 Identificador C42 Fecha 06/02/2015
Prototipo Eliminar Pago Nombre Eliminar Creado por Rubén Meré Casos de Uso Eliminar Pago Prototipo Eliminar Pago Pago Identificador Rubén Meré Fecha Eliminar Pago Ilustración 275: Prototipo Eliminar Pago 323 Identificador C43 Fecha 06/02/2015
Prototipo Informe de Pagos Nombre Informes de Pagos Creado por Rubén Meré Casos de Uso Informes de Pagos Prototipo Informe de Pagos Informes de Pagos Identificador Rubén Meré Fecha Informes de Pagos Ilustración 276: Prototipo Informe de Pagos 324 Identificador C44 Fecha 06/02/2015
Prototipo Informe de Facturación Nombre Informes de Facturación Creado por Rubén Meré Casos de Uso Informes de Facturación Ilustración Prototipo Informe de Facturación Informes de Facturación Identificador Rubén Meré Fecha Informes de Facturación Ilustración 277: Prototipo Informe de Facturación 325 Identificador C45 Fecha 06/02/2015
Prototipo Visualizar Tipo de Pago Nombre Visualizar Tipo de Pago Creado por Rubén Meré Casos de Uso Visualizar Tipo de Pago Ilustración Prototipo Visualizar Tipo de Pago Visualizar Tipo de Pago Identificador Rubén Meré Fecha Visualizar Tipo de Pago Ilustración 284: Prototipo Visualizar Tipo de Pago 332 Identificador C52 Fecha 06/02/2015
Prototipo Modificar Tipo de Pago Nombre Modificar Tipo de Pago Creado por Rubén Meré Casos de Uso Modificar Tipo de Pago Ilustración Prototipo Modificar Tipo de Pago Modificar Tipo de Pago Identificador Rubén Meré Fecha Modificar Tipo de Pago Ilustración 285: Prototipo Modificar Tipo de Pago 333 Identificador C53 Fecha 06/02/2015
Prototipo Eliminar Tipo de Pago Nombre Eliminar Creado por Rubén Meré Casos de Uso Eliminar Tipo de Pago Ilustración Prototipo Eliminar Tipo de Pago Eliminar Tipo de Pago Identificador Rubén Meré Fecha Eliminar Tipo de Pago Ilustración 286: Prototipo Eliminar Tipo de Pago 334 Identificador C54 Fecha 06/02/2015
Prototipo Añadir Grupo Usuarios Nombre Añadir Grupo Usuarios Creado por Rubén Meré Casos de Uso Añadir Grupo Usuarios Ilustración Prototipo Añadir Grupo Usuarios Añadir Grupo Usuarios Identificador Rubén Meré Fecha Añadir Grupo Usuarios Ilustración 287: Prototipo Añadir Grupo Usuarios 335 Identificador C55 Fecha 06/02/2015
Prototipo Listar Grupos Usuarios Nombre Listar Grupos Usuarios Creado por Rubén Meré Casos de Uso Listar Grupos Usuarios Ilustración Prototipo Listar Grupos Usuarios Listar Grupos Usuarios Identificador Rubén Meré Fecha Listar Grupos Usuarios Ilustración 288: Prototipo Listar Grupos Usuarios 336 Identificador C56 Fecha 06/02/2015
Prototipo Visualizar Grupo Usuarios Nombre Visualizar Grupo Usuarios Creado por Rubén Meré Casos de Uso Visualizar Grupo Usuarios Ilustración Prototipo Visualizar Grupo Usuarios Visualizar Grupo Usuarios Identificador Rubén Meré Fecha Visualizar Grupo Usuarios Ilustración 289: Prototipo Visualizar Grupo Usuarios 337 Identificador C57 Fecha 06/02/2015
Prototipo Modificar Grupo Usuarios Nombre Modificar Grupo Usuarios Creado por Rubén Meré Casos de Uso Modificar Grupo Usuarios Ilustración Prototipo Modificar Grupo Usuarios Modificar Grupo Usuarios Identificador Rubén Meré Fecha Modificar Grupo Usuarios Ilustración 290: Prototipo Modificar Grupo Usuarios 338 Identificador C58 Fecha 06/02/2015
Prototipo Establecer Permisos Nombre Establecer Permisos Creado por Rubén Meré Casos de Uso Establecer Permisos Ilustración Prototipo Establecer Permisos Establecer Permisos Identificador Rubén Meré Fecha Establecer Permisos Ilustración 291: Prototipo Establecer Permisos 339 Identificador C59 Fecha 06/02/2015
Prototipo Asociar Usuario a Grupo de Usuarios Nombre Asociar Usuario a Grupo Creado por Rubén Meré Casos de Uso Asociar Usuario a Grupo de Usuarios Ilustración Prototipo Asociar Usuario a Grupo de Usuarios Asociar Usuario a Grupo de Usuarios Identificador Rubén Meré Fecha Asociar Usuario a Grupo de Usuarios Ilustración 292: Prototipo Asociar Usuario a Grupo de Usuarios 340 Identificador C60 Fecha 06/02/2015
Prototipo Eliminar Grupo de Nombre Eliminar Grupo de Usuarios Creado por Rubén Meré Casos de Uso Eliminar Grupo de Usuarios Ilustración Prototipo Eliminar Grupo de Usuarios Eliminar Grupo de Usuarios Identificador Rubén Meré Fecha Eliminar Grupo de Usuarios Ilustración 293: Prototipo Eliminar Grupo de Usuarios 341 Identificador C61 Fecha 06/02/2015
348 configuraciones de distinta naturaleza. La configuración comprende las siguientes áreas: ◦ Empresa/institución: Donde se definen los datos fiscales de la empresa, como es la razón social, CIF, dirección. Además también permite definir el tipo de impuestos, IRPF y otros. ◦ Módulos: La administración de módulos es fundamental para el correcto funcionamiento de la plataforma, ya que desde ella se pueden o no desactivar los módulos para que el CRM funcione como debería. Tiene un conjunto amplísimo de módulos con todo tipo de detalles. En la siguiente imagen podrán observar un pequeño conjunto de ellas: Ilustración 301: Pantalla Módulos Dolibarr o Gestión de Menús: Contiene la lógica necesaria para mantener el menú de la aplicación principal. o Entorno: Permite modificar el plurilingüismo y la apariencia de la plataforma. o Alertas: Donde se pueden configurar una serie de valores, si estos valores son
sobrepasados de un cierto umbral, definidos por los usuarios, permiten enviar alarmas. o Seguridad: Establece una serie de parámetros relacionados con los accesos a la plataforma. o Límites y precisión: Definir los decimales para o PDF : Se prepara la configuración de los o Emails y SMS : Permite que se configure un servidor de correo para el envío de comunicaciones a los clientes y/o proveedores. o Diccionarios: Se defin código de la aplicación y que permiten el plurilingüismo. • Módulo de Usuarios y Grupos: La plataforma por defecto contiene los mecanismos de administración de los usuarios, pudiendo organizarlos por grup permisos concretos. El único grupo que no se permite que se elimine es el de “Administrador”. En la siguiente imagen se puede apreciar la pantalla de Grupos de Usuarios: La pantalla para establecer permisos de la aplicación: sobrepasados de un cierto umbral, definidos por los usuarios, permiten enviar Seguridad: Establece una serie de parámetros relacionados con los accesos a la Límites y precisión: Definir los decimales para los cálculos de la plataforma. : Se prepara la configuración de los PDFs que la plataforma proporciona. : Permite que se configure un servidor de correo para el envío de comunicaciones a los clientes y/o proveedores. Diccionarios: Se defin en las diferentes parámetros, que se hacen uso en el código de la aplicación y que permiten el plurilingüismo. Módulo de Usuarios y Grupos: La plataforma por defecto contiene los mecanismos de administración de los usuarios, pudiendo organizarlos por grup permisos concretos. El único grupo que no se permite que se elimine es el de “Administrador”. En la siguiente imagen se puede apreciar la pantalla de Grupos de Ilustración 302: Grupos Usuarios Dolibarr La pantalla para establecer permisos de la aplicación: 349 sobrepasados de un cierto umbral, definidos por los usuarios, permiten enviar Seguridad: Establece una serie de parámetros relacionados con los accesos a la los cálculos de la plataforma. que la plataforma proporciona. : Permite que se configure un servidor de correo para el envío en las diferentes parámetros, que se hacen uso en el Módulo de Usuarios y Grupos: La plataforma por defecto contiene los mecanismos de administración de los usuarios, pudiendo organizarlos por grup os con unos permisos concretos. El único grupo que no se permite que se elimine es el de “Administrador”. En la siguiente imagen se puede apreciar la pantalla de Grupos de
350 Ilustración 303: Pantalla de permisos Dolibarr • Módulo de clientes: Permite la administración de clientes potenciales, clientes ordinarios y proveedores. Mantiene multitud de datos acerca de estos, como muestra la siguiente imagen:
351 Ilustración 304: Pantalla Cliente Dolibarr • Módulo de Productos/Servicios: Permite la gestión de productos y/o servicios y además proporciona mecanismos logísticos para controlar la salida y entrada de productos, su almacenaje y sus operaciones. Además de también da soporte a productos virtuales. • Módulo de Agenda: Facilita la gestión de la agenda de la empresa. Administra tantos eventos manuales como automáticos a través de una definición de acciones. • Módulo Financiero: Permite la administración de facturas, abonos, tipos de pagos, bancos y cuentas bancarias tanto a nivel de clientes como a nivel de proveedores. Genera alertas de cuando recibir un pago o realizar un cobro. Da soporte en PDF para los documentos de facturas, abonos, pagos y cobros. Permite la definición de diferentes impuestos y políticas de descuentos. • Módulo de exportación: Permite poder extraer diferentes informes de la base de datos en diferentes formatos, admite Excell y CSV.
352 Este framework una vez descargado e instalado en un servidor Web se despliega generando una serie de directorios, los más importantes son: • admin: contiene los objetos relacionados con la administración del framework. Mantiene las funcionalidades de la configuración de la plataforma y de los módulos. • comm: contiene la carpeta donde se encuentran los mecanismos para la administración de la agenda de la aplicación. • compta: comprende las clases necesarias para la gestión financiera del framework. • conf: compuesto por los ficheros de configuración del gestor de la base de datos y del entorno donde está instalado el framework. • core: se encuentran los ficheros que forman parte del motor del framework. La comunidad de desarrolladores desaconsejan que se realicen cambios en esta carpeta. • societe: se encuentran las librerías para la administración de clientes potencias, clientes ordinarios y proveedores. • users: necesaria para la gestión de usuarios de la plataforma. • webservices: contiene las clases necesarias para el acceso de los mensajes SOAP que ya se describieron. Así mismo, a la hora de definir un nuevo módulo en el framework, la comunidad de desarrolladores de Dolibarr, aconsejan definir una serie de directorios: • MiModulo/build: Puede contener cualquier fichero necesario para la construcción y/o compilación del módulo. • MiModulo/core/modules: contiene el fichero descriptor del módulo modMiModulo.class.php. Para la definición correcta de un módulo este fichero es el único obligatorio por la plataforma. • MiModulo/core/triggers: contiene los disparadores provistos por el módulo. • MiModulo/admin: contiene las páginas para la configuración del módulo. • MiModulo/class: contiene los ficheros de objetos de PHP necesarios por el módulo. • MiModulo/css: contiene los ficheros css provistos por el módulo. • MiModulo/docs: contiene los ficheros de documentación y licencias del módulo. • MiModulo/img: contiene los ficheros de imágenes provistos por el módulo. • MiModulo/langs/xx_XX: contiene los ficheros de los idiomas, siendo xx_XX el descriptor del idioma. • MiModulo/lib: contiene el conjunto de librerías que el módulo usa. • MiModulo/scripts: Proporciona las herramientas o scripts de línea de comandos.
353 • MiModulo/sql: se encuentran los ficheros sql necesarios para la creación de la estructura de datos en un gestos de base de datos. • MiModulo/themes/MiTema: si el módulo provee de una plantilla propia. • MiModulo/*: contiene los ficheros php propios del módulo. Para que la definición de las clases sea más ágil y sencilla, la plataforma provee de una librería que dada el nombre de la tabla en base de datos y un nombre de módulo, genera el cuerpo de los métodos CRUD (Create / Read / Update / Delete ó Crear / Leer / Actualizar / Borrar) en los directorios correctos: Ilustración 305: Comando para generar un módulo en Dolibarr Para que el comando anterior funcione perfectamente se ha de seguir la norma para las estructuras de las tablas de la base de datos. Las normas que se han de cumplir son las siguientes: Todas las tablas tienen el prefijo 'llx_', en versiones futuras del framework se podrá modificar. • Para los tipos de datos: ◦ integer para valores enteros incluidas las claves ajenas. ◦ double (24, 8) para los reales. ◦ double (6, 3) para las tasas relacionadas con los impuestos. ◦ real utilizada representar las cantidades. ◦ varchar para las cadenas de caracteres, inclusive para de longitud 1. ◦ timestamp para fecha/hora ◦ date para las fechas. • La clave primaria de una tabla se llama rowid y tiene que estar vinculado a un valor autoincremental. • Las claves ajenas empiezan con el sufijo fk_ seguido por el nombre de la tabla vinculada, seguido del campo vinculado. • Para definir claves alternativas únicas, se utiliza el prefijo uk_ seguido por el nombre de la tabla y de un sufijo que caracterice a la clave. Para la generación de códigos en los ficheros clases necesarios hay que respetar una
354 serie de normas: • Dolibarr está escrito en PHP y soporta las versiones posteriores a la 5.3.0+. Todos los archivos deben usar la extensión .php. • La llamada a las variables globales de PHP deben pasar a través de los operadores dedicados $_COOKIES, $_SERVER, $_ENV y a través de la función Dolibarr GETPOST() para obtener el contenido de $_GET o $_POST, etc. • Las secciones de código deben de empezar por “<?php”. • Cuando varias variables deben ser inicializadas con el mismo valor, utilice múltiples líneas. • Las cadenas deber estar entre comillas simples. • Los comentarios deben seguir la sintaxis de C, es decir, doble barra invertida para comentarios de una línea y el uso de la barra con el asterisco para varias líneas. • Las funciones deben retornar un valor mayor a 0 en caso de éxito y de un valor menor a 0 en caso de error. • Utilizar “include_once” para todo archivo que contenga definiciones de funciones o de clases. Para desarrollar código HTML, necesario para implementar las vistas del framework, han de cumplir las siguientes normas: • Todos los atributos de las etiquetas HTML deben estar escritas en minúsculas y entre dobles comillas. • Los enlaces deben ser absolutos, si es a otra página del framework se tiene que utilizar la función dol_buildpath() y para las imágenes img_picto(). • Las tablas se han de definir sin restringir el ancho de las columnas. • Las ventanas emergentes no deben ser utilizadas.