scieee AI-readable full text Open interactive document viewer

eComercio: implementación de una tienda on-line

Sigalat Vidal, José Andrés

Abstract

El objetivo básico de este proyecto es desarrollar una tienda virtual, es decir, una aplicación web que permita a los clientes potenciales de un comercio navegar por el catalogo de productos que este ofrece, ver sus características básicas, seleccionar aquellos que les interesen y una vez hecho esto, poder realizar un pedido de estos productos al comerciante a través de los propios mecanismos que ofrece la aplicación. Para la realización de esta tienda virtual, se van a usar paginas web dinámicas, básicamente archivos que, al contrario de las paginas web clásicas que se limitan a contener código HTML estático que el navegador interpretara siempre del mismo modo, contienen fragmentos de código en un lenguaje especial que realizaran una serie de operaciones, incluyendo si procede accesos a bases de datos, generando según el input del usuario un código HTML distinto para ser mostrado por el navegador.

Full text

Escuela Técnica Superior de Ingeniería Informática Universitat Politècnica de València eComercio: Implementación de una tienda on-line. Proyecto Final de Carrera Ingeniería Técnica de Informática de Sistemas Autor: José Andrés Sigalat Vidal Director: Joan Fons y Cors Empresa: Tecnicoutlet Valencia Curso: 2012/2013 Índice de contenidos. Índice de contenidos. 2 1. Introducción. 4 1.1. Motivación. 4 1.2. Objetivos. 4 2. Contexto tecnológico. 6 2.1. Recursos básicos. 6 2.1.1. Apache HTTP Server 6 2.1.2. MySQL 7 2.1.3. PHP 8 2.2. Elección de la plataforma. 8 2.2.1. Magento 9 2.2.2. PrestaShop 10 2.2.3. zenCart 10 2.2.4. Opencart 11 2.2.5. Conclusión 11 3. Análisis. 12 3.1. Especificación de requerimientos. 12 3.1.1. Introducción. 12 3.1.1.1. Objetivo. 12 3.1.1.2. Ámbito. 12 3.1.1.3. Definiciones. 12 3.1.1.4. Visión global. 13 3.1.2. Descripción general. 14 3.1.2.1. Perspectiva del producto. 14 3.1.2.2. Funciones del producto. 14 3.1.2.3. Características del usuario. 15 3.1.2.4. Restricciones generales. 16 3.1.2.5. Asunciones y dependencias. 16 3.1.3. Requisitos específicos. 16 3.1.3.1. Interfaces externas. 16 3.1.3.2. Funciones. 17 3.1.3.3. Requisitos de rendimiento. 18 3.1.3.4. Restricciones de diseño. 18 3.2. Diagrama de clases. 18 4.Instalación y configuración. 24 4.1. Instalación en local. 24 4.1.1. Instalando Apache HTTP Server. 24 4.1.2. Instalando PHP5. 25 4.1.3. Instalando MySQL. 27 4.1.4. Instalando OpenCart. 28 4.2. Instalación en Web. 31 2 5. Implementación. 33 5.1. Cambios en Opencart. 33 5.1.1. Instalación del idioma español. 33 5.1.2. Cambios en Sistema. 34 5.1.3. Cambios en Extensiones. 35 5.1.4. El módulo Envío por ítem. 36 5.1.5. Cambios en hojas de estilo. 37 5.1.6. Cambios menores. 38 6. Manual de usuario. 39 6.1. Catálogo. 40 6.1.1. Productos. 40 6.1.2. Categorías. 43 6.1.3. Atributos. 44 6.1.4. Opciones. 45 6.1.5. Fabricantes. 46 6.1.6. Valoraciones. 47 6.1.7. Información. 48 6.2. Extensiones. 49 6.2.1. Módulos. 49 6.2.2. Envío. 52 6.2.3. Métodos de pago. 52 6.3. Ventas. 53 6.3.1. Pedidos. 53 6.3.2. Clientes. 54 6.4. Sistema. 55 6.4.1. Usuarios. 56 6.4.2. Impuestos. 56 7. Conclusiones. 57 8. Bibliografía. 58 3 1. Introducción. 1.1. Motivación. Cada vez mas gente tiene acceso a Internet en el mundo y aunque las desigualdades sociales hacen que no en todos los países haya la misma facilidad de acceso, en los países desarrollados una inmensa mayoría de la población esta conectada a la red desde su casa o el trabajo. En España en concreto las estadísticas mas recientes (2012) indican que de una población de casi 47 millones, mas de 30 millones son usuarios de Internet. Esto es un 65,6% de la población y pone a España entre los 20 países del mundo con un acceso a Internet mas generalizado. Como consecuencia de esto, el tener presencia en la red se esta convirtiendo en una opción cada vez mas atractiva para los comerciantes, que exponiendo sus productos en una pagina web tienen la posibilidad de llegar a un público mucho mas amplio del que llegarían desde una tienda física, limitada por su ubicación geográfica. Es por ello que en los últimos años han surgido en la red multitud de tiendas online, ya sea como forma única de vender productos o como complemento a una tienda tradicional, y a su vez hayan surgido multitud de soluciones tanto gratuitas como de pago para la implementación de estas tiendas. 1.2. Objetivos. El objetivo básico de este proyecto es desarrollar una tienda virtual, es decir, una aplicación web que permita a los clientes potenciales de un comercio navegar por el catalogo de productos que este ofrece, ver sus características básicas, seleccionar aquellos que les interesen y una vez hecho esto, poder realizar un pedido de estos productos al comerciante a través de los propios mecanismos que ofrece la aplicación. 4 La tienda virtual debe de poseer las siguientes características básicas: El usuario debe de poder desde su navegador web registrarse como cliente en la tienda de tal manera que pueda introducir los datos personales necesarios para el envío y cobro de los futuros pedidos. Una vez registrado debe de poder acceder repetidamente a su área de cliente identificándose mediante un nombre de usuario y una contraseña y actualizar cuando sea necesario sus datos personales. Un cliente identificado debe poder añadir aquellos productos que desee a una lista, a la que llamaremos “cesta de la compra”, y una vez tenga en su cesta todos los productos que desee comprar debe poder hacer un pedido que, usando los datos previamente introducidos, permita al propietario enviar los productos y realizar el cobro. Un cliente anónimo podrá igualmente navegar por el catalogo de productos y incluso añadir productos a una cesta, pero deberá identificarse si desea realizar un pedido. Por su parte el propietario de la tienda deberá poder acceder mediante su propio nombre de usuario y contraseña a un área especial de administración a través de la cual debe poder añadir y eliminar productos, cambiar características de los mismos como el precio o la descripción y agrupar estos productos en categorías. También debe poder ver los pedidos realizados por los clientes y acceder a los datos de estos clientes para realizar los envíos. Posteriormente se podrán añadir otras características para hacer la aplicación mas atractiva o práctica tanto para el cliente como para el propietario, pero las características arriba expuestas son las mínimas que la aplicación debe implementar. 5 2. Contexto tecnológico. 2.1. Recursos básicos. Para la realización de esta tienda virtual, se van a usar paginas web dinámicas, básicamente archivos que, al contrario de las paginas web clásicas que se limitan a contener código HTML estático que el navegador interpretara siempre del mismo modo, contienen fragmentos de código en un lenguaje especial que realizaran una serie de operaciones, incluyendo si procede accesos a bases de datos, generando según el input del usuario un código HTML distinto para ser mostrado por el navegador. Existen hoy en día varias opciones para conseguir esto: lenguajes como ASP, PHP o VBScript pueden ser usados para la creación de estas paginas web dinámicas. También existen múltiples opciones a la hora de decidir que tecnología usar tanto para la base de datos necesaria para almacenar la información sobre productos, clientes etc... como para el servidor web necesario para permitir que se pueda acceder a nuestra aplicación desde la web. En este proyecto se ha optado por el uso del lenguaje PHP en combinación con la base de datos MySQL y el servidor web Apache. Estas tres herramientas tienen la ventaja de ser código abierto, gratuitas y de libre distribución y modificación. 2.1.1. Apache HTTP Server Apache HTTP Server es un servidor web de código abierto, desarrollado de forma colaborativa por una amplia comunidad de voluntarios repartidos por todo el mundo, trabajando bajo los auspicios de la Apache Software Fundation y distribuido como software libre bajo la Apache Licence que, al contrario de GNU GPL, permite la distribución de versiones derivadas bajo una licencia distinta. Su intención es crear un servidor web robusto, capaz de competir con servidores comerciales y disponible gratuitamente. La aplicación esta disponible para una amplia variedad de sistemas operativos incluyendo los mas populares como Microsoft Windows, Linux y Mac OS, pero típicamente se suele hacer correr bajo un sistema operativo derivado de Unix, como alguna de las múltiples distribuciones de Linux. 6 Basado en el servidor web de código abierto desarrollado en el National Center for Supercomputing Applications (NCSA) de la Universidad de Illinois, Apache nació en febrero de 1995 cuando, después de que el proyecto original en el NCSA hubiera quedado estancado, un grupo de 8 desarrolladores a titulo particular, empezaron a coordinar sus esfuerzos para corregir errores y seguir desarrollando el código del servidor. El nuevo proyecto fue un éxito inmediato, habiéndose convertido en el servidor web mas popular de Internet en abril del año siguiente y manteniendo esta posición hasta la actualidad. Se estima que en marzo de 2012, Apache daba servicio aproximadamente el 57% de todos los sitios web activos. 2.1.2. MySQL MySQL es, a día de hoy, el sistema de gestión de bases de datos relacionales de código abierto mas usado del mundo. Es desarrollado y distribuido por la Oracle Corporation bajo la GNU General Public License, de modo que cualquiera puede descargarlo gratuitamente, modificarlo y redistribuirlo siempre que se haga bajo esta misma licencia. Por otra parte, Oracle Corporation ofrece la posibilidad de comprar una licencia comercial en el caso de que se desee usarlo como base de una aplicación que luego vaya a ser explotada comercialmente (es decir vendida a terceros). MySQL funciona como un sistema cliente/servidor, con un servidor de SQL que permite acceder a múltiples bases de datos y toda una serie de aplicaciones cliente, librerías, herramientas administrativas y interfaces de programación (APIs). Entre estas aplicaciones cliente, cabe destacar PhpMyAdmin una aplicación de código abierto escrita en PHP y que permite administrar bases de datos de MySQL a través de un navegador web. SQL significa Structured Query Language (Lenguaje de consultas estructurado) y es el lenguaje estándar mas comúnmente usado para acceder a bases de datos y, dependiendo del contexto en que se use, puede ser introducido directamente para obtener el resultado de una consulta, ir incrustado en otro lenguaje de programación o ser usado a través de una API especifica que oculte la sintaxis de SQL. MySQL es extremadamente escalable y puede correr cómodamente en un portátil o equipo de sobremesa junto con otros programas y servicios sin causar problemas, o correr en una maquina dedicada o un sistema de maquinas en red, aprovechando toda la memoria, CPU y capacidad de entrada y salida que estos sistemas le ofrecen. 7 2.1.3. PHP PHP es un lenguaje de código abierto muy popular para la generación de paginas web dinámicas, que puede incrustarse en el propio código HTML en vez de recurrir a un archivo externo para el proceso de los datos. Tiene una sintaxis sencilla tomada principalmente de otros lenguajes populares como C, Java y Perl. Creado en 1994 por Rasmus Lerdorf, hoy en día es desarrollado por The PHP Group y distribuido como software libre bajo la PHP License que, a pesar de ser una licencia de software libre, no es compatible con GPL a causa de la restricción de no poder usar el nombre PHP en productos derivados. Aunque originalmente significaba Personal Home Page, hoy PHP es definido por PHP Group como un acrónimo recursivo que significa PHP: Hypertext Prepocessor. Cuando se solicita una pagina web a un servidor en el que tenemos PHP instalado, cualquier bloque de código que se encuentre entre los delimitadores <?php y ?> sera procesado por el interprete de PHP que generara el código HTML apropiado y lo enviara al navegador para que sea mostrado al usuario. Este proceso es totalmente transparente al usuario que recibe el resultado de la ejecución del script sin posibilidad de saber que código ha generado ese resultado. Un ejemplo sencillo de esto seria el fragmento de código siguiente: <?phpecho “Hola, mundo”; ?> que mostrara la frase Hola, mundo en nuestra pagina web. 2.2. Elección de la plataforma. Al plantear este proyecto, la primera opción que se nos presenta es la posibilidad de, usando las herramientas arriba indicadas, diseñar, partiendo de cero, una aplicación web que cumpla los requerimientos indicados. Pero como ya se avanzaba en la introducción, hoy en día existen un gran numero de soluciones ya implementadas, muchas de ellas en código abierto, que con unos pocos cambios pueden servirnos para cumplir con nuestros objetivos. Esto representa no solo un considerable ahorro de trabajo por nuestra parte, sino también el evitar tener que reinventar la rueda, usando a cambio código cuya eficacia a sido comprobada por multitud de usuarios y que por tanto ofrece garantía de robustez. Una rápida búsqueda en la red nos da como resultado al menos una quincena de posibles soluciones, y incluso descartando aquellas cuya implementación no esta basada en Apache-MySQL-PHP el numero restante sigue siendo demasiado alto para hacer una elección 8 con facilidad. Una búsqueda algo mas minuciosa nos revela cuales son las cuatro mas populares, este ya es un número mas manejable que nos permite instalar y probar cada una de ellas durante un tiempo hasta llegar a la conclusión de cual de ellas se adapta mejor a nuestras necesidades. El haber elegido las cuatro mas usadas no es simplemente una cuestión de popularidad, sino que a mayor número de usuarios, mayores serán nuestras posibilidades de encontrar información y ayuda cuando tengamos que empezar a hacer las modificaciones necesarias. A continuación se hace una breve descripción de cada una de las cuatro candidatas: 2.2.1. Magento Figura 2.1: Paginas principales de cliente y administración de Magento. Magento es una aplicación de comercio electrónico desarrollada en dos versiones: La versión Enterprise esta desarrollada por un equipo profesional y requiere el pago de una cuota anual. La versión Comunity esta desarrollada en código abierto y es de descarga gratuita bajo la licencia OSL 3.0. Tiene una arquitectura escalar que permite su fácil ampliación, ofrece un diseño configurable mediante el uso de plantillas y es multilenguaje. 9 3.1.2.4. Restricciones generales. El producto va a desarrollarse usando PHP5 y MySQL, por lo tanto deberá encontrarse instalado en un servidor web que de soporte a estas tecnologías 3.1.2.5. Asunciones y dependencias. Al tratarse de una aplicación web, se podrá acceder al producto desde cualquier ordenador, corriendo cualquier tipo de sistema operativo, mientras disponga de una conexión a Internet y tenga instalado un navegador web. El rendimiento del producto se podrá ver afectado por las condiciones de la red, como saturación, caída de servidores, etc... 3.1.3. Requisitos específicos. 3.1.3.1. Interfaces externas. Tanto el cliente como el administrador accederán a la aplicación a través de un navegador web, escribiendo en la barra de direcciones cada uno la url de su área específica. Al cliente se le presentará la pagina principal de la aplicación. Esta mostrara una barra de cabecera en la que se encontrara el logotipo de la tienda y los enlaces necesarios para acceder al registro, cuenta de cliente, cesta de la compra, realizar pedido y categorías de productos. Debajo se encontrara el cuerpo principal de la pagina que se dividirá a su vez en las siguientes secciones: La parte central estará ocupada por una lista o mosaico de imágenes con una selección de los productos mas destacados de la tienda. Cada uno de estos productos presentará enlaces que permita acceder a la pagina de información del producto y añadirlos a la cesta de la compra. Sobre esta sección central y inmediatamente debajo de la cabecera se mostrará un mensaje de bienvenida y la información de contacto de la tienda. A la izquierda de la sección central, una barra vertical mostrará de manera especialmente destacada, los productos que se hayan puesto en oferta con la imagen del producto, el precio original y el precio de la oferta. También mostrara los enlaces que permitan acceder a la pagina del producto en oferta y añadirlo a la lista de la compra. 16 A la derecha otra barra vertical presentara enlaces a paginas de interés tanto de la propia tienda como de sitios externos. Por ultimo en la parte inferior se mostrara una lista de enlaces de información general sobre la tienda, como Política de privacidad, Información de envío, Términos y condiciones, etc... Figura 3.1: Boceto de la página principal de la interfaz. Al pinchar en los enlaces de cada producto, se le presentara al cliente una pagina que contendrá una imagen a gran tamaño del producto, el precio, la descripción con sus características mas importantes y un enlace para incluirlo en el carro de la compra. Por su parte, al administrador se le presentara una pagina con una barra de menús con enlaces a todas las funciones que tiene a su disposición. Cada uno de estos enlaces lo llevara a paginas con los formularios o listados correspondientes según su función. 3.1.3.2. Funciones. Las funciones se presentan divididas entre los dos tipos de usuarios que admite la aplicación, el usuario cliente y el usuario administrador. Cliente: Al acceder a la url de la tienda, el cliente se encontrara en la pagina principal de la aplicación. Desde allí tendrá enlaces que le permitirán acceder a todas las siguientes funcionalidades. Crear cuenta: El cliente accederá a un formulario donde deberá introducir sus datos personales: Nombre, apellidos, DNI, dirección, correo electrónico y teléfono de contacto. Ademas deberá introducir una contraseña y confirmarla. 17 Acceder cuenta: El cliente que ya haya creado una cuenta, podrá acceder a un formulario donde se le pedirá que introduzca su correo electrónico y la contraseña que estableció al crear la cuenta. En el caso de que un cliente no registrado intente acceder a esta función, se le redirigirá a Crear cuenta. Modificar cuenta: El cliente podrá modificar los datos de su cuenta cuando lo desee, para reflejar cambios de domicilio, corregir errores, cambiar la contraseña, etc... Salir cuenta: El cliente podrá salir de su cuenta en cualquier momento, volviendo a la pagina de inicio como invitado. Ver producto: El cliente podrá acceder a una pagina con información sobre el producto, incluyendo su precio, sus características y una imagen ilustrativa. Añadir producto a carro: El cliente podrá añadir el producto que desee al carro de la compra. Podrá añadir un mismo producto mas de una vez y esto quedara reflejado en la cantidad del producto especifico. Modificar cantidad producto: El cliente podrá modificar la cantidad de un determinado producto en su carro de la compra tanto añadiendo como restando. Si la cantidad es puesta a cero, el producto sera borrado del carro de la compra. Hacer pedido: El cliente entrara en un proceso en el que primero se le pedirá que se identifique si no lo está ya, y una vez identificado se le pedirá que confirme sus datos, elija un método de pago y acepte los términos y condiciones de la tienda. Una vez hecho esto su pedido quedara registrado en el sistema en espera de ser procesado por el administrador. Para poder acceder a este proceso el cliente deberá tener al menos un producto en su cesta de la compra, en caso contrario se le mostrara un mensaje de error y se le invitara a añadir productos. Administrador: Al acceder a la url de el área de administración el usuario se encontrará con una pagina de login que le pedirá su nombre de usuario y su contraseña. Login: El usuario introducirá su nombre de usuario y su contraseña. Si estos son correctos se le dará acceso al área de administración de la aplicación. Si uno o el otro son incorrectos se le mostrará un mensaje de error. Crear producto: El administrador podrá acceder a un formulario en el que introducirá todos los datos necesarios para crear el nuevo producto. Estos datos son: un nombre, una descripción, un precio y una imagen ilustrativa. 18 Editar producto: El administrador accederá a una pagina con la información del producto y podrá cambiar los datos que considere conveniente para reflejar cambios de precio, corregir errores, etc... Eliminar producto: El administrador podrá eliminar aquellos productos que hayan quedado obsoletos o ya no sean vendidos en la tienda por cualquier motivo. Crear categoría: El administrador accederá a un formulario donde podrá crear una nueva categoría introduciendo un nombre y una descripción. Editar categoría: El administrador accederá a una pagina con información sobre la categoría donde podrá cambiar su nombre y su descripción. Añadir producto a categoría: El administrador podrá añadir un producto determinado a una categoría. Eliminar producto categoría: El administrador podrá retirar un producto de una categoría. Hay que tener en cuenta que esto no deberá eliminar el producto del catalogo, solo hacer que deje de aparecer listado como parte de esa categoría. Eliminar categoría: El administrador podrá eliminar una categoría que ya no se considere necesaria. Para ello la categoría deberá de estar vacía de productos, en caso contrario se le mostrara un mensaje de error y se le invitara a eliminar los productos de la categoría. Añadir oferta: El administrador podrá elegir un producto y establecer un precio de oferta para el. Esto hará que el producto aparezca reflejado en un área especial de la pagina principal, con una indicación del precio original y el precio en oferta. El sistema debería comprobar que el precio en oferta es menor que el precio original y mostrar un mensaje de error en caso contrario. Modificar oferta: El administrador podrá elegir un producto en oferta y cambiar su precio de oferta. Eliminar oferta: El administrador podrá elegir un producto en oferta y hacer que deje de estar listado como oferta. Ver pedido: El administrador podrá elegir a una pagina con la información del pedido de un cliente para leer sus datos y tramitar el pedido. Desde esta página podrá cambiar el estado del pedido para reflejar si ya ha sido pagado, ya ha sido enviado, etc... Borrar pedido: El administrador podrá eliminar un pedido que se considere erróneo u obsoleto. 19 Restablecer contraseña cliente: El administrador podrá acceder a los datos de cuenta de un cliente y cambiar la contraseña en caso de que el cliente haya olvidado la contraseña original. Dar de baja cliente: El administrador podrá eliminar la cuenta de un cliente cuando lo considere conveniente. Cambiar contraseña: El administrador podrá cambiar la contraseña de su cuenta cuando lo desee. Salir sesión: El administrador podrá salir de la sesión de trabajo en cualquier momento, volviendo así a la página de login. 3.1.3.3. Requisitos de rendimiento. El servidor en el que se encuentre instalada la aplicación deberá soportar el acceso simultaneo de tantos clientes como sea razonable esperar que puedan estar comprando en la tienda en un momento dado. El acceso a la base de datos deberá realizarse en un tiempo razonable que permita a los clientes navegar con comodidad, sin esperas innecesarias que puedan hacerlos desistir de la compra. 3.1.3.4. Restricciones de diseño. Como se indica en otras secciones de esta memoria, la aplicación no va a ser implementada ad hoc, sino que va a ser usado el software libre OpenCart como framework, esto podría producir algunos cambios menores en las especificaciones arriba especificadas y, especialmente, introducir funcionalidades extra no consideradas en esta especificación de requisitos. 3.2. Diagrama de clases. El diagrama de clases es el diagrama mas usado en el modelado de sistemas software que se basan en la programación orientada a objetos. Se trata de un diagrama estructural que modela aspectos estáticos del sistema. Como su nombre indica en este diagrama están representadas las distintas clases de las que se compone el sistema así como las relaciones que existen entre estas. Una clase es, en este contexto, una unidad básica que encapsula los atributos y operaciones de un determinado tipo de objeto. Por lo tanto, un objeto es una instancia concreta de una clase. 20 Figura 3.2: Diagrama de clases. En el caso de nuestro sistema se han representado las siguientes nueve clases: Cliente: Esta clase representa a los clientes que vienen a comprar en la tienda. En principio solo se puede saber de ellos su dirección IP. Cada cliente tiene una relación univoca con una CestaCompra. La clase Cliente a su vez tiene dos subclases ClienteInvitado y ClienteRegistrado. 21 ClienteInvitado: Esta clase representa al cliente que esta navegando por la tienda sin haberse identificado. Como consecuencia su único atributo es la dirección IP que hereda de su clase madre. Posee los métodos necesarios para registrase e identificarse. ClienteRegistrado: Esta clase representa a un cliente una vez se ha identificado, y por lo tanto guarda todos los atributos correspondientes a sus datos personales. Posee los métodos necesarios para que el cliente pueda editar sus datos y salir de la sesión. Ademas también posee los métodos para que el administrador pueda restablecer una contraseña olvidada y dar de baja al cliente. Un ClienteRegistrado puede estar relacionado con uno o mas Pedidos. CestaCompra: Esta clase representa la cesta a la que el cliente añade los objetos que desea comprar. El único atributo que posee es un identificador numérico que la distinga de otras cestas. Posee los atributos necesarios para añadir un nuevo producto y cambiar la cantidad de un producto ya presente, no necesita un método para eliminar un producto ya que esto equivale a poner la cantidad del producto a cero. También posee dos métodos privados que el sistema usará para crear y eliminar cestas cuando sea necesario. Una CestaCompra está relacionada univocamente a un Cliente y puede estar relacionada con uno o mas Productos, también quedara univocamente unida a un Pedido cuando este se realice. Pedido: Esta clase representa los pedidos que los clientes hacen al vendedor. Posee como atributos un número que identificara el pedido, la fecha en la que se realizó, la suma total de los precios de los productos y una etiqueta de estado que puede tomar los siguientes valores: pendiente, pagado, enviado, devuelto, cancelado. Posee también los métodos para crear y eliminar pedidos, además de un método para cambiar el valor de la etiqueta de estado. Un Pedido tiene una relación univoca con una cesta de la compra de la que toma sus productos y también estará relacionado con el ClienteRegistrado que lo realizó. Producto: Esta clase representa los productos que se venden en la tienda. Posee como atributos el nombre del producto, una descripción, el precio y una imagen ilustrativa del producto. Posee además los métodos necesarios para que el administrador cree, elimine y edite productos. Un Producto puede tener sendas relaciones de pertenencia tanto a una o mas CestaCompra como a una Categoria. 22 ProductoEnOferta: Esta clase representa a los productos que el vendedor ha decidido poner en oferta. Es una subclase de Producto, de la que hereda todos sus atributos y métodos, pero ademas añade un atributo para indicar el precio de la oferta y los métodos necesarios para poner y quitar un producto en oferta y modificar el precio de oferta. Un ProductoEnOferta podrá tener las mismas relaciones que su clase madre. Categoria: Esta clase representa las categorías en las que el vendedor puede clasificar los productos de la tienda. Sus atributos son un nombre y una descripción. Posee ademas métodos para que el vendedor pueda crear, eliminar y editar categorías, ademas de los necesarios para poder añadir y quitar productos de una categoría. Una categoría puede estar relacionada con uno o mas Productos. Administrador: Esta clase representa al usuario encargado de administrar la tienda. Sus únicos atributos son un nombre de usuario y una contraseña. Además posee métodos para identificarse, cambiar su contraseña y salir de la sesión. 23 4. Instalación y configuración. Esta sección esta dedicada a detallar paso a paso el proceso seguido para poner en funcionamiento OpenCart en un sistema local y posteriormente, una vez terminado nuestro trabajo, migrar esta instalación al servidor web proporcionado por el cliente. Todo el trabajo en local se ha desarrollado sobre una maquina corriendo una versión reciente de Ubuntu, concretamente Ubuntu 12.04 LTS desktop (Precise Pangolin) . Ubuntu es un sistema operativo desarrollado en código abierto, basado en la distribución de Linux Debian y distribuido como software libre. 4.1. Instalación en local. Antes de colgar la tienda virtual en el servidor web, necesitaremos conseguir hacer funcionar OpenCart en nuestra máquina local con tal de poder hacer los cambios que sean necesarios y comprobar que todo funciona correctamente. Para ello nuestro sistema deberá tener instalado todo el software necesario para el correcto funcionamiento de OpenCart. Esto significa que antes de intentar instalar OpenCart deberemos instalar en nuestro sistema Apache HTTP Server, PHP5 y MySQL. 4.1.1. Instalando Apache HTTP Server. Antes de empezar es conveniente asegurarse de que nuestro sistema tiene actualizado el índice de paquetes de los repositorios, para evitar instalar versiones no actualizadas del software. Para ello abrimos una consola y escribimos la orden: $ sudo apt-get update Introducimos la contraseña de superusuario y dejamos que el sistema se actualice. 24 Una vez terminada la actualización procederemos a instalar los paquetes de Apache Server, para ello escribimos en la consola la siguiente orden: $ sudo apt-get install apache2 Una vez apt-get haya acabado de instalar los paquetes podemos comprobar que apache se ha instalado correctamente abriendo un navegador web como por ejemplo Firefox y dirigiéndonos al servidor local, para ello bastara con escribir en la barra de direcciones http://localhost si todo ha ido correctamente el navegador nos mostrara una pagina con el texto: It works! This is the default web page for this server. The web server software is running but no content has been added, yet. que nos indica que el servidor esta funcionando aunque aun no hayamos añadido ningún tipo de contenido. Ahora cualquier página web que creemos en el directorio raíz de la web con el nombre index.htm se visualizara en nuestro navegador cuando lo dirijamos al servidor local. Por defecto este directorio es /var/www/ pero podemos cambiarlo editando el archivo /etc/apache2/sites-available/default y sustituyendo cada aparición de la frase /var/www/ por la ruta del directorio que deseemos usar como raíz de nuestra web. En este caso, por comodidad usaremos un subdirectorio de nuestra carpeta personal. Una vez hayamos hecho los cambios debemos reiniciar el servidor para que surtan efecto, para ello usaremos la orden: $ sudo /etc/init.d/apache2 restart de este modo ya tenemos nuestro servidor listo para ser usado. 4.1.2. Instalando PHP5. Usamos apt-get para instalar el paquete php5: $ sudo apt-get install php5 25 Después en la sección //DB cambiaremos los valores de nuestra base de datos local por los valores de la base de datos que hemos creado en el servidor. Aquí se puede ver un ejemplo de como debería quedar el archivo config.php. (Los datos corresponden a una web de pruebas, no a la web real del cliente) <?php // HTTP define('HTTP_SERVER', 'http://www.tecnicoutlet.com/'); define('HTTP_IMAGE', 'http://www.tecnicoutlet.com/image/'); define('HTTP_ADMIN', 'http://www.tecnicoutlet.com/admin/'); // HTTPS define('HTTPS_SERVER', 'http://www.tecnicoutlet.com/'); define('HTTPS_IMAGE', 'http://www.tecnicoutlet.com/image/'); // DIR define('DIR_APPLICATION', '/home/kcjzhbey/public_html/catalog/'); define('DIR_SYSTEM', '/home/kcjzhbey/public_html/system/'); define('DIR_DATABASE', '/home/kcjzhbey/public_html/system/database/'); define('DIR_LANGUAGE', '/home/kcjzhbey/public_html/catalog/language/'); define('DIR_TEMPLATE', '/home/kcjzhbey/public_html/catalog/view/theme/'); define('DIR_CONFIG', '/home/kcjzhbey/public_html/system/config/'); define('DIR_IMAGE', '/home/kcjzhbey/public_html/image/'); define('DIR_CACHE', '/home/kcjzhbey/public_html/system/cache/'); define('DIR_DOWNLOAD', '/home/kcjzhbey/public_html/download/'); define('DIR_LOGS', '/home/kcjzhbey/public_html/system/logs/'); // DB define('DB_DRIVER', 'mysql'); define('DB_HOSTNAME', 'localhost'); define('DB_USERNAME', 'kcjzhbey_dogson'); define('DB_PASSWORD', 'dmt3gylh'); define('DB_DATABASE', 'kcjzhbey_tecnicoutlet'); define('DB_PREFIX', ''); ?> Con los archivos de configuración editados, el último paso que nos queda es subir por ftp todos los archivos de la tienda al servidor y con esto hemos terminado de colgar nuestra web. Ahora, si hemos seguido correctamente todos lo pasos, al escribir en la barra de direcciones de un navegador la ULR de nuestra web deberíamos ver la pagina principal de la tienda y añadiendo /admin a esta misma URL nos aparecerá la pantalla de login de nuestra área de administración. Llegados a este punto la tienda virtual ya esta preparada para recibir clientes. 32 5. Implementación. Una vez instalado OpenCart comprobamos que ofrece por si mismo funcionalidad mas que suficiente para cubrir todos los objetivos que planteamos en la sección de análisis, de tal modo que no hay necesidad escribir código nuevo por nuestra parte. De hecho, la aplicación ofrece bastante mas funcionalidad de la que habíamos previsto en nuestro análisis, como por ejemplo el envío de comentarios por parte de los compradores. Aun así, antes de que el cliente pueda empezar a usar su tienda virtual se hacen necesarios toda una serie de cambios para ajustarse a sus preferencias. 5.1. Cambios en Opencart. 5.1.1. Instalación del idioma español. El primer cambio a realizar en OpenCart es la instalación del paquete de idioma español, pues es la lengua que nuestro cliente va a usar para su trabajo. Para empezar debemos bajar el paquete en formato .zip de la siguiente dirección: http://www.opencart.com/index.phproute=extension/extension/info&exte nsion_id=7104&filter_search=spanish descomprimimos el archivo y copiamos el contenido de la carpeta upload en la el directorio raíz de nuestra web, le decimos que si cuando pregunte si deseamos combinar carpetas. En el área de administración vamos a System →Localization →Languages y pinchamos en el botón insertar. 33 En la pagina del nuevo idioma deberemos introducir los siguientes datos: Language Name : Español Code: es Locale: es_ES.UTF-8,es_ES Image: es.png Directorio: spanish Filename: spanish Estado: Activo Guardamos y el nuevo idioma ya debería estar operativo. Ahora vamos a System →Setings pinchamos en editar y en la pestaña Local seleccionamos Español tanto en Language como Administration Language. De este modo el español pasa a ser el lenguaje por defecto y todos lo menús nos aparecerán traducidos. 5.1.2. Cambios en Sistema. A parte de sustituir en Sistema →Configuración los datos genéricos que vienen por defecto al instalar OpenCart por los correspondientes a nuestro cliente y su tienda, incluyendo establecer el español y el euro como las opciones por defecto, hemos realizado las siguientes modificaciones. A petición del cliente, desactivamos todos los idiomas y monedas extranjeras, dejando de este modo solo activos el español y el euro. Para ello, y partiendo de que el español y el euro ya han sido previamente establecidos como las opciones por defecto, vamos a Sistema →Localización →Idiomas, y eliminamos English. En principio seria suficiente con cambiar a Inactivo el estado del idioma inglés, lo que permitiría recuperarlo después con facilidad si se deseara volver a tenerlo disponible. Pero al insertar un nuevo producto, la aplicación exige que se rellenen los campos del nombre del producto en todos los idiomas instalados, incluso aquellos inactivos. Esto provoca un error si el usuario no se molesta en rellenar el nombre en inglés del producto, lo cual es considerado como un engorro por el cliente. Uniendo a esto que el cliente asegura no tener intención de usar el idioma inglés ni ahora ni en el futuro nos hace optar por la total eliminación como mejor alternativa. Siguiendo el mismo razonamiento, vamos a Sistema →Localización →Monedas y eliminamos US Dollar y Pound Sterling. El siguiente paso es cambiar el logotipo de OpenCart por el logotipo de la tienda. Para ello vamos a Sistema →Configuración y en la pestaña Imagen cambiamos el archivo logo.png en el campo Logo de la tienda por el archivo logoTO90.gif proporcionado por el cliente. 34 5.1.3. Cambios en Extensiones. El cliente desea poder mostrar los productos que tenga en oferta en la pagina principal, para ello aprovecharemos el módulo Especiales que viene implementado, aunque no instalado por defecto, en OpenCart. Nos dirigimos a Extensiones →Módulos buscamos Especiales y pinchamos en instalar. Una vez instalado pinchamos en editar y añadimos un nuevo modulo. En este caso lo situaremos en la columna izquierda de la pagina principal. Por último editaremos el archivo catalog/language/spanish /modules/special.php de forma que la linea $_['heading_title'] = 'Especiales'; pase a decir $_['heading_title'] = 'Ofertas'; de este modo conseguimos que la cabecera de la columna diga Ofertas como el cliente ha pedido. Otro módulo que instalaremos es el de Bienvenido, esto nos permitirá situar un mensaje de bienvenida en la parte superior de la página principal con la información de contacto de la tienda. El campo Mensaje de bienvenida del módulo acepta códigos html lo que permite organizar la información en una tabla con los teléfonos, dirección física y correo electrónico en distintas casillas. Para hacer sitio al modulo de bienvenida, desactivaremos el módulo Diapositivas que ocupa la mayor parte de la pagina principal, aunque en este caso dejándolo instalado ya que el cliente piensa que puede serle útil en el futuro. Creamos varias instancias del módulo Banners para situarlas en la pagina principal. Una de ellas ira en la columna izquierda, inmediatamente debajo del módulo de ofertas con un enlace a la pagina de Facebook de la tienda. Varias otras irán situadas en la columna derecha con enlaces a paginas de interés general de internet como Wikipedia, Google o Youtube. Estos enlaces tienen como función solamente mantener ocupado ese espacio momentáneamente, ya que el cliente manifiesta el deseo de establecer posteriormente sus propios enlaces hacia páginas de su interés. 35 Por último para acabar con módulos, procedemos a desinstalar varios que el cliente manifiesta no tener interés en usar, concretamente Afiliados y Carrusel. Aun dentro de extensiones, las secciones Pagos y Total pedidos solo requieren que se dejen instaladas las opciones deseadas por el cliente. En el caso de Pagos estas son Transferencia bancaria, Contrareembolso y PayPal Standard, mientras que en Total pedidos dejamos Envío, Sub-Total, Impuestos y Total. Por otra parte, el caso de la sección Envío plantea un problema diferente, el cliente no considera satisfactoria ninguna de las opciones ofrecidas por OpenCart, lo que nos obliga a crear una opción personalizada por nosotros mismos. 5.1.4. El módulo Envío por ítem. El cliente desea poder establecer unos gastos de envío progresivos que le permitan cobrar una cantidad fija por envío mas una segunda cantidad menor que la anterior por cada artículo a partir del segundo. Así a un envío de un solo artículo se le cargara la cantidad x en gastos de envío, pero a un envío con dos o mas artículos se le cargara la cantidad x+y*(n-1), siendo n el total de artículos en el envío. Para conseguir esta funcionalidad hemos buscado el modulo ya implementado en OpenCart que tiene un funcionamiento mas similar y le hemos hecho las modificaciones necesarias. El módulo envío por ítem. permite cargar una cantidad por cada artículo enviado siendo así el total cobrado x*n, para conseguir que funcione como deseamos hemos tenido que hacer cambios en los tres archivos que gobiernan su funcionamiento, todos ellos se llaman item.php pero se encuentran en carpetas diferentes: En /admin/view/template/item.php añadimos las siguientes lineas de código: <tr> <td><?php echo "Primer artículo"; ?></td> <td><input type="text" name="first_cost" value=" <?php echo $first_cost; ?>" /></td> </tr> esto nos permite capturar una nueva variable llamada $first_cost que contendra el precio del primer artículo del envío. 36 En /admin/controller/shipping/item.php añadimos las siguientes lineas de código: if (isset($this->request->post['first_cost'])) { $this->data['first_cost'] = $this->request->post['first_cost']; } else { $this->data['first_cost'] = $this->config->get('first_cost'); } esto nos permite almacenar la nueva variable capturada en el código anterior. Por último en /catalog/model/shipping/item.php sustituimos la siguiente linea de código: 'cost'=> $this->config->get('ítem._cost') * $this ->cart->countProducts(), por esta: 'cost'=> $this->config->get('ítem._cost') * ($this->cart ->countProducts()-1)+$this->config->get('first_cost'), aquí es donde se hace el cálculo del precio total del envío, y como se puede apreciar la fórmula pasa de ser y*n a ser y*(n-1)+x, lo que coincide con nuestro objetivo. 5.1.5. Cambios en hojas de estilo. Para conseguir que la aplicación muestre el aspecto deseado debemos editar el archivo de hoja de estilo stylesheet.css que se encuentra en la carpeta catalog/view/theme/default/stylesheet. Primero, para que el logotipo que cambiamos previamente se vea bien, debemos recolocarlo cambiando los valores de los campos top y left bajo la sección #header #logo hasta que quede en la posición idonea. También bajo la sección layout puede ser necesario cambiar algunos valores para que las anchuras y alturas de los diferentes elementos resulten las apropiadas para un aspecto óptimo. Por último, el añadir bajo la sección body las siguientes lineas: background-image: url(../image/background.gif); background-repeat: repeat; nos permite establecer la imagen que deseemos como el fondo de la pagina solo con llamarla background.gif y situarla en la carpeta /catalog/view/theme/default/image. 37 5.1.6. Cambios menores. También se han hecho una serie de cambios de menor importancia que no merecen especial atención como cambios en algunos archivos de la carpetas de lenguaje donde las traducciones al español eran incorrectas o incompletas y la inclusión de la frase I.V.A. Incluido a continuación de los precios de los artículos en varias páginas. 38 6. Manual de usuario. Esta sección está dedicada al propietario y/o administrador de la tienda. Para el la aplicación tiene reservada un área de administración a la que se accede a través de un navegador web añadiendo /admin a la URL de la tienda, por ejemplo: http://www.mytienda.es/admin esto nos mostrara una pantalla de login donde deberemos introducir nuestro nombre de usuario y contraseña. Figura 6.1: Pantalla de login de OpenCart. Una vez hecho esto tendremos acceso al panel de control del área de administración, donde se nos muestran algunas estadísticas sobre el funcionamiento reciente de nuestra tienda. En la parte superior de esta pantalla tenemos una barra de menú que nos permitirá acceder a todas las funcionalidades que tenemos disponibles. En este texto vamos describir solo aquellas operaciones mas comunes, si el usuario desea información sobre operaciones mas avanzadas puede acceder a la documentación del producto desde Ayuda →Documentación. 39 6.1. Catálogo. 6.1.1. Productos. Pinchando Catálogo →Productos en la barra de menús nos lleva a una lista con los artículos que ofrecemos en nuestra tienda, desde aquí podemos insertar, eliminar o editar productos. Figura 6.2: Lista de productos. Al insertar o editar productos accedemos a una pantalla de información, en la que se nos muestran una gran cantidad de datos sobre el producto repartidos en varias pestañas. Solo dos de estos campos Nombre del producto y Modelo son obligatorios, y la aplicación no nos permitirá guardar un producto si no los hemos rellenado. De los demás datos, muchos posiblemente no sean aplicables a nuestro producto o no los consideremos importantes, pero será interesante rellenar al menos los siguientes campos: Pestaña General: Aparte del nombre, también es interesante rellenar la descripción, pues esta dará información sobre nuestro producto al cliente. Este campo permite introducir formato de texto, imágenes, etiquetas html con tal de hacerla mas atractiva. Los campos de etiquetas nos permiten introducir palabras clave que ayuden a un cliente a encontrar nuestro producto con mas facilidad usando buscadores tanto en la web (meta descripción , meta palabras clave) como el buscador interno de nuestra aplicación (productos). Es interesante que pensemos que palabras pueden venirle a la mente al cliente cuando este buscando un producto concreto. 40 Figura 6.3: Pestaña General de información del producto. Pestaña Datos: En el campo Modelo debemos introducir una combinación de caracteres alfanuméricos que sea única para cada producto introducido y que sera usada internamente por la aplicación para identificar el producto. El campo Precio es importante rellenarlo pero no necesita mas explicación. El campo tipo de impuesto nos permite seleccionar el impuesto que se aplica al producto (Por ejemplo el IVA). Este impuesto se sumara al precio al mostrárselo al cliente. (Ver la sección Impuestos para mas información). Figura 6.4: Pestaña Datos de información del producto. 41 6.1.7. Información. Figura 6.12: Lista de árticulos de información. Catálogo →Información nos da acceso a una lista de artículos de información sobre nuestra tienda, como Quienes somos o Política de privacidad que podemos editar y que aparecerán en la sección Información de la pagina principal del área de clientes. Al editar un artículo podemos introducir imágenes, código html etc... Figura 6.13: Ejemplo de árticulo de información, Quienes Somos. 48 6.2. Extensiones. 6.2.1. Módulos. En Extensiones →Módulos accedemos a una lista de módulos que permiten añadir funcionalidad a nuestra tienda. En esta sección solo describiremos aquellos que están instalados en esta implementación, el usuario puede añadir módulos extra pinchando en la opción Instalar de aquellos módulos que no estén instalados. Figura 6.14: Lista de módulos. Antes de centrarnos en módulos concretos describiremos algunas opciones generales que se repiten al editar la mayoría de los módulos. La opción Diseño le indica a la aplicación en que sección del área de cliente queremos que aparezca un determinado módulo, por ejemplo Home indica que el módulo aparecerá en la página principal. Si deseamos que un módulo aparezca en mas de una sección, deberemos añadir una nueva instancia del módulo. La opción Posición le indica a la aplicación en que parte de la página queremos que aparezca el módulo, arriba, abajo, a la izquierda o a la derecha. La opción Orden de aparición indica el orden en que aparecerán los módulos si hay mas de uno ocupando una misma sección y posición. Por último la opción Estado hace que el módulo solo aparezca en caso de estar seleccionado Activo. 49 El módulo Cuenta permite al cliente crear una cuenta de usuario y acceder a ella mediante su nombre de usuario y contraseña. Por defecto aparece en la página de cuenta de usuario. El módulo Banner permite crear anuncios con una imagen y una URL asociada que atraigan al cliente hacia páginas concretas de nuestro propio site o de un site externo. Figura 6.15: Lista de banners. Al añadir uno nuevo, debemos seleccionar un banner que hayamos creado previamente y indicar las dimensiones en píxeles con las que queremos que se muestre. Los banners deben ser creados en Sistema →Diseño →Banners, allí podemos insertar banners nuevos o modificar los ya existentes. En principio un banner debe tener un nombre, una URL y una imagen, pero podemos añadir múltiples filas con estos tres campos a un mismo banner. La utilidad de esto se vera mas adelante cuando se explique el módulo Diapositivas. Por defecto hay varios banners habilitados en la columna derecha de la página principal. El modulo Destacados hace aparecer una tabla con imágenes de aquellos productos que hayamos incluido en la lista que aparece al editar este módulo. Por defecto aparece en la parte central de la pagina principal. El módulo Categoría hace aparecer una lista con las categorías que tengamos definidas en nuestra tienda. Por defecto aparece en la columna izquierda en las páginas de categorías y de productos. 50 Figura 6.16: Módulo Destacados. El modulo Diapositivas crea un anuncio similar a un banner, pero con múltiples imágenes que se van alternando pudiendo cada una de ellas apuntar a una URL diferente. Al igual que los banners las diapositivas deben haber sido creadas previamente tal como se describe en la sección del módulo Banners. No hay ninguna diapositiva activada por defecto en esta implementación. El módulo Ofertas hace aparecer un cuadro donde se listan aquellos productos que tengamos en oferta. En la sección Productos se explica como se puede poner un producto en oferta. Por defecto aparece a la izquierda de la página principal. El módulo Bienvenido permite escribir un mensaje de bienvenida que puede incluir imágenes y código html. Por defecto aparece en la parte superior de la pagina principal y incluye información de contacto. Figura 6.17: Módulo Bienvenido. 51 6.2.2. Envío. Accediendo a Extensiones →Envío podemos seleccionar los métodos de envío entre los que el cliente pude elegir al hacer un pedido. En esta implementación solo esta instalado el envío Por artículo, que permite establecer un precio por el primer artículo y un suplemento por cada artículo adicional. El usuario puede instalar nuevos métodos de envío pinchando en la opción Instalar de aquellos que no estén instalados. Figura 6.18: Ejemplo de método de envío, envio por artículo. 6.2.3. Métodos de pago. Acceder a Extensiones →Pagos nos permite seleccionar los métodos de pago entre los que el cliente pude elegir al hacer un pedido. En esta implementación solo están instalados Transferencia bancaria, Contra-reembolso y PayPal Standard, como en los casos anteriores, el usuario puede instalar métodos de pago adicionales. En Transferencia bancaria el usuario deberá indicar su numero de cuenta y otros datos necesarios para que el cliente pueda hacer la transferencia. En el caso de Contra-reembolso, se puede especificar un monto mínimo del pedido para que esta opción este disponible. En PayPal Standard el usuario deberá introducir el correo electrónico asociado a su cuenta de PayPal. El resto de campos pueden dejarse en sus valores por defecto. 52 Figura 6.19: Métodos de pago. 6.3. Ventas. 6.3.1. Pedidos. Desde Ventas →Pedidos se accede a la lista de todos los pedidos que han realizado los clientes de nuestra tienda. Pinchando sobre Ver en un pedido concreto nos abre la página de información de ese pedido. Figura 6.20: Detalles del pedido. 53 En esta página tenemos varias pestañas que contienen información detallada sobre el pedido y además nos da la opción de imprimir la factura correspondiente. En la pestaña Historial pedidos podemos llevar un control del historial del pedido añadiendo eventos como el momento en el que el pedido es enviado o si ha sido devuelto por el cliente. Figura 6.21: Ejemplo de factura. 6.3.2. Clientes. En Ventas →Clientes →Clientes tenemos una lista con todos los clientes que se han registrado en nuestra tienda. Pinchando en Editar se abrirá la pagina con la información del cliente y podremos editar sus datos, incluyendo restablecer su contraseña. Figura 6.22: Pestaña General de información del cliente. 54 También podemos crear grupos de clientes en Ventas →Clientes →Grupos. Esto nos permite agrupar a los clientes según sus características de forma que podamos dirigir ciertas ofertas a clientes que cumplan un perfil determinado. Por defecto todos los clientes son creados como parte del grupo Default, pero esto puede ser posteriormente modificado en la página de datos del cliente, seleccionando un nuevo grupo en el campo Grupo clientes. 6.4. Sistema. 6.4.1. Usuarios. La aplicación nos permite crear varias cuentas de usuario desde Sistema →Usuarios →Usuarios, cada una de las cuales permitirán acceder al área de administración con su propio nombre de usuario y contraseña. Estos usuarios pueden ser asignados a grupos que habrán sido previamente creados en Sistema →Usuarios →Grupo Usuarios y a los que se puede asignar unos determinados permisos tanto para ver como para modificar el contenido del área de administración. Figura 6.23: Página de información de grupo de usuarios. De este modo los permisos que estén activados en la lista Permiso acceso de un grupo determinado indicarán que este grupo puede ver pero no modificar estas secciones, mientras que para poder hacer modificaciones deberá tener los permisos correspondientes activados en la lista Permiso modificación. 55 Lógicamente solo un usuario que tenga el permiso de modificación para user/user_permision podrá modificar los permisos de otros. Por defecto esta creado el grupo Top Administrator que tiene activados todos los permisos y es el grupo al que pertenece el usuario admin. 6.4.2. Impuestos. Esta opción nos permite definir el tipo de impuestos que se aplican a los productos de nuestro catalogo, para ello primero debemos definir los valores de estos impuestos en Sistema →Localización →Impuestos →Valoración impuesto, aquí podemos insertar un nuevo impuesto y definir su importe y a que área geográfica es aplicable. Figura 6.24: Editar Valoración de Impuestos. Como ejemplo tenemos el IVA al 21% y aplicable en Península y Baleares. Para poder aplicar este impuesto a nuestros productos, debemos ir a Sistema →Localización →Impuestos →Clases de Impuestos y insertar un nuevo tipo de impuesto en el que seleccionaremos el impuesto IVA previamente creado y decidiremos el área geográfica de aplicación se basa en la dirección de nuestra tienda o la dirección en la que el cliente va a recibir el pedido o realizar el pago. Una vez guardemos ya tendremos disponible el impuesto para seleccionarlo al crear o modificar un producto. 56 7. Conclusiones. La principal conclusión que podríamos deducir de la realización de este proyecto es que, en casos en los que ya existen múltiples soluciones en código abierto al problema que se nos plantea, es preferible adaptar a nuestras necesidades una solución preexistente que intentar desarrollar una nueva solución partiendo de cero. El tiempo y esfuerzo dedicado a documentarnos sobre la solución existente se compensara ampliamente con el tiempo y esfuerzo que ahorremos en desarrollarla nosotros mismos. Además, nos beneficiaremos de el trabajo e ideas de muchos otros desarrolladores, obteniendo así múltiples funcionalidades que a nosotros mismos no se nos hubieran ocurrido. 57