77
UNIVERSIDAD SIM ´ ON BOL ´ IVAR DECANATO DE ESTUDIOS PROFESIONALES COORDINACI ´ ON DE INGENIER ´ IA DE LA COMPUTACI ´ ON DESARROLLO DE UN SISTEMA WEB PARA EL MANEJO DE RESERVACIONES A TRAV ´ ES DEL PORTAL WEB DE TUDESCUENT ´ ON.COM Por: Daniela Alejandra B. Vel´asquez Conde Realizado con la asesor´ ıa de: Ivette Carolina Martinez PASANT ´ IA LARGA Presentado ante la Ilustre Universidad Sim´ on Bol´ ıvar como requisito parcial para optar al t´ ıtulo de Ingeniero en Computaci´on Sartenejas, 18 de abril de 2012

Privacidad de datos

Embed Size (px)

DESCRIPTION

se enfoca privacidad de datos

Citation preview

Page 1: Privacidad de datos

UNIVERSIDAD SIMON BOLIVARDECANATO DE ESTUDIOS PROFESIONALES

COORDINACION DE INGENIERIA DE LA COMPUTACION

DESARROLLO DE UN SISTEMA WEB PARA EL MANEJO DERESERVACIONES A TRAVES DEL PORTAL WEB DE

TUDESCUENTON.COM

Por:Daniela Alejandra B. Velasquez Conde

Realizado con la asesorıa de:Ivette Carolina Martinez

PASANTIA LARGAPresentado ante la Ilustre Universidad Simon Bolıvar

como requisito parcial para optar al tıtulo deIngeniero en Computacion

Sartenejas, 18 de abril de 2012

Page 2: Privacidad de datos

1

Page 3: Privacidad de datos

Resumen

La idea de este proyecto de pasantıa es la elaboracion de un sistema que permita realizar,

manejar y controlar reservaciones en una serie restaurantes afiliados, a traves de internet.

Este sistema recibe el nombre de TuDescuenton Reservas , y estara ligado al sistema

ya existente del portal web, ”TuDescuenton.com ”. La idea es ampliar dicho sistema,

para que ademas de permitir la compra de cupones de consumo, brinde la oportunidad de

realizar reservaciones que otorgen con un porcentaje de descuento en el consumo total, en

los restaurantes asociados.

El sistema de reservas, esta conformado por 3 sub-sistemas fundamentales, que funcionan

de manera independiente pero que se alimentan entre si. El primer sub-sistema es el utilizado

por el Usuario Administrador de TuDescuenton.com para:

1. Agregar restaurantes al sistema

2. Agregar promociones al sistema

3. Revisar las ordenes generadas con las compras de los usuarios del portal web.

El segundo sub-sistema es la utilizado por el usuario del portal web. Se encarga de mostrar

los diferentes restaurantes sobre los que se pueden hacer reservaciones, ademas de manejar

todo lo relacionado con la realizacion de la reservacion perse. Fue desarrollado en el CMS

Drupal 7.

Para mostrar los restaurantes disponibles, el sistema, se guıa por diferentes caracterısticas,

como la ubicacion del local, la especialidad de su cocina, los restaurantes mas reservados

hasta el momento y los disponibles para el dıa. Ademas de mostrar restaurantes segun las

caracterısticas estaticas ya mencionadas, el sistema te brinda la oportunidad de realizar

busquedas especıficas sobre las caracterısticas de la reservacion que el usuario del portal

web desea hacer, como el numero de personas que asistiran, la ubicacion del restaurante,

la especialidad de la cocina y por ultimo el dıa y hora de la reservacion, con estos datos el

buscador del sistema se encargara de filtrar y mostrar, los restaurantes dentro del sistema

que cumplan con dichas condiciones y esten disponibles.

Por ultimo tenemos al sub-sistema utilizado por representante del restaurante, que permi-

ta visualizar y manejar el estado de las reservaciones, realizadas para su restaurante, pudiendo

ası llevar un control sobre su establecimiento.

iv

Page 4: Privacidad de datos

Quiero dedicarle este libro a los seres que han marcado mi vida. A mi

madre, mi gran amiga y companera. La persona que ha dado la vida por mı,

y me ha dedicado todo. A mi novio, Daniel Rodriguez del Villar, el ser con

el que desde hace 5 anos comparto mi vida, el que mas que mi otra mitad,

es parte de mi.

Y por ultimo, quisiera dedicarselo a mis abuelos, que aunque no estan

fısicamente, siempre me acompanan y guıan desde el cielo.

Es por todos ellos y para ellos que estoy cerca de graduarme de ingeniera en

computacion. Es a ellos a quienes le dedıco este libro.

v

Page 5: Privacidad de datos

Agradecimientos

Durante este largo y gratificante camino que fue estudiar Ingenierıa en Computacion

en la Universidad Simon Bolıvar, y que termino, practicamente, con la elaboracion de este

proyecto, muchas personas han estado en mi vida sirviendo de apoyo y sosten, por lo serıa

injusto no mencionarlas. Realmente, es gracias a ellas, que pude llegar hasta este punto.

La primera de ellas es Rosa Aimee Conde, mi madre, la mujer que me dio la vida y me

ha apoyado desde que tengo uso de razon, la que confıa en mi ciegamente y me ha dado la

seguridad y apoyo que todo ser humano necesita para poder salir adelante.

En segundo lugar quisiera agradecer a Daniel Rodrıguez del Villar, mi novio, quien ha

sido mi eterno companero de laboratorio, mi mejor amigo, mi apoyo, mi amor y sobre todo

el me mantuvo de pie y enfocada en llegar a esta meta, sin el no se si estuviese escribiendo

hoy estas palabras.

En tercer lugar quisiera agradecerle a los profesores, quienes con paciencia y tenacidad

sembraron en mi el sentimiento computista. En especial, a la Profesora Ivette, mi tutora, una

gran consejera.

No puedo dejar de agradecerle a Rosa Zambrano, Rosita, por siempre estar ahı, apoyando

al estudiante, guiandonos y sobretodo entendiendonos, mil gracias Rosita.

Por ultimo quisiera agradecer, a todo el equipo de la empresa donde realice este proyecto,

quisiera agradecerle a TuDescuenton.com . Sobre todo a Gianpaolo Valero, quien aun sin

ser mi tutor formal, se convirtio en mi gran apoyo y amigo durante estos 5 meses, ganandose

mi respeto y admiracion.

No puedo terminar, sin antes agradecerle al ser mas importante de todos, quiero darle

gracias a Dios, por siempre estar ahı a mi lado. Sin el realmente nada serıa posible.

Page 6: Privacidad de datos

Indice general

Introduccion 1

1. Marco teorico 4

1.1. CMS Drupal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.1.1. Que es Drupal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.1.2. Como funciona . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.1.3. Tecnologıas utilizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.1.4. Conceptos relevantes . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.2. Modelo de negocio de Tudescuenton.com . . . . . . . . . . . . . . . . . . . . 13

1.2.1. Que es TuDescuenton.com . . . . . . . . . . . . . . . . . . . . . . . . 13

1.2.2. Como funciona . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.2.3. Conceptos relevantes dentro del sistema actual de TuDescuenton.com 14

1.3. Metodologıa Agil Scrum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

1.3.1. SCRUM en detalle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2. Planteamiento del problema 21

2.1. Requerimientos Funcionales . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.2. Requerimientos Tecnicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.3. Requerimientos de compatibilidad . . . . . . . . . . . . . . . . . . . . . . . . 23

2.3.1. Manejo simultaneo de la base de datos de TuDescuenton.com y

TuDescuenton Reservas desde Drupal . . . . . . . . . . . . . . . . 23

2.3.2. Creacion conjunta de Asociados Comerciales . . . . . . . . . . . . 24

2.3.3. Creacion conjunta de Descuentos . . . . . . . . . . . . . . . . . . . 24

2.3.4. Proceso conjunto de compra . . . . . . . . . . . . . . . . . . . . . . . 24

Page 7: Privacidad de datos

3. Desarrollo e Implementacion 25

3.1. Ventajas y desventajas del uso de Drupal para el desarrollo del sistema . . . 25

3.2. Resultados obtenidos por Sprints . . . . . . . . . . . . . . . . . . . . . . . . 27

3.3. Resultados obtenidos por cada Sprints de manera detallada . . . . . . . . . . 30

3.3.1. Sprint 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

3.3.2. Sprint 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3.3.3. Sprint 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

3.3.4. Sprint 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

3.3.5. Sprint 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

3.3.6. Sprint 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

3.3.7. Sprint 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

4. Descripcion del Producto 53

4.1. MODULES desarrollado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

4.2. Ampliacion del sistema de TuDescuenton.com . . . . . . . . . . . . . . . 54

5. Conclusiones y recomendaciones 56

A. Manuales 59

A.1. Manual de uso del BACKEND de TuDescuenton.com para el manejo de

TuDescuenton Reservas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

A.1.1. Manejo de usuarios asociados. . . . . . . . . . . . . . . . . . . . . . . 59

A.1.2. Manejo de descuentos asociados a TuDescuenton Reservas. . . . . . . 61

A.2. Manual de instalacion del sistema . . . . . . . . . . . . . . . . . . . . . . . . 63

viii

Page 8: Privacidad de datos

Indice de figuras

1.1. Capas de Drupal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.2. Division de la clase node. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.3. Archivo con extension .info dentro del MODULE AVAILABILITY . . . . . . . . . 8

1.4. Funcion hook install() dentro del archivo .install del MODULE AVAILABILITY . 9

1.5. Funcion hook uninstall() dentro del archivo .install del MODULE AVAILABILITY 10

1.6. Diagrama de la base de datos de TuDescuenton.com antes de la creacion

de TuDescuenton Reservas . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.7. Imagen modelo de la pizarra de tareas [SCRUMT] . . . . . . . . . . . . . . . 19

2.1. Arquitectura de desarrollo de Drupal . . . . . . . . . . . . . . . . . . . . . . 23

3.1. Diagrama de Secuencia del proceso de creacion conjunta de Asociados Com-

erciales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3.2. Diagrama de Secuencia del proceso de creacion conjunta de Descuentos. . . . 38

3.3. Como se declara una Base de Datos alterna en Drupal . . . . . . . . . . . . . 44

3.4. Como se cambia de Base de Datos en Drupal . . . . . . . . . . . . . . . . . . 44

3.5. Diagrama de Secuencia del proceso de compra desde el Sistema de Tudes-

cuenton.com. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

3.6. Diagrama de Secuencia del proceso de reservacion en caso exitoso. . . . . . . 49

3.7. Diagrama del proceso de compra. . . . . . . . . . . . . . . . . . . . . . . . . 50

4.1. MODULES desarrollados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

4.2. Diagrama de la base de datos de TuDescuenton.com despues del desarrollo

de TuDescuenton Reservas . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

Page 9: Privacidad de datos

1

Introduccion

TuDescuenton.com es un portal web que se encarga de vender cupones de hasta un

90 % de descuento a los usuarios registrados en su pagina. Este ano, el portal decidio ampliar

su modelo de negocio incursionando en los sistemas de reservas para restaurantes via web.

De ahı nace la idea de TuDescuenton Reservas , un sistema que le permitira a los

usuarios de TuDescuenton.com realizar reservaciones en los restaurantes afiliados por un

monto fijo, logrando ası una mesa segura a la hora deseada en el restaurante de su preferencia

y con porcentaje de descuento de un 25 % sobre el consumo total.

Hace poco mas de un ano, en Venezuela, el concepto de cupones de descuento vıa web

no tenıa ningun significado. Hoy en dıa, despues de tan poco tiempo transcurrido, existen

varios portales con el mismo formato, por lo que la competencia se ha tornado renida. Como

una manera de inovar y sacar ventaja sobre sus competidores, TuDescuenton.com decide

desarrollar TuDescuenton.com Reservas. Un nuevo sistema que buscara atraer un nuevo

grupo de clientes y reafirmar los ya existentes.

Actualmente en Venezuela, la manera de hacer reservaciones es tediosa. Primero, es nece-

sario saber a que restaurante, exactamente, quieres ir, luego hay que buscar el numero de

telefono de dicho restaurante, para llamar ver si hay disponibilidad, y de ser ası, finalmente

reservar.

La idea de TuDescuenton Reservas , es automatizar este sistema y ampliar la gama

de opciones a elegir de los usuarios web, quienes no necesitaran saber el nombre exacto del

restaurante para poder realizar la reservacion.

Por otro lado, el sistema servira de medio publicitario para los restaurantes, cuya infor-

macıon estara siendo visualizada constantemente por los usuarios de TuDescuenton.com

Page 10: Privacidad de datos

2

.

El objetivo principal de este proyecto de pasantıa es el desarrollo de un sistema que

les permita a los usuarios registrados de TuDescuenton.com , hacer reservaciones en los

restaurantes de su preferencia, de manera online, otorgandoles un 30 % de descuento sobre

su consumo total.

Para la elaboracion de este proyecto de pasantıa, es necesario cumplir con los siguientes

objetivos:

Ampliacion del sistema de manejo de Usuarios Asociados de TuDescuenton.com

para que permita la creacion de Usuarios Asociados relacionados con TuDes-

cuenton Reservas en Drupal . Esto incluye la creacion, edicion, eliminacion y visu-

alizacion de usuarios asociados a TuDescuenton Reservas , tanto en el sistema de

TuDescuenton Reservas en Drupal como en el de TuDescuenton.com .

Desarrollo del modulo para el manejo de promociones de reservas desde el BACKEND de

TuDescuenton.com . Lo que incluye la creacion, edicion, eliminacion y visualizacion

de promociones de TuDescuenton Reservas .

Desarrollo del modulo para el manejo de reservas por parte del Usuario Asociado.

Permitira al usuario asociado ver el estatus de su promocion y llevar un control sobre

las reservaciones realizadas.

Desarrollo de la funcionalidad que permita la busqueda inteligente de restaurantes de

acuerdo a la disponibilidad asociada a los restaurantes.

Desarrollo de la funcionalidad que permita la buqueda de restaurantes por ciudades

cercanas, segun el estado donde se ubica el Usuario Registrado.

Page 11: Privacidad de datos

3

Desarrollo de la funcionalidad que le permita a los usuarios web, la busqueda de restau-

rantes, por especialidad culinaria.

Desarrollo de la funcionalidad que le permita a los usuarios web, la reservacion de un

restaurante a una hora y dıa especıfico.

Desarrollo de la funcionalidad que permita la generacion de ordenes de compra,

asociadas a las reservaciones.

Page 12: Privacidad de datos

Capıtulo 1

Marco teorico

En este capıtulo se extienden los conceptos mas relevantes del sistema para la reser-

vacion de restaurantes. Que es y como funciona Drupal , que es y como funciona TuDes-

cuenton.com , y como se hizo para interconectarlos, logrando ası el sistema de TuDes-

cuenton Reservas .

La seccion 1.1 presenta las definiciones basicas para entender como funciona Drupal , y

de esta manera entender como funcionara TuDescuenton Reservas .

La seccion 1.2 describe como funciona el sistema actual de TuDescuenton.com , ademas

presenta los aspectos y definiciones basicas del sistema bajo el que se maneja TuDes-

cuenton.com , que afectan al sistema de Reservas.

La ultima seccion 1.3 describe la metodologıa utilizada para el desarrollo del proyecto de

pasantıa, SCRUM.

Page 13: Privacidad de datos

5

1.1. CMS Drupal

En esta seccion se introducira la terminologıa, las herramientas, conceptos y procesos de

Drupal 7. Los datos mostrados fueron tomados de [WWT03] y [SSO07].

1.1.1. Que es Drupal

Antes de comenzar a hablar sobre Drupal , explicaremos que es un CMS. Un CMS

(Control Management System) es una aplicacion utilizada para la creacion, edicion, gestion

y publicacion de contenido, paginas web principalmente.

El gestor de contenidos genera paginas web dinamicas interactuando con el servidor para

generarla bajo peticion del usuario, con el formato predefinido y el contenido extraıdo de la

base de datos del servidor.

Lo que permite gestionar, bajo un formato estandarizado, la informacion del servidor,

reduciendo el tamano de las paginas para descarga y reduciendo el coste de gestion del portal

con respecto a un sitio web estatico, en el que cada cambio de diseno debe ser realizado en

todas las paginas web, de la misma forma que cada vez que se agrega contenido tiene que

crearse una nueva pagina HTML y subirla al servidor web.

Drupal es un importante CMS de codigo abierto , modular, dinamico, flexible y elegante,

idoneo para construir y gestionar comunidades en Internet que comenzo a desarrollarse desde

el ano 2001 y actualmente esta en su version 7.

Por ser la version 7 la actual; Drupal 7 sera el utilizado para el el desarrollo de esta

pasantıa. Cabe destacar que existe una gran diferencia entre la version anterior (Drupal 6)

y la actual; por lo que se quiere aclarar, que todos los detalles y explicaciones dadas en esta

seccion seran referentes a Drupal 7 especıficamente.

Page 14: Privacidad de datos

6

Drupal se maneja a traves de MODULES. Los MODULES son complementos que se extienden

para construir o mejorar la funcionalidad del nucleo base de Drupal y se agregan al proyecto

de acuerdo a las necesidades del cliente. Este hecho, de que casi todos los aspectos del

comportamiento puedan ser transformados a traves de MODULES, ha llevado a muchos a afirmar

que Drupal no es solo un Sistema de Gestion de Contenidos (CMS), sino un Marco de Gestion

de Contenidos (CMF), capaz de ser reequipado con las necesidades especıficas y los requisitos

funcionales solicitados.

1.1.2. Como funciona

Drupal funciona por capas, cada una de ellas se encarga de manejar un parte del sistema

y se comunican para mostrar el contenido final. Vease la figura 1.1:

Figura 1.1: Capas de Drupal.

Page 15: Privacidad de datos

7

1. En la primera capa se encuentran los NODES, el corazon del sistema, quienes represen-

tan el contenido base del sitio web, son los contenedores de datos, es decir trabajan

directamente con la base de datos. En la figura 1.2 se observa como se divide la clase

node.

Figura 1.2: Division de la clase node.

Page 16: Privacidad de datos

8

2. En la proxima capa estan los MODULES del sistema. Los MODULES son plugins que per-

miten ampliar la funcionalidad del sitio web, pueden agregar nuevos CONTENT TYPES y

conductas asociadas a cada uno de ellos.

Constan de 3 archivos principales:

Archivo con extension info: Es un archivo obligatorio, escrito en texto plano,

con un formato similar al standard INI, para archivos de configuracion. En el

estara toda la informacion sobre el modulo: el nombre, una pequena descripcion, los

archivos necesarios para su correcto funcionamiento, sus dependencias, la version,

el paquete y el proyecto al que pertenece.

Figura 1.3: Archivo con extension .info dentro del MODULE AVAILABILITY

Archivo con extension module: Es un archivo obligatorio escrito en PHP que con-

tiene todos los HOOK IMPLEMENTATION y demas funciones utilizadas en el modulo.

Los HOOKS son funciones en PHP con un numero definido de parametros y un tipo

de resultado especıfico, que permiten a los MODULES interactuar con el nucleo de

Drupal .

Los HOOKS siguen el siguiente patron: nombredelmodulo nombredelhook.

Cuando Drupal desee permitir que los MODULES intervengan de alguna manera en

Page 17: Privacidad de datos

9

el sistema, llamara a todos los MODULES que posean el HOOK que esta necesitando.

Por ejemplo: A la hora de listar los BLOCKS disponibles en el sistema, Drupal ve

que MODULES tienen implementada la funcion hook block info() que para cada

MODULES se llamara nombredelmodulo block info().

Archivo con extension install: Es un archivo escrito en PHP, pero a diferencia

del archivo anterior, no es obligatorio. Contiene las funciones que seran llamadas

cuando el modulo sea instalado o desinstalado.

La primera funcion importante dentro de este archivo, es la que responde a

la llamada de hook install(), en ella se crean los CONTENT TYPES, TAXONOMYS y

FIELD relacionados con el MODULE. En la figura 1.4 se puede observar la funcion

hook install() que se encuentra en el archivo .install, de uno de los modulos crea-

dos.

Figura 1.4: Funcion hook install() dentro del archivo .install del MODULE AVAILABILITY

Page 18: Privacidad de datos

10

La otra funcion importante dentro del archivo .install, es la que responde a la lla-

mada de hook uninstall(), en ella se eliminan los FIELD ??, si no son utilizados por

otros CONTENT TYPE, las TAXONOMYS y finalmente los CONTENT TYPES relacionados

con el MODULE. Como se observa en la figura 1.5

Figura 1.5: Funcion hook uninstall() dentro del archivo .install del MODULE AVAILABILITY

3. La tercera capa es la de los BLOCKS y MENUS. Los BLOCKS permiten mostrar cualquier

contenido, previamente creado, en la pagina de acuerdo a la distribucion de la misma,

segun el tema.

Los BLOCKS representan informacion que puede se habilitada o deshabilitada en lugares

especıficos del sitio web. Siempre mantienen una estructura segun el tema que este

activo en el sistema para el momento, dicha estructura brinda facilidad de uso y control

sobre lo que se desea mostrar. Los BLOCKS permiten mostrar informacion dentro del

sistema.

4. La siguiente capa hacia arriba contiene los permisos de usuarios. En esta capa se de-

Page 19: Privacidad de datos

11

termina que cosas son accesibles para cada tipo de usuario. Los permisos se asignan a

roles y los usuarios estan relacionados con dichos roles. Por defecto Drupal maneja 3

roles: Usuario Anonimo (Usuario no conectado), Usuario Conectado y Administrador.

5. La ultima capa es la que contiene la plantilla del sitio. Se compone principalmente de

CSS, XHTML y PHP. Las plantillas pueden ser asignadas sobre la base de permisos de

usuarios.

1.1.3. Tecnologıas utilizadas

Esta sub seccion habla un poco sobre las herramientas utilizadas dentro de Drupal 7.

PHP es un lenguaje de programacion de scripting, multi-plataforma y centrado en la

web, sobre el que fue desarrollado Drupal . Drupal 7 soporta como version mınima de PHP,

la 5.2.

El Manejador de Base de Datos utilizado por defecto en Drupal es MySQL, sin

embargo la version actual de Drupal utiliza, la librerıa PDO (PHP Data Objects), de PHP

5. Esta librerıa es una capa de abstraccion que permite a los desarrolladores utilizar numerosas

bases de datos como: MySQL, PostgreSQL, SQLite, MariaDB, entre otras.

1.1.4. Conceptos relevantes

Para poder representar lo que comunmente conocemos como ENTIDADES en los esque-

mas relacionales, en Drupal existen los CONTENT TYPES. Todos los CONTENT TYPES creados,

parten del contenido base NODE y estan compuestos por FIELDS.

Los FIELDS se pueden relacionar con los atributos de las entidades de un esquema rela-

cional, mas a diferencia de ellos, cada FIELD representa una tabla en la base de datos de

Drupal .

Page 20: Privacidad de datos

12

Cada tabla asociada a un FIELD en la base de datos, sigue el siguiente patron en su nombre:

Comienza por field data seguido por el nombre del atributo. Y contiene los siguientes

campos basicos:

entity type: Este campo se refiere al NODE

bundle: En este campo se especifıca el CONTENT TYPE asociado.

deleted: 0 si no ha sido borrado, 1 si fue borrado.

entity id: Identificador del tipo de contenido asociado

revision id: Identificador de la revision del atributo.

language: Idioma en el que esta escrito el atributo. Por defecto se coloca und de in-

definido, de esta manera no se asocia a ningun lenguaje en especıfico.

delta: Campo utilizado para manejar FIELDS multivaluados, si el FIELD no lo es, se

coloca en 0.

Si existen FIELDS asociados a mas de 1 CONTENT TYPE, solo se crea 1 tabla en la base de

datos, y para especificar a que CONTENT TYPE se refiere el dato dentro de la tabla, se utiliza

el campo, antes mencionado, bundle el cual contendra el nombre del CONTENT TYPE asociado

al valor.

Otro concepto relevante dentro de Drupal , son las TAXONOMYS, quienes nos permiten

categorizar el contenido de la pagina. Consisten en 2 elementos basicos: Los vocabularios y

los terminos. Los vocabularios representan un contenedor de conjuntos de palabras, donde

cada palabra es un termino. Por ejemplo, si tenemos un vocabulario Especialidades Culinarias

los terminos podrıan ser Italiana, Mexicana, China, Japonesa, etc. Las taxonomias pueden

ser jerarquizadas, por ejemplo, en el caso del vocabulario Ubicacion, se tienen terminos que

Page 21: Privacidad de datos

13

siguen una jerarquıa ası: El termino ”Miranda”, es padre del termino ”Baruta”. Y esta al

mismo nivel que ”Zulia”, pues ambos son hijos de la base de las taxonomıas.

1.2. Modelo de negocio de Tudescuenton.com

En esta seccion se introduciran los terminos y herramientas necesarios para el en-

tendimiento del sistema de TuDescuenton.com

1.2.1. Que es TuDescuenton.com

TuDescuenton.com es una pagina web dedicada a la venta de cupones de descuento

sobre una serie de establecimientos afiliados.

1.2.2. Como funciona

TuDescuenton.com actualmente esta dividido en 4 grandes ramas de ventas de cupones:

Ciudades es mas antiguo de todos, ofrece descuentos que van desde el area de salud y

belleza hasta gastronomıa.

Viajes ofrece, cupones de descuento en lugares turısticos: posadas, hoteles, paquetes

de aventura, etc.

Ayuda esta rama, esta dedicada a la parte social de TuDescuenton.com . En ella las

personas comprar cupones de ayuda para una causa en especıfica: Ninos abandonados,

enfermos, regalos de navidad para ninos con escados recursos, etc.

Eventos el mas reciente de todos y como su nombre lo indica, a traves de el se pueden

comprar cupones de descuento en artıculos relacionados con fiestas o celebraciones.

Page 22: Privacidad de datos

14

El sistema esta totalmente interconectado, los usuarios pueden comprar en cualquiera de

las ramas anteriormente descritas, con la misma cuenta y el mismo saldo. Durante la pasantıa

se creo una rama mas para este creciente sistema. En la Figura 1.6 se muestra la parte de la

base de datos del sistema de TuDescuenton.com donde se realizo los cambios durante la

pasantıa.

Figura 1.6: Diagrama de la base de datos de TuDescuenton.com antes de la creacion deTuDescuenton Reservas .

1.2.3. Conceptos relevantes dentro del sistema actual de TuDescuenton.com

Usuario Administrador es el usuario dentro de TuDescuenton.com encargado del

manejo del BACKEND.

Page 23: Privacidad de datos

15

Usuario Registrado es una persona que se registro y autentico en el sistema de TuDe-

scuenton.com , con el fin de comprar cupones de descuento. Esta persona tiene asociada

una cuenta, en la cual dispone de saldo, que podra consumir en la pagina y con el que por

tanto, podra realizar reservaciones.

Asociado Comercial es un cliente del sistema de TuDescuenton.com . El cual ofre-

cera la posibilidad de reservar en su(s) establecimiento(s) traves de TuDescuenton Reservas

. Los Asociados Comerciales pueden tener mas de un establecimiento relacionado dentro

del sistema, cada establecimiento representa un Local.

Un Descuento representa una promocion dentro del sistema. Los descuentos son nece-

sarios para que los Asociados Comerciales salgan publicados en el sistema de TuDes-

cuenton.com. Los descuentos constan de los siguientes atributos:

Fecha de inicio de la promocion: Fecha en la que comienza a salir la promocion en

la pagina.

Fecha de finalizacion de la promocion: Se refiere a la fecha en la que la promocion

se acaba.

Tıtulo de la promocion: Tıtulo de la promocion visible al publico dentro de la pagina

web.

Una Orden representa una peticion de reservacion por parte de un Usuario Registrado

de TuDescuenton.com . Las ordenes constan de:

Identificador del Asociado Comercial

Fecha de la orden

Cantidad de cupones asociados a la orden.

Identificador del descuento relacionado con la orden

Page 24: Privacidad de datos

16

Si el Usuario Registrado lleva a cabo la compra, se genera una Cupon el cual afirma la

validez de su compra. El cupon podra ser visto por el Usuario Registrado desde su cuenta

y tendra que imprimirlo para poder utilizar el descuento.

El BACKEND de TuDescuenton.com representa la interfaz que utiliza el Usuario

Administrador para manejar el sistema de TuDescuenton.com . En ella se pueden realizar

las siguientes acciones:

Creacion, Edicion y Eliminacion de Asociados Comerciales

Creacion, Edicion y Eliminacion de Descuentos

Manejo de Ordenes

TuDescuenton.com cuenta con un sistema llamado BIZ, mediante el cual los Aso-

ciados Comerciales pueden manejar de sus descuentos dentro del sistema de TuDes-

cuenton.com mediante interfaz amigable y sencilla. En ella se pueden realizar las siguientes

acciones:

Visualizacion de cupones vendidos

Marcado de cupones usados

1.3. Metodologıa Agil Scrum

Para el desarrollo del proyecto de pasantıa se utilizo la metodologıa agil SCRUM. En es-

ta seccion hablaremos sobre dicha metodologıa.Todos los conceptos aquı expuestos, fueron

extraidos de [SCRUMT] y [SCRUMG].

Page 25: Privacidad de datos

17

1.3.1. SCRUM en detalle

Antes de hablar de SCRUM, hablaremos un poco sobre, como funcionan las metodologıas

agiles en general, para dar una vision mas amplia.

Metodologıa Agil

Las metodologıas agiles tienen como pilares fundamentales:

Valorar al individuo y a las interacciones en el equipo de desarrollo mas que a las

actividades y las herramientas.

Desarrollar software que funciona mas que conseguir una buena documentacion.

Responder a los cambios mas que seguir estrictamente una planificacion.

Satisfacer al cliente mediante tempranas y continuas entregas de software que le reporte

un valor.

Entregar frecuentemente software que funcione, desde un par de semanas a un par de

meses, con el menor intervalo de tiempo posible entre una entrega y la siguiente.

El dialogo cara a cara es el metodo mas eficiente y efectivo para comunicar informacion

dentro de un equipo de desarrollo.

Ahora bien, ya con un concepto mas claro de lo que son las metodologıas agiles, hablemos

de SCRUM.

Un proyecto elaborado en SCRUM, consta de elementos y actividades. Los elementos son

las entidades utilizadas como documentacion, y las actividades se refieren a como se llevan a

cabo o como se desempenan los elementos en el proyecto. Los elementos de SCRUM son:

Page 26: Privacidad de datos

18

1. Las historias de usuario son los requerimientos del cliente en un lenguaje entendido

por el. Son elaboradas llenando los siguientes datos:

ID: Identificador auto-incremental unico.

Nombre: Descripcion corta de la historia. De 2 a 10 palabras.

Importancia: Representa el valor que el cliente le da a este requerimiento. Se

representa en numeros enteros en una escala del 1 al 10.

Estimacion inicial: Valoracion inicial del equipo de trabajo con relacion a la

cantidad de trabajo necesario para implementar la historia. Se mide en HOMBRES

X DIAS, considerando un dıa como 8 horas de trabajo. Por ejemplo, si una tarea

usara 2 personas y durara 3 dıas, su estimacion inicial es de 6 puntos.

Como probarlo Descripcion en lenguaje natural, de como se mostrar la historia

en la presentacion del Sprint

Notas Informacion extra.

2. La Pila de producto: Es una lista priorizada de las Historias de usuarios.

3. Sprint: Es la medida de el proyecto. Un proyecto se divide en N Sprint, cada uno de los

cuales genera una entrega de producto util para el cliente.

4. La Pizarra de tareas: Como su nombre lo indica, es una pizarra donde se pegan

todas las tareas del Sprint, escritas previamente en PostSticks. Por lo que nos permite

llevar un control de la evolucion del Sprint.

Esta dividida 3 zonas:

a) Tareas Por Empezar: En esta parte de la pizarra, se encuentran las tareas del

Sprint que no han sido iniciadas. Al inicio del Sprint todas las tareas estan en esta

zona.

Page 27: Privacidad de datos

19

b) Tareas En Proceso: Aquı se encuentran las tareas del Sprint que estan en pleno

desarrollo.

c) Tareas Finalizadas: Finalmente, esta zona de la pizarra, se encuentran las tareas

que han sido completadas.

Cada integrante del equipo le hace alguna distincion a sus tareas para que se pueda

ver a facilmente la evolucion de cada uno. En la figura 1.7 se muestra como serıa una

pizarra de tareas y cuales son sus divisiones.

Figura 1.7: Imagen modelo de la pizarra de tareas [SCRUMT]

Las Actividades que se llevan a cabo en SCRUM son:

1. Planificacion del Sprint: El primer dıa del Sprint se realiza la reunion de planificacion.

Dicha reunion, consta de 2 partes:

Seleccion de requisitos: En ella, el cliente presenta al equipo la pila de producto.

El equipo aclara las dudas con el cliente y seleccionan las historias de usuarios

a completar en el Sprint. Tiene una duracion maxima de 4 horas.

Planificacion del Sprint: Durante la planificacion del Sprint, el equipo elabora la

lista de tareas del Sprint necesarias para completar las Historias de usuario. La

Page 28: Privacidad de datos

20

estimacion de esfuerzo se hace de manera conjunta y los miembros del equipo se

autoasignan las tareas.

2. Ejecucion del Sprint

Reunion Diaria: Todos los dıas, el equipo de trabajo realiza una breve reunion de

maximo 15 minutos, para sincroniza el trabajo del dıa. Durante la reunion cada

miembro del equipo responde a tres preguntas:

• ¿Que he hecho desde la ultima reunion diaria?

• ¿Que voy a hacer a partir de este momento?

• ¿Que impedimentos tengo o voy a tener?

Actualizacion de la Pizarra de tareas.

3. Inspeccion y adaptacion: Para dar por finalizado un Sprint, se realiza la reunion de

revision, que consta de 2 partes:

Demostracion: Se le muestra al cliente los requisitos completados en el Sprint

En funcion de los resultados mostrados, el cliente emite una opinion, sobre que

requerimientons desea mejorar y/o modificar, en SCRUM desde el primer momento

se esta replanificando el proyecto.

Retrospectiva: El equipo analiza los problemas ocurridos durante el desarrollo, en

busqueda de un mejor Sprint.

Page 29: Privacidad de datos

Capıtulo 2

Planteamiento del problema

En esta seccion se explicara en detalle, que debe hacer TuDescuenton Reservas . Para

ello se expondra que funcionalidades debera tener y como se realizara la conexion del mismo,

con el sistema de TuDescuenton.com .

TuDescuenton Reservas es un sistema web que permitira, a sus usuarios, realizar reser-

vaciones a traves de internet, en una serie de restaurantes afiliados. La idea principal es que

el sistema de TuDescuenton Reservas , obtenga la informacion ingresada por el Usuario

Adminsitrador desde el BACKEND de TuDescuenton.com , y se encargue de mostrarla a

los Usuarios Registrados, ademas de permitirles realizar reservaciones.

Los requerimientos funcionales y tecnicos para la creacion de TuDescuenton Reservas ,

ademas de los requerimientos de compatibilidad entre el sistema de TuDescuenton.com y

TuDescuenton Reservas , son descritos en las secciones 2.1, 2.2 y 2.3.

2.1. Requerimientos Funcionales

Los requerimientos funcionales del sistema a implementar se mencionan a continuacion:

Page 30: Privacidad de datos

22

Manejo de Asociados Comerciales relacionados con TuDescuenton Reservas .

Manejo de Descuentos relacionados con TuDescuenton Reservas .

Buscar y agrupar los restaurantes por localizacion.

Buscar y agrupar los restaurantes por especialidad culinaria.

Buscar y agrupar los restaurantes disponibles por dıa.

Buscador simple de restaurantes

Buscador inteligente de restaurantes

Realizacion de reservaciones.

Generacion de ordenes y cupones.

Sistema para el manejo de las promociones por parte del Usuario Asociado

2.2. Requerimientos Tecnicos

Los requerimientos tecnicos del sistema a implementar se mencionan a continuacion:

Con el uso del Drupal se debe elaborar el sub-sistema que permıta mostrar el contenido

de los restaurantes y las promociones y realizar el proceso de reservacion.

Para la elaboracion del proyecto se debe utilizar el lenguaje de programacion web PHP,

en su version 5.2, pues el servidor donde se aloja el sistema de TuDescuenton.com ,

cuenta con esta version instalada.

Como manejador de base de datos se debe utilizar MySQL

En la Figura 2.1 se muestra como funciona la arquitectura de Drupal y cual es el ambiente

de desarrollo requerido para su funcionamiento.

Page 31: Privacidad de datos

23

Figura 2.1: Arquitectura de desarrollo de Drupal .

2.3. Requerimientos de compatibilidad

Aquı se expondran los requisitos necesarios para el correcto acoplamiento del sistema de

TuDescuenton.com y el sistema a implementar en Drupal .

2.3.1. Manejo simultaneo de la base de datos de TuDescuenton.com

y TuDescuenton Reservas desde Drupal

Para poder unir el sistema de TuDescuenton.com con el sistema de TuDescuenton

Reservas en Drupal , es necesario poder comunicarse con ambas bases de datos, desde el

sistema que se desea implementar.

El sistema de TuDescuenton Reservas se alimentara de la base de datos de TuDes-

cuenton.com en el proceso de creacion y actualizacion de los Usuarios Registrados, ya

que es la base de datos de TuDescuenton.com , quien contiene toda la informacion de

dichos usuarios.

Cada vez que un Usuario Registrado ingresa en el sistema de TuDescuenton Reservas,

es necesario que este, consulte la base de datos de TuDescuenton.com , en busca de algun

cambio dentro del perfil del Usuario Registrado: Cambio en la localidad, en el saldo de

Page 32: Privacidad de datos

24

consumo, entre otros.

Drupal ofrece la posibilidad de manejar 2 o mas bases de datos simultaneamente.

2.3.2. Creacion conjunta de Asociados Comerciales

Para que el sistema de TuDescuenton Reservas funcione de manera adecuada, se necesita

que los Asociados Comerciales se creen desde el BACKEND 1 de TuDescuenton.com y se

inserten tanto en el sistema de TuDescuenton.com como en el sistema de TuDescuenton

Reservas .

2.3.3. Creacion conjunta de Descuentos

Para que el sistema de TuDescuenton Reservas funcione de manera adecuada, es nece-

sario que la creacion de descuentos, desde el BACKEND de TuDescuenton.com , permita

que los descuentos se agregen en ambos sistemas: TuDescuenton.com y TuDescuenton

Reservas .

2.3.4. Proceso conjunto de compra

Para poder realizar una reservacion, es decir realizar una compra, se necesita obtener los

datos de la reservacion desde el sistema de TuDescuenton Reservas y procesarlos dentro

del sistema de TuDescuenton.com .

Desde el sistema de TuDescuenton Reservas , se obtendran los datos de la reservacion y

desde el sistema de TuDescuenton.com , se generara la orden, realizara el pago y generara el

cupon.

1”Representa la interfaz que utiliza el Usuario Administrador para manejar el sistema de TuDes-cuenton.com .”

Page 33: Privacidad de datos

Capıtulo 3

Desarrollo e Implementacion

En este capıtulo se hablara sobre las ventajas y las desventajas de usar Drupal para la

elaboracion de este sistema. Posteriormente se explicara en detalle el sistema desarrollado y

mostraran los resultados obtenidos durante cada Sprint.

El sistema desarrollado consta de 2 partes, una desarrollada en el CMS Drupal y otra

desarrollada directamente en el sistema de TuDescuenton.com , en la parte del BACKEND.

El Usuario Administrador de TuDescuenton.com utilizara el BACKEND del sistema,

para crear, editar y eliminar Usuarios Asociados y Descuentos de TuDescuenton Reser-

vas en Drupal .

3.1. Ventajas y desventajas del uso de Drupal para el

desarrollo del sistema

Para el desarrollo del proyecto, se le solicito al pasante un analisis de las ventajas y

desventajas de usar un CMS para el desarrollo del sistema. La empresa querıa un sistema

estable, facil de mantener y de rapido crecimiento por lo que se deseo probar suerte con Drupal

Page 34: Privacidad de datos

26

(http://drupal.org/), sin embargo, era necesario analizar que tan ventajoso y provechoso

serıa para el desarrollo deseado.

Drupal es sencillo, si se desea elaborar un sistema sin conocimientos de programacion.

Sin embargo, si la idea es elaborar un sistema sin usar la interfaz que te brinda Drupal y

solo basarte en el API, la complejidad de desarrollo aumenta. Si, ademas, le anadimos el uso

de bases de datos simultaneas e interconexion con otro sistema, el sistema se torna bastante

complejo.

Drupal no es muy recomendable para sitios web empresariales, sus funciones escapan a

lo que deberıa ofrecer un portal empresarial. Pero en cambio, instituciones como las ONG,

escuelas, comunidades, encajan perfectamente con este fantastico CMS; asimismo los sitios

personales, como los blogs, son compatibles totalmente con sus funciones.

Ventajas del uso de Drupal

Es muy organizado

Facil uso del backend

Documentacion amplia y disponible

Multiplataforma

Permite el manejo simultaneo de varias Bases de Datos

Manejo de multiples manejadores de bases de datos

Desventajas del uso de Drupal

Curva de aprendizaje inclinada

Complejo manejo de templates

Page 35: Privacidad de datos

27

Se pierden muchas de sus virtudes, con el uso del backend de TuDescuenton.com

Para cualquier accion pequena es necesario seguir los mismos pasos que para una de

gran envergadura

Su amplia gama de posibilidades lo hace complejo

En caso de que el sistema arroje un error existe mayor dificultad para arreglarlo por su

amplitud. No se sabe por donde empezar.

Despues de analizar las ventajas y desventajas de utilizar el CMS se llego a la conclusion

de que, aunque fuese arriesgado y desconocido el camino, el proyecto, se llevarıa a cabo

utilizandolo.

3.2. Resultados obtenidos por Sprints

Sprint 1

Instalacion de las herramientas.

Creacion del CONTENT TYPE RESTAURANT

Ampliacion de la funcionalidad que permite la creacion de Usuarios Asociados del

lado de TuDescuenton.com .

Elaborar funcionalidad que permita la edicion de Usuarios Asociados relacionados

con TuDescuenton Reservas , del lado de TuDescuenton.com .

Elaborar funcionalidad que permita la eliminacion de Usuarios Asociados relaciona-

dos con TuDescuenton Reservas , del lado de TuDescuenton.com .

Page 36: Privacidad de datos

28

Sprint 2

Creacion del CONTENT TYPE PROMOTION

Creacion del CONTENT TYPE AVAILABILITY

Elaboracion de la funcionalidad que permita, la creacion de Descuentos asociados a

TuDescuenton Reservas , desde el BACKEND de TuDescuenton.com .

Sprint 3

Implementacion de la funcionalidad que permita, la edicion de descuentos asociados a

TuDescuenton Reservas , desde el BACKEND de TuDescuenton.com , sin modificar

las disponibilidades asociadas a los descuentos.

Elaborar funcion que permita la edicion de contenidos de tipo availability en

el sistema TuDescuenton Reservas en Drupal , utilizando el BACKEND de TuDes-

cuenton.com .

Implementacion de la funcionalidad que permita, la eliminacion de descuentos asociados

a TuDescuenton Reservas , desde el BACKEND de TuDescuenton.com .

Sprint 4

Implementacion de buscador simple de restaurantes.

Elaboracion de VIEW que muestre los resultados obtenidos con el buscador simple de

restaurantes.

Elaboracion de BLOCKS que permitan listar los restaurantes segun diferentes categorıas.

Elaboracion de BLOCKS que listen las diferentes categorıas asociadas a los restaurantes.

Page 37: Privacidad de datos

29

Sprint 5

Agregar los usuarios de TuDescuenton.com , al sistema de TuDescuenton Reservas

en Drupal , cuando intenten ingresar al sistema.

Implementacion del buscador inteligente de restaurantes.

Elaboracion de VIEW que muestre los resultados obtenidos con el buscador inteligente

de restaurantes.

Sprint 6

Elaboracion de VIEW, que permita mostrar los restaurantes del sistema de TuDes-

cuenton Reservas , en el mapa de Google Maps, segun sus coordenadas geograficas.

Elaboracion del proceso de reservacion, dentro del sistema de TuDescuenton Reservas

en Drupal .

Proceso de compra dentro de TuDescuenton.com .

Sprint 7

Visualizacion de las ordenes de reservas, realizadas por los Usuarios Registrados.

Implementacion de sistema para el manejo de descuentos del Usuario Asociado.

Adaptacion de la interfaz elaborada por la disenadora de la empresa, al sistema de

TuDescuenton Reservas .

Page 38: Privacidad de datos

30

3.3. Resultados obtenidos por cada Sprints de manera

detallada

En esta seccion se hablara de manera mas detallada, como se realizo cada Sprint del

proyecto. Para cada historia de usuario se especificaran y explicaran sus tareas.

3.3.1. Sprint 1

Durante el primer Sprint se realizaron las siguientes historias de usuarios:

Instalacion del ambiente local.

Esta historia de usuario se sub-divide en las siguientes tareas:

1. Instalacion de WAMP.

2. Instalacion del sistema para el control de versiones MERCURIAL.

3. Instalacion del sistema de TuDescuenton.com en el ambiente local.

4. Instalacion de Drupal .

Creacion del CONTENT TYPE RESTAURANT

Las tareas que conformaron esta historia de usuario fueron las siguientes:

1. Creacion de las TAXONOMIES necesarias para la correcta elaboracion del CONTENT TYPE

RESTAURANT (locations, cuisine, rest name).

2. Investigacion e instalacion de MODULES necesarios para poder agregar coordenadas al

CONTENT TYPE RESTAURANT: GeoField (http://drupal.org/project/geofield)

Page 39: Privacidad de datos

31

3. Creacion de los FIELDS necesarios para la correcta elaboracion del CONTENT TYPE

RESTAURANT. Por ejemplo, FIELD DATA PARTNER ID fue creado para almacenar el iden-

tificador del Usuario Asociado dentro de TuDescuenton.com .

Ampliacion de la funcionalidad que permita la creacion de Usuarios Asociados

del lado de TuDescuenton.com .

Esta historia de usuario se sub-divide en las siguientes tareas:

1. Modificacion y ampliacion de la base de datos de TuDescuenton.com .

2. Ampliacion del formulario para la creacion de Usuarios Asociados con los datos

requeridos por el sistema de : Especialidad culinaria, ciudad de TuDescuenton.com

a la cual se asocia, municipio de ubicacion, direccion, ubicacion geografica utilizando

google maps e imagen del local.

3. Funcionalidad que permita la creacion de multiples locales, asociados al mismo Usuario

Asociado.

4. Funcionalidad que permita agregar especialidades culinarias multiples a los Usuar-

ios Asociados mediante autocomplete: Luego de ingresar una letra dentro del campo,

dado un conjunto de especialidades culinarias dentro de la base de datos de TuDes-

cuenton.com , se listan aquellas que tengan relacion con la letra ingresada

5. Validacion de datos: Los datos no validos no son ingresados en la base de datos y son

mostrados al Usuario Administrador a traves de un mensaje en la pagina.

6. Creacion de la clase ZReserva, para el manejo de los datos relacionados con TuDes-

cuenton Reservas en TuDescuenton.com : Crear la funcion que permita agregar los

datos del formulario en la base de datos de TuDescuenton.com . Ademas de crear

Page 40: Privacidad de datos

32

el arreglo con los datos necesarios para ser enviados a TuDescuenton Reservas en

Drupal .

7. Elaborar funcion que permita simular ACTION POST utilizando la librerıa de PHP

curl php, que permita enviar los datos desde ZReserva hasta TuDescuenton Reservas

en Drupal .

8. Elaborar la funcion que permita la creacion de contenidos de tipo restaurants en

TuDescuenton Reservas , de acuerdo con los datos enviados desde ZReserva utilizando

la funcion curl php. Vease el diagrama de la Figura 3.1.

9. Implementar funcion que se encargue de crear el NODE de tipo RESTAURANT y llenar con

datos traidos desde el sistema de TuDescuenton.com .

10. Elaborar y enviar respuesta, al sistema de TuDescuenton.com , desde TuDes-

cuenton Reservas .

Elaborar funcionalidad que permita la edicion de Usuarios Asociados relacionados

con TuDescuenton Reservas , del lado de TuDescuenton.com .

Esta historia de usuario consta de las siguientes tareas:

1. Cargar los datos previamente ingresados en el sistema, dentro de la pagina de edicion

y mostralos en el formulario de ingreso.

2. Guardar los cambios en la base de datos.

3. Validacion de datos modificados.

4. Elaborar funcion que permita la edicion de contenidos de tipo restaurants en TuDe-

scuenton Reservas : De acuerdo con los datos enviados desde la clase ZReservas, con la

Page 41: Privacidad de datos

33

Figura 3.1: Diagrama de Secuencia del proceso de creacion conjunta de Asociados Comer-ciales.

Page 42: Privacidad de datos

34

funcion curl php, se modifican los NODE de tipo RESTAURANT, asociados al identificador

del Usuario Asociado, enviado desde el sistema de TuDescuenton.com .

5. Elaborar y enviar respuesta, al sistema de TuDescuenton.com .

6. Permitir al Usuario Administrador agregar nuevos locales al Usuario Asociado

previamente creado.

7. Permitir al Usuario Administrador eliminar locales del Usuario Asociado previ-

amente creado.

Elaborar funcionalidad que permita la eliminacion de Usuarios Asociados rela-

cionados con TuDescuenton Reservas , del lado de TuDescuenton.com .

Para completar esta historia de usuario, se realizaron las siguientes tareas:

1. Verificar que el Usuario Asociado no tenga promociones disponibles. De ser ası, no

podra ser eliminado.

2. Elaborar funcion que permita la eliminacion de contenidos de tipo restaurants en

TuDescuenton Reservas , de acuerdo con los datos enviados desde la clase ZReserva de

TuDescuenton.com : Implementar funcion que se encargue de eliminar todos los NODE

de tipo RESTAURANT, asociados al identificador del Usuario Asociado, que se desea

eliminar.Luego se elabora y envia una respuesta, al sistema de TuDescuenton.com .

3. Eliminacion de los locales asociados al Usuario Asociado del sistema de TuDes-

cuenton.com .

4. Eliminacion del Usuario Asociado del sistema de TuDescuenton.com .

Page 43: Privacidad de datos

35

Elaborar funcionalidad que permita la eliminacion de Usuarios Asociados rela-

cionados con TuDescuenton Reservas , del lado de TuDescuenton.com .

Para completar esta historia de usuario, se realizaron las siguientes tareas:

1. Verificar que el Usuario Asociado no tenga promociones disponibles. De ser ası, no

podra ser eliminado.

2. Elaborar funcion que permita la eliminacion de contenidos de tipo restaurants en

TuDescuenton Reservas , de acuerdo con los datos enviados desde la clase ZReserva de

TuDescuenton.com : Implementar funcion que se encargue de eliminar todos los NODE

de tipo RESTAURANT, asociados al identificador del Usuario Asociado, que se desea

eliminar.Luego se elabora y envia una respuesta, al sistema de TuDescuenton.com .

3. Eliminacion de los locales asociados al Usuario Asociado del sistema de TuDes-

cuenton.com .

4. Eliminacion del Usuario Asociado del sistema de TuDescuenton.com .

3.3.2. Sprint 2

Durante el Sprint 2 se realizaron las siguientes historias de usuarios:

Creacion del CONTENT TYPE PROMOTION

Este CONTENT TYPE representa los descuentos, es decir las promociones, dentro del sistema

de TuDescuenton.com . Se encargara de unir el CONTENT TYPE RESTAURANT con el CONTENT

TYPE AVAILABILITY, es decir, relaciona los restaurantes con las disponibilidades. Las tareas

que conformaron esta historia de usuario fueron las siguientes:

1. Creacion de las TAXONOMIES necesarias para la correcta elaboracion del CONTENT TYPE

promotion.

Page 44: Privacidad de datos

36

2. Investigacion e instalacion de los MODULES necesarios para poder agregar fechas y

referencias en el CONTENT TYPE promotion. Los MODULES encontrados e instalados

fueron: Date (http://drupal.org/project/date), Calendar (http://drupal.org/

project/calendar), Reference (http://drupal.org/project/references).

3. Creacion de los FIELDS necesarios para la correcta elaboracion del CONTENT TYPE

promotion. Por ejemplo, el FIELD denomidado FIELD DATA REST REFERENCE fue crea-

do para que cada promotion tenga conocimiento detallado, sobre el contenido de tipo

restaurant al que esta relacionado.

Creacion del CONTENT TYPE AVAILABILITY

El CONTENT TYPE availability representa las disponibilidades de los restaurantes por

intervalo de tiempo. Son el utimo CONTENT TYPE creado dentro del sistema, pues depende de

la existencia de los otros dos. Es el, quien realmente maneja toda la informacion necesaria

para la realizacion de las reservaciones. Las tareas asociadas a esta historia de usuario

siguen a continuacion:

1. Creacion de los FIELDS necesarios para la correcta elaboracion del CONTENT TYPE

AVAILABILITY. Por ejemplo, el FIELD denomidado FIELD DATA AVAIL NOW fue crea-

do para tener un control sobre la cantidad de reservaciones realizadas. Representa la

cantidad de cupones vendidos para un descuento y en un horario especıfico.

Elaboracion de la funcionalidad que permita, la creacion de descuentos asociados

a TuDescuenton Reservas , desde el BACKEND de TuDescuenton.com .

El proceso se explica de manera mas detallada en la Figura 3.2.

1. Listar los locales relacionados con los Usuarios Asociados de TuDescuenton Reser-

vas , para poder elegir sobre cual se hara el descuento.

Page 45: Privacidad de datos

37

2. Elaborar formulario que permita obtener los datos del descuento que se desea elaborar.

3. Dada la fecha y hora de inicio, la fecha y hora de finalizacion del descuento, el prome-

dio del comensal dentro del local y la disponibilidad promedio del local, calcular la

disponibilidad total del descuento durante el tiempo de que dure la promocion.

4. Crear la funcion dentro la clase ZReserva de TuDescuenton.com , que guarde los

cambios enviados en el formulario dentro de la base de datos de TuDescuenton.com

, para luego elaborar el arreglo con los datos que seran enviados al sistema de TuDes-

cuenton Reservas en Drupal .

5. Elaborar funcion que permita la creacion de contenidos de tipo promotion en el sistema

TuDescuenton Reservas en Drupal : Se necesita crear el el NODE de tipo PROMOTION

y llenarlo con los datos traidos desde el sistema de TuDescuenton.com . Luego se

calculan y crean los NODES de tipo availability, asociados al NODE de tipo promotion,

previamente creado. Por ultimo se elabora y envia una respuesta, al sistema de TuDe-

scuenton.com .

3.3.3. Sprint 3

Durante el Sprint 3 se realizaron las siguientes historias de usuarios:

Implementacion de la funcionalidad que permita, la edicion de los descuentos

asociados a TuDescuenton Reservas desde el BACKEND de TuDescuenton.com , sin

poder modificar las disponibilidades asociadas a los descuento.

1. Cargar los datos previamente ingresados en el sistema, dentro de la pagina de edicion

de descuentos y mostralos en el formulario de ingreso.

2. Guardar los cambios en la base de datos.

Page 46: Privacidad de datos

38

Figura 3.2: Diagrama de Secuencia del proceso de creacion conjunta de Descuentos.

3. Validar los datos modificados.

Page 47: Privacidad de datos

39

4. Elaborar funcion que permita la edicion de contenidos de tipo promotion en TuDes-

cuenton Reservas : De acuerdo con los datos enviados desde la clase ZReservas, con la

funcion curl php, se modifica el NODE de tipo promotion, asociado al identificador del

descuento enviado desde el sistema de TuDescuenton.com . Por ultimo se elabora y

envıa una respuesta, al sistema de TuDescuenton.com .

Elaborar funcion que permita la edicion de contenidos de tipo availability en

el sistema TuDescuenton Reservas en Drupal , utilizando el BACKEND de TuDes-

cuenton.com .

Esta historia de usuario, se complementa con las historia de usuario anterior y consta de

las siguientes tareas:

1. Permitir al Usuario Administrador modificar los intervalos de reservacion de los

descuentos: Al cambiar las fechas de inicio y/o finalizacion del descuento,el promedio

por comensal, la hora de inicio y/o finalizacion, los intervalos de disponibilidad de cada

descuento se ven afectado, por lo que es necesario calcular y crear la nueva disponibili-

dad. Si el descuento ya esta activo, no se puede modificar ni el promedio por comensal

ni la fecha de inicio de la promocion. Si se modifican los intervalos de una promocion

previamente creada, se debe calcular los intervalos de reservacion adicionales a partir de

las nuevas fechas y horas de la promocion, y del nuevo promedio por comensal. Ademas

de deben eliminar los intervalos de reservacion, que queden fuera de las nuevas fechas

y horas la promocion.

2. Editar la cantidad de mesas disponibles, para un intervalo de reservacion previamente

creado.

Page 48: Privacidad de datos

40

Implementacion de la funcionalidad que permita, la eliminacion de descuentos

asociados a TuDescuenton Reservas , desde el BACKEND de TuDescuenton.com .

Para completar esta historia de usuario, se realizaron las siguientes tareas:

1. Verificar que el descuento no este activo. De ser ası, no podra ser eliminado.

2. Elaborar funcion que permita la eliminacion de los contenidos de tipo promotion en

TuDescuenton Reservas , de acuerdo con el identificador del descuento enviado des-

de la clase ZReserva de TuDescuenton.com : Implementar funcion que se encargue

de eliminar todos los NODE de tipo availability relacionados con contenido de tipo

promotion, asociado al identificador del descuento y posteriormente elimine en NODE

de tipo promotion correspondiente.Luego se elabora y envia una respuesta, al sistema

de TuDescuenton.com .

3. Eliminacion de las disponibilidades asociadas a los descuentos, dentro del sistema de

TuDescuenton.com .

4. Eliminacion del descuento del sistema de TuDescuenton.com .

3.3.4. Sprint 4

Durante el Sprint 4 se realizaron las siguientes historias de usuarios:

Implementacion de buscador simple de restaurantes.

Para completar esta historia de usuario, se realizaron las siguientes tareas:

1. Elaborar formulario de un campo que permita ingresar una palabra clave para realizar

la busqueda simple de restaurantes.

Page 49: Privacidad de datos

41

2. Implementar funcion que se encargue de realizar la busqueda de los restaurantes con

promociones disponibles cuyo nombre contenga la palabra ingresada a traves del campo

de busqueda. El resultado sera una lista con los identificadores de los restaurantes que

cumplieron con la condicion. En el caso de no conseguir ningun resultado, devuelve una

lista vacıa.

Elaboracion de VIEW que muestre los resultados obtenidos con el buscador simple

de restaurantes.

Para completar esta historia de usuario, se realizaron las siguientes tareas:

1. Investigacion e instalacion de MODULES necesarios para poder mostrar los diferentes

restaurantes dentro del sistema de TuDescuenton Reservas . Los MODULES encontrados

e instalados fueron: Ctools (http://drupal.org/project/ctools) Views (http://

drupal.org/project/view)

2. Mostrar los contenidos devueltos por el buscador simple. En el caso de la lista enviada

este vacıa, se mostraa un mensaje senalando que no se obtuvieron resultados.

Elaboracion de BLOCKS que permitan listar los restaurantes segun diferentes tipos

de categorıas.

Esta historia de usuario esta compuesta por las siguientes tareas:

1. Elaborar BLOCK con los restaurantes disponibles por dıa: Realizar funcion que dada la

fecha y hora actual, consulte los contenidos de tipo restaurant estan disponibles y

cuales son sus horarios. Luego desarrollar el manejador de Drupal que se encargue de

mostrar el BLOCK con los resultados obtenidos.

2. Elaborar BLOCK con los restaurantes Mas reservados. Para completar esta historia de

usuario, se realizaron las siguientes tareas: Implementar funcion que obtenga todos

Page 50: Privacidad de datos

42

los restaurantes ordenados por el numero de cupones vendidos. Luego desarrollar el

manejador de Drupal que se encargue de mostrar el BLOCK con los resultados obtenidos.

Elaboracion de BLOCKS que listen las diferentes categorıas asociadas a los restau-

rantes.

Esta historia de usuario esta compuesta por las siguientes tareas:

1. Elaborar BLOCK que liste los distintos municipios asociados a los restaurantes, dada la

ciudad donde se ubica del usuario registrado: Realizar funcion que dado el identificador

del termino perteneciente a la TAXONOMY location asociada al usuario registrado, se

devuelven todos los terminos que tengan el mismo padre. Luego desarrollar el manejador

de Drupal que se encargue de mostrar el BLOCK con la lista de resultados.

2. Elaborar BLOCK que liste las especialidades culinarias de los restaurantes: Realizar fun-

cion que consulte todos los terminos asociados a la TAXONOMY cuisines. Luego desarrollar

el manejador de Drupal que se encargue de mostrar el BLOCK con la lista de resultados.

3.3.5. Sprint 5

Durante el Sprint 5 se realizaron las siguientes historias de usuarios:

Agregar los usuarios de TuDescuenton.com al sistema de TuDescuenton

Reservas en Drupal , cuando intenten ingresar al sistema.

Esta historia de usuario consta de las siguientes tareas:

a) Agregar al user de TuDescuenton Reservas en Drupal , los campos mon-

ey y city id para poder asignarle los valores que traen del sistema de TuDes-

cuenton.com .

Page 51: Privacidad de datos

43

b) Agregar un nuevo rol dentro del sistema en Drupal , llamado user td, que permita

agrupar los usuarios de TuDescuenton.com .

c) Investigacion e instalacion de MODULES necesarios para poder ingresar al sistema de

TuDescuenton Reservas , utilizando el email y no el username: Logintoboggan

(http://drupal.org/project/logintoboggan)

d) Implementar funcion que permita agregar usuarios al sistema de TuDescuenton

Reservas , de acuerdo a sus datos dentro del sistema de TuDescuenton.com .

e) Implementar la funcion que se encargue de realizar el ingreso automatico de los

usuarios de TuDescuenton.com , en el sistema de TuDescuenton Reservas .

f ) Permitir la consulta de la base de datos de TuDescuenton.com desde el sistema

de TuDescuenton Reservas . Para ello, es necesario la modificacion del archivo

settings.php dentro de Drupal . La Figura 3.3 muestra las lineas agregadas en

el archivo settings.php para la manipulacion de 2 bases de datos de manera

simultanea.

g) Implementar funcion que permita actualizar los datos del usuario al momen-

to de ingreso al sistema: Esto implica, consultar la base de datos de TuDes-

cuenton.com y actualizar los datos de saldo a favor y ciudad dentro de TuDe-

scuenton Reservas . En la Figura 3.4 se muestran los comandos necesarios para

cambiar de base de datos en Drupal y de esta manera poder consultar los datos

del usuario dentro de TuDescuenton.com .

Implementacion del buscador avanzado de restaurantes.

Para completar esta historia de usuario, se realizaron las siguientes tareas:

Page 52: Privacidad de datos

44

Figura 3.3: Como se declara una Base de Datos alterna en Drupal .

Figura 3.4: Como se cambia de Base de Datos en Drupal .

a) Elaborar el formulario que permita obtener los datos para realizar la busqueda

avanzada de restaurantes.

b) Implementar funcion que se encargue de realizar la busqueda de los restaurantes

con promociones disponibles que cumplan con los datos ingresados a traves del

formulario. El resultado sera una lista con los identificadores de los restaurantes

que cumplieron con las condiciones ingresadas.

Page 53: Privacidad de datos

45

Elaboracion de VIEW que muestre los resultados obtenidos con el buscador

avanzado de restaurantes.

Esta historia de usuario consta de las siguientes tareas:

a) Investigacion e instalacion de MODULES necesarios para poder mostrar los diferentes

restaurantes dentro del sistema de TuDescuenton Reservas . Los MODULES en-

contrados e instalados fueron: Better exposed filters (http://drupal.org/

project/better_exposed_filters)

b) Elaboracion de los filtros de los resultados, por municipio y especialidad culinaria.

c) Elaboracion del formulario de filtro por fecha y cantidad de personas.

d) Mostrar los contenidos devueltos por el buscador inteligente.

3.3.6. Sprint 6

Durante el Sprint 6 se realizaron las siguientes historias de usuarios:

Elaboracion de VIEW, que permita mostrar los restaurantes del sistema de

TuDescuenton Reservas , en el mapa de Google Maps, segun sus coordenadas

geograficas.

Esta historia de usuario consta de las siguientes tareas:

a) Investigacion e instalacion de MODULES necesarios para poder mostrar los difer-

entes restaurantes en un mapa, dentro del sistema de TuDescuenton Reser-

vas . Los MODULES encontrados e instalados fueron:OpenLayer (http://drupal.

org/project/openlayer), Calendar (http://drupal.org/project/calendar),

Reference (http://drupal.org/project/references).

Page 54: Privacidad de datos

46

b) Creacion del mapa con open layer

c) Consultar y colocar los restaurantes dentro del mapa, segun sus coordenadas.

Elaboracion del proceso de reservacion, dentro del sistema de TuDescuenton

Reservas en Drupal

Esta historia de usuario consta de las siguientes tareas:

a) Elaboracion del BLOCK de reservacion: Desarrollo del formulario de reservacion en

el sistema de TuDescuenton Reservas , el formulario consta de 3 partes:

Seleccion de la fecha: La primera parte del formulario, consta de un campo

de texto del tipo fecha, en el cual se despliega un calendario, permitiendo al

usuario la eleccion del dıa para el que desea hacer la reservacion, dentro de

los dıas que poseen disponibilidad. Luego de elegir el dıa, debe presionar el

boton siguiente, para continuar con la rervacion.

Seleccion de la hora: La segunda parte de este formulario, consta de una lista

desplegable, donde se muestran los horarios disponibles, para el dıa previa-

mente seleccionado. El usuario, debera elegir la hora deseada dentro de las

listadas y presionar el boton de siguiente, para continuar con el proceso. En el

caso de que los horarios disponibles no sean los convenientes para el usuario,

este podra presionar el boton de Atras, con el que volvera a la primera parte

del formulario, donde tendra la posibilidad de elegir una nueva fecha.

Seleccion de la cantidad de personas: La ultima parte del formulario, es la que

permite al usuario, elegir la cantidad de personas que asistiran al local. En

ella se muestra una lista desplegable, que contiene las diferentes disponibili-

dades asociadas a la fecha y hora previamente seleccionadas. La reservacion

Page 55: Privacidad de datos

47

mınima es para 2 personas y maximo para 8 personas. Despues de seleccionar

la cantidad de personas, se presiona el boton Reservar, con lo que el usuario

es enviado al proceso de pago. En el caso de que la disponibilidad no sea sufi-

ciente para el usuario, este podra retroceder y cambiar la hora, o la fecha de

la reservacion.

b) Elaborar funcion que envie los datos del formulario al sistema de TuDes-

cuenton.com , para continuar con el proceso de compra.

En la Figura 3.5, se puede observar como es el proceso de reservacion.

Proceso de compra dentro de TuDescuenton.com .

Esta historia de usuario consta de las siguientes tareas:

a) Generar la orden asociada a la compra: La orden consta de los siguientes atribu-

tos: Identificador del usuario, saldo a favor, identificador del descuento asociado,

numero de reservaciones (siempre es 1, en el caso de TuDescuenton Reservas ),

precio de la reservacion, entre otros.

b) Completar el proceso de compra desde el sistema TuDescuenton.com : Esta

tarea incluye: mostrar los datos de la reservacion, monto a pagar y la posibil-

idad de concretar la reservacion realizando el pago, ya sea con el saldo que el

Usuario Registrado posee en la pagina, o con el uso de su tarjeta de credito. Si

el Usuario Registrado cuenta con saldo suficiente en la pagina, tendra que pagar

la reservacion directamente, de no ser ası debera ingresar los datos de su tarjeta

de credito, para cancelar el monto de la reservacion y de esta manera concreta la

compra.

Page 56: Privacidad de datos

48

Figura 3.5: Diagrama de Secuencia del proceso de compra desde el Sistema de Tudes-cuenton.com.

c) Generacion y visualizacion de cupones de reservas: Luego de que el usuario logra

concretar la compra, el sistema debera generar el cupon de reserva, y le permitira al

usuario que lo compro visualizarlo junto con sus demas cupones.

d) Elaborar funcion dentro de ZReserva, que se encargue de actualizar (disminuir)

los cupones disponibles en el sistema de TuDescuenton Reservas .

Page 57: Privacidad de datos

49

En la Figuras 3.6 y 3.7, se puede observar como es el proceso de compra desde el sistema

de TuDescuenton Reservas .

Figura 3.6: Diagrama de Secuencia del proceso de reservacion en caso exitoso.

Page 58: Privacidad de datos

50

Figura 3.7: Diagrama del proceso de compra.

3.3.7. Sprint 7

Durante el Sprint 7 se realizaron las siguientes historias de usuarios:

Page 59: Privacidad de datos

51

Visualizacion de las ordenes relacionadas con las reservas realizadas por los

Usuarios Registrados.

Esta historia de usuario consta de las siguientes tareas:

a) Modificar la interfaz del BACKEND para que permita visualizar ordenes de TuDe-

scuenton Reservas .

b) Elaborar funcion que obtenga las ordenes de TuDescuenton Reservas , que seran

listadas en el BACKEND.

Implementacion de sistema para el manejo de descuentos por parte del

Usuario Asociado.

Esta historia de usuario consta de las siguientes tareas:

a) Elaborar funcion que dado el identificador del Usuario Asociado liste las reser-

vaciones realizadas a sus locales.

b) Elaborar funcion que le permita al Usuario Asociado, descargar un reporte con

todas las reservaciones realizadas a sus locales. Este reporte contendra: Fecha y

hora de la reservacion, nombre, cedula y telefono del usuario que la realizo.

Adaptacion de la interfaz elaborada por la disenadora de la empresa, al

sistema de TuDescuenton Reservas .

Esta historia de usuario consta de las siguientes tareas:

a) Creacion de los templates (http://drupal.org/project/) de Drupal necesarios

para adaptar el sistema a la interfaz disenada

Page 60: Privacidad de datos

52

b) Adaptacion de BLOCK con restaurantes disponibles por dıa, a la interfaz dada por

la disenadora.

c) Adaptacion de BLOCK de especialidades culinarias, a la interfaz dada por la

disenadora.

d) Adaptacion de BLOCK de localidades, a la interfaz dada por la disenadora.

e) Adaptacion de BLOCK de los mas reservados, a la interfaz dada por la disenadora.

f ) Adaptacion del buscador simple a la interfaz dada por la disenadora.

g) Adaptacion del buscador inteligente a la interfaz dada por la disenadora.

h) Adaptacion de VIEW que muestra los restaurantes del sistema de TuDescuenton

Reservas , en el mapa de Google Maps, a la interfaz dada por la disenadora.

i) Adaptacion de VIEW que muestra los resultados obtenidos por el buscador simple

y el buscador inteligente de restaurantes, a la interfaz dada por la disenadora.

j ) Adaptacion de la pagina que muestra el contenido completo del restaurante, a la

interfaz dada por la disenadora.

k) Adaptacion de BLOCK de reservacion, a la interfaz dada por la disenadora.

Page 61: Privacidad de datos

Capıtulo 4

Descripcion del Producto

En este capıtulo se explicara el producto final.

4.1. MODULES desarrollado

Como resultado de este proyecto se desarrollaron 5 MODULES de Drupal : Restaurant,

Promotion, Availability, Uder td y Module functions con los cuales se genera

el sistema completo de TuDescuenton Reservas en Drupal . Ver Figura 4.1

A traves de estos MODULES el sistema de TuDescuenton Reservas permite a los usuarios

registrados en el portal web de TuDescuenton.com , realizar las siguientes acciones:

Buscar de manera generica restaurantes. Ya sea por nombre, municipio de ubi-

cacion, especialidad culinaria, los mas reservados o los disponibles para el dıa.

Buscar de manera detallada los restaurantes. Permite buscar restaurantes dada la

fecha de la reservacion, la hora, la especialidad culinaria, el municipio de ubicacion

y la cantidad de personas que asistiran al restaurant.

Page 62: Privacidad de datos

54

Si el usuario esta registrado, el sistema le permite realizar reservaciones a los

restaurantes afiliados, que generen un 25 % de descuento sobre el consumo total.

Figura 4.1: MODULES desarrollados

4.2. Ampliacion del sistema de TuDescuenton.com

Como resultado de este proyecto de pasantıa, se amplio el sistema de TuDes-

cuenton.com . Se crearon 6 tablas en la base de datos y se modificaron 6 de las

tablas ya existentes.

En la Figura 4.2 se observa parte del diagrama de la base de datos de TuDes-

cuenton.com despues del desarrollo de la pasantıa.

Page 63: Privacidad de datos

55

Figura 4.2: Diagrama de la base de datos de TuDescuenton.com despues deldesarrollo de TuDescuenton Reservas .

Page 64: Privacidad de datos

Capıtulo 5

Conclusiones y recomendaciones

Como resultado de este proyecto se elaboro un sistema que permite a los usuarios

registrados en el portal web de TuDescuenton.com , buscar restaurantes por

nombre, ubicacion, especialidad culinaria, mas reservados, segun la fecha de la

reservacion, disponibles por dıa, entre otros, y realizar reservaciones en los mismos.

El uso de un CMS como Drupal , si bien ayuda en algunos aspectos (manejo de

usuarios, modularidad del codigo, manejo de la base de datos, etc.), tambien frena

la velocidad de desarrollo en otros. Disminuye la velocidad de desarrollo ya que

su curva de aprendizaje es muy inclinada y amplia gama de posibilidades lo hace

complejo.

Por tanto, un punto de importante que se debe tocar, es que antes de desarrollar

cualquier proyecto hay que evaluar que tan beneficioso podrıa ser el uso de un

framework o un CMS para su desarrollo. Puesto que no siempre el uso de estos

genera facilidad ni agiliza el proceso.

Unos de los puntos mas difıciles, fue el desarrollo del tema del sistema, es decir,

implantar el diseno realizado por la disenadora en la pagina web.

Page 65: Privacidad de datos

57

Sin embargo, cabe destacar que Drupal , es una herramienta muy poderosa, por

lo que se considera es importante conocerla y manejarla, cosa que no se hace, a

profundidad, en 5 meses.

El uso de un framework o un CMS es una herramienta importante que todo in-

geriero en computacion deberıa manejar. Por lo que serıa excelente que dentro de

la universidad te brinden la oportunidad de aprenderla.

Trabajos futuros

A continuacion se listan las futuras funcionalidades, que se pueden agregar al

sistema de TuDescuenton Reservas :

• Conexion con el portal de facebook.

• Conexion con el portal twitter.

• Version movil del sistema.

• Sistema de multiples reservaciones, mediante el uso de un carrito de compras.

• Permitir que los Usuarios Asociados sean quienes modifiquen las disponi-

bilidades de sus restaurantes, siempre que no se coloque un numero menor al

ya vendido.

Page 66: Privacidad de datos

Bibliografıa

[SSO07] Tood Tomlinson. Drupal 7 Primer Creating CMS-Based Websites: A

Guide for Beginners. Course Technology PTR, Boston, MA, USA,

2011.

[WWT03] Tood Tomlinson, Jhon K. VanDyk. Pro Drupal 7 Development.

Apress, New York, NY, USA, 2010.

[SCRUMT] Henrik Kniberg, Jeff Sutherland, Mike Cohn SCRUM and XP FROM

THE TRENCHES. InfoQ.com, USA, 2007.

[SCRUMG] Ken Schwaber, Jeff Sutherland. The Scrum Guide. Scrum.org, USA,

2011.

Page 67: Privacidad de datos

Apendice A

Manuales

A.1. Manual de uso del BACKEND de TuDe-

scuenton.com para el manejo de TuDescuenton

Reservas.

A.1.1. Manejo de usuarios asociados.

Creacion de Usuarios Asociados a TuDescuenton Reservas.

a) Ingresar en el BACKEND de TuDescuenton.com .

b) Ir a la seccion de Asociado.

c) Presionar la pestana de Nuevo Asociado.

d) Llenar los datos basicos del formulario.

e) Activar el checkbox de la seccion numero 5 del formulario, que permite indicar

que el asociado estara relacionado con TuDescuenton Reservas .

f ) LLenar los datos relacionados con TuDescuenton Reservas .

Page 68: Privacidad de datos

60

• Tipo de cocina. Puedes colocar multiples tipos de cocina a un asociado

comercial.

• Estado de ubicacion.

• Municipio donde se ubica.

g) Para cada local asociado al Usuario Asociado ingresar los siguientes datos:

• Nombre del local.

• Direccion.

• Foto del local.

• Coordenadas geograficas utilizando googlemaps.

h) Para agregar mas locales al usuario asociado, se debe presionar el boton con el

sımbolo del mas que esta ubicado en el lado derecho superior del local actual.

i) Para eliminar locales del usuario asociado, se debe presionar el boton con el

sımbolo del menos que esta ubicado en el lado izquierdo superior del local

que se desea eliminar.

j ) Presionar el boton de crear.

Edicion de Usuarios Asociados a TuDescuenton Reservas.

a) Ingresar en el BACKEND de TuDescuenton.com .

b) Ir a la seccion de Asociado.

c) Seleccionar el Usuario Asociado que se desea editar de la lista de Usuarios

Asociados.

d) Modificar los datos que se deseen cambiar.

e) Para agregar mas locales al usuario asociado, se debe presionar el boton con el

sımbolo del mas que esta ubicado en el lado derecho superior del local actual.

Page 69: Privacidad de datos

61

f ) Para cada local agregado al Usuario Asociado ingresar los siguientes datos:

• Nombre del local.

• Direccion.

• Foto del local.

• Coordenadas geograficas utilizando googlemaps.

g) Para eliminar locales del usuario asociado, se debe presionar el boton con el

sımbolo del menos que esta ubicado en el lado izquierdo superior del local

que se desea eliminar. No se podran eliminar locales que tengan promociones

vigentes.

h) Presionar el boton de editar.

Eliminacion de Usuarios Asociados a TuDescuenton Reservas.

a) Ingresar en el BACKEND de TuDescuenton.com .

b) Ir a la seccion de Asociado.

c) Presionar el boton de ELIMINAR que se encuentra al lado derecho del

Usuario Asociado que se desea eliminar de la lista de Usuarios Asociados.

Si el Usuario Asociado tiene locales que estan relacionados con descuentos

vigentes no se podra eliminar.

A.1.2. Manejo de descuentos asociados a TuDescuenton

Reservas.

Creacion de Descuentos para TuDescuenton Reservas.

a) Ingresar en el BACKEND de TuDescuenton.com .

b) Ir a la seccion de Descuento.

Page 70: Privacidad de datos

62

c) Presionar la pestana de Nuevo Descuento.

d) Presionar el checkbox que indique que el descuento es de TuDescuenton

Reservas . (El que tiene una imagen de un tenedor y una cuchara).

e) Llenar la primera parte del formulario.

• Local Asociado.

• Fecha de inicio.

• Fecha de finalizacion.

• Hora de inicio.

• Hora de finalizacion.

• Promedio por comensal.

• Disponibilidad promedio.

f ) Presionar el boton que permite calcular la tabla de disponibilidades.

g) Modificar las disponibilidades deseadas de la tabla de disponibilidades.

h) Llenar la segunda parte del formulario.

• Tıtulo de la promocion: Indica el nombre que tendra la promocion en el

cupon.

• Tıtulo del producto: Indica el nombre que tendra la promocion en la pagi-

na.

• Url de la promocion: Indica el url que tendra la promocion.

• Descripcion: Breve relato sobre el local.

• Condiciones: Aspectos legales bajo los que se rige la promocion.

• Indepabis: Aspectos de la promocion relacionados con el Indepabis.

i) Presionar el boton de crear.

Page 71: Privacidad de datos

63

Edicion de descuentos de TuDescuenton Reservas.

a) Ingresar en el BACKEND de TuDescuenton.com .

b) Ir a la seccion de descuentos.

c) Seleccionar la pestana que lista los descuentos de TuDescuenton Reservas .

d) Seleccionar el descuento que se desea editar de la lista de descuentos.

e) Modificar los datos que se deseen cambiar.

f ) Presionar el boton de editar.

Eliminacion de descuentos relacionados con TuDescuenton Reservas.

a) Ingresar en el BACKEND de TuDescuenton.com .

b) Ir a la seccion de descuentos.

c) Seleccionar la pestana que lista los descuentos de TuDescuenton Reservas .

d) Presionar el boton de ELIMINAR que se encuentra al lado derecho del

descuento que se desea eliminar de la lista de descuentos. Si el descuento esta

vigente no se podra eliminar.

A.2. Manual de instalacion del sistema

Requisitos iniciales para la instalacion del sistema TuDes-

cuenton Reservas.

Para instalar el sistema debe contar con la carpeta fileReservas la cual con-

tendra :

a) Los 5 MODULES desarrollados durante la pasantıa

Page 72: Privacidad de datos

64

b) Los demas MODULES necesarios para el correcto funcionamiento del sistema.

Estos MODULES tambien pueden ser descargados directamente de la pagina

oficial de Drupal (http://drupal.org)

c) Las funciones de conexion de ambos sistemas

d) La carpeta con las libreries.

e) El theme desarrollado llamado TDReservas.

Pasos para la correcta instalacion del sistema TuDescuenton

Reservas.

a) Instalar WAMP (Windows Apache Mysql PHP) o instalar apache, mysql y

php si tienes sistema operativo Linux.

b) Descargar Drupal de la pagina oficial.(http://drupal.org)

c) Descomprimir Drupal en la carpeta www. Si deseas que sea tu unica pagina,

todos los archivos deben quedar sueltos en www. En caso de TD Reservas,

este se ubica en una carpeta llamada Reservas, dentro de www.

d) Crear una base de datos en Mysql. Por ejemplo tdreservas

e) Ir al navegador y colocar http://localhost/Reservas/install.php En ese momen-

to se corre el instalador de Drupal .

1) Colocar instalacion Standart

2) Lenguaje de la pagina : English

3) Datos de la base de datos: Colocar nombre de la base de datos previamente

creada. Por ejemplo tdreservas

4) Despues de este paso se comienzan a correr los scripts de Drupal y a

instalar los MODULES que trae por defecto el sistema. Luego te pide que

Page 73: Privacidad de datos

65

ingreses los datos del sitio web:

• Nombre y correo del sitio web

• Nombre, correo y clave del usuario Administrador.

• Paıs y ciudad de ubicacion: En nuestro caso Venezuela y Caracas.

• Al final hay 2 checkbox, dejarlos marcados. Uno es para recibir correos

y el otro para poder hacer actualizaciones a la pagina, mientras esta

activa. Si la quitas no podras instalar MODULES.

f ) Una vez completada la instalacion, puedes visitar el sitio web basico que te trae

Drupal . Una vez que el sitio web este activo, dirigirse a la carpeta www/Reser-

vas/sites/default. En esta carpeta se encuentra el archivo setting.php. Antes

de abrirlo hay que darle permisos de escritura para poderlo modificarlo, pues

esta protegido. Una vez abierto el archivo:

• Buscar la variable $databases (Lınea 180). Y agregar la base de datos, que

queremos que funcione simultaneamente dentro del sistema, con la que

previamente se instalo. En nuestro caso la de Tudescuenton.com. Deberia

quedar de la siguiente forma:

1 $databases = array (

2 ’ d e f au l t ’ => array (

3 ’ d e f au l t ’ => array (

4 ’ database ’ => ’ t d r e s e r va s ’ ,

5 ’ username ’ => ’ root ’ ,

6 ’ password ’ => ’ ’ ,

7 ’ host ’ => ’ l o c a l h o s t ’ ,

8 ’ port ’ => ’ ’ ,

9 ’ d r i v e r ’ => ’ mysql ’ ,

10 ’ p r e f i x ’ => ’ ’ , )

11 , ) ,

Page 74: Privacidad de datos

66

12 ’ nombreBDAlterna ’ => array (

13 ’ d e f au l t ’ => array (

14 ’ database ’ => ’NombreOTROEsquemaBD ’ ,

15 ’ username ’ => ’ root ’ ,

16 ’ password ’ => ’ ’ ,

17 ’ host ’ => ’ l o c a l h o s t ’ ,

18 ’ d r i v e r ’ => ’ mysql ’ , ) //Manejador de BD

19 , ) , ) ;

Listing A.1: Modificacion en settings.php

g) Agregar las librerıas. Para ello, se crea una nueva carpeta dentro de

www/Reservas/sites/all llamada libraries. En ella se colocaran las siguientes

librerıas: geoPHP, OpenLayer, jquery.cycle y wvega-timepicker. Estas carpetas

se encuentran el TDReservas/libreries.

h) Descomprimir el archivo donde se encuentran los MODULES requeridos por el

sistema. Estos archivos deben ser ubicados dentro de la carpeta: www/Reser-

vas/sites/all/modules. La carpeta donde se encuentran los archivos comprim-

idos se llama: Modules Reserva.zip.

i) Agregar en /Reservas/, los archivos:

• reserva action.php

• buy reservation

• create user field

• taxonomies

que se encuentra en la carpeta fileReservas

j ) Agregar en /Reservas/ la carpeta functions, que se encuentra en la carpeta

fileReservas

Page 75: Privacidad de datos

67

k) Crear la carpeta pictures en /Reservas/

l) Una vez que los MODULES se encuentran en la carpeta www/Reser-

vas/sites/all/modules. Ir al sitio web y presionar de la barra superior el boton

que dice Modules. En Drupal , todos los MODULES forman parte algun pack-

age. Los package, son contenedores de MODULES. El package por defecto que

trae Drupal se llama Core. Cuando ingresamos MODULES en Drupal , como

se hizo en el paso anterior, nuevos package, se agregan al sistema. Activar los

siguientes MODULES:

• Dentro del package CoRE el MODULE Php filter

• Dentro del package ACCESS CONTROL el MODULE Content Access

• Dentro del package CHAOS TOOL SUITE los MODULES Bulk Export,

Chaos tools, Custom content panes, Page manager, Stylizer,

Views content panes.

• Dentro del package DATE/TIME los MODULES Calendar, Calendar

iCal, Date,Date All Day, Date API,Date Repeat API,Date Re-

peat Field,Date Tools.

• Dentro del package FIELDS los MODULES Node Reference, Refer-

ence.

• Dentro del package LOCATION el MODULE Location.

• Dentro del package OTHER los MODULES Geofield, Geofield Map, Li-

braries, LoginToboggan, LoginToboggan Content Access Integra-

tion.

• El package CCK completo.

• El package OPENLAYERS completo.

• El package PANELS completo.

Page 76: Privacidad de datos

68

• El package VIEWS completo.

m) Luego de la instalacion, podrıa salirte un mensaje diciendo que debes recon-

struir los permisos y te da un link, presionalo y reconstruye los permisos. Luego

de reconstruir los permisos te llevara a una pagina donde se te mostrara un

cuadro con las cosas que hay que arreglar. Buscar el campo que diga Date

API, hacer click en system date formats y en presionar Save en la pagina

que te lleve.

n) Luego de reconstruir los permisos, se instalan los MODULES desarrollados

para el proyecto de TD Reservas. Es decir el package TD RESERVAS. Luego

de instalar los modules, se mostraran unos mensajes de warnings, no prestar

atencion.

n) Una vez instalados los modules, tenemos que instalar el theme del sistema.

Colocar la carpeta TDReservas (carpeta del theme) dentro de la carpeta

www/Reservas/sites/all/themes.

o) Configurar los BLOCKS:

1) Hacer click en el boton Structures, ubicado en la barra superior del sistema.

2) Hacer click en BLOCKS.

3) Hacer los siguientes cambios:

• Colocar el block municipio en el home area 1

• Colocar el block especialidad en el home area 2

• Colocar el block mas reservados en el home area 3

• Colocar el block Buscador inteligente en Smart Search

• Configurar el BLOCK Reservacion:

• Hacer click en configure y luego en la parte donde dice mostrar, colocar

lo siguiente: restaurant/*.

Page 77: Privacidad de datos

69

• En la parte que dice ROL, colocar que solo sea visible para usuarios

autenticados (authenticated user).

• Guardar.

p) Agregar TAXONOMYS:

• Location: Correr el archivo taxonomies.php, el cual se encarga de agrega

a TuDescuenton Reservas todas las ciudades de TuDescuenton.com

.

• Cuisine: No es necesario, pero si se desea se pueden agregar.