ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA INGENIERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN



Documentos relacionados
PRESENTACIÓN DEL PRODUCTO

e-commerce, es hacer comercio utilizando la red. Es el acto de comprar y vender en y por medio de la red.

Manual para la utilización de PrestaShop

MANUAL DE AYUDA MODULO TALLAS Y COLORES

Person IP CRM Manual MOBILE

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD

Qué necesito saber para tener mi sitio web en Internet?

Objetivos del proyecto:

Manual del usuario USO DEL MERCADO

COMERCIO ELECTRÓNICO

Funcionalidades Software SAT GotelGest.Net (Software de Servicio de Asistencia Técnica)

e-commerce vs. e-business

Multipedidos es un sistema de ventas on-line que permite gestionar pedidos por internet en tiempo real de manera económica, simple y eficaz.

NOTAS TÉCNICAS SOBRE EL SIT: Documentos de Gestión

APOLO GESTION INTEGRAL.

TPV VIRTUAL O PASARELA DE PAGOS DE CAJASTUR

Guía de uso del Cloud Datacenter de acens

Resumen ÁREA DE FACTURACIÓN::INFORMES::Pedidos Detalle Resumen ÁREA DE

efactura Online La fibra no tiene competencia

El e-commerce de Grupo JAB es una herramienta que permite a los clientes del Grupo, realizar un amplio conjunto de servicios de consulta, petición y

GedicoPDA: software de preventa

Modulo I. Introducción a la Programación Web. 1.1 Servidor Web.

3. Qué necesitamos para usar Wordpress?

Oficina Online. Manual del administrador

PROPÓSITO... 2 DETERMINANTES PARA UNA BUENA EXPERIENCIA DE USO...

CIF-KM. GUÍA DE LOS PRIMEROS PASOS

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO

Guía de referencia para mytnt. mytnt. C.I.T Tecnología Aplicada al Cliente

Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA

Manual de uso básico de la aplicación

Facturación - Software de facturación para profesionales y autónomos.

Integración de Magento & Dynamics NAV

MANUAL DE AYUDA. SAT Móvil (Movilidad del Servicio Técnico)

Requisitos Tecnológicos en el Ámbito del Comercio Electrónico

Seminario Electrónico de Soluciones Tecnológicas sobre VPNs de Extranets

GVisualPDA Módulo de Almacén

(Soluciones ADSL e-comercio) GUIA DE USUARIO. Versión 2.1. Parte 3. Manual del servicio Crea tu Tienda de Telefónica Net, ver 2.

MÓDULO 3 HERRAMIENTAS EN LA NUBE: ANFIX

NOTAS TÉCNICAS SOBRE EL SIT: Definición y Configuración de Usuarios

Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: Fax.:

UNIVERSIDAD DE SALAMANCA

Maxpho Commerce 11. Gestión CSV. Fecha: 20 Septiembre 2011 Versión : 1.1 Autor: Maxpho Ltd

AHORRACOM SOLUCIONES AVANZADAS S.L. Avda. de la Industria 13, Oficina Alcobendas, Madrid.

Manual hosting acens

Figura 4.6: Prototipo de la pantalla de inicio.

MANUAL DEL USUARIO: EDITOR E-COMMERCE

INSTALACIÓN DE MEDPRO

ACCESO AL SERVIDOR EXCHANGE MEDIANTE OWA

Edición de Ofertas Excel Manual de Usuario

App para realizar consultas al Sistema de Información Estadística de Castilla y León

Descripción del sistema

Software Útil para Todos. Desarrollado por:

Guía de los cursos. Equipo docente:

APLICATECA. Guía para la contratación y gestión de. Hacemos Tu Web

Skype. Inguralde [Enero 2011]

WINDOWS : TERMINAL SERVER

Qué es una página web?, qué conoces al respecto?, sabes crear una página

TeCS. Sistema de ayuda a la gestión del desarrollo de producto cerámico

MANUAL DE USO DE LA APLICACIÓN

MANUAL DE AYUDA. MODULO SAT (Anexo Integración AGIL SAT)

EDI. por dónde empezar? Intercambio Electrónico de Datos (EDI), Intercambio Electrónico de Datos (EDI), Intercambio Electrónico de Datos (EDI)

Presentación y Planificación del Proyecto: Administración de Calzado

SERVICIOS PARA EL DISEÑO E IMPLEMENTACIÓN DEL PROGRAMA INTEGRAL DE TRANSFORMACIÓN DIGITAL DE LA PROVINCIA DE LUGO: TRANSFORM@TIC

Introducción a la Firma Electrónica en MIDAS

ERP GESTION LOGÍSTICA

QUÉ ES UN SERVIDOR Y CUÁLES SON LOS PRINCIPALES TIPOS DE SERVIDORES? (PROXY, DNS, WEB, FTP, SMTP, ETC.) (DV00408A)

GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD

Nosotros nos encargamos de la parte técnica, tú de las ventas. Tiendas online Gorile Qué es Gorile? Visita nuestra web: gorile.com

GESTINLIB GESTIÓN PARA LIBRERÍAS, PAPELERÍAS Y KIOSCOS DESCRIPCIÓN DEL MÓDULO DE KIOSCOS

Guía Rápida Preguntas Frecuentes

Interoperabilidad de Fieldbus

Elementos requeridos para crearlos (ejemplo: el compilador)

Gestión de Extensiones en Joomla!

SISTEMA DE GESTIÓN DE INCIDENCIAS Y REQUERIMIENTOS MESA DE AYUDA SINAT MANUAL DE USUARIO

Con esta nueva versión, si un artículo que está incluido dentro de un Paquete de Ventas tiene precio 0,00, significará gratis.

Ingeniería de Software. Pruebas

REGISTRO DE PEDIDOS DE CLIENTES MÓDULO DE TOMA DE PEDIDOS E INTEGRACIÓN CON ERP

INTRANET DE UNA EMPRESA RESUMEN DEL PROYECTO. PALABRAS CLAVE: Aplicación cliente-servidor, Intranet, Área reservada, Red INTRODUCCIÓN

Pack Web Empresa. Componentes adicionales

Cómo seleccionar el mejor ERP para su empresa Sumario ejecutivo

MANUAL DE USUARIO APLICACIÓN SYSACTIVOS

GUÍA DE USUARIO DEL CORREO

Manual de iniciación a

Copyright Arsys Internet S.L. Guía de Ecommerce Inicio rápido

SISTEMA DE PAPELES DE TRABAJO PARA AUDITORÍA SPT AUDIT

Para instalar el software FacturaScripts, primero deberemos descargarlo. Para ello, accedemos a la url:

APLICATECA. Guía para la contratación y gestión de. Te Destaco

Guía de Inicio Respaldo Cloud

ADT CONSULTING S.L. PROYECTO DE DIFUSIÓN DE BUENAS PRÁCTICAS

Gestión de Permisos. Bizagi Suite. Copyright 2014 Bizagi

INSTRUCCIONES BÁSICAS DE ACCESO AL PORTAL DEL CLIENTE

Control del Stock, aprovisionamiento y distribución a tiendas.

RESUMEN INFORMATIVO PROGRAMACIÓN DIDÁCTICA CURSO 2013/2014

Capítulo 5. Cliente-Servidor.

GUÍA BÁSICA DE INSTALACIÓN

MANUAL DE USUARIO CMS- PLONE

Manual de uso de la plataforma para monitores. CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib

DE PEKEÑAJOS SOCIEDAD CIVIL

PROCEDIMIENTO ESPECÍFICO. Código G Edición 0

Ejemplo de desarrollo software empleando UML

Transcripción:

ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA INGENIERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN Realizado por CRISTINA DEL MARCO MARTÍNEZ 14638129d Dirigido por DAVID FELIPE BENAVIDES CUEVAS Departamento LENGUAJES Y SISTEMAS INFORMÁTICOS Sevilla, Noviembre del 2012

Resumen 5 PARTE I: INTRODUCCIÓN 7 1.- Introducción 8 1.1.- Objetivos del proyecto 8 1.1.1.- Conocimientos 9 1.1.2.- Formación 9 1.2.- Desarrollo del proyecto 10 1.3.- Estructura del documento 10 PARTE II: MATERIAS RELACIONADAS 13 2.- Conceptos 14 2.2.- Introducción al comercio electrónico 15 2.2.1.- Origen y evolución histórica 16 2.2.2.- Categorías 18 2.2.3.- Ventajas 19 2.2.4.- Inconvenientes 20 3.- Herramientas 22 3.1.- Herramientas de comercio electrónico 24 PARTE III: SISTEMA DESARROLLADO 26 4.- Dominio del problema 27 4.1.- Introducción 27 4.2.- Glosario de términos 28 4.2.1.- Términos propios de PrestaShop 28 4.2.1.- Términos de la tienda online 28 4.2.2.- Términos de la tienda física 29 5.- Visión general del sistema 30 5.1.-Participantes en el proyecto 30 5.2.- Objetivos del sistema 31 6.- Requisitos del sistema 33 6.1.- Requisitos de información 33 6.2.- Reglas de negocio y restricciones 34 6.3.- Requisitos funcionales 35 6.3.1- Diagramas de casos de uso 35 6.3.1.1.- Subsistema de gestión de venta en mostrador 35 6.3.2.- Definición de actores 36 6.4.- Otros requisitos funcionales 38 6.5.- Requisitos no funcionales 39 6.6.- Matriz de rastreabilidad objetivos / requisitos 40 Cristina del Marco Martínez Página 2

7.- Análisis del sistema 41 7.1.-Diagrama 42 7.1.1.- Subsistema de venta en mostrador 43 7.1.2.- Subsistema de grupos de clientes 44 7.1.3.- Subsistema de pedidos 45 7.1.4.- Subsistema de productos 46 7.2.- Tipos 46 7.3.- Diagrama de proceso de negocio 47 7.3.1.- Proceso de negocio de la tienda online 48 7.3.2.- Proceso de negocio de la tienda física 50 8.- Implementación del sistema 52 8.1.- Aspectos fundamentales 52 8.1.1.- Arquitectura técnica de PrestaShop 52 8.1.2.- Esquema de base de datos 54 8.2.- Qué es un módulo de PrestaShop? 55 8.3.- Principios técnicos en que se basa un módulo 55 8.4.- Principios de funcionamiento de los módulos 55 8.5.- Árbol de archivos del módulo en PrestaShop 56 8.6.- Estructura básica de un módulo de PrestaShop 56 8.7.- Conexión de un módulo a través de Hooks 59 8.8.- Introducción a Smarty 60 8.9.- Traducción de un módulo en PrestaShop 62 8.10.- Creación de la pestaña de back-office del módulo 63 9.- Pruebas del sistema 71 9.1.- Pruebas de interfaces 71 9.2.- Pruebas de operaciones y funcionalidades 71 10.- Instalación del sistema 73 10.1.- Prerrequisitos técnicos 73 10.2.- Instalación en servidor remoto 74 10.3.- Instalación de PrestaShop 74 10.3.1.- Descarga y descompresión del archivo PrestaShop 74 10.3.2.- Carga de PrestaShop 75 10.3.2.1.- Instalación y configuración del cliente FTP 76 10.3.2.2.- Carga de los archivos 77 10.3.3.- Creación de una base de datos para la tienda 78 10.3.4.- Lanzamiento del auto-instalador 79 9.3.4.1.- Compatibilidad del sistema 80 9.3.4.2.- Configuración del sistema 82 10.3.4.3.- Configuración de la base de datos 83 10.3.4.4.- Tipo de instalación 83 10.3.4.5.- Parámetros de envío de emails 83 10.3.5.- Finalización de la instalación 85 11.- Manual de uso de la aplicación 86 Cristina del Marco Martínez Página 3

11.1.- Cliente 87 11.2.- Pedido 88 11.2.1.- Descuentos 89 11.2.2.- Atributos 90 PARTE IV: CONCLUSIONES 92 12.- Planificación y costes 93 12.1.- Planificación 93 12.2.- Estimación del coste del proyecto 93 13.- Cumplimiento de los objetivos del proyecto 95 PARTE V: BIBLIOGRAFÍA CONSULTADA 96 13.- Bibliografía 97 Cristina del Marco Martínez Página 4

Resumen Desde las primeras civilizaciones el comercio ha sido uno de los pilares principales de la actividad socio-económicas. A día de hoy, desde que Internet se hizo de uso público, ha cambiado y mejorado de muchas maneras. Internet es tan común que se ha convertido en parte de nuestra vida diaria, cambiando el método de cómo compartimos y encontramos información, estamos en contacto, solicitamos servicios, e incluso también compramos por este medio. Muchas empresas convencionales que tenían éxito en sus establecimientos físicos optaron por dar el gran paso y comenzaron sus andaduras a través de la red y aumentaron considerablemente sus beneficios. En los tiempos que corren, con la crisis económica también se presenta el caso de los que comenzaron sus andaduras directamente en internet. Con una simple infraestructura, una tienda virtual, un negocio puede tener muchas posibilidades de éxito sin necesidad de una gran inversión. Estos últimos también cada vez más abren sus establecimientos/almacenes para vender de forma directa, sin medios interactivos. A la hora de vender por internet, y tener un establecimiento físico, se dispone de la misma cantidad de un producto ya que se dispone del mismo almacén para ventas físicas y ventas online. Uno de los principales problemas que se presenta es el control de stock. Expongamos un ejemplo práctico para manifestar la problemática: una empresa dispone de ambos departamentos, online y físico, pero con sistemas de administración independientes entre sí. Se presenta un producto específico, del cual disponemos de 3 unidades y en la tienda on-line figura esa cantidad. Entra un cliente y se lleva dos unidades y 3 minutos más tarde otro cliente de forma telemática realiza el pedido de 3 unidades más. En este caso no se dispone de unidades suficientes para enviar al cliente web provocando un profundo enfado e incluso una anulación de su pedido produciendo pérdidas a la empresa y dando una mala imagen. Por y para ello damos vida a PrestaManagament, un modulo de control de inventario inmediato. Gracias a PrestaManagament se podrá gestionar directamente las ventas físicas a través del panel de administración de la tienda on-line. Se facilitará una contabilidad conjunta de todas las ventas, ya que este módulo nos permite añadir ventas en mostrador directamente al listado de pedidos. Con el también podremos añadir directamente los datos de un cliente que ya realizó compras a través de la web. Esto le permitirá que al acceder a su cuenta pueda visualizar Cristina del Marco Martínez Página 5

todas sus compras, sean a través de la web o bien de forma directa. No hay que olvidar las bonificaciones, con cualquier compra se acumularía puntos, y podrías canjear esos descuentos o de forma online o en el propio establecimiento físico. Para agilizar todo el proceso de compra hemos incluido un terminal de punto de venta (TPV). Una interfaz gráfica en la cual poder añadir todas las opciones oportunas para realizar cualquier venta física en pocos pasos y de forma muy sencilla. Se podrá localizar un producto o bien a través de un buscador disponible o directamente con su código de barras y un lector de códigos de barra. En el mercado existen programas externos que podemos configurar para que cada cierto tiempo sincronicen con nuestra base de datos de nuestra web. La función que realiza nos ayuda bastante a mantener el stock al día, pero en los tiempos de sincronización puede ocurrir algún descontrol de stock. Las principales ventajas de la aplicación, a parte de la sincronización inmediata del stock web tras la finalización de la compra y utilizar la misma base de datos en ambas tiendas, serían en primer lugar el poder desempeñar la nueva actividad sin ningún tipo de instalación nueva, ya que todo se agrupa en el mismo servidor. Esto nos permite una total seguridad si el equipo informático deja de funcionar correctamente y podamos perder cualquier información del disco duro. Añadir además que se puede acceder a la aplicación desde cualquier equipo, simplemente accediendo al panel de administración con los datos de usuario y contraseña. Una aplicación de fácil manejo y rapidez que ayudará a negocios que quieren disfrutar de un crecimiento empresarial sin necesidad de más preocupaciones que las que ya conlleva emprender este tipo de camino. Cristina del Marco Martínez Página 6

PARTE I: INTRODUCCIÓN Cristina del Marco Martínez Página 7

1.- Introducción Actualmente, las ventas on-line están a la orden del día: las personas prefieren la comodidad y la flexibilidad de hacer sus compras desde su ordenador, comparar precios y calidades sin apenas moverse de casa. Desde el punto de vista del vendedor, existen gestores de contenidos que facilitan la administración de este tipo de establecimientos, así como la forma de pago, transporte y comunicación con los clientes. Pero el problema llega cuando al responsable de la tienda on-line comienza un nuevo proyecto: una tienda física. Por defecto, los gestores de contenido están diseñados para ubicar exclusivamente negocios enfocados a la web y los responsables de estos negocios utilizan otros programas o aplicaciones para gestionar independientemente la tienda física, haciendo mucho más complicado la administración de la empresa en su totalidad. PrestaManagement es un módulo aplicado al gestor de contenido PrestaShop, el cual se encaga de fusionar las ventas on-line ya existentes con las ventas en mostrador del futuro negocio físico. Esta aplicación permite al comercial registrar un nuevo cliente en la base de datos o acceder a los clientes de la tienda on-line si le es necesario, al igual que utilizar un cliente por defecto si este no está registrado. Además, posee un filtro para añadir productos a partir del nombre o el número de identificación y del código de barras. También se dan facilidades para aplicar descuentos, ya sean cheques descuento o rebajas como la correspondiente deducción por grupo de cliente (distribuidores, por ejemplo). 1.1.- Objetivos del proyecto El propósito primordial de este proyecto es facilitar la fusión de la administración de una empresa que posee ventas on-line y ventas en mostrador, utilizando la comodidad que ofrece Prestashop para llevar la contabilidad de una actividad. Al igual que los pedidos realizados vía Internet constan de un estado para identificar en qué fase se encuentra, las ventas que se lleven a cabo en la tienda física se incluirán en la misma tabla de pedidos con un estado independiente: Servido en mostrador, esto ayudará a separar las ventas si se requiere. También ofrece las herramientas necesarias para vender artículos almacenados con atributos, canjear vales de descuentos, aplicar los productos a través de un lector de códigos de barras e imprimir las facturas de los pedidos realizados mediante PrestaManagement. Cristina del Marco Martínez Página 8

1.1.1.- Conocimientos Este proyecto se ha llevado a cabo partiendo de conocimientos adquiridos en la carrera, como es la introducción a PHP, JavaScript o Ajax. Pero la mayor aportación se ha notado a la hora de resolver problemas que han surgido y en el correcto desarrollo de la aplicación. Independientemente de los lenguajes de programación, también he empleado conocimientos previos en el gestor de contenido PrestaShop y su arquitectura propia, ya que este tipo de herramientas de administración utilizan conceptos, arquitecturas y protocolos especiales para su correcto funcionamiento. 1.1.2.- Formación Al haber escogido un proyecto basado en un gestor de contenido de comercio electrónico, se ha requerido una serie de estudios sobre dicha tecnología, su manera de organizar los archivos, los generadores de plantillas, etc., así como profundizar más en los lenguajes de codificación anteriormente nombrados, ya que con una simple introducción no era suficiente para desarrollar un módulo con estas características. Las fases que se ha recorrido para implantar esta creación han sido: Recogida de información: Se ha recogido información en forma de manuales, principalmente a través de Internet. Estudio de información: Se ha llevado a cabo un profundo estudio de la información recogida con el fin de comprender mejor el funcionamiento de las distintas aplicaciones. Prácticas: Se han realizado pruebas de compra desde la web para estudiar el comportamiento de las ventas on-line con el fin de comprender y familiarizarme con el entorno de PrestaShop. Integración: Se han estudiado diferentes manuales de creación de módulos en PrestaShop para conocer las distintas versiones existentes y aplicar los conocimientos en el desarrollo del proyecto. Desarrollo: Finalmente, se ha procedido a la realización del proyecto mediante el uso de las pautas anteriormente descritas. El proyecto debe presentarse como una prueba final que nos permita adquirir experiencia a la hora de enfrentar proyectos en la vida laboral. Cristina del Marco Martínez Página 9

1.2.- Desarrollo del proyecto PrestaManagement Este proyecto empezó con un problema real, es decir, una empresa que necesitaba una aplicación para unificar las gestiones de una tienda virtual y una tienda física. A partir de esta idea, le propuse a mi tutor presentarla como proyecto final de carrera y le pareció buena idea. A pesar de no tener una cantidad de código significativa de una página web, por ejemplo, se han necesitado muchos conocimientos técnicos y requisitos de protocolos específicos para codificar un nuevo apartado en la administración de un gestor de contenidos como es PrestaShop. Para desarrollar el módulo, decidí utilizar el programa Netbeans IDE 7.1, ya que está dando excelentes resultados con diferentes tipos de lenguaje de código y utilizarlo con PHP 5 era bastante novedoso. Un problema significativo que se presentó, fue el no poder emplear un repositorio de subversion debido al tamaño del contenido de la tienda virtual. A consecuencia de esto, se han tenido que realizar diversas copias de seguridad para no perder lo completado. He tenido que amoldarme a la estructura que ofrece PrestaShop a la hora de realizar pedidos, puesto que, por defecto, es un gestor orientado a ventas en la red que conlleva una serie de detalles tales como transporte, formas de pago y recogida entre otros que no se iban a tener en cuenta en este caso. También me he reunido varias veces con mi tutor para llevar un control del proyecto y comprobar que todo está correcto. Para finalizar, y después de algunos meses, PrestaManagement está listo para desempeñar su actividad y aportar su granito de arena en el sector comercial. 1.3.- Estructura del documento El proyecto está estructurado de la siguiente forma: BLOQUE 1. Introducción Es el bloque actual y contendrá los siguientes subapartados: 1 Introducción. 1.1 Objetivos del proyecto. 1.2 Desarrollo del proyecto. 1.3 Estructura del documento. Cristina del Marco Martínez Página 10

BLOQUE 2. Materias relacionadas PrestaManagement En este bloque describimos los conceptos necesarios para comprender la aplicación, así como las herramientas empleadas para el desarrollo del proyecto: 2. Conceptos 2.2 Introducción al comercio electrónico 3. Herramientas 3.1 Herramientas de comercio electrónico BLOQUE 3. Sistema desarrollado Este es el bloque más amplio, contará con los siguientes apartados: 4. Dominio del problema Consiste en una descripción del sistema actual. 4.1. Introducción 4.2. Glosario de términos 5. Visión general del sistema En este apartado definimos los objetivos de la aplicación 5.1. Participantes del sistema 5.2. Objetivos del sistema 6. Requisitos del sistema Aquí va el documento de requisitos del sistema 6.1. Requisitos de información 6.2. Reglas de negocio y restricciones 6.3. Requisitos funcionales 6.4. Otros requisitos funcionales 6.5. Requisitos no funcionales 6.6. Matriz de rastreabilidad objetivos / requisitos 7. Análisis del sistema Aquí se mostrará el análisis realizado para desarrollar el sistema 7.1 Diagrama 7.2 Tipos 7.3 Diagrama de proceso de negocio 8. Implementación del sistema Aspectos más relevantes de la implementación del sistema 8.1 Aspectos fundamentales 8.2 Qué es un módulo de PrestaShop? 8.3 Principios técnicos en que se basa un módulo 8.4 Principios de funcionamiento de los módulos Cristina del Marco Martínez Página 11

8.5 Árbol de archivos del módulo 8.6 Estructura básica de un módulo 8.7 Conexión de un módulo a través de Hooks 8.8 Introducción a Smarty 8.9 Traducción de un módulo 8.10 Creación de una pestaña de back-office del módulo y su clase 9. Pruebas del sistema Distintas pruebas realizadas al sistema para evaluar su funcionamiento. 9.1 Pruebas de interfaces 9.2 Pruebas de operaciones y funcionalidades 10. Instalación del sistema Manual de instalación explicando cómo realizar la instalación. 10.1 Prerrequisitos técnicos 10.2 Instalación en servidor remoto 10.3 Instalación de PrestaShop 11. Manual de uso de la aplicación Guía de las distintas acciones que puede realizar un usuario BLOQUE 4. Conclusiones En este bloque se estudiarán si se han alcanzado los objetivos previstos y se determinará el esfuerzo empleado en el proyecto a partir de estimaciones. 12. Planificación y costes BLOQUE 5. Biografía consultada En este bloque se indicarán las fuentes de información que se han utilizado para llevar a cabo el proyecto Cristina del Marco Martínez Página 12

PARTE II: MATERIAS RELACIONADAS Cristina del Marco Martínez Página 13

2.- Conceptos A continuación se definen algunos conceptos a los que nos vamos a referir más adelante: Patrón MVC: Modelo Vista Controlador es un patrón de arquitectura de software que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos. El patrón MVC se ve frecuentemente en aplicaciones Web, donde la vista es la página HTML y el código que provee de datos dinámicos a la página. Modelo: esta es la representación específica del dominio de la información sobre la cual funciona la aplicación. El modelo es otra forma de llamar a la capa de dominio. Vista: este presenta el modelo de un formato adecuado para interactuar, usualmente un elemento de interfaz de usuario. Controlador: este responde a eventos, usualmente acciones del usuario e invoca cambios en el modelo y probablemente en la vista. Wikipedia - http://es.wikipedia.org/wiki/modelo_vista_controlador POO: Programación Orientada a Objetos es un paradigma de programación que usa los objetos en sus interacciones, para diseñar aplicaciones y programas informáticos. Está basado en técnicas, incluyendo herencias, cohesión, abstracción, polimorfismo, acoplamiento y encapsulamiento. Wikipedia - http://es.wikipedia.org/wiki/programaci%c3%b3n_orientada_a_objetos JavaScript: lenguaje de programación interpretado. Se define como orientado a objetos, basado en prototipos, imperativo, débilmente tipado y dinámico. Se utiliza principalmente en su forma del lado del cliente, implementando como parte de un navegador web permitiendo mejoras en la interfaz de usuario y páginas web dinámicas, en bases de datos locales al navegador Wikipedia - http://es.wikipedia.org/wiki/javascript Ajax: acrónimo de Asynchronous JavaScript And XML, es una técnica de desarrollo Web para crear aplicaciones interactivas. Éstas se ejecutan en el cliente, es decir, en el navegador del usuario, y mantiene comunicación asíncrona con el servidor en segundo plano. De esta forma es posible realizar cambios sobre la misma página sin necesidad de recargarla. Lo que significa aumentar la interactividad, velocidad y usabilidad en la misma. Wikipedia - http://es.wikipedia.org/wiki/ajax Cristina del Marco Martínez Página 14

PHP: acrónimo que significa Hypertext Pre-processor es un lenguaje de programación de uso general de script del lado del servidor originalmente diseñado para el desarrollo web de contenido dinámico. Fue uno de los primeros lenguajes de programación que se podían incorporar directamente en el documento HTML en lugar de llamar al archivo externo que procese los datos. Wikipedia - http://es.wikipedia.org/wiki/php PrestaShop: gestor de contenido de código abierto que permite poner en marcha, ejecutar y mantener una tienda online con un mínimo esfuerzo y sin ningún coste o licencia implicada en el sistema. Se considera un e-commerce rápido y eficiente reconocido mundialmente con un gran motor de plantillas que nos facilita un manejo fluido y limpio de la tienda. 2.2.- Introducción al comercio electrónico A continuación tres definiciones que parecen apropiadas al término Comercio Electrónico: Es la aplicación de la avanzada tecnología de información para incrementar la eficacia de las relaciones empresariales entre socios comerciales. (Automotive Action Group in North America). La disponibilidad de una visión empresarial apoyada por la avanzada tecnología de información para mejorar la eficiencia y la eficacia dentro del proceso empresarial (EC Innovation Centre). Es el uso de las tecnologías computacional y de telecomunicaciones que se realiza entre empresas o bien entre vendedores y compradores, para apoyar el comercio de bienes y servicios. Conjugando estas definiciones podemos decir que el comercio electrónico es una metodología moderna para hacer negocios que detecta la necesidad de las empresas, comerciantes y consumidores de reducir costos, así como mejorar la calidad de los bienes y servicios, además de mejorar el tiempo de entrega de los bienes o servicios. Por lo tanto no debe seguirse contemplando el comercio electrónico como una tecnología, sino que es el uso de la tecnología para mejorar la forma de llevar a cabo de las actividades empresariales. Ahora bien, el comercio electrónico se puede entender como cualquier forma de transacción comercial en la cual las partes involucradas interactúan de manera electrónica en lugar de hacerlo de la manera tradicional con intercambios físicos o trato físico directo. Actualmente la manera de comerciar se caracteriza por el mejoramiento constante de los procesos de abastecimiento, y como respuesta a ello los negocios a nivel mundial están cambiando tanto su organización como sus operaciones. Cristina del Marco Martínez Página 15

El comercio electrónico es el medio de llevar a cabo dichos cambios dentro de una escala global, permitiendo a las compañías ser más eficientes y flexibles en sus operaciones internas, para así trabajar de una manera más cercana con sus proveedores y estar más pendiente de las necesidades y expectativas de sus clientes. Además permiten seleccionar a los mejores proveedores sin importar su localización geográfica para que de esa forma se pueda vender a un mercado global. 2.2.1.- Origen y evolución histórica El comercio, actividad ancestral del ser humano, ha evolucionado de muchas maneras. Pero su significado y su fin es siempre el mismo. Según el diccionario consultor de economía, el Comercio es el proceso y los mecanismos utilizados, necesarios para colocar las mercancías que son elaboradas en las unidades de producción, en los centros de consumo en donde se aprovisionan los consumidores, último eslabón de la cadena de comercialización. En líneas generales, y con un sentido amplio, el comercio implica la investigación de mercado con el fin de interpretar los deseos del consumidor, la publicidad que anuncia la existencia del producto, la posibilidad de adquirirlo, y en qué lugar, a la vez que utilizan los métodos de persuasión, la venta al por menor y finalmente, la adquisición por parte del público. En los últimos decenios del siglo XIX empresas comerciales como Montgomery Ward y luego Sears iniciaron la venta por catálogo en los Estados Unidos. Este sistema de venta revolucionario para la época, consiste en un catálogo con fotos ilustrativas de los productos a vender. Este permite tener mejor llegada a las personas, ya que no hay necesidad de modalidad existía a los clientes hasta los locales de venta. Esto posibilitó a las tiendas poder llegar a tener clientes en zonas rurales, que para la época que se desarrolló dicha modalidad existía una gran masa de personas afectadas al campo. Además, otro punto importante a tener en cuenta es que los potenciales compradores pueden escoger los productos en la tranquilidad de sus hogares, sin la asistencia o presión, según sea el caso, de su vendedor. La venta por catálogo tomó mayor impulso con la aparición de las tarjetas de crédito; además de determinar un tipo de relación de mayor anonimato entre cliente y vendedor. La práctica del comercio electrónico comenzó a principios de 1970, con novedosas aplicaciones como la transferencia de fondos monetarios. Cristina del Marco Martínez Página 16

Después apareció el intercambio de datos vía electrónica, que produjo una expiación en el comercio electrónico, dando lugar a otros tipos de procesos comerciales. Todos estos procesos permitieron que pequeñas empresas pudieran aumentar su nivel de competitividad implementando el comercio electrónico en sus actividades diarias. Debido a esto el comercio en línea se ha expandido muy rápidamente gracias a los millones de consumidores potenciales a los que se puede llegar a través de este medio. A principio de los años 1970, aparecieron las primeras relaciones comerciales que utilizaban una computadora para transmitir datos, tales como órdenes de compra y facturas. Este tipo de intercambio de información, si bien no estandarizado, trajo aparejadas mejoras de los procesos de fabricación en el ámbito privado, entre empresas de un mismo sector. Es por esto que trataron de fijar estándares para realizar este intercambio, el cual era distinto con relación a cada industria. Por otra parte, en el sector público el uso de estas tecnologías para el intercambio de datos tuvo su origen en las actividades militares. A finales de los años 1970 el Ministerio de Defensa de Estados Unidos inició un programa de investigación destinado a desarrollar técnicas y tecnologías que permitiesen intercambiar de manera transparente paquetes de información entre diferentes redes de computadoras, el proyecto encargado de diseñar esos protocolos de comunicación se llamó Internetting Proyect, del que surgieron el sistema TPC/IP que fueron desarrollados conjuntamente por Vinton Cerf y Robert Kahn y son los que actualmente se emplean en Internet. A través de este proyecto se logró estandarizar las comunicaciones entre computadoras y en 1989 aparece un nuevo servicio, la WWW, cuando un grupo de investigadores en Ginebra, Suiza, ideó un método a través del cual empleando la tecnología de Internet enlazaban documentos científicos provenientes de diferentes computadoras a los que podían integrarse recursos multimedia (texto, gráficos, música, entre otros). Lo más importante de la WWW es su alto nivel de accesibilidad, que se traduce en los escasos conocimientos de informática que exige de sus usuarios. A mediados de 1980, con la ayuda de la televisión, surgió una nueva forma de venta por catálogo, también llamada venta directa. De esta manera, los productos son mostrados con mayor realismo, y con la dinámica de que pueden ser exhibidos resaltando sus características. La venta directa se concreta mediante un teléfono y usualmente con pagos de tarjetas de crédito. Cristina del Marco Martínez Página 17

Algunas empresas desarrollaron un sistema para procesar órdenes de pedido electrónicas, por el cual los clientes de dichas empresas emitían órdenes de pedido electrónicas, por el cual los clientes de dichas empresas emitían órdenes de pedido desde sus empresas y esta era enviada de forma electrónica. Esta implementación trajo importantes beneficios ya que se eliminaron gran parte de errores de entregas y se redujeron los tiempos de procesamiento de dichas órdenes. El beneficio fue suficiente como para que las empresas instalaran un equipo a sus clientes habituales. En 1995 los países integrantes del G7/G8 crearon la iniciativa Un Mercado Global para PYMES, con el propósito de acelerar el uso del comercio electrónico entre las empresas de todo el mundo, durante el cual se creó el portal pionero en idioma español Comercio Electrónico Global. En la actualidad, casi 200 millones de personas están conectadas en cualquier rincón del mundo, con un ordenador que cumpla los requisitos necesarios para acceder a lo que hoy llamamos Internet. La red mueve cerca de 172,000 millones de dólares en lo que conocemos como comercio electrónico (www.eleconomista.es). El desarrollo de esta tecnología y de las telecomunicaciones ha hecho que los intercambios de datos crezcan a niveles extraordinarios, simplificándose cada vez más creando nuevas formas de comercio, y en este marco se desarrolla el Comercio Electrónico. 2.2.2.- Categorías El comercio electrónico puede subdividirse en cuatro categorías: La categoría empresa empresa (B2B Business to Business): se refiere a una compañía que hace uso de una red para hacer órdenes de compra a sus proveedores, recibir facturas y realizar los pagos correspondientes. La categoría empresa cliente (B2C Business to Customer): se puede comparar con la venta al detalle de manera electrónica. Esta categoría ha tenido gran aceptación y se ha ampliado sobre manera gracias al WWW, ya que existen diversos centros comerciales por todo Internet ofreciendo toda clase de bienes de consumo. La categoría empresa administración (B2G Business to Government): se refiere a todas las transacciones llevadas a cabo entre las compañías y las diferentes organizaciones de gobierno. Cristina del Marco Martínez Página 18

2.2.3.- Ventajas Ventajas para los Clientes Permite el acceso a más información. La naturaleza interactiva de la web y su entorno hipertexto permiten búsquedas profundas no lineales que son iniciadas y controladas por los clientes. Por lo tanto las actividades de comercio mediante la web están más impulsadas por los clientes que aquellas proporcionadas por los medios tradicionales. Facilita la investigación y comparación de mercados. La capacidad de las webs para acumular, analizar y controlar grandes cantidades de datos especializados permite la compra por comparación y acelera el proceso de encontrar los artículos. Abarata los costes y precios. Conforme aumenta la capacidad de los proveedores para competir en un mercado electrónico abierto se produce una baja en los costos y precios. De hecho, tal incremento en la competencia mejora la calidad y variedad de los productos y servicios. Ventajas para las empresas Mejoras en la distribución. La web ofrece a ciertos tipos de proveedores la posibilidad de participar en un mercado interactivo, en el que los costes de distribución o ventas tienden a cero. También compradores y vendedores se contactan entre sí de manera directa, eliminando así restricciones que se presentan en tales interacciones. De alguna forma esta situación puede llegar a reducir los canales de comercialización, permitiendo que la distribución sea eficiente al reducir sobrecosto derivado de la uniformidad, automatización e integración a gran escala de sus procesos de administración. De igual forma se puede disminuir el tiempo que se tardan en realizar las transacciones comerciales, incrementando la eficiencia de las empresas. Comunicaciones de mercado. Actualmente, la mayoría de las empresas utiliza la web para informar a los clientes sobre la compañía, a parte de sus productos o servicios, tanto mediante comunicaciones internas como con otras empresas y clientes. Sin embarco, la naturaleza interactiva de la web ofrece otro tipo de beneficios conducentes a desarrollar las relaciones con los clientes. Este potencial para la interacción facilita las relaciones de mercado así como el soporte al cliente, hasta un punto que nunca hubiera sido posible con los medios tradicionales. Un sitio web ser encuentra disponible las 24 horas del día bajo demanda de los clientes. Las personas que realizan el mercadeo pueden usar la web para retener a los clientes mediante un diálogo asíncrono que sucede a la conveniencia de ambas partes. Cristina del Marco Martínez Página 19

Esta capacidad ofrece oportunidades sin precedentes para ajustar con precisión las comunicaciones a los clientes individuales, facilitando que éstos soliciten tanta información como deseen. Además, esto permite que los responsables del área de mercado obtengan información relevante de los clientes con el propósito de serviles de manera eficaz en las futuras relaciones comerciales. Los sitios web más sencillos involucran a los clientes mediante botones para enviar mensajes de correo electrónico a la empresa. En otros centros más sofisticados, los clientes rellenan formularios, con el objeto de que desarrollen una relación continua con la compañía, cuyo fin es informar tanto sobre los productos y servicios como obtener información sobre las necesidades que los clientes tienen sobre los mismos. De esta manera, se obtiene publicidad, promoción y servicio al cliente a la medida. La web también ofrece la oportunidad de competir sobre la base de la especialidad, en lugar de hacerlo mediante el precio, ya que desde el punto de vista de la mercadotecnia, rara vez es deseable competir tan sólo en función del precio. El mercado intenta satisfacer las necesidades de los clientes en baso a los beneficios que buscan, lo que quiere decir que el precio depende de la valoración del cliente, y no de los costes; tales oportunidades surgen cuando lo ofrecido se diferencia por elementos de mercado distintos al precio, lo cal produce beneficios cargados de valor. Beneficios operacionales. El uso empresarial de la web reduce errores, tiempo y sobrecostos en el tratamiento de la información. Los proveedores disminuyen sus costes al acceder de manera interactiva a las bases de datos de oportunidades de ofertas, enviar éstas por el mismo medio y, por último, revisar de igual forma las concesiones; además, se facilita la creación de mercados y segmentos nuevos, el incremento en la generación de ventajas en las ventas, la mayor facilidad para entrar en mercados nuevos, especialmente en los geográficamente remotos, y alcanzarlos con mayor rapidez. Todo esto se debe a la capacidad de contactar de manera sencilla a un coste menor con los clientes potenciales, eliminando demoras entre las diferentes etapas de los subprocesos empresariales. 2.2.4.- Inconvenientes Entorno empresarial y tecnológico cambiante. Empresas y clientes desean tener flexibilidad para cambiar, según su voluntad, de socios comerciales, plataformas y redes. No es posible evaluar el coste de esto, pues depende del nivel tecnológico de cada empresa, así como el grado deseado de participación en el comercio electrónico. Como mínimo una empresa necesitará un ordenador personal, un módem, una suscripción a un proveedor de servicios de Internet, una línea telefónica. Una compañía que desee involucrarse más, deberá preparase para introducir el comercio electrónico en sus sistemas de compras, financieros y contables, lo cual implicará el uso de un sistema para el intercambio electrónico de datos EDI (Electronic Data Interchange) con sus proveedores y/o una intranet con sus diversas sedes. Cristina del Marco Martínez Página 20

Privacidad y seguridad. La mayoría de los usuarios no confía en la web como canal de pago. En la actualidad, las compras se realizan utilizando el número de la tarjeta de crédito, pero aúno no es seguro introducirlo en Internet sin conocimiento alguno. Cualquiera que transfiera datos de una tarjeta de crédito mediante la web, no puede estar seguro de la identidad del vendedor. Análogamente, éste no lo está sobre la identidad del comprador. Quien paga no puede asegurarse de que su número de tarjeta no sea recogido y sea utilizado para algún propósito malicioso; por otra parte, el vendedor no puede asegurar que el dueño de la tarjeta rechace la adquisición. Resulta irónico que existan y funcionen correctamente los sistemas de pago electrónico para las grandes operaciones comerciales, mientras que los problemas se centren en las operaciones pequeñas, que son mucho más frecuentes. Cuestiones legales, políticas y sociales. Existen algunos aspectos abiertos en torno al comercio electrónico: validez de la firma electrónica, no repudio, legalidad de un contrato electrónico, violaciones de marchas y derechos de autor, pérdida de derechos sobre las marcas, pérdida de derechos sobre secretos comerciales y responsabilidades. Por otra parte, deben considerarse las leyes, políticas económicas y censura gubernamentales. Cristina del Marco Martínez Página 21

3.- Herramientas REM 1.2.2 Herramienta para el desarrollo de la elicitación de requisitos y análisis del sistema en la cual se definen las tareas a realizar, los productos a obtener y las técnicas a emplear durante la actividad. Desarrollado en nuestra escuela de informática por el profesor Amador Durán del Toro. Se puede encontrar en la web del departamento de lenguajes y sistemas informáticos previa solicitud de la clave de descarga. http://www.lsi.us.es/descargas/descarga_programas.php?id=3 XAMPP 1.7.7 Es un servidor independiente de plataforma, software libre, que consiste principalmente en la base de datos MySQL, servidor web Apache y los intérpretes para lenguajes de script: PHP y Perl. Figura 3.1 Xampp en funcionamiento Es un paquete AMP gratuito y muy completo, perfecto para el proyecto que abarcado. Al incluir la tecnología phpmyadmin en su instalación, eliminamos cualquier tipo de preocupación con respecto a la gestión de base de datos. Se puede conseguir en su página web oficial: http://www.apachefriends.org/es/xampp.html Cristina del Marco Martínez Página 22

Netbeans IDE 7.1.2 Entorno de desarrollo integrado que proporciona una gran herramienta para PHP. Es gratuito y de código abierto y tiene una gran comunidad de usuarios y desarrolladores. Ventajas de utilizar Netbeans IDE Figura 3.2 Netbeans en funcionamiento Auto-completa el código que digitamos: Ante la falta de inicialización de algún argumento, nos sugiere la declaración automática del mismo; también, nos propone las características disponibles para los elementos, cuando intentamos acceder a estas mediante el punto después de la variable o argumento. Función de Importar Clases: Si hacemos uso de una clase para la cual no hemos hecho previamente la declaración de importación a nuestro código, nos permite con un simple CRTL + SHIFT+I, resolver todos esos errores. Diseño Visual: Se pueden crear formularios y ventanas de forma visual, en diferentes plataformas que van desde J2ME con formularios para aplicaciones móviles así como diseño de canvas para juegos con el Visual Game Desing. Para Java SE, permite utilizar toda la librería Swing en la creación visual. Integración de Servidores: Como podemos crear diferentes aplicaciones al trabajar en diferentes lenguajes, Netbeans trae en su plataforma servidores Web y de aplicaciones (su instalación es opcional), por lo que si queremos crear un servicio y probarlo desde una aplicación en el desktop, podemos arrancar localmente el servidor de nuestra preferencia desde Netbeans, y una vez probemos la aplicación, ésta será desplegada automáticamente por el servidor, evitando la compilación y la carga posterior al servidor, manualmente. Cristina del Marco Martínez Página 23

Web Services: Por defecto, Netbeans trae algunos Web Services de los principales sites de Internet (Google, Facebook, Yahoo, Flickr, Vicious, entre otros) preconfigurados, con los cuales podemos hacer pruebas e incluso aplicaciones. Además de que podemos agregar alguno de nuestra preferencia o creación. Después de agregados, sólo tenemos que hacer un Drag and Drop (Agarrar y Soltar) en nuestra aplicación, para lograr una referencia a este Web Service. En su página web oficial podemos ver los distintos usos que tienen y descargar el soporte adecuado a nuestras necesidades: 3.1.- Herramientas de comercio electrónico http://netbeans.org/downloads PrestaShop: Un gestor de contenido muy potente que presenta multitud de características interesantes que pueden ser consultadas desde su página oficial. De cara al diseño admite bastantes modificaciones por lo que es fácilmente adaptable a casi cualquier personalización que sea necesaria. PrestaShop cuenta con una de las mejores interfaces gráficas que existen a fecha de hoy. Estadísticas, control de inventario, directamente desde el propio panel de administración. Se puede implementar scripts de productos de una forma fácil y rápida desde la propia interfaz del panel de administración. Cuenta con infinidad de posibilidades y modificaciones. Hay una función muy interesante que por ejemplo Oscomerce no dispone, se trata de las combinaciones de productos y atributos. En un mismo producto puedes crear combinaciones de colores, tallas, tipo, capacidad y un largo etc. Esto te permite que el cliente a la hora de comprar pueda escoger desde la misma ficha del producto las combinaciones disponibles para ese producto haciendo la compra más rápida y personalizada. También cuenta con una opción de emigración desde tiendas online Oscomerce. Otra de las ventajas que ofrece PrestaShop sobre el resto de gestores de contenido es su seguridad. El cifrado de contraseñas, la posibilidad de ad ministrar la web (empleados) seleccionando cómodamente los permisos y los accesos que se deseen sobre cada uno de ellos. No hay que olvidar lo fácil que es de instalar el cifrado SSL, simplemente hay que habilitar una opción desde el panel de administración para poder hacer uso de él. Con el resto de gestores de contenido no pasa esto. Magento: Un plataforma de tienda online que ha tenido un rápido crecimiento estos últimos años ya que se presenta como una gran alternativa al resto, muy estable, seguro, con infinidad de posibilidades y una grandísima comunidad de desarrollo detrás. Cristina del Marco Martínez Página 24

OsCommerce: ha sido tienda online por excelencia, la más común que se podía encontrar en cualquiera de las primeras webs pioneras que vendían online sus productos. Es muy potente, cuenta como el resto con una amplia comunidad de desarrolladores, pero por el contrario, más difícil de integrar en diseño. Hoy en día aún se sigue utilizando, aunque ya cada vez menos. Es un CMS con muchísimas limitaciones, sobre todo en temas gráficos. No cuenta con opciones de implementación de plantillas como pasa con prestashop. La seguridad en esta plataforma hay que cuestionarla un poco. Al ser un gestor que estuvo más de un año parado, sin actualizaciones posibles, hizo que perdiera bastante sobre el resto de gestores de contenido. Se usó PrestaShop por su facilidad para crear o usar plantillas, instalar y desinstalar módulos fácilmente, y por ser rápido, seguro y gratuito. Un CMS de hoy para las necesidades de hoy. Cristina del Marco Martínez Página 25

PARTE III: SISTEMA DESARROLLADO Cristina del Marco Martínez Página 26

4.- Dominio del problema PrestaManagement PrestaShop ofrece multitud de herramientas para un comercio electrónico eficaz y eficiente, pero cuando una empresa necesita ambos comercios (físico y on-line), se necesita aplicar un módulo que abarque ambos casos. En esta idea se recogen las gestiones de las dos opciones en la misma aplicación, así se eliminan los problemas de administraciones separadas, programas independientes y tiempo perdido en la unión de datos o facturas. Así, mientras resolvemos las ventas que nos puedan llegar a la tienda física, podemos seguir vendiendo vía web fusionando el stock que se encuentre originalmente en almacén, por lo que también resolvemos el problema de descontar la cantidad disponible del producto que se compre en la tienda para que se refleje en la web y no haya problemas de adquirir un producto que no se encuentre en almacén. Al igual puede darse el caso de que algún distribuidor recoja su pedido directamente en el local o almacén. Este tipo de grupo tiene un descuento adquirido en todas sus compras y esta aplicación lo contempla en su totalidad. 4.1.- Introducción El proyecto consiste en una aplicación en la cual se instalan una serie de ficheros en el mismo archivo del gestor que contiene la página online. Al abrir el Back-Office de PrestaShop y proceder a la instalación del módulo, se creará una pestaña con todos los datos del proyecto, listo para su funcionamiento. Se encarga de las ventas realizadas en la tienda física, las cuales se almacenan de la misma manera que las obtenidas mediante la red, con la diferencia que la pestaña anteriormente mencionada contendrá sólo las ventas de mostrador. Cuando se quiera gestionar una nueva venta en el punto de venta, se debe rellenar: Los datos del cliente, ya sea el nombre o el número de cliente si éste está anteriormente registrado. Si no lo está, se utilizará el cliente por defecto o se podrá registrar desde la misma aplicación proporcionando los datos necesarios. La información de los productos, ya sea el número de referencia, el nombre, o bien utilizar el lector de código de barras. Al introducir cualquiera de estos datos, se procede a rellenar los aspectos de Cantidad Disponible y Valor Unitario. Cantidad a comprar por el cliente, que será 1 por defecto. IVA, que será 21% por defecto. Cuando la venta haya sido realizada, la aplicación permitirá el acceso a los detalles de dicha venta, además de imprimir la factura correspondiente. Cristina del Marco Martínez Página 27

En conclusión, la aplicación ofrecerá servicios que ayudarán a llevar con más facilidad las gestiones de una empresa que mantenga una tienda on-line y una tienda física. 4.2.- Glosario de términos En este apartado definiremos algunos conceptos relacionados con la aplicación. Se procede a distinguir los relacionados con la tienda física y la tienda online, aunque algunos procedan de ambos sitios. 4.2.1.- Términos propios de PrestaShop Front-Office o Front-End: esta es la interfaz que verán los visitantes de la tienda online, ya sean productos, medios de transporte, formas de pago, etc. Desde esta visión no se podrá gestionar los elementos principales de la tienda, pero se construye dinámicamente con los parámetros de configuración que se establezcan en el Back-Office Back-Office o Back-End: está dirigida únicamente a los administradores y otros usuarios de gestión del sistema. Desde esta interfaz, de acuerdo a los permisos establecidos para cada rol, cualquier persona podrá gestionar todo lo referente a la tienda, incluido el módulo al que hacemos referencia. Módulos: son funcionalidades que se acoplan a un sistema para lograr un objetivo determinado. En este caso, la funcionalidad es realizar una compra desde el mostrador manteniendo la sincronización de la base de datos de la tienda online de manera constante e ininterrumpida. 4.2.1.- Términos de la tienda online Pedidos: es la parte fundamental del sistema, es en la que se muestran todos los pedidos de los clientes. Se puede gestionar además: albaranes de entrega, devoluciones de productos, vales, entre otros. Clientes: estarán en ambos casos, tanto en la tienda física como en la tienda online, pero para registrar un pedido en la tienda online es necesario registrarse como cliente. Desde este menú podremos gestionar a los usuarios de la tienda y dar seguimiento a todas sus acciones, el estado de sus carritos de compra y otras acciones. Cristina del Marco Martínez Página 28

4.2.2.- Términos de la tienda física PrestaManagement Grupo: Cada cliente está asociado a uno o varios grupos y sirve para adjudicarle ciertos privilegios tales como descuentos o permisos en determinadas acciones de la empresa. Precio Unitario: Es la cantidad asignado a un producto el cual determina el valor de dicho producto en el mercado. Este precio será igual tanto en la tienda física como en el comercio electrónico. Cantidad Disponible: Será la número de objetos que se encuentran en almacén actualmente. El valor cambiará tanto si se compra un producto en la tienda física como en la tienda web. IVA: Impuesto de Valor Añadido, se trata de un impuesto de consumo que grava los productos, los servicios, las transacciones comerciales y las importaciones. Descuento: Cantidad o porcentaje a descontar de la venta que se va a realizar. Este descuento se llevará a cabo previo código que contenga el cliente o bien según el grupo al que pertenezca si este contiene un privilegio de pago. Cristina del Marco Martínez Página 29

5.- Visión general del sistema 5.1.-Participantes en el proyecto PrestaManagement Cristina del Marco Martínez Página 30

5.2.- Objetivos del sistema PrestaManagement Cristina del Marco Martínez Página 31

Cristina del Marco Martínez Página 32

6.- Requisitos del sistema PrestaManagement Denominamos requisitos a aquellas características que solicita el cliente y que desea que se cumplan en el sistema. A continuación detallaremos los que hemos recogido para el desarrollo de la aplicación. 6.1.- Requisitos de información Cristina del Marco Martínez Página 33

6.2.- Reglas de negocio y restricciones Cristina del Marco Martínez Página 34

6.3.- Requisitos funcionales PrestaManagement 6.3.1- Diagramas de casos de uso SISTEMA 6.3.1.1.- Subsistema de gestión de venta en mostrador Este subsistema es el encargado de gestionar la aplicación. En él ya encontramos la funcionalidad total del proyecto. Se encarga de inscribir los datos del cliente, de los productos, de los posibles descuentos y maneja la opción de imprimir las facturaciones realizadas a partir de ella. Cristina del Marco Martínez Página 35

6.3.2.- Definición de actores PrestaManagement Para este caso, sólo el comercial al cargo de la aplicación será el encargado de interactuar con el sistema. El cliente le puede proporcionar los datos personales para registrarse o los códigos para cualquier descuento, pero será el propio comercial el que incluirá la información en el proyecto. Cristina del Marco Martínez Página 36

6.3.3.-Casos de uso del sistema Sólo será necesario un caso de uso para el problema que se plantea, puesto que toda la aplicación se simplifica en una venta en mostrador. Por lo tanto todos los objetivos se centran en esta acción. Cristina del Marco Martínez Página 37

6.4.- Otros requisitos funcionales PrestaManagement Cristina del Marco Martínez Página 38

6.5.- Requisitos no funcionales Cristina del Marco Martínez Página 39

6.6.- Matriz de rastreabilidad objetivos / requisitos Cristina del Marco Martínez Página 40

7.- Análisis del sistema En este documento, realizaremos el análisis de la aplicación, obteniendo una visión más concreta de mediante clases conceptuales del mundo real. Cristina del Marco Martínez Página 41

7.1.-Diagrama Figura 7.1 Diagrama ULM global Cristina del Marco Martínez Página 42

Partimos del modelo global que nos ofrece PrestaShop que utilizaremos para llevar a cabo el módulo, pero antes vamos a contemplar los datos con detalle. 7.1.1.- Subsistema de venta en mostrador Figura 7.2 Diagrama del subsistema de clientes Aquí se ve la tabla que hemos creado para el módulo, pero no tiene fines funcionales, sólo servirá para almacenar datos constantes. Al instalar el módulo, se creará la tabla junto con un estado de pedidos nuevo, un cliente por defecto y una dirección por defecto. La tabla creada será la encargada de almacenar los identificadores de estos datos para que no se dupliquen y se puedan utilizar siempre los mismos valores para realizar los datos. Cristina del Marco Martínez Página 43

7.1.2.- Subsistema de grupos de clientes Figura 7.3 Diagrama del subsistema de grupos Aunque no parezca importante, siempre que se habla de descuento hay que reflejarlo. Dependiendo del grupo de nuestro cliente, tendrá o no una serie de privilegios con respecto al pago del pedido. Cristina del Marco Martínez Página 44

7.1.3.- Subsistema de pedidos PrestaManagement Figura 7.4 Diagrama del subsistema de pedidos Este modelo refleja las tablas para almacenar los pedidos. Estos serán iguales como hasta ahora se hacían en la tienda virtual, sólo cambia el estado del pedido, que será siempre Servido en mostrador. Cristina del Marco Martínez Página 45

7.1.4.- Subsistema de productos PrestaManagement Figura 7.4 Diagrama de subsistema de productos Y, por último, tenemos los productos que queremos añadir al pedido. Como en los pedidos, todo se realiza de la misma manera en la tienda on-line y en la tienda física. 7.2.- Tipos El cliente puede estar registrado con anterioridad, registrarse en el momento de la venta o no registrarse. Nos interesa simplemente si lo tenemos en nuestra base de datos para obtener la información o utilizar el cliente por defecto que nos hemos creado para este caso. Cristina del Marco Martínez Página 46

7.3.- Diagrama de proceso de negocio Ya que me he basado en una tienda virtual para crear una física, he tenido en cuenta las diferencias existentes entre un pedido realizado en la web y en la física. Cristina del Marco Martínez Página 47

7.3.1.- Proceso de negocio de la tienda online Figura 7.6 Proceso de negocio de la tienda online Cristina del Marco Martínez Página 48

Si analizamos el diagrama, podemos comprobar que todo el trabajo lo realiza el cliente desde la página web. Él es el encargado de elegir los productos, realizar el pago, elegir la compañía de transportes y confirmar el pedido. La empresa sólo necesita saber si el pago es correcto, en el caso de pagar con antelación, y enviar el paquete a su destinatario. Es una manera cómoda y sencilla para cualquier persona llevar a cabo todas estas acciones sin apenas salir del domicilio. También para la empresa es aparentemente sencillo estar vendiendo sus productos en cualquier momento del día y a cualquier lugar del país, incluso de manera internacional. Se puede observar como la actividad de la empresa empieza sólo en el momento de recibir la notificación de que se ha realizado el pago, esto deja mucho tiempo para realizar otras labores e incluso montar una tienda física. Pero en ese caso, este modelo varía significativamente. Ahora el cliente interactúa con el comercial sobre los productos y el pago, pero se puede obviar el tema del transporte y de los paquetes. Cristina del Marco Martínez Página 49

7.3.2.- Proceso de negocio de la tienda física Figura 7.7 Proceso de negocio de la tienda física Cristina del Marco Martínez Página 50

A simple vista se puede contemplar las diferencias existentes entre los dos departamentos. La información más importante que nos encontramos, es la diferencia ente los clientes, que puede estar registrado, registrarse en el momento de la compra o no hacerlo y en ese caso utilizar el cliente por defecto. Como se ha mencionado anteriormente, se suprime todo lo relacionado con las empresas de transporte, aunque es necesario utilizar una dirección de facturación para imprimir las facturas según la estructura definida en PrestaShop para este tipo de sucesos. También aclara que las formas de pago se simplifican en este caso, ya que no hay opción a contrareembolso o paypal, por ejemplo. No hay más que una simple tienda a la que estamos acostumbrados a ir diariamente, pero desde la vista de la empresa, supone un cambio radical de administración añadir un departamento como este. Cristina del Marco Martínez Página 51

8.- Implementación del sistema PrestaManagement En este apartado vamos a definir los pasos a seguir para crear un módulo para el gestor de contenido PrestaShop 8.1.- Aspectos fundamentales PrestaShop fue concebida de manera que los módulos de terceros puedan adaptarse fácilmente sobre sus cimientos, haciendo de éste un software de comercio electrónico extremadamente personalizable. Un módulo es un complemento de PrestaShop que permite a cualquier desarrollador agregar lo siguiente: Proporcionar función adicional para PrestaShop. Observar elementos adicionales en el sitio. Comunicarse con otros actores de comercio electrónico La compañía detrás de PrestaShop ofrece más de 100 módulos gratis además de la herramienta en sí, permitiendo a los clientes iniciar su negocio con rapidez y de forma gratuita. Estos módulos fueron construidos por la compañía PrestaShop o por los miembros de la comunidad de PrestaShop, y se venden a precios asequibles. 8.1.1.- Arquitectura técnica de PrestaShop PrestaShop se basa en una arquitectura de 3 capas: Objeto/Datos. Acceso a la base de datos es controlado mediante archivos en la carpeta classes. Control de Datos. El contenido proporcionado por el usuario es controlado por los archivos de la carpeta raíz. Diseño. Todos los archivos del tema en la carpeta themes. Cristina del Marco Martínez Página 52

Figura 10.1 Arquitectura de 3 capas, extraído de http://doc.prestashop.com/ Este es el mismo principio que en la arquitectura MVC (Modelo-Vista-Controlador), sólo que de una manera más simple y accesible. Los desarrolladores de este gestor escogieron no utilizar un marco de PHP con el fin de permitir una mejor legibilidad y por lo tanto edición más veloz. Esto también logra un mayor rendimiento, ya que el software sólo se realiza de las líneas de código que necesita y no contiene un montón de bibliotecas genéricas suplementarias. Una arquitectura de 3 capas tiene muchas ventajas: Facilidad para leer el código del software. Los desarrolladores pueden agregar y editar códigos más rápido. Diseñadores gráficos e integradores de HTML pueden trabajar dentro de los confines de la carpeta /themes sin necesidad de entender o leer una sola línea del código PHP. Los desarrolladores pueden trabajar en datos y módulos adicionales que los integradores de HTML pueden utilizar. Cristina del Marco Martínez Página 53

8.1.2.- Esquema de base de datos Aquí se muestra una porción de la base de datos, se puede ver entera en la web http://doc.prestashop.com/download/attachments/1409078/prestashop-datamodel.png Figura 10.2 Base de datos de PrestaShop, extraído de http://doc.prestashop.com Cristina del Marco Martínez Página 54

8.2.- Qué es un módulo de PrestaShop? La extensibilidad de PrestaShop gira en torno a los módulos, los cuales son pequeños programas que hacen uso de las funciones de PrestaShop y los cambia o agrega para que el uso de PrestaShop sea más sencillo y personalizado. 8.3.- Principios técnicos en que se basa un módulo Un módulo PrestaShop se compone de: Una carpeta raíz, llamada como el módulo, que mantendrá la totalidad de los archivos del módulo y se encontrará en la carpeta /modules de PrestaShop. Un archivo principal de PHP, llamado como el módulo, localizado en la carpeta raíz. Un archivo de icono, llamado logo.gif, representando este módulo. Opcional: algunos archivos.tpl, que contienen el tema del módulo. Opcional: archivos de idioma, si el módulo o su tema cuentan con texto para mostrar (por lo tanto, este deber traducible). Veamos un ejemplo con el módulo blockinfos de PrestaShop: Figura 10.3 Carpeta mudules/blockinfos Cualquier módulo de PrestaShop, una vez instalado en una tienda virtual, puede interactuar con uno o varios hook. Los Hooks nos permiten enganchar el código a la vista actual al momento del análisis de código. En concreto, un hook es un acceso directo a los diferentes métodos disponibles del objeto del módulo, según lo asignado a ese hook. 8.4.- Principios de funcionamiento de los módulos Los módulos son la manera ideal para dejar que el talento e imaginación de un desarrollador se exprese por sí mismo, ya que las posibilidades creativas son muchas. Estos pueden mostrar una gran variedad de contenido (bloques, texto, etc.), realizar muchas tareas (actualización por lote, importación, exportación, etc.) y funcionar en conjunto con otras herramientas. Cristina del Marco Martínez Página 55

Los módulos pueden ser tan configurables como sea necesario: mientras más configurable sea, más sencillo será de utilizar y por lo tanto será capaz de responder a la necesidad de una amplia variedad de usuarios. Quizás el interés principal de un módulo es agregar funciones a PrestaShop sin tener que editar sus archivos principales, haciéndolo más fácil para realizar la actualización sin necesidad de transponer todos los cambios fundamentales. Esa es la forma en que debe tratar de mantenerse alejado de los archivos centrales cuando se construya un módulo, aunque esto puede resultar difícil de realizar en algunas situaciones. 8.5.- Árbol de archivos del módulo en PrestaShop Todos los módulos están localizados en la carpeta /modules, la que se encuentra en la carpeta raíz de la carpeta principal de PrestaShop. Esto es cierto tanto para los módulos por defecto (incluidos con PrestaShop) y los módulos de terceros que se instalan posteriormente. Cada módulo tiene su propia sub-carpeta dentro de la carpeta /modules. 8.6.- Estructura básica de un módulo de PrestaShop Todos los módulos utilizan la misma estructura básica, lo que hace que sea más fácil el aprendizaje mediante la observación de códigos de módulos existentes. El módulo que se va a crear posee una estructura sencilla, el cual se llamará Management. Primero se crea la carpeta del módulo. Debe tener el mismo nombre que el módulo, sin espacios, sólo caracteres alfanuméricos, el guión y el guión bajo, todo en minúsculas: /management. Esta carpeta debe contener un archivo PHP del mismo nombre, que se encargará de la mayor parte del procesamiento: management.php. Eso es suficiente para un módulo muy básico, pero evidentemente, más archivos y carpetas pueden complementarlo. La parte del front-office del módulo es definida en un archivo.tpl colocado en la carpeta raíz de la carpeta del módulo. Los archivos TPL pueden utilizar casi cualquier nombre. Si sólo existe un archivo como este, sería bueno ofrecerle el mismo nombre que la carpeta y el archivo principal. En este módulo, no utilizaremos el archivo.tpl ya que toda la funcionalidad se centrará en el back-office. Cristina del Marco Martínez Página 56

El archivo management.php debe comenzar con la siguiente prueba: Esto comprueba la existencia de una constante de PHP, y si no existe, abandona. El único propósito de esta prueba es evitar que los visitantes carguen este archivo directamente. El archivo también debe contener la clase del módulo. PrestaShop utiliza la POO y, por lo tanto, también la utiliza en sus módulos. Esa clase debe tener el mismo nombre que el módulo y su carpeta. En nuestro caso: Management.php. Por otra parte, la clase debe extender a la clase Module y por lo tanto hereda todos los métodos y atributos. Esta puede igualmente extender a cualquier clase derivada de Module. Se define el constructor de la clase: Esta sección asigna unos cuantos atributos de la instancia de la clase (this): Un atributo name. Este es un identificador interno, así que hay que hacerlo único, sin caracteres especiales o espacios, y en minúsculas. Un atributo tab. Este es el título del cuadro que deberá contener este módulo en la lista de módulos del back-office de PrestaShop. Podemos utilizar un nombre ya existente o crear uno nuevo. En este caso se ha utilizado el de modo de pago, porque es necesario para la funcionalidad del módulo. Un número de versión para el módulo, aparecer en la lista de módulos. La llamada al constructor padre. Esto se debe realizar antes de cualquier uso del método $this->l()y después de la creación de $this->name. Asignar un nombre público para el módulo, el cual será mostrado en la lista de módulos del back-office. El método l() es parte de las herramientas de traducción de PrestaShop, y se explica más adelante. Cristina del Marco Martínez Página 57

Asignación de una descripción pública para el módulo, la cual se mostrará en la lista de módulos. En la primera encarnación extremadamente simple, este método no es útil, ya que lo único que realiza es comprobar el valor devuelto por el método install() de la clase Module. Además, si no hubiéramos creado este método, el método superclase hubiera sido llamado en su lugar de todas formas, logrando que el resultado final sea idéntico. Asimismo, el módulo debe contener un método unistall() para contar con un proceso de desinstalación personalizado. Este método podría realizarse algo así como: Para poner el toque final a este módulo básico, podemos agregar un icono, que se mostrará junto al nombre del módulo en la lista de módulos de back-office. El archivo de icono debe respetar los siguientes requisitos: Imágenes 16 x 16. Nombrado logo.gif. Colocado en la carpeta principal del módulo. Ahora que todos los fundamentos están en su lugar, coloque la carpeta del módulo en la carpeta /modules de su instalación de prueba de PrestaShop, abra PrestaShop, y en la pestaña Módulos, bajo Otros Módulos, se encuentra el módulo. Lo instalamos para poder manejarlo por el resto de la guía. Cristina del Marco Martínez Página 58

Figura 10.4 Módulo instalado en el Back-Office PrestaShop crea automáticamente un pequeño archivo config.xml en la carpeta del módulo, el cual almacena un poco de información de la configuración. Nunca se debe editar manualmente ese archivo. Durante la instalación, PrestaShop también agrega una línea al cuadro de SQL ps_module. Figura 10.5 Módulo agregado a la base de datos 8.7.- Conexión de un módulo a través de Hooks Para que un módulo sea conectado o enganchado a una ubicación en el front y back office, necesita ofrecerle acceso a uno de los hooks de PrestaShop. Daremos una pequeña introducción a este campo para otros posibles módulos, ya que en nuestro caso no necesitamos asignarle una posición. Cristina del Marco Martínez Página 59

PrestaShop ofrece dos métodos para cambiar la posición del módulo: hookleftcolumn($params) y hookrightcolumn($params). Estas funciones hacen posible que el módulo se enganche en la columna de la izquierda o derecha respectivamente y deben acceder al sistema de plantillas Smarty, el cual utiliza PrestaShop. Una vez guardado, ya es posible desplazarlo y trasladarlo: hacemos clic en Posiciones en la pestaña de Módulos del back-office, luego pulsamos en el enlace Trasladar un módulo. Figura 10.6 Traslado de un módulo Para este caso no se podrá conectar ya que no hay ningún método implementado para un hook. Pero si así fuera, mostraría el siguiente mensaje: Módulo trasladado con éxito a un hook. Si nos desplazamos hacia abajo podremos observar que el módulo se encuentra en la lista de bloques el cual hayamos asignado. Ya está listo para poder visualizar el contenido del archivo.tpl, se puede comenzar añadiendo algunas líneas de código para comprobar que se va a mostrar en el sitio correcto. 8.8.- Introducción a Smarty Smarty es un motor de plantillas PHP y es utilizado por el sistema de creación de temas de PrestaShop. Este analiza archivos TPL, buscando elementos dinámicos para sustituir por sus datos equivalentes, luego muestra el resultado generado. Estos elementos dinámicos se indican entre llaves: { }. El programador puede crear nuevas variables y utilizarlas en los archivos TPL. Todas las variables de Smarty son globales. Por lo tanto, debemos prestar atención a no nombrar nuestra variable con el nombre de una variable de Smarty existente, a fin de Cristina del Marco Martínez Página 60

evitar sobrescribirla. PrestaShop aconseja evitar los nombres demasiado simples, tales como products, y anteponerlo con el nombre del módulo, o incluso el propio nombre, como por ejemplo: {$mark_management_product}. Aquí se ofrece una lista de variables de Smarty que son comunes para todas las páginas. Archivo / carpeta Descripción img_ps_dir img_cat_dir img_lang_dir img_prod_dir img_manu_dir img_sup_dir img_ship_dir img_dir css_dir js_dir tpl_dir modules_dir mail_dir pic_dir lang_iso come_from shop_name cart_qties cart currencies id_currency_cookie currency cookie languages logged page_name customername pricedisplay roundmode URL de la carpeta de imágenes de PrestaShop. URL de la carpeta de imágenes de categorías. URL de la carpeta de imágenes de idiomas. URL de la carpeta de imágenes de productos. URL de la carpeta de imágenes de los fabricantes. URL de la carpeta de imágenes de los proveedores. URL de la capeta de las imágenes de los transportistas. URL de la carpeta de las imágenes del tema. URL de la carpeta del tema CSS. URL de la carpeta del tema JavaScript. URL de la carpeta del tema actual. URL de la carpeta de módulos. URL de la carpeta de plantillas de correo. URL de la carpeta de las fotos subidas. Código ISO del idioma actual. URL de origen del visitante. Nombre de la tienda. Número de productos en el carrito. El carrito de compras. Las monedas disponibles. ID de la moneda actual. Objeto de moneda (moneda utilizada actualmente). Cookies de usuario. Los diferentes idiomas disponibles. Indica si el visitante se ha conectado a una cuenta de cliente. Nombre de la página. Nombre del cliente (si está conectado). Método de visualización del precio(con o sin impuestos...). Método de redondeo en uso. use_taxes Indica si los impuestos se encuentran habilitados. Tabla 10.7 Variables Smarty, extraído de http://doc.prestashop.com Cristina del Marco Martínez Página 61

8.9.- Traducción de un módulo en PrestaShop Las cadenas de texto del módulo están escritas en inglés, pero también podemos permitir a propietarios de tiendas españoles a utilizar nuestro módulo. Por lo tanto, tenemos que traducir las cadenas al español, tanto en el back-office como en el frontoffice si así fuera necesario. Esto podría ser una tarea tediosa, pero la traducción propia de Smarty y PrestaShop hacen que sean mucho más fáciles. Las cadenas en los archivos PHP necesitarán ser mostradas a través del método l(), de la clase abstracta Module.php. De esta manera, las cadenas pueden ser traducidas directamente dentro de PrestaShop: nos trasladamos a la sub-pestaña Traducciones de la pestaña Herramientas y en el menú desplegable de la sección Modificar traducciones elija la opción Traducciones de los módulos, a continuación, hacemos clic en la bandeja española para traducir los módulos al español. La siguiente página muestra todas las cadenas de todos los módulos instalados actualmente. Los módulos que tienen todas sus cadenas ya traducidas contienen sus elementos cerrados, mientras que si por lo menos una cadena no se encuentra en la traducción de un módulo, sus elementos son expandidos. Para traducir las cadenas del módulo, sólo hay que encontrar el módulo en la lista y rellenar los campos vacíos. Figura 10.8 Traducciones del módulo Las traducciones se guardan en un archivo nuevo, es.php, y luce así: Este archivo no debe ser editado manualmente, sólo puede ser editado a través de la herramienta de traducción de PrestaShop. Cristina del Marco Martínez Página 62

De igual forma, se van a traducir los elementos definidos en los archivos.tpl que lo requieran. Sólo las cadenas traducidas son tomadas en cuenta por la herramienta de PrestaShop, los archivos de PHP y TPL deben ser ubicados en la raíz de la carpeta del módulo. 8.10.- Creación de la pestaña de back-office del módulo En esta sección le vamos a ofrecer a nuestro módulo su propia sub-prestaña en cuestión de minutos. Para nuestro módulo, queremos una nueva sub-pestaña, que llamaremos T.P.V, en la pestaña Pedidos. Para ello, retomamos de nuevo el archivo management.php y volvemos a acceder a la función install(). Vamos a añadir una restricción más a la de la llamada al método padre: Este método será la que nos coloque nuestra pestaña en el sitio que queramos y con el nombre que deseemos. El primer parámetro de la función hace referencia a la clase tab, el segundo al nombre que queremos asignarle a la nueva pestaña y el tercer parámetro resulta del identificador de la pestaña padre, en este caso la 3 es la de Pedidos. Como observación, tenemos el código @copy que se encarga de copiar el logo que existe en la carpeta raíz del módulo en el directorio adecuado para que aparezca también al lado de la sub-pestaña. Al instalar el módulo, ya tendremos nuestra pestaña colocada donde habíamos propuesto. Cristina del Marco Martínez Página 63

Figura 10.9 Pestaña instalada Igualmente, al desinstalar el módulo, tenemos que eliminar la pestaña creada. Por lo tanto, vamos a completar el código de la función unistall() para que puede desempeñar esta función. Para rellenar nuestro espacio, creamos un nuevo archivo en blanco llamado Management.php en la carpeta /classes de PrestaShop. Este archivo debe heredar a la clase ObjectModel, pero en nuestro caso particular, será una herencia de Order. Este archivo es el encargado de conectar con los atributos de la tabla asignada en la base de datos. Nosotros no vamos a utilizar la tabla ps_management para guardar este tipo de información, ya lo aclararemos más adelante. Por lo tanto, los atributos que utilizaremos para nuestro nuevo archivo serán los de la clase Order. A continuación, creamos un archivo en blanco llamado AdminManagement.php en /admin/tabs de PrestaShop. En esta función definimos el constructor del archivo. Entre las características de la clase, definimos si será editable, visible o si puede ser borrado. Cristina del Marco Martínez Página 64

El parámetro edit nos proporcionará un archivo en el que se puedan añadir nuevos datos, es decir, nos ofrecerá un nuevo botón Añadir Nuevo. También ponemos el parámetro view que nos permitirá obtener los detalles de la compra que se ha realizado. Creamos un array llamado fieldsdisplay nos define los atributos que se va a mostrar en forma de tabla al pulsar la nueva pestaña: Queremos mostrar un pedido en el cual nos faciliten los datos del cliente, el total a pagar, el estado del pedido y la fecha en el que se ha realizado, a parte de su correspondiente identificador. Sólo con estos datos ya podemos observar una tabla vacía en nuestra pestaña: Figura 10.10 Tabla de ventas en mostrador Ahora nos proponemos a rellenarla a base de nuevas ventas. La pantalla que observamos al pulsar el botón se puede rellenar con el método displayform()en el cual definiremos un formulario HTLM sencillo para rellenar los atributos de nuestra tabla. Cristina del Marco Martínez Página 65

No nos olvidemos de realizar las traducciones también en esta pantalla, aunque esta vez no elegimos la opción de Traducciones de los módulos, sino Traducciones del Panel de administración. Figura 10.11 Traducciones de administración Cristina del Marco Martínez Página 66

Al pulsar el botón de Añadir nuevo, tenemos nuestro HTML: Figura 10.12 Formulario para registrar una nueva venta Hemos mencionado a lo largo de la documentación la tabla ps_management como una tabla especial. Al inicio de la instalación, en la función install(), debemos añadir algunas líneas más. En primer lugar, vamos a crear un estado de pedidos nuevo, llamado Servido en mostrador con sus respectivas traducciones para no perder la internacionalización. Cuando iniciemos la instalación, se creará el nuevo estado de pedido: Cristina del Marco Martínez Página 67

Figura 10.13 Nuevo estado de pedido añadido Este será el estado que utilizaremos para todas las ventas de mostrador. Por otra parte, en la tabla específica del módulo, vamos a almacenar a un cliente y su dirección. No podemos asegurar que en todas las tiendas on-line que utilicen PrestaShop contengan a un cliente por defecto, por lo tanto se ha recurrido a crear uno desde cero y utilizar ese como cliente de ticket, puesto que poca gente ofrece sus datos cuando va a cualquier tienda. También guardaremos una dirección por defecto, en la cual se utilizarán los datos de domicilio de la tienda física que se obtienen directamente de los datos de configuración de PrestaShop. Se ha necesitado guardar el domicilio porque PrestaShop requiere una dirección de facturación y siempre escoge la referenciada por el cliente. Por lo tanto, se utilizará la almacenada en la tabla ps_management que hemos nombrado. Por último y para terminar el módulo, debemos tener en cuenta la función postprocess(), en el cual definiremos las restricciones y validaciones apropiadas antes de añadir a la base de datos. Después de realizar varias ventas desde nuestra aplicación, este es el resultado: Figura 10.14 Lista de pedidos en mostrador Y estos nuevos pedidos se unirán a los proporcionados por la web en la pestaña Pedidos. Cristina del Marco Martínez Página 68

Figura 10.15 Lista de pedidos global Con todo esto, ya podemos añadir un nuevo módulo a nuestra tienda virtual. Cristina del Marco Martínez Página 69

Cristina del Marco Martínez Página 70

9.- Pruebas del sistema La fase de pruebas del software es una de las partes más importantes del proceso de desarrollo software. Probar una aplicación involucra la generación de casos de pruebas, la ejecución de la aplicación contra los casos de prueba y la observación del comportamiento de la aplicación para determinar su corrección Al realizar este tipo de proyecto, podemos basarnos en las características de PrestaShop para probar el código, ya que al seguir unos estándares tan peculiares, el desarrollo de las pruebas se irá validando conforme a lo realizado. 9.1.- Pruebas de interfaces En este caso es muy sencillo, puesto que no hemos tenido que crear plantillas ni generar ningún tipo de código de presentación. Hemos heredado las clases que PrestaShop nos proporciona con su motor de plantilla y sólo debemos comprobar que no descuadre nada. 9.2.- Pruebas de operaciones y funcionalidades Aquí se muestran los diferentes casos de prueba y el resultado obtenido de cada una de ellas: Prueba Pulsamos la pestaña de "T.P.V." Pulsamos en "Añadir Nuevo" Introducimos en nombre del cliente en el filtro Escogemos un cliente cuyo grupo contiene descuento Pulsamos en "Añadir Nuevo Cliente" Introducimos la referencia del producto que queremos añadir Una vez elegido el producto, pulsamos "Añadir" Introducimos el código de barras del producto a través de nuestro lector de códigos Resultado Nos muestra la tabla de ventas en mostrador Nos lleva al formulario para registrar una nueva venta El selector busca automáticamente el cliente y cambia el grupo si es necesario Se refleja el descuento en la tabla Nos lleva al formulario para registrar los datos del nuevo cliente El selector busca automáticamente el producto El producto se añade a la tabla automáticamente y se actualiza el total El producto se añade a la tabla automáticamente con cantidad 1 y se actualiza el total Cristina del Marco Martínez Página 71

Al elegir un producto, cambiamos su precio unitario y pulsamos "Añadir" Indicamos un producto sin stock Seleccionamos que vamos a registrar un vale de descuento Introducimos el código del cupón de descuento y pulsamos "Añadir" Introducimos un código inactivo Introducimos un código con fecha no válida Seleccionamos una cantidad con caracteres no numéricos Pulsamos "Guardar" PrestaManagement El producto se añade a la tabla con el precio indicado y se actualiza el total El sistema nos comunica que no está disponible y no lo añade a la tabla Se facilita un campo para introducir el código El cupón se añade a la tabla como valor negativo y se actualiza el total El sistema nos informa que el cupón no está activo y no lo introduce El sistema nos informa que la fecha ha expirado El sistema nos informa que el formato de la cantidad no es correcto Se registra la venta y se añade a la tabla de ventas en mostrador Pulsamos en una de las ventas Se muestran los detalles de la venta Pulsamos en "Factura" Se descarga un documento PDF con la factura de la venta Cristina del Marco Martínez Página 72

10.- Instalación del sistema Para la instalación del sistema, debemos disponer del gestor de contenidos PrestaShop. En esta sección veremos cómo instalarlo en cualquier ordenador. 10.1.- Prerrequisitos técnicos Antes de descargar o instalar, es necesario un servidor Web. Aunque en este caso se utilizará un servidor local. También se requiere de un nombre de dominio para la tienda. El servicio de hosting elegido debe tener los siguientes componentes instalados en el espacio del servidor: - Sistema: Unix, Linux o Windows - Servidor Web: Apache Web Server 1.3 y posteriores. - PHP 5.2 y posteriores. - MySQL 5.0 y posteriores. - Como mínimo 32MB de RAM en su servidor. PrestaShop funciona con PHP 5.1 y posteriores, pero las versiones inferiores a 5.2 poseen errores den lugar a una mala resolución de algunas funciones. Cristina del Marco Martínez Página 73

10.2.- Instalación en servidor remoto PrestaManagement La instalación de cualquier aplicación web a nivel local requiere que instale primero el entorno adecuado, es decir, el servidor web Apache, el intérprete de lenguaje PHP, el servidor de base de datos MySQL y la herramienta phpmyadmin. A esto se le denomina un paquete AMP: Apache + MySQL + PHP y los empaquetados son de código abierto, estos instaladores son en su mayoría libres. Existen muchos paquetes pre-construidos que se pueden instalar fácilmente. En mi caso, he elegido XAMPP. Antes de seguir con PrestaShop, hay que asegurarse de que el servidor funciona correctamente: - El servidor web debe estar en funcionamiento. - El servidor de base de datos debe estar en funcionamiento. - La herramienta phpmyadmin debe ser accesible. Esta es la aplicación web que ayuda a manejar los datos almacenados en MySQL. Su ubicación depende del paquete AMP, en esta ocasión, la encontramos en localhost/phpmyadmin. Una vez comprobado que el paquete se ha instalado correctamente y que todas sus partes están funcionando, es necesario encontrar la carpeta raíz. Al instalar el paquete XAMPP, esta carpeta se sitúa en C:/xampp/htdocs. Realizando estos pasos, se puede proceder a la instalación de PrestaShop. 10.3.- Instalación de PrestaShop 10.3.1.- Descarga y descompresión del archivo PrestaShop La última versión de PrestaShop está disponible en la web http://www.prestashop.com/descarga. Esta página se muestra con un formulario informal, pero si no se quiere rellenar el formulario, sólo hay que hacer clic en Descarga Ahora. Cristina del Marco Martínez Página 74

Figura 9.1 Descarga de PrestaShop, extraído de http://www.prestashop.com/es/descarga Se debe obtener un archivo llamado prestashop_1.4.6.2.zip o equivalente, dependiendo de los números de la versión. La descarga mostrará un archivo comprimido el cual contiene los datos de PrestaShop. Para poder continuar con el proceso, se descomprime este archivo. Se procede a extraer el contenido del archivo comprimido en un lugar conocido en el disco duro. 10.3.2.- Carga de PrestaShop Con espacio suficiente a disposición y una carpeta en el disco duro con el archivo PrestaShop descomprimido, el siguiente paso es cargarlos. Esto se logra con un cliente FTP. Cristina del Marco Martínez Página 75

10.3.2.1.- Instalación y configuración del cliente FTP FTP es el acrónimo de File Transfer Protocol. Un cliente FTP destacado y gratuito es FileZilla. A continuación, se descarga FileZilla Client y lo instalamos. Figura 9.2 Iniciación de FileZilla Una vez que FileZilla esté instalado, necesitará configurarlo con los parámetros de su sitio, los cuales deberían haber sido enviados por el proveedor de hosting. Si no es así, se pueden solicitar. Los parámetros necesarios son: Un nombre de host o una dirección IP: la ubicación del espacio del hosting del servidor FTP. Un nombre de usuario: el cual se identifica la cuenta del hosting y es único. Una contraseña: medida obligatoria de seguridad. Cristina del Marco Martínez Página 76

Abra FileZilla y acceda a la herramienta de Gestor de Sitios. Figura 9.3 Gestor de sitio en FileZilla Para agregar el espacio de hosting al Gestor de Sitio, hay que seguir los siguientes pasos: 1. Hacer clic en el botón Nuevo Sitio. Una entrada será creada en la lista de sitios y se le ofrece un nombre. 2. Al lado derecho, en la pestaña General, se ingresan los parámetros proporcionados por el host: nombre del host, usuario y contraseña. 3. Una vez que todos los campos han sido rellenados, se pulsa Conectar. Esto guarda el sitio en la lista e ingresará en la cuenta automáticamente para que se pueda verificar que todo funciona correctamente. 10.3.2.2.- Carga de los archivos Ahora que se estamos conectados al espacio, llega el momento de transferir los archivos de PrestaShop, del ordenador al servidor. En FileZilla, buscamos entre las carpetas locales hasta que encontremos la que contiene los archivos PrestaShop, manteniéndola abierta. A la derecha, en la sección Sitio Remoto, navegamos al lugar donde se desea que PrestaShop esté disponible públicamente. Cristina del Marco Martínez Página 77

En el lado izquierdo de FileZilla, se debe encontrar la carpeta local donde se descomprimieron los archivos PrestaShop, y en el lado derecho, el lugar de destino. Si no se ha realizado aún, cargar los ficheros es muy simple: seleccionamos todos los archivos y carpetas de la carpeta local; y arrastramos-soltamos en la carpeta remota, o clic-derecho en la selección y Cargar en el menú del contexto. Figura 9.4 Cargar los archivos en FileZilla Después de un momento, todos los archivos y carpetas PrestaShop deberán estar en línea. 10.3.3.- Creación de una base de datos para la tienda Antes de instalar PrestaShop, hay que asegurarse de que el servidor MySQL tenga una base de datos lista para la información de PrestaShop, si no es el caso, hay que crear una. Esto se puede lograr utilizando la herramienta gratuita phpmyadmin, la cual se debe encontrar pre-instalada en el servidor web. Se conecta utilizando las credenciales de la cuenta proporcionadas por el host, la cuenta debe ser accesible mediante una URL estándar, ligado al nombre de dominio o al del host. Figura 9.5 Creación de base de datos Cristina del Marco Martínez Página 78

En la columna izquierda, podemos observar la base de datos actual. Algunas debieran mantenerse intactas, ya que pueden ser utilizadas por phpmyadmin o por el host. De cualquier manera, se puede crear una base de datos completamente nueva utilizando el formulario central Crear nueva base de datos. Simplemente se introduce un nombre único y se pulsa Crear. El nombre de la base de datos será agregado a la lista. Ya está preparado para guardar información de PrestaShop. 10.3.4.- Lanzamiento del auto-instalador Ahora llega el momento de unir todo: instalación de PrestaShop. El proceso de instalación es muy sencillo, que se hace más eficiente con el autoinstalador PrestaShop. Para iniciar el lanzamiento, se ubica PrestaShop en un hosting: el archivo de órdenes detectará automáticamente que aún no se encuentra instalado, y nos llevará al auto-instalador. Desde allí, sólo tenemos que leer y hacer clic. Paso 1: Página de Bienvenida Esta página es una breve introducción al proceso de instalación. Figura 9.6 Página de Bienvenida de PrestaShop Cristina del Marco Martínez Página 79

1. Seleccionamos el idioma para el instalador. 2. Seleccionamos si se desea instalar o actualizar PrestaShop. 3. Leemos el contrato de licencia PrestaShop. Para pasar al siguiente paso marcamos la casilla Estoy de acuerdo con los términos y condiciones, luego hacer clic en Siguiente. Pasos 2 y 3: Compatibilidad y configuración del sistema La segunda página hace una revisión breve de todos los parámetros del servidor en el host y si no encuentra ningún error, lo lleva directamente al tercer paso. 9.3.4.1.- Compatibilidad del sistema Esta página revisa que todo se encuentre bien con la configuración del servidor: ajustes PHP, permisos en archivos y carpetas Figura 9.7 Compatibilidad con el sistema Cristina del Marco Martínez Página 80

Si algo sale mal, el instalador continúa en este paso, permitiendo revisar los detalles técnicos que necesitan ser corregidos, ya sea cambiar la configuración PHP o actualizar los permisos del archivo. Modificaciones de configuración PHP sólo pueden ser realizadas caso por caso dependiendo de su nivel de acceso al servidor. Actualizar los permisos de archivos permitirá acceder a los archivos remotos, por lo tanto utilizamos el cliente FTP. Iniciamos la sesión de la cuenta del servidor utilizando nuestro cliente FTP, exploramos la carpeta PrestaShop y encontramos las carpetas que se encuentran marcadas por el instalador como necesitadas de un cambio en los permisos. De cualquier manera, gracias a FileZilla, se pueden cambiar los permisos fácil y gráficamente: una vez que encontramos un archivo o carpeta que necesite dicho cambio, hacemos clic-derecho desde el cliente FTP, y en el menú de contexto elegimos Permisos de archivos. Se abrirá una pequeña ventana. Figura 9.8 Cambios de permisos con FileZilla Dependiendo de la configuración del servidor, se necesitará Leer y Ejecutar las columnas de las casillas marcadas y las hileras de Propietario y Grupo con la columna Escribir. Algunos host pueden requerir marcar la casilla Escribir en la hilera Públicos. Para carpetas en las cuales el instalador necesita un cambio recurrente en los permisos, se marca la casilla Incluir en subdirectorios. Cristina del Marco Martínez Página 81

Una vez que los indicadores se encuentren en verde podemos hacer clic en Siguiente. Si no los tiene todos en verde, nos aseguramos que el indicador muestre Su configuración es válida, haga clic en continuar!. 9.3.4.2.- Configuración del sistema Esta página contiene un formulario que le permite informar a PrestaShop dónde se encuentra el servidor de la base de datos y qué base de datos debe utilizar el servidor, además de otros detalles. Figura 9.9 Configuración de la base de datos Cristina del Marco Martínez Página 82

10.3.4.3.- Configuración de la base de datos Hay que completar todos los campos con la información de conexión proporcionada por el web-host, junto con el nombre de la base de datos elegido/creado por PrestaShop, luego hacer clic en el botón de Verifique ahora! para revisar que todo se encuentre bien. Si es así, el instalador mostrará el siguiente mensaje: La base de datos está conectada. Elegimos el prefijo de las tablas. ps_ es el predefinido, por lo tanto la tabla PrestaShop SQL tiene nombres como ps_cart o ps_wishlist ; pero si se necesita instalar más de un caso de PrestaShop en la misma base de datos, entonces se debe utilizar un prefijo para cada instalación. 10.3.4.4.- Tipo de instalación Existen 2 modos: Modo simple: un PrestaShop vacío y en blanco será instalado. No tendrá muchos módulos, temas, ni productos/categorías de demostración. Se tendrá que construir todo. Este modo es muy bueno si se sabe lo que se hace. Modo completo: PrestaShop será instalado con un tema, más de cien módulos, y algunos productos y categorías de demostración. Este modo es muy bueno para nuevos instaladores, ya que les enseña cómo utilizar PrestaShop y puede servir como una buena base para su tienda, después de eliminar las categorías y productos de demostración. 10.3.4.5.- Parámetros de envío de emails PrestaShop confía plenamente en notificaciones de correo electrónico de parte del propietario de la tienda y sus clientes. Este formulario posibilita probar si la configuración del servidor actual nos permite enviar correo electrónico utilizando la función PHP mail(). Si no es el caso, entonces revisamos la casilla Configurar SMTP manualmente para configurar el servidor de correo propio. Hacemos clic en Siguiente, y el instalador completará la base de datos con información y tablas. Esto puede tardar unos minutos en un servidor lento. Paso 4: Configuración de la Tienda Aquí es cuando podemos comenzar a personalizar la tienda: le ofrecemos un nombre y logo, indicamos su actividad principal y la información personal del propietario de la tienda. Cristina del Marco Martínez Página 83

Figura 9.10 Información sobre la tienda El logo aparecerá: En todas las páginas de su tienda. En el back-office. En todos los correos enviados a los clientes. En todos los documentos de contrato (recibos, autorizaciones de devolución, etc.). Es altamente recomendable no mantener el logo por defecto de PrestaShop, por razones obvias. Cristina del Marco Martínez Página 84

Se puede elegir utilizar PrestaShop simplemente como catálogo, el cual deshabilitará las compras y funciones de pago, aunque sea temporalmente. Esto es útil cuando configura la tienda por primera vez, ya que asegura que ninguna compra se realizará hasta que no se encuentre listo para permitir al público comprar en su sitio. Se puede eliminar el modo catálogo posteriormente, en la sub-pestaña Preferencias > Productos. La página finaliza con unos cuantos Beneficios adicionales, los cuales son módulos que están promocionados de manera especial por el instalador. Podemos elegir instalarlo si así se desea. Al hacer clic en Next La tienda está en línea! 10.3.5.- Finalización de la instalación Como se puede observar, en la página final del proceso de instalación, debemos realizar unas cuantas acciones antes de poder empezar a vender. Figura 9.11 Configuración finalizada Una manera sencilla de mejorar la seguridad de la instalación es borrar o renombrar algunos archivos y carpetas claves. Esto se logra utilizando el cliente FTP, directamente en el servidor. Cristina del Marco Martínez Página 85

Elementos a borrar: - Carpeta install. - Archivos readme_* (5 de ellos). - Archivo CHANGELOG. Elementos a renombrar: - Carpeta admin : debemos ofrecerle un nombre único, para que ningún agresor pueda acceder a sus archivos admin. Escribimos el nuevo nombre para la carpeta admin que podremos acceder directamente a partir de ahora. La instalación ha terminado! 11.- Manual de uso de la aplicación En primer lugar, debemos descargarnos el archivo comprimido y extraer los ficheros de su interior: Figura 11.1 Carpeta con los archivos para el proyecto Nos desplazamos hasta los archivos donde se encuentra la web y debemos colocar los archivos anteriores en los siguientes directorios: El archivo ajax.php en la carpeta de administración. El archivo AdminManagement.php en la carpeta admin/tabs. El archivo Management.php en la carpeta classes. La carpeta management en la carpeta modules. Una vez agregados, el módulo está instalado y listo para usarse sin necesidad de ninguna configuración. Cuando abrimos el back-office de nuestra tienda, nos dirigimos a la pestaña Pedidos y podemos comprobar la subpestaña T.P.V. que tenemos creada. Cristina del Marco Martínez Página 86

En un primer momento, la tabla inicial está vacía y se irá rellenando una vez realicemos pedidos en mostrador. Para almacenar una nueva venta, pulsamos el botón Añadir Nuevo. Y vamos rellenando los datos de nuestro formulario. 11.1.- Cliente En condiciones normales, el cliente al que se atiende, no estará registrado. Por lo cual, el seleccionador de clientes aparecerá con nuestro cliente por defecto. Figura 11.2 Cliente por defecto En el caso de querer registrarse en ese mismo momento, se presionará el botón de Añadir nuevo cliente y aparecerá el formulario que PrestaShop nos ofrece para añadir clientes. Si el cliente está registrado, utilizaremos el filtro. Éste funciona con el nombre o correo electrónico del cliente. Figura 11.3 Filtro de cliente El grupo del cliente cambia proporcionalmente con el filtro, si este cliente tiene uno o más grupos, aparecerá debajo. Si el cliente está registrado en un grupo con descuento, se añadirá directamente en la tabla. Al igual que si añadimos un descuento de algún tipo: Cristina del Marco Martínez Página 87

Figura 11.3 Descuento por grupo de cliente 11.2.- Pedido Los productos se van a poder buscar de dos maneras: Por nombre o referencia Utilizaremos el filtro, igual que hemos hecho con los clientes. Se rellenarán los campos de precio unitario y cantidad disponible automáticamente según el filtro. Figura 11.4 Rellenando los campos de Producto Por código de barras En este caso se utilizará el campo código. Particularmente, cuando utilizarnos el lector de códigos, el pedido se añade de forma automática a la tabla de carrito sin necesidad de pulsar el botón Añadir este producto. Cristina del Marco Martínez Página 88

En ambos casos, se utilizará una cantidad de 1 por defecto para agilizar la venta. Los productos se van añadiendo a una tabla que tenemos más abajo. En el caso de que no haya productos en almacén, el programa no dejará que se añada a la tabla. Figura 11.5 Tabla carrito con tres productos El precio que refleja es el resultado de añadirle la cantidad de productos y el impuesto de valor añadido seleccionado. La suma total de la tabla aparecerá en el Total que encontramos más abajo. 11.2.1.- Descuentos Para agregar un descuento al pedido, se selecciona el checkbox y aparecerá un campo a rellenar. Este pide un código de descuento que debe proporcionar el cliente que puede ser de un porcentaje o una cantidad. Una vez añadido, se añade a la tabla y cambia el total del valor de los productos. Figura 11.6 Descuento añadido en la tabla Este descuento quedará desactivado después de ser añadido. Cristina del Marco Martínez Página 89

11.2.2.- Atributos Algunos productos pueden tener atributos que son importantes para la venta, ya que puede que no queden en almacén productos de ese atributo concreto o que varíe el precio. Una vez accedido al producto con atributo, aparecerá un selector en el cual añadiremos la particularidad. Si esta perjudica o beneficia al precio, cambiará el valor unitario del producto. Figura 11.7 Producto con atributo Cuando le damos a guardar, se guarda en la tabla de la pestaña T.P.V y también en la de pedidos junto a los demás realizados en la página web. Si pulsamos en el pedido en concreto, tendremos los detalles de la venta con los productos que hemos escogido: Cristina del Marco Martínez Página 90

Figura 11.8 Detalles del pedido Desde aquí tenemos la opción de imprimir la factura pulsando arriba a la derecha. Cristina del Marco Martínez Página 91