Ingeniería Técnica en Informática de Gestión
GESTIÓN EMPRESARIAL ONLINE
Víctor Sancho Coma
Joan Jou i Majó
OTOÑO 2009
Dedicatoria
Este proyecto se lo dedico a mis padres, a toda mi familia y a mis
amigos más próximos, que en todo momento, con su apoyo
incondicional, han hecho lo posible para que no pierda el rumbo
y siga en mi camino. Gracias.
Agradecimientos
Gracias a todos mis compañeros de la EUPMT que he conocido
durante mi carrera. Han sido siempre una fuente de ayuda,
apoyo y motivación, con ellos todo ha sido mucho más fácil.
Enric, Carla, Cristian, Cristina, Santis ( los dos ), Núria, Marc,
Charlie, Gemma, Dani, Mayol, Jordi, Víctor, Rafa, David, Richi,
Albert, Pepe, Jordi, etc. Gracias.
Quiero dar las gracias también a mi tutor Joan Jou y Majó y a
toda la gente que siempre ha confiado en mí y en mis
posibilidades.
Resumen
Hoy en día, las aplicaciones para la gestión empresarial de código abierto son cada vez más
abundantes, y también su capacidad para ser parametrizadas llega casi a su totalidad,
dejando de ser necesaria la construcción de un software a medida. Son soluciones
empresariales Open Source para la PYME de bajo coste y versátiles, libres de pagos por
licencias, que compiten en potencia y calidad y suponen una alternativa real a aplicaciones
comerciales que se entregan sin código abierto. Por ello hemos realizado este proyecto, en
el que a partir de una etapa de análisis de la problemática de una empresa PYME, se
estudiarán diversas aplicaciones de gestión de código abierto ERP/CRM de plataforma
web, para escoger al final la más adecuada. En nuestro caso será Opentaps, una suite de
aplicaciones empresariales que alcanza todas las áreas de una empresa de este tipo e
integra otros proyectos Open Source. Una aplicación joven y con proyección, muy flexible,
con gran variedad de tecnología, arquitecturas y patrones como SOA, Freemarker, MVC o
patrón decorador. También con la capacidad de trabajar con la mayoría de bases de datos
actuales. Configurando y realizando pequeños desarrollos en un caso práctico, veremos
cómo se puede convertir en una solución muy óptima a nuestros problemas de gestión.
Avui dia, les aplicacions per a la gestió empresarial de codi obert són cada vegada més
abundants, i també la seva capacitat per a ser parametritzades arriba gairebé a la seva
totalitat, deixant de ser necessari la construcció d'un programari a mesura. Són solucions
empresarials Open Source para la PYME de baix cost i versàtils, lliures de pagaments per
llicències, que competeixen en potència i qualitat i suposen una alternativa real a
aplicacions comercials que es lliuren sense codi obert. Per això hem realitzat aquest
projecte, en el qual a partir d'una etapa d'anàlisi de la problemàtica d'una empresa PYME,
s'estudiaran diverses aplicacions de gestió de codi obert ERP/CRM de plataforma web, per
a escollir al final la més adequada. En el nostre cas serà Opentaps, una suite d'aplicacions
empresarials que arriba a totes les àrees d'una empresa d'aquest tipus i integra altres
projectes Open Source. Una aplicació jove i amb projecció, molt flexible, amb gran
varietat de tecnologia, arquitectures i patrons com SOA, Freemarker, MVC o patró
decorador. També amb la capacitat de treballar amb la majoria de bases de dades actuals.
Configurant i realitzant petit* desenvolupaments en un cas pràctic, veurem com es pot
convertir en una solució molt òptima als nostres problemes de gestió.
Today, applications for the open source business management are increasingly abundant,
and also its ability to be parameterized comes almost entirely, ceasing to be necessary to
build customized software. Are Open Source business solutions for SMEs low cost,
versatile, free of licensing fees, competing in strength and quality and are a real alternative
to commercial applications that are delivered without open source. We have therefore
undertaken this project, which from a stage of analysis of the problem of a SME company
will study various management applications open source ERP / CRM Web platform, to
select the most appropriate. In our case is Opentaps, a suite of business applications that
reaches all areas of a company of its kind and incorporates other open source projects. An
young application with projection, very flexible, with a variety of technology architectures
and standards such as SOA, freemarker, MVC or Decorator pattern. Also Opentaps have
the ability to work with most existing databases. With it's configure and small
developments in a practical case, we see how it can become a very optimal solution to our
management problems.
I Gestión Empresarial Online
Índice
1- Introducción ................................................................................................................1
2- Objetivos Generales ....................................................................................................3
3- Metodología ................................................................................................................5
4- Planificación ...............................................................................................................7
4.1 - Planificación temporal ...............................................................................7
5- Análisis y diagnosis ....................................................................................................9
5.1 - Análisis inicial ...........................................................................................9
5.2 - Análisis de la problemática y procesos de negocio ................................... 10
5.3 - Alcance funcional .................................................................................... 15
5.4 - Requisitos exigidos por la empresa .......................................................... 15
5.5 - Objetivos de la implantación .................................................................... 16
5.6 - Definición de las mejoras en los procesos y organización ......................... 16
6- Elección del software ................................................................................................ 21
6.1- Estudio de aplicaciones ............................................................................. 21
6.2 - Aspectos a tener en cuenta ....................................................................... 24
6.2.1 - Aspectos funcionales .......................................................... 24
6.2.2 - Aspectos técnicos ................................................................ 25
6.2.3 - Características propias del proveedor .................................. 25
6.2.4 - Características del servicio .................................................. 26
6.2.5 - Aspectos económicos .......................................................... 26
6.3 - Tabla Comparativa ................................................................................... 26
6.4 - Elección y argumentación ........................................................................ 28
7- Recursos ................................................................................................................... 31
8- Costes ....................................................................................................................... 33
II Índice
9- Presentación y estudio previo de Opentaps................................................................ 35
9.1 - Sobre Opentaps ....................................................................................... 35
9.2 - Licencia ................................................................................................... 35
9.3 - Actualidad ............................................................................................... 36
9.4 - Tecnología ............................................................................................... 38
9.4.1 - Apache Ofbiz ..................................................................... 39
9.4.2 - Apache ANT ...................................................................... 40
9.4.3 - Lenguajes de programación ................................................ 41
9.4.4 - Arquitectura y patrones....................................................... 44
9.4.5 - Freemarker ......................................................................... 48
10- Primera vista a Opentaps .......................................................................................... 49
10.1 - Estructura de Opentaps en general ......................................................... 50
11- Parametrizaciones y configuraciones ........................................................................ 53
11.1 - Módulos de Soporte ............................................................................... 53
11.1.1 - Módulo de Herramientas Web .......................................... 54
11.1.2 - Módulo de Ayuda ............................................................. 55
11.2 - Módulo Usuarios y Participantes ........................................................... 55
11.2.1 - Creación de miembros de la Organización ........................ 60
11.2.2 - Grupos de seguridad ......................................................... 61
11.3 - Módulo Almacén y Envíos .................................................................... 65
11.3.1 - Configuración nave de Almacén ....................................... 66
11.3.2 - Configurar Equipo de Almacén......................................... 67
11.3.4 - Estructura general de un componente ................................ 68
11.3.5 - Desarrollos - Traducción................................................... 69
11.4 - Módulo de Compras .............................................................................. 71
11.4.1 - Crear y configurar proveedores ......................................... 73
III Gestión Empresarial Online
11.5 - Módulo CRM ......................................................................................... 75
11.5.1 - Configuración del correo electrónico ................................. 77
11.6 - Módulo de estadísticas e informes (Opentaps Analitycs) ........................ 79
11.6.1 - Desarrollo -> Error Analitycs ............................................ 80
11.7 - Módulo de Catálogo ............................................................................... 84
11.7.1 - Creación tienda virtual ...................................................... 86
11.7.2 - Elimininar datos demo ...................................................... 91
11.7.3 - Catálogos .......................................................................... 92
11.7.4 - Categorías ......................................................................... 93
11.7.5 - Productos .......................................................................... 95
11.7.6 - Configuraciones ................................................................ 99
11.7.7 - Transporte ....................................................................... 102
11.7.8 - Motor de Servicios de Opentaps ...................................... 107
11.7.9 - Motor de entidad o modelo de datos ................................ 107
11.7.10 - Desarrollo -> Servicio Estimación de Envíos................ 108
11.8 - Módulo de Contabilidad y Finanzas ..................................................... 120
11.8.1 - Creación de autoridad fiscal e impuestos ......................... 122
11.9 - Módulo de Comercio Electrónico ......................................................... 124
11.9.1 - Temas visuales ................................................................ 129
11.9.2 - Modelo-Vista-Controlador (MVC) en Opentaps .............. 130
11.9.2 - Desarrollo -> Tema Visual .............................................. 133
11.9.3 - Gestión de contenido ....................................................... 135
11.10 - Módulo de Recursos Humanos ........................................................... 136
11.10.1 - Desarrollo -> Icono Principal ........................................ 137
11.11 - Otros módulos disponibles ................................................................. 138
11.12 - Otros desarrollos ................................................................................ 140
IV Índice
11.12.1 - Desarrollos visuales ...................................................... 140
11.12.2 - Desarrollos en reportes ................................................. 141
12- Errores .................................................................................................................... 143
13- Pruebas ................................................................................................................... 145
13.1 - Gestión de ventas ................................................................................. 145
13.2 - Gestión de compra ............................................................................... 149
13.3 - Alta y búsqueda de clientes .................................................................. 151
14- Conclusiones .......................................................................................................... 153
14.1 - Conclusiones sobre la aplicación ....................................... 153
14.2 - Conclusiones personales .................................................... 154
15- Trabajo futuro ......................................................................................................... 155
16- Glosario .................................................................................................................. 157
17- Bibliografía ............................................................................................................ 159
Anexo I - Instalación Opentaps ...................................................................................... 161
Anexo II - Contenido de DVD del caso práctico ............................................................ 171
1 Gestión Empresarial Online
1- Introducción
En la actualidad, las nuevas tecnologías comienzan a ser una herramienta básica en el
desarrollo empresarial y están cambiando la forma tradicional de hacer las cosas. No todos
los empresarios están concienciados de la importancia de las TIC, y es que según un
estudio de la Comisión Europea el uso de las TIC puede incrementar la productividad de la
empresa en un 40%. Una empresa pyme puede y debe aprovechar las potencialidades de
las Tecnologías de la Información y la Comunicación (TIC) para ser más eficientes, y por
tanto, más productivas obteniendo ventajas competitivas. Más del 94% del tejido
empresarial español se corresponde con las pymes. La organización tradicional del trabajo
no da respuestas al nuevo entorno empresarial, las empresas que no se adaptan tienen
muchas dificultades.
He trabajado en una empresa pyme y he sufrido los problemas de adaptación al entorno
empresarial actual. Esta empresa sin embargo, está buscando soluciones a sus problemas
en la dirección de las tecnologías de la información. Por esta razón me incliné por llevar a
cabo un proyecto relacionado con este tema. Hay que tener en cuenta también que
actualmente, dominar las tecnologías relacionadas con este mundo es un valor añadido de
cara a la inminente entrada en el mundo laboral.
He querido que este proyecto, con un poco de esfuerzo añadido por mi parte, se centrara en
investigar una solución de este ámbito a dicha problemática de esta empresa pyme. La
opción de realizar yo mismo una aplicación con las funcionalidades necesarias la he
desestimado por la gran cantidad de aplicaciones disponibles y configurables que existen.
También tengo la intención de adquirir conocimientos y experiencia utilizando tecnologías
muy actuales y con proyección que no haya estudiado durante la carrera, y que pueden
servirnos en un futuro próximo.
Para adquirir esta experiencia y conocimientos, no queremos que sólo se base en el estudio,
creemos que del trabajo práctico siempre se obtiene más, así que realizaremos un caso
práctico en el que crearemos un prototipo de implementación de una solución software TIC
de código abierto para esta empresa.
Estas tecnologías están a la orden del día y son implementadas cada vez más en la mayoría
de empresas, si a esto le sumamos un especial interés por mi parte para llegar a aprender el
2 Introducción
funcionamiento de una aplicación de este campo, que tenga proyección y ayude a esta
empresa al menos con nuestra investigación, llegamos a la conclusión que es una elección
acertada llevar a cabo este proyecto.
La motivación personal y mis ganas de aprender que tengo con este proyecto es
equiparable a su dificultad pero también lo mucho que me gusta este campo de las TIC.
3 Gestión Empresarial Online
2- Objetivos Generales
El objetivo general es encontrar y adaptar una herramienta software open source de gestión
empresarial a una empresa pyme orientada al sector medio ambiental desde hace muchos
años. Dicha herramienta ha de poder mejorar los procesos de trabajo de la empresa, su
organización y flujo de información en general, permitiéndonos obtener un mejor
rendimiento y eficiencia, ya que actualmente la gestión de la información no es adecuada.
Esta empresa busca una solución dentro de las tecnologías de la información.
Este proyecto pretende estudiar en su mayor medida una solución a la problemática de esta
empresa buscando, seleccionando, construyendo y testeando una posible solución basada
en una aplicación software empresarial actual. Ver si esta solución podría funcionar.
No se contemplará una implantación completa pero sí al menos construir y testear un
prototipo y mostrar hasta qué punto puede solucionar la problemática una implantación de
este tipo. Además una implantación de estas características requiere de una buena
metodología y una buena metodología en este caso y al nivel que requiere esta empresa,
requiere del apoyo de una consultoría con experiencia en este tipo de implantaciones y
también que conozca a fondo el software seleccionado.
Nosotros no tenemos experiencia alguna en implantaciones de este tipo y tampoco en la
herramienta que vamos a implantar. Por eso como objetivo personal, queremos obtener
experiencia en este ámbito y conocer a fondo una aplicación empresarial actual y con
proyección de futuro, además de ayudar con nuestro estudio a esta empresa. También
aprender nuevos marcos de trabajo durante el transcurso de este proyecto.
Como objetivos centrados en la aplicación, queremos conseguir un prototipo que
demuestre la mejora en nuestros procesos de trabajo y gestión de la información,
solucionando algunos de los problemas que se presentan.
Objetivos generales:
• Estudiar y comprender la problemática de la empresa.
• Estudio de las diferentes opciones software en el mercado.
• Seleccionar una herramienta Open Source de Gestión empresarial actual respecto a
los requerimientos.
4 Objetivos Generales
• Estudiar más exhaustivamente la aplicación seleccionada.
• Instalar, parametrizar y desarrollar (si es necesario la aplicación).
• Obtener un prototipo para hacer pruebas y demostrar que puede ser una solución.
• Siempre que sea posible, la utilización de software libre.
5 Gestión Empresarial Online
3- Metodología
En este apartado queremos desarrollar la metodología, que será muy importante para
conseguir nuestros objetivos en el proyecto. La única manera de no errar en la adecuada
asignación de esfuerzos y recursos al proyecto es seguir una buena metodología.
El éxito de los proyectos suele depender más de la forma de implementar la solución que
del propio software, es de vital importancia contar con una metodología flexible y de
resultados en base a un análisis exhaustivo de los requerimientos de la empresa, que será la
base para localizar y diseñar la solución que mejor se adapte a nuestras necesidades.
Una buena metodología será determinante para tener una garantía de éxito de la solución
en los plazos previstos. Seguiremos un patrón metodológico como el que exponemos a
continuación:
Como podemos ver hay dos fases totalmente distintas:
• La “pre-implantación”, es decir, el análisis previo para definir los objetivos del
proyecto, alcance funcional, coste total, recursos necesarios, necesidades concretas
de la organización, calendarios, etc.
• El proyecto propio de implantación incluyendo desarrollos, parametrizaciones,
tests, etc.
En este proyecto pretendemos llegar a hacer pruebas con un prototipo. Como comentado
en el apartado anterior, la implantación del sistema no será completa, así que las fases de
puesta en marcha y explotación no se contemplarán.
PRE-IMPLANTACIÓN IMPLANTACIÓN
Figura I - Metodología Implantación
6 Metodología
7 Gestión Empresarial Online
4- Planificación
Como en la elaboración de cualquier proyecto, una de las principales reglas a seguir es
especificar desde un principio, que pasos se llevarán a cabo para conseguir los objetivos
esperados. Para eso, nuestra planificación tendrá en cuenta el factor temporal, donde
detallaremos el principio y el final del proyecto entre otras cosas, y el de costes.
En los costes estudiaremos detalladamente que recursos humanos y materiales son
necesarios.
Una planificación detallada nos dará consistencia al proyecto y evitará o ayudará a
sobrellevar sorpresas que hagan demorar el tiempo y aumentar en consecuencia los costes.
Es por ello que estudiaremos las tareas a llevar a cabo.
4.1 - Planificación temporal
Para nuestra planificación temporal hemos de tener muy en cuenta la curva de aprendizaje,
ya que en el software escogido junto a sus tecnologías nuestra experiencia es nula. Esto nos
obliga a destinar mucho tiempo al estudio, comprensión y experimentación del
funcionamiento de todo este arsenal tecnológico, repercutiendo en el coste final.
La curva de aprendizaje nos obligara a la búsqueda exhaustiva de documentación, primeras
tomas de contacto y pequeñas pruebas ahora en el inicio del proyecto. Tal y como la curva
de aprendizaje se vaya aplanando nuestro avance será mayor y más efectivo.
Teniendo en cuenta esto y partiendo del hecho que el proyecto lo empezamos el 14 de
octubre y la fecha de entrega es el 18 de enero, destinadas 20 horas a la semana, esto nos
da un total de (13 semanas y 2 días a 4 horas por jornada) 268 horas. Tomaremos la unidad
de tiempo en semanas (de lunes a viernes).
Semana 1 y Semana 2
Se llevará a cabo la mayor parte de la fase de análisis y diagnosis, estudiando el
funcionamiento de la empresa y analizando la problemática.
8 Planificación
Semana 3
Durante esta semana realizaremos un estudio de mercado estudiando las diferentes
aplicaciones contempladas y seleccionaremos la que creamos más adecuada.
Semana 4
Recopilaremos información disponible sobre la aplicación que hayamos seleccionado y
comenzaremos a estudiar la aplicación, arrancando nuestra curva de aprendizaje.
Semana 5 - Semana 12
Comenzará la fase de implementación con la instalación y parametrización de los módulos
a nuestras necesidades. Seguiremos estudiando la aplicación y aumentando nuestros
avances hasta conseguir un prototipo.
Semana 13
Realizaremos pruebas y sacaremos conclusiones.
9 Gestión Empresarial Online
5- Análisis y diagnosis
Esta fase consistirá en la realización de un estudio de los procesos de negocio y de los
futuros requisitos de la compañía. Es habitual encontrar organizaciones que no han
desarrollado correctamente el análisis de pre-implantación y por tanto no han elegido bien
la solución. Por todo ello, el análisis previo es de básica importancia.
Debemos evaluar y analizar minuciosamente la situación y requisitos de la compañía,
planificando, desarrollando y gestionando un proyecto creativo, rentable y adaptado.
5.1 - Análisis inicial
Nuestra empresa es una empresa PYME dedicada al sector del medio ambiente desde hace
muchos años. Se suministran y comercializan diversos productos y servicios relacionados
con la protección del medio ambiente y la seguridad de las personas, tales como
absorbentes, jaulas de seguridad, tanques de combustible o kits ADR.
Esta empresa la componen un gerente (Jordi), un ingeniero químico (Bastian), un ingeniero
técnico en informática de gestión (yo mismo), un contable (Concha) y un equipo de
almacén y envíos (Antonio y Daniel).
El gerente se dedica a hacer también a su vez de comercial y sabe de todas las áreas y
funciones de su empresa. El Ingeniero químico aplica su conocimiento sobre el producto y
actúa como asesor, trabaja mucho junto al gerente. La contable se dedica a la gestión de la
contabilidad y el ingeniero técnico informático al mantenimiento del software que se
emplea y la web de la empresa.
Aunque tengan tareas más específicas cada uno, la verdad es que muchas veces se
intercambian los papeles y hacen un poco de todo cada uno.
Como herramientas tecnológicas que se utilizan encontramos:
• 3 Ordenadores de sobremesa (1 en el almacén), Pentium IV con 1 GB de RAM, y 2
portátiles Intel Centrino con 1GB de RAM también.
• Móviles personales, para comunicarse entre los miembros de la empresa y con los
clientes, y teléfono fijo para la recepción de llamadas de los clientes.
10 Análisis y diagnosis
• Microsoft Outlook para comunicación, intercambio de información y archivos entre
departamentos, y relación con los clientes.
• Línea ADSL contratada con router wifi de 4 Mb.
• ERP de pago mensual en modo ASP (instalado en un servidor de la compañía que
ofrece el servicio), con 2 accesos online ( solo pueden acceder 2 personas
simultáneamente). Básicamente utilizado por el contable y el ingeniero informático
para realizar la contabilidad, controlar compras y ventas, crear informes y
almacenar información de los clientes.
• Un portal web en el que el cliente es capaz de registrarse y realizar un pedido que
se notifica por email.
5.2 - Análisis de la problemática y procesos de negocio
Al aumentar la demanda de producto y el número de clientes a esta empresa se le presentan
muchos problemas, tales como clientes insatisfechos, descontrol en los pagos, entregas
erróneas y perdida de material.
Al analizar la causa de estos problemas, nos encontramos con un sistema de trabajo donde
la información esta desperdigada en diversas aplicaciones o soportes físicos, donde se
utiliza más tiempo en poder disponer de la información que en gestionarla adecuadamente
cuando es el momento. La información comunicada entre departamentos es casi siempre
deficiente y sin formalizar.
Todo esto hace que errores graves ocurran, como un envío erróneo o retraso de material
que provocan que el cliente no esté satisfecho, al incorporar un producto nuevo no haya
tiempo para preparar una buena gestión y aumenten así los problemas o no se disponga de
información sobre la situación actual de la empresa para poder hacer previsiones y
planificaciones.
Vamos a realizar un análisis de algunos de los procesos de negocio más básicos y críticos,
para comprender mejor la problemática. Para ello utilizaremos Microsoft Visio.
11 Gestión Empresarial Online
Recepción Nuevo Contacto
Figura II - Proceso de recepción de un nuevo contacto
Observemos que la información es recibida por cualquier empleado de la empresa y
apuntada o almacenada en diferentes sitios, según la comodidad o disponibilidad en ese
momento. Raras veces es apuntado en el ERP, ya que no todos los empleados saben cómo
hacerlo y también al tener sólo 2 accesos la mayoría del tiempo están ocupados.
Que ocurre entonces cuando alguien necesita información sobre un contacto o cliente, ya
sea información sobre un número de teléfono, correo electrónico o un pedido :
Búsqueda de información
Figura III - Proceso de búsqueda de información
12 Análisis y diagnosis
Como podemos comprobar, para encontrar la información que podría ser sólo un número
de teléfono, prácticamente toda la empresa en su totalidad se ha de implicar en su
búsqueda, ya que la información puede estar almacenada en diversos sitios, ya sea en el
Outlook de un empleado o en un papel de la mesa de otro. Si la información está
almacenada en el ERP o en la WEB, hay que esperar a que una persona que sepa nos puede
ayudar, con dos consecuencias claras, la interrupción de su trabajo o la espera y demora en
la entrega de información.
Todo esto ocurre también en la recepción de llamadas en la empresa o en el simple apunte
de un detalle sobre un cliente o proveedor.
Gestión de pedido
Figura IV - Gestión de los pedidos
Vemos como la información del pedido puede llegar a la empresa y a cualquier empleado
por 3 sistemas diferentes. En una el cliente escribe el pedido él mismo, cosa que provoca
que el pedido esté normalmente incompleto y hayamos de contactar otra vez con él ( si es
que nos ha facilitado algún numero de contacto...). En otra, el cliente nos llama por
teléfono y el empleado lo que hace es apuntarlo en un papel, en un email o en el soporte
que tenga más próximo. Esto hace que, por ejemplo, una vez se pase la información del
pedido el contable no entienda su letra o tenga dudas además de los posibles mal
entendidos que hayan podido suceder en la comunicación, lo que comporta tiempo e
interrupciones en el trabajo.
13 Gestión Empresarial Online
Finalmente la información llega al contable en soporte físico o email. Si es por email,
comporta que el contable lance una notificación que se ha recibido correctamente y si tiene
alguna duda, que haya de contactar con el autor de la información comunicada. Con este
sistema, hasta que el contable tiene toda la información y ésta aun así no es 100% fiable ya
se han dado muchas comunicaciones sobre errores y dudas. También, si el pedido se ha
recibido por email, el empleado que lo ha recibido ha de almacenarlo sin borrarlo, ya que si
el contable tiene algún problema, la única solución recaería en buscar el email original.
Gestión de pedido urgente
Figura V - Gestión de pedido Urgente
Aquí podemos observar la problemática que hay en la comunicación con el almacén. El
stock no es fiable en el ERP, ya que hay productos que están mal configurados, y el
almacén envía un Excel con el stock una vez a la semana. Al llegar un pedido urgente, el
empleado llama al almacén preguntando por el stock existente, si la respuesta es
afirmativa, le comunica el pedido telefónicamente o si ya lo tiene hecho, envía un albarán
generado por el ERP vía email.
Esto hace que puedan surgir errores originados de malentendidos en la conversación,
enviando a una dirección errónea el material, como también la necesidad de confirmar la
correcta recepción del email, estableciendo mas comunicaciones de las necesarias y
demorando el servicio. Si a esto le añadimos que el hecho de tener que comprar producto
por una mala previsión de stock la demora o el tiempo perdidos en este pedido son
significativos. También destacar que todos los empleados que reciben un correo
electrónico con el pedido lo almacenan, ya que puede ser necesario más adelante.
14 Análisis y diagnosis
Gestión de Compra
Figura VI - Gestión de compra
En la gestión de compra nos encontramos que el gerente no es informado con un informe
fiable y exacto, sino por la información que le transmite el contable respecto a un informe
aproximado del stock. Sin más información, el gerente da la orden de comprar X cantidad
de producto.
El contable redacta el pedido de compra en un email o crea el pedido en el ERP y lo envía
por correo electrónico al proveedor. Este ha de confirmar su recepción, como también la
fecha de entrega aproximada del material. Si alguien necesita esta información habrá de
preguntarle al contable ya que sólo el dispondrá de ella. Luego el almacén nos ha de
confirmar por vía email que el material ha llegado. Si esta confirmación por ejemplo no
llega, el resultado es que el contable ha de preguntar al almacén i preocuparse de si se ha
recibido, ya que si el stock no es actualizado, podría volverse a comprar más producto sin
ser necesario.
Todo esto demuestra que la gestión de la información no es eficiente. Los canales de
comunicación no son adecuados y pueden estar repletos de malentendidos. La utilización
del correo electrónico como almacén de información hace que ésta esté desperdigada. Hay
mucho tiempo perdido en comunicaciones innecesarias y en situaciones que no deberían
producirse (como buscar el número de teléfono para otro empleado). Este tiempo es el que
15 Gestión Empresarial Online
podría hacer falta para generar informes fiables de nuestra situación o incorporar un nuevo
producto con un plan elaborado y estratégico.
5.3 - Alcance funcional
En este apartado analizaremos qué áreas y funciones comprenderá la implantación de
nuestro software de gestión.
Como hemos podido comprobar en el apartado, la mayoría de áreas de la empresa está
infectada por la problemática distribución y comunicación de la información. Así, nuestro
software de gestión ha de proporcionarnos soluciones en la mayoría de áreas y funciones
de la empresa, desde el apunte de un nuevo contacto o la recepción de llamadas telefónicas
y nuestra relación con los clientes en general (CRM), hasta la gestión de las compras o las
ventas y la comunicación con el almacén.
Parece que el ERP que se utiliza es una herramienta efectiva y capaz, aunque las 2 únicas
licencias, la cuota mensual y la poca formación y dificultad, hace también que nos
planteemos la posibilidad de substituir esta herramienta por una nuevo ERP.
Nuestra aplicación software de gestión nos debería proporcionar un centro de información
con acceso inmediato, que eliminara las comunicaciones evitables que se producen hasta
ahora. Dónde todos los esfuerzos de los trabajadores se sumen, no se interrumpan.
5.4 - Requisitos exigidos por la empresa
La empresa nos ha informado de unas necesidades importantes y básicas que ha de tener en
cuenta este software. Estas funcionalidades son:
• Importar y Exportar en Excel.
• Poder trabajar con la tarifa de precios de su transportista, que funciona por peso y
grupo de provincias para su cálculo.
• Poder insertar sus 2 principales productos:
1. Absorbente mineral Sepiolita, en cubos de 10kg o sacos de 20kg.
16 Análisis y diagnosis
2. Kit ADR, compuesto por varias piezas hom*ologadas como linterna, chaleco,
mascarilla. Se habrá de poder configurar a necesidad del cliente, pudiendo
comprar piezas sueltas.
• Aplicación de almacén 100% en castellano.
• Control de Stock.
Estos requisitos habremos de tenerlos en cuenta en todo momento, comprobar si ya están
implementados y si no desarrollar la aplicación para adaptarla.
5.5 - Objetivos de la implantación
Con la implantación del nuevo software de gestión pretendemos:
• Conseguir que la información esté centralizada y no desperdigada y
desestructurada.
• Que la información esté 100% disponible y de fácil acceso.
• Mejorar nuestros procesos de trabajo, agilizándolos, reduciendo errores y
aumentando su eficiencia.
• Mejorar nuestra comunicación entre departamentos y el flujo de información.
• Reducir costes, gracias a la menor utilización de la telefonía y otros recursos, como
también la posible sustitución del ERP de cuota mensual.
• Obtener información fiable para la creación de informes y toma de decisiones.
• Poder ser más flexibles y ágiles, sobre todo cuando hayan urgencias.
• Aumentar la satisfacción de nuestros clientes con un mejor servicio y atención.
• Obtener ventajas competitivas respecto a la competencia.
5.6 - Definición de las mejoras en los procesos y organización
En esta sección analizaremos y diseñaremos los nuevos procesos de negocio futuros.
Como esta aplicación pretende mejorar muchas de las áreas de la empresa, prácticamente
todas, analizaremos de forma general estos procesos y comentaremos las mejoras y
objetivos planteados con la implantación del sistema.
17 Gestión Empresarial Online
En los procesos de trabajo, con la implantación del nuevo software generalmente se espera
solucionar la dificultad de acceso a la información, las comunicaciones innecesarias entre
departamentos, un sitio común donde buscar la información y obtener información fiable
para la creación de informes.
Veámoslo más detalladamente:
Mejoras en gestión de compra
Figura VII - Mejoras en la gestión de compra
Observamos que el sistema de gestión nos genera un stock exacto y unos informes sobre
los que basar nuestras decisiones. Los empleados han dispuesto de tiempo para reunirse y
dar su punto de vista para la compra de más producto. Esta decisión será mucho más
acertada que en el anterior proceso, ya que la información ha sido inmediata, exacta y
fiable. Aunque se comunique por email el pedido de compra al proveedor, éste siempre
será generado por el sistema dónde es improbable que falte ningún dato y siempre será
enviado contestado en un mismo lugar, si es que hay confirmación. El almacén no habrá de
contactar con la empresa, sólo informará al sistema que se ha recibido el material del
pedido de compra X y se notificará automáticamente a los demás. Por todo esto, este
proceso de trabajo es mucho más ágil y eficiente que el anterior y actual.
18 Análisis y diagnosis
Mejoras en la búsqueda de información
Figura VIII - Mejora en la búsqueda de información
Nos damos cuenta de la gran mejoría del proceso en este apartado con la implantación del
nuevo sistema de gestión. Si un empleado necesita información sobre un contacto por
ejemplo, sólo ha de acceder al sistema, que si es basado en tecnología web puede acceder
desde cualquier lugar con conexión, y buscar la información que quiere.
A diferencia del pasado proceso de trabajo, no implicamos a toda la organización sólo por
buscar un número de teléfono por ejemplo, no interrumpiendo su trabajo, y no perdiendo el
tiempo en tareas que no son de su incumbencia. En general, podemos acercarnos a este tipo
de esquema:
Figura IX - Esquema general nuevo acceso a la información
19 Gestión Empresarial Online
Donde el sistema de gestión contiene y nos ofrece con un acceso fácil e inmediato, toda la
información relevante que queramos o necesitemos en un momento determinado. Será
también la base de las comunicaciones.
20 Análisis y diagnosis
21 Gestión Empresarial Online
6- Elección del software
En este apartado seleccionaremos la herramienta software con la que intentaremos realizar
nuestro proyecto de implantación. Intentaremos escoger el más adecuado en función del
análisis realizado hasta ahora.
Ésta decisión es de las más importantes que tomaremos para el éxito de nuestro proyecto.
6.1- Estudio de aplicaciones
Nos disponemos a estudiar qué aplicaciones se pueden adaptar mejor a nuestras
necesidades. Buscamos un software de código libre y para ello, la página sourceforge.net
nos ha sido de mucha utilidad.
Nos hemos interesado en un perfil de aplicaciones que nos puedan ofrecer un entorno
CRM+ERP, y que estén basadas en web, ofreciéndonos así ventaja en la movilidad y
acceso.
Estas tres aplicaciones siguientes son las que nos han llamado poderosamente la atención:
Figura X - Logotipo Dolibarr
Dolibarr[1] es un software de Planificación de recursos empresariales (ERP) y
administrador de la relación con los clientes (CRM). Está dirigido para la pequeña y
mediana empresa, autónomos o asociaciones.
Disponible bajo licencia GNU/GPL (GNU General Public License). Dolibarr es un
proyecto realizado sobre una política clara: Ser un software que respete la regla de las 3S:
• Simple de desarrollar • Simple de instalar • Simple de usar
22 Elección del software
Equipo Dolibarr (Jefe de proyecto: Laurent Destailleur) | www.dolibarr.org
Figura XI - "Screenshot" Dolibarr
Figura XII - Logotipo Openbravo
Openbravo[2] es una aplicación de código abierto de gestión empresarial del tipo ERP+
CRM destinada a empresas de pequeño y mediano tamaño. Su estructura de datos está
basada en una versión antigua de Compiere. Licenciado bajo Openbravo Public License
Version 1.1 ("OBPL"), que es una adaptación de la licencia libre Mozilla Public License.
Es una aplicación web desarrollada siguiendo el modelo MVC (Model, View, Control),
permitiendo el crecimiento sostenible de la aplicación y una mayor facilidad en el
mantenimiento del código. La mayor parte del código es generado automáticamente por un
motor denominado WAD (Wizard for Application Development), basándose en la
información contenida en un diccionario del modelo de datos.
23 Gestión Empresarial Online
Nicolas Serrano e Ismael Ciordia | www.openbravo.com
Figura XIII - "Screenshot" Openbravo
Opentaps[3] es una herramienta ERP y CRM para las pequeñas y medianas empresas
basada en "Apache Open for Business". Sus funciones incluyen comercio electrónico,
punto de venta, inventario, almacén, órdenes, gestión de clientes y la contabilidad general.
También ofrece herramientas integradas de inteligencia empresarial y la integración con la
movilidad, incluido con Microsoft Outlook, Google Calendar, y teléfonos móviles.
Opentaps es una empresa completa con toda la suite de aplicaciones de negocio que reúne
a todas las personas y los procesos en toda la organización. Se basa en una arquitectura
flexible orientada a servicios (SOA), y en un robusto y altamente normalizado modelo de
datos universal, con más de 700 entidades o tablas, para que podamos captar la verdadera
riqueza de los datos empresariales.
24 Elección del software
Si Chen | http://www.opentaps.org/
Figura XIV - "Screenshot" Opentaps
6.2 - Aspectos a tener en cuenta
Para esta selección nos hemos centrado y evaluado en varios aspectos importantes y
básicos de estas 3 aplicaciones a tener en cuenta para nuestra selección.
6.2.1 - Aspectos funcionales
Criterios a evaluar que se encuentran ligados a las funciones que debe cumplir el sistema
que vamos a implantar, así como los procesos que contempla. Es de los aspectos más
importantes a tener en cuenta a la hora de seleccionar un software de gestión:
• Áreas soportadas: Comprobar áreas de la empresa que lo requieren y da soporte.
Módulos.
• Facilidad de uso.
• Adaptabilidad y flexibilidad: Qué necesidades de la empresa vienen
comprendidas en el estándar y qué partes a desarrollar, si es posible.
25 Gestión Empresarial Online
• Facilidad de parametrización: Evaluamos facilidad de incorporación de un
cambio.
• Esquematización de la estructura de la empresa: Estructuras de datos flexibles,
para poder adaptarlas a la estructura organizativa de la empresa.
• Interacción con otros sistemas: Facilidad para la comunicación con otros
sistemas.
• Facilidad en la elaboración de informes: Evaluar si la aplicación dispone de
herramientas que le permitan al usuario editar sus propios informes en base a sus
necesidades.
• Seguridad: Posibilidad de definir perfiles de usuario.
6.2.2 - Aspectos técnicos
Necesidades de infraestructura técnica necesaria.
• Adaptabilidad a la estructura de la empresa: Hardware disponible en la
empresa, o en caso contrario, la inversión necesaria.
• Multiplataforma: Plataforma determinada (como Windows), o varias alternativas.
• Base de datos: Determinar las bases de datos sobre las que puede trabajar.
• Licencias: evaluar la necesidad de compra de otras licencias necesarias.
• Instalación o actualización remota: Instalación y labores de mantenimiento de
forma remota.
6.2.3 - Características propias del proveedor
Evaluamos para determinar la idoneidad del proveedor según su propia evolución.
• Características del proveedor: Evaluar su solidez, evolución histórica, clientes.
• Otras implantaciones similares: Implementaciones anteriores con éxito y
similares.
• Confianza: Confianza que el proveedor ofrece.
26 Elección del software
6.2.4 - Características del servicio
Tipos de servicios ofertado por el proveedor, tanto en el soporte de implantación, como en
el posterior servicio de soporte y mantenimiento del mismo:
• Alcance de la implantación: Adecuación del producto a la empresa.
• Metodología de implantación: Existencia de una metodología de implantación
con un Plan de implantación detallado.
• Formación de usuarios: Método y tiempo de adaptación de los usuarios.
• Servicio Post Venta: Actualizaciones, versiones, soporte, hot-line, mantenimiento,
etc.
6.2.5 - Aspectos económicos
Relacionados con los costes de licencias, de servicio de mantenimiento y de implantación
pueden ser:
• Coste del hardware: Adquisición de equipamiento necesario para la nueva
plataforma.
• Coste de implantación: Coste estimado de la implantación.
• Costes adicionales: Los derivados de las adaptaciones.
6.3 - Tabla Comparativa
Hemos realizado una tabla comparativa entre los 3 candidatos, bajo las características
anteriores más importantes, otras funcionalidades requeridas por la empresa y otras. Las
respuestas serán valoradas de 1 a 5, de menor a mayor grado respectivamente.
DOLIBARR OPENBRAVO OPENTAPS
ASPECTOS FUNCIONALES
Módulos ERP y CRM SI SI SI
Adaptabilidad y flexibilidad 3 3 4
Facilidad de parametrización 3 3 3
Interacción con otros
sistemas 3 2 5
Seguridad 4 4 4
27 Gestión Empresarial Online
ASPECTOS TECNICOS
Adaptabilidad a la estructura
de la empresa 5 4 4
Multiplataforma SI SI SI
Base de datos MySQL Postgre, Oracle Con la mayoría
Licencia GNU General
Public License
Openbravo Public
License, basada en
la MPL
GNU Affero GPL
v3
Instalación o actualización
remota: SI SI SI
CARAC. PROVEEDOR
Solidez/Consolidación 4 3 3
Implantaciones Similares SI SI SI
Confianza 4 4 4
CARAC. SERVICIOS
Implantación SI SI SI
Metodología SI SI SI
Formación SI Si SI
Servicio Post Venta SI SI SI
ASPECTOS ECONOMICOS
Coste del hardware 0 1 PC 1 PC
OTRAS CARACTERISTICAS
Idioma Multilingüe Multilingüe Multilingüe
Lenguajes de desarrollo PHP
· Java y Javascript
· XML
· HTML
· Java y otros
lenguajes de script
de Java, incluyendo
beanshell, Groovy.
· Freemarker
· XML
Interface amigable 3 4 3
28 Elección del software
Proyección de Futuro 2 3 5
Proyecto Consolidado SI SI NO
Innovación 3 3 5
Arquitectura WAMP MVC MVC/SOA
Casos de éxito SI SI SI
Importar/Exportar SI SI SI
Ecommerce Incluido NO NO SI
Capacidad de integración
ecommerce SI NO SI
Integración con Joomla NO NO SI
Almacén - Stock SI SI SI
Comunidad de respaldo SI SI SI
Wiki SI SI SI
documentación en castellano SI SI NO
Cantidad de documentación
para desarrolladores y detalle 3 4 4
Tabla I - Tabla Comparativa del Estudio
6.4 - Elección y argumentación
Nuestra elección ha sido Opentaps. Después de estudiar los diferentes aspectos analizados
anteriormente, es la opción que creemos más adecuada, que nos puede beneficiar más y
resultar más útil.
Como argumentación, primero observamos que en los análisis, salvo en la adaptabilidad al
hardware existente en la empresa, la dificultad de la interface y consolidación, es igual o
superior a los demás. También nuestra elección es desde una óptica de estudiante, por ello
uno de los factores al que hemos dado mucha importancia es a la innovación y proyección
de futuro, y en esto Opentaps marca la diferencia respecto a los demás. Lo iremos
comprobando tal y como se vaya desarrollando este proyecto.
Nos encontramos ante el primer juego completo de herramientas que ofrecen una vista de
360 grados de nuestro negocio, desde clientes a órdenes de inventario a contabilidad, y de
código abierto.
29 Gestión Empresarial Online
Su flexibilidad de implementación (compatible con la mayoría de bases de datos) y su
arquitectura (SOA) que nos facilita la interoperabilidad con aplicaciones externas, han sido
otros factores importantes a la hora de decidirnos. Como también por su módulo
ecommerce perfectamente integrado, y su capacidad para trabajar con el sistema gestor de
contenidos Joomla.
Todo esto, debido a las nuevas tecnologías que tendremos que aprender desde cero, nuestra
falta de experiencia y casi nada de documentación en español, aumenta la dificultad de
nuestro proyecto pero no hace sino incentivar nuestra motivación y ganas de trabajar. En la
visión como estudiante, hace que esta elección la sintamos también cómo la idónea para
ampliar nuestros conocimientos.
Figura XV - Esquema relación de módulos Opentaps
30 Elección del software
31 Gestión Empresarial Online
7- Recursos
En este apartado se llevará a cabo un estudio detallado de todos los recursos necesarios,
tanto humanos como tecnológicos.
En cuanto a recursos tecnológicos, hemos tomado la decisión de utilizar software libre
posible para abaratar los costes. Estos son:
• PostgreSQL: En nuestro caso hemos decidido utilizar PostgreSQL para la
implementación y gestión de la base de datos de Opentaps ya que se considera un
gestor excelente y nos brinda la oportunidad de experimentar con un entorno
diferente al de MySQL, en el cual estamos más experimentados.
• Eclipse: Para modificar o desarrollar el código Java de Opentaps utilizaremos
Eclipse. Porque además de experimentar con un entorno diferente a Netbeans, el
cual hemos aprendido a utilizar en la universidad, la documentación encontrada
utiliza como referencia Eclipse para la modificación y desarrollo de código.
Los recursos hardware serán, un PC con un mínimo 2Gb de memoria RAM, ya que el
software emplea más de 1GB de memoria en ejecución, y una conexión a Internet de línea
ADSL.
Los recursos humanos constan de un Ingeniero Técnico en Informática de Gestión capaz
de cumplir con perfiles como analista, diseñador, programador e implementador. Es
importante que cuente con gran facilidad de aprendizaje. También tendremos en cuenta la
ayuda proporcionada por la empresa, cuya disponibilidad ha sido excelente.
32 Recursos
33 Gestión Empresarial Online
8- Costes
En este apartado, se hará una estimación de los costes del proyecto. Costes a tener en
cuenta:
Costes externos:
• Licencias de la aplicación.
• Desarrollos a medida.
• Hardware.
Costes internos:
• Horas dedicadas por el personal de la organización al proyecto.
Los costes en recursos software son nulos ya que utilizaremos software de código libre
cómo Eclipse para desarrollos y PostgreSQL para la Base de Datos.
En cuanto a los recursos hardware será necesario.
Figura XVI - PC a compar
- Procesador Intel(R) Core(TM)2 Quad CPU Q8300 2.50GHz
Disco Duro de 1 TB
Memoria RAM 8GB DDR3
Tarjeta gráfica NVIDIA GeForce GT 220 OK
Monitor LCD 19"
34 Costes
El precio de este PC es 599€. Este precio lo imputaremos al proyecto.
La conexión a Internet tiene un coste de 24 € mes un total de 6€/semana y 1,2€/día.
Por último la hora del ingeniero es de 18 €/hora.
Precio Cantidad Subtotal
Recursos Software 0€ 1 O€
Recursos Hardware 599€ 1 599€
Internet 6€/semana 13.4 80,4€
Ingeniero 18€/hora 268 4824€
Total 5503,4€
El precio total asciende a 5503,4€. Si se tratara de un proyecto destinado a su venta, se
tendrían que descontar todas las horas empleadas en la curva de aprendizaje ya que dichas
horas no se le pueden imputar al futuro comprador.
35 Gestión Empresarial Online
9- Presentación y estudio previo de Opentaps
Figura XVII - Logotipo Opentaps
En este apartado, presentaremos la aplicación seleccionada Opentaps, haciendo un estudio
más exhaustivo sobre su tecnología, capacidad y actualidad.
9.1 - Sobre Opentaps
La palabra "opentaps" es un acrónimo de "Open Source Enterprise Applications Suite".
Opentaps[3] es una completa herramienta ERP + CRM suite, que incorpora varios
proyectos de código abierto como:
• Apache Geronimo, Tomcat, y OFBiz para el modelo de datos y el marco de las
transacciones.
• JasperReports y Pentaho para la inteligencia empresarial.
• Funambol para dispositivos móviles y la integración con Outlook.
Opentaps proporciona al usuario aplicaciones basadas en CRM, contabilidad y finanzas,
almacén y fabricación, y la compra y control de la cadena de suministro.
Es una solución de alta calidad e innovadora para problemas de negocio utilizando el
software de código abierto de ERP y CRM clásico, con nuevas maneras de incrementar las
ventas y la rentabilidad.
Opentaps está patrocinado por las Open Source Strategies, Inc. y desarrollado por
desarrolladores profesionales con la ayuda de una comunidad global de colaboradores.
9.2 - Licencia
Opentaps[3] es de código abierto y hace del código fuente del software libre y disponible,
de modo que cualquiera puede descargar, utilizar, modificar y redistribuir el software.
Está liberado bajo una licencia dual código abierto/comercial, similar al que usa MySQL,
JBoss, Asterisk, y muchos otros proyectos de código abierto. Está disponible como
36 Presentación y estudio previo de Opentaps
software libre bajo Affero GNU GPL v3 para opentaps 1.4 y posteriores, o la Honest
Public License (HPL) para versiones anteriores. Estas licencias no solo nos permiten
utilizar, modificar y redistribuir el código fuente del software, sino que también podremos
exigir que se nos publiquen nuestras propias modificaciones, extensiones, o
personalizaciones.
Si no deseamos estar atados a las obligaciones de licencias de software libre, podemos
adquirir licencias comerciales. Los usuarios finales todavía podrán acceder y modificar el
código fuente de su propia organización pero podrían incorporar su Opentaps en la
demanda y oferta de productos comerciales y distribuirlos a los usuarios finales.
Nosotros por supuesto, utilizaremos la licencia no comercial.
9.3 - Actualidad
Opentaps está siendo utilizado por organizaciones que van desde empresas Fortune 500 a
nuevas empresas.
Figura XVIII - Mundo Opentaps
Algunos proveedores de servicios que figuran en este mapa son:
• Open Source Strategies, Inc. - USA
• Logistics Modeling Center - USA
• Group FIO - Canada e India
• IT Partners - Bulgaria
37 Gestión Empresarial Online
• Wizitsoft - China
• Jose Diaz - Peru
• Open Business on Demand - Australia
• Integrating Web - Italia
• IntelliAnt - India
• Venkat Mangudi Consulting - India
• Ixaya - Méjico
Aunque esté marcado en el mapa, no hemos encontrado ninguna compañía la cual haya
adaptado Opentaps a una realidad española. También veremos más hacia adelante que hay
aspectos y tecnologías que Opentaps ofrece y aún no son muy utilizadas aquí en España.
Actualmente la última versión de Opentaps es Opentaps 1.4-preview3. La aplicación va
creciendo cada vez mas, gracias a la gran comunidad de colaboradores en todo el mundo.
Está planificada la version Opentaps 2.0 que nos ofrecerá un avance hacia avanzar hacia
una arquitectura más modular basada en "Domain Driven Architecture" y GWT (Google
Web Toolkit) para hacer opentaps más fácil de usar y más fácil de personalizar.
Figura XIX - Opentaps 2.0
38 Presentación y estudio previo de Opentaps
9.4 - Tecnología
En este apartado veremos las diferentes tecnologías que utiliza o es capaz de utilizar
Opentaps, algunos aspectos relevantes e importantes a conocer y como también algunas
herramientas tecnológicas que habremos de utilizar para llevar a buen puerto este proyecto.
Opentaps utiliza una amplia gama de proyectos open source, veamos cuales son:
• Apache DBCP, Derby y Gerónimo para el acceso de bases de datos.
• Apache OFBiz para el marco de base y la lógica de aplicación que se ampliaron en
opentaps, y el comercio electrónico, los recursos humanos, gestión de proyectos,
los puntos de venta, y las aplicaciones administrativas en opentaps.
• Apache ant, para generar la aplicación.
• Apache Tomcat para el servidor web incorporado utilizado por opentaps .
• AspectWerkz para la programación orientada a aspectos (AOP).
• Funambol para la integración con Microsoft Outlook, teléfonos móviles, y web-
based e-mail, como Gmail, hotmail y Yahoo Mail.
• Google Web Toolkit y GWT-Ext para el diseño fácil de usar widgets Ajax.
• Hibernate para datos orientado a objetos y la persistencia Hibernate Search para la
búsqueda.
• JasperReports e iReport para la presentación de informes.
• Pentaho para la inteligencia de negocios, incluyendo el almacenamiento de datos y
ETL.
• Spring framework (framework de código abierto de desarrollo de aplicaciones para
la plataforma Java).
Tambén está integrado con los siguientes proyectos:
• Asterisk voice over IP PBX.
• Magento sistema de comercio electrónico (previsto para 2010).
• Base de datos MySQL de código abierto.
• PostgreSQL base de datos de código abierto.
39 Gestión Empresarial Online
Esto hace que Opentaps utilice una gran variedad de tecnologías. La gran mayoría de ellas
no las conocemos así que habremos de estudiarlas y familiarizarnos. No podremos
abarcarlas todas en este proyecto, tanto por la falta de tiempo como por la poca necesidad
de su utilización para nuestros objetivos finales, pero nos centraremos en las más
importantes y necesarias.
9.4.1 - Apache Ofbiz
Figura XX - Logotipo Apache OFBiz
Apache Open For Business[5] (Apache OFBiz) es un software de automatización Open
Source. Es un proyecto de la fundación Apache (específicamente, un Apache Top Level
Project). Comprende un conjunto maduro de aplicaciones empresariales que integran y
automatizan muchos de los procesos de negocio de una empresa.
Opentaps se basa en el marco de trabajo y aplicaciones de Apache Ofbiz. Si conocemos
Ofbiz conocemos mucho de Opentaps. Este marco de trabajo nos permite el desarrollo
rápido de aplicaciones de negocio con sus interfaces tanto web o de escritorio. Las
aplicaciones Ofbiz proporcionan una gran cantidad de modelos de datos y aplicaciones
existentes que podemos personalizar o ampliar según nuestras necesidades. Todas las
aplicaciones se construyen sobre una arquitectura común usando datos comunes y
componentes de lógica y procesos.
Figura XXI - Esquema Tecnología OFBiz
40 Presentación y estudio previo de Opentaps
OFBiz está escrito en Java y construido junto con algunos conocidos proyectos de código
abierto, como Apache Tomcat, Freemarker, Derby y beanshell. Aspectos destacados del
proyecto OFBiz incluyen:
• Aplicación de patrones de diseño, incluyendo Modelo-Vista-Controlador,
Arquitectura Orientada a Servicios (SOA), patrón decorador y base de datos
independiente de la capa de persistencia.
• Una arquitectura basada en componentes que permite a los ya existentes o
aplicaciones desarrolladas ser agregados y ejecutados fácilmente.
• Un modelo de datos universal que es lo suficientemente robusto para apoyar las
necesidades comerciales de la mayoría de las industrias y organizaciones.
Las versiones recientes de Opentaps siguen incorporando la última versión de OFBiz con
todas sus características, pero Opentaps refuerza el sistema básico de OFBiz con:
• Características adicionales básicas en las áreas ERP y CRM, incluyendo servicio de
atención al cliente, gestión de pedidos, almacén y producción, compras,
planificación, finanzas y presupuestación.
• Interfaz de usuario mejorada.
• Adición de proyectos de código abierto, tales como los enumerados anteriormente.
• Arquitectura impulsada a dominio orientado a objetos.
• Pruebas automáticas.
9.4.2 - Apache ANT
Figura XXII - Logotipo Apache Ant
Apache Ant[6] es una herramienta para realizar tareas mecánicas y repetitivas usada en
programación, normalmente durante la fase de compilación y construcción (build) como en
nuestro caso. Está desarrollado en lenguaje Java y requiere de la plataforma Java.
Esta herramienta, hecha en lenguaje de programación Java, tiene la ventaja de no depender
de las órdenes del Intérprete de Comandos de cada sistema operativo, sino que se basa en
41 Gestión Empresarial Online
archivos de configuración XML y clases Java para la realización de las distintas tareas,
siendo idónea como solución multi-plataforma.
En nuestro caso, la utilizaremos básicamente para la construcción de Opentaps.
9.4.3 - Lenguajes de programación
Opentaps está construido en Java J2EE. Para poder ejecutarlo requiere en nuestro equipo
JRE (Java Runtime Environment). Para la implementación de los servicios utiliza java
como también otros lenguajes de scripts Java como son beanshell o groovy, con los que
nos tendremos que familiarizar. Utiliza XML para la definición de los servicios y modelo
de datos. Opentaps está preparado para trabajar también con php con Opentaps
LiveCatalog XML-RPC API, que lo podemos utilizar para construir tiendas online en PHP,
Ruby On Rails, Perl, u otro marco de trabajo Java. También se utiliza minilang, un
lenguaje utilizado por los creadores de Ofbiz.
Informémonos un poco sobre estos lenguajes.
Beanshell
BeanShell[7] es un lenguaje de script de Java orientado a objetos. El código escrito para un
compilador de Java casi siempre puede ser ejecutado interpretativamente por BeanShell sin
cambios y, casi en igual medida, a la inversa. Se puede ejecutar en modo línea de
comandos o dentro de su propio entorno gráfico. Esto hace de BeanShell una herramienta
popular para pruebas y depuración.
BeanShell es un proyecto de código abierto y se ha incorporado en muchas aplicaciones,
tales como OpenOffice.org, Apache Ant, WebLogic Server Application Server, jEdit,
JUMP y muchos otros.
Groovy
Groovy[7] es un lenguaje de programación orientado a objetos implementado sobre la
plataforma Java. Puede usarse también de manera dinámica como un lenguaje de scripting,
como en nuestro caso.
42 Presentación y estudio previo de Opentaps
Como Groovy puede usarse directamente en cualquier aplicacion Java y la mayor parte de
código escrito en Java es totalmente válido en Groovy, hacen que este lenguaje sea de muy
fácil adopción para programadores Java.
La primera versión de Groovy, Groovy 1.0, apareció el 2 de enero de 2007. Vemos que se
trata de un lenguaje relativamente nuevo, con su última versión estable Groovy 1.7.
La utilización de Java y lenguajes con mucha similitud juega a nuestro favor, ya que es con
el lenguaje de programación Java en el que estamos más experimentados gracias a nuestros
estudios en la universidad.
Para la visualización y las pantallas en Opentaps se utilizan lenguajes como HTML o
XSL:FO y el motor de plantillas Freemarker como alternativa a jsp.
XSL:FO
XSL-FO[8] es un lenguaje de formateo, un vocabulario XML para especificar objetos de
formateo (FO).
Mediante los objetos de formateo (Formatting Objects -FO-) y sus propiedades podemos
describir cómo se van a visualizar los componentes de un documento. Con estos objetos
definimos:
• Las características de la página.
• Los párrafos.
• Las listas.
• Las tablas.
• Los enlaces.
• etc.
La especificación XSL indica el vocabulario XML que define estos objetos de formateo.
Se trata de un vocabulario XML, en el que todos los elementos van precedidos del
namespace 'fo', y que por tanto al escribir el elemento raíz del documento XML debemos
declararlo de la siguiente manera:
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
43 Gestión Empresarial Online
Está formado por un conjunto de elementos: fo:simple-page-master, fo:flow, fo:block, etc.
mediante los cuales y sus propiedades (definidas en los atributos): font-size, font-family,
etc. describimos como se visualizan de forma genérica los componentes de un documento.
La especificación define por tanto todos estos elementos y sus propiedades y como deben
expresarse mediante un vocabulario XML. En Opentaps se utilizará para la presentación de
reportes y pdf.
Minilang
Minilang[9] puede ayudar a los desarrolladores a reducir el tiempo que tarda la aplicación
en hacer tareas sencillas y repetitivas. El código no necesita ser compilado y
por lo tanto se implementa con mayor rapidez, rompiendo el típico ciclo de compilación
Java. Minilang da la ventaja de ser capaz de cambiar el código sin que se reinicie
la aplicación. Una actualización en el navegador es suficiente para ver los cambios.
Es más "llano Inglés" de código en Java y es más fácil de leer y por lo tanto más fácil
de entender y mantener por las personas que no están familiarizadas con el sistema.
Minilang está codificado en XML y antes de que se puede analizar correctamente por el
analizador XML marco, este XML deben estar bien formados.
Minilang Sin embargo tiene algunas desventajas. Los desarrolladores de Opentaps no
recomiendan su utilización por varias razones:
• Tiene una sintaxis no estándar.
• Se insta a la no codificación orientada a objetos.
• Es más lento.
• No es compatible con una gran cantidad de operaciones básicas de un lenguaje de
programación real.
• No hay compatibilidad con hacia atrás o hacia adelante.
Estos desarrolladores nos dicen que siempre se puede utilizar Java u otro lenguaje de
scripts de Java antes que Minilang, incluyendo beanshell, Groovy, Jython, JRuby, etc.
44 Presentación y estudio previo de Opentaps
9.4.4 - Arquitectura y patrones
Vamos a echar un vistazo a los patrones y arquitectura que utiliza Opentaps y que ventajas
ofrecen. Este apartado es sumamente importante ya que estamos ante una de las
características más importantes y de éxito de este software.
Opentaps utiliza las mejores prácticas de los patrones de diseño, incluyendo Modelo-Vista-
Controlador, Arquitectura Orientada a Servicios (SOA) y patrón decorador. Veámoslos
más detenidamente uno por uno.
Arquitectura Orientada a Servicios (SOA)
La Arquitectura Orientada a Servicios[7,10,11,12,13] (en inglés Service Oriented Architecture),
es un concepto de arquitectura de software que define la utilización de servicios para dar
soporte a los requisitos del negocio.
Permite la creación de sistemas altamente escalables que reflejan el negocio de la
organización. Nos brinda una forma bien definida de exposición e invocación de servicios
(comúnmente pero no exclusivamente servicios web), lo cual facilita la interacción entre
diferentes sistemas.
Opentaps está construido sobre dicha arquitectura, donde las unidades individuales de la
lógica de negocios se crean como "servicios". La arquitectura está formada por servicios de
aplicaciones débilmente acoplados entre si y altamente interoperables, al contrario que la
arquitectura orientada a objetos.
En esta arquitectura, los servicios para comunicarse entre sí, se basan en una definición
formal independiente de la plataforma subyacente y del lenguaje de programación. Esto
nos permite reutilizar la lógica empresarial y crear componentes software muy
reutilizables, ya que la interfaz se define siguiendo un estándar (XML por ejemplo). Así,
por ejemplo, una aplicación antigua podría conectarse a la nueva sin haber de escribir la
antigua otra vez, ahorrándose la empresa todo lo que eso conlleva.
SOA ayuda a abordar el panorama fragmentado de TI y enfrenta las dificultades
relacionadas con las aplicaciones e infraestructuras de TI. Permite una mayor flexibilidad a
través de las siguientes características:
45 Gestión Empresarial Online
• Reutilización: El factor fundamental en el cambio a SOA es la reutilización de los
servicios de negocio.
• Interoperabilidad: Mayor interoperabilidad entre las aplicaciones internas
existentes, las aplicaciones externas y las futuras aplicaciones.
• Escalabilidad: Como los servicios de SOA están débilmente acoplados, las
aplicaciones que usan esos servicios escalan fácilmente. Esto es debido a que existe
muy poca dependencia entre las aplicaciones clientes y los servicios que usan.
• Flexibilidad: Cualquier cambio en la implementación de uno de ellos no afectaría al
resto siempre que se mantenga la interfaz.
• Eficiencia de coste: Menores costos de mantenimiento al evitar que las capacidades
de negocio (componentes de software) que sean duplicadas o se superpongan se
consoliden en una pequeña cantidad de servicios compartidos.
Figura XXIII - Esquema Distribución SOA
Observamos en este esquema que con una Arquitectura Orientada a Servicios (SOA), los
usuarios ya no tienen que iniciar sesión en varios sistemas, buscar los datos relevantes e
integrar los resultados manualmente. Los datos de las actividades de los procesos de
46 Presentación y estudio previo de Opentaps
negocios se entregan como un servicio integrado, en una sola aplicación, en una sola
pantalla, con un solo inicio de sesión.
Por último decir que los beneficios potenciales de los costos reducidos de IT y la mayor
agilidad del negocio han llevado a muchas organizaciones a comenzar a transitar por el
camino de SOA, al punto de que las más grandes empresas ahora tienen una suerte de
iniciativa SOA en marcha.
Modelo-Vista-Controlador (MVC) y Patrón Decorador
El nivel de vista de Opentaps se basa en el marco Modelo-Vista-Controlador(MVC) y el
patrón decorador[7].
La vista está separada en la presentación (HTML o
XSL: FO) y la lógica de la vista (como la recopilación
de datos de un formulario.). La presentación de los
documentos son en piezas separadas, como
encabezado ("header"), pie de página("footer"), barra
derecha ("rightbar) , barra izquierda ("leftbar") y
aplicación de cabecera, las cuales se componen entre
sí para decorar la pagina de presentación.
Las ventajas de la MVC y el patrón decorador se
ponen de manifiesto en aplicaciones más
grandes, donde los mismos hechos y los
elementos se repiten una y otra vez. Opentaps
permite la reutilización de elementos de diseño,
lógica de la vista y las acciones, reduciendo la
necesidad de crear y, peor aún, el mantenimiento
de código repetitivo.
El patrón decorador responde a la necesidad de
agregar funcionalidad a un objeto por medio de la
asociación de clases. Es un objeto con el que se
Figura XXIV - Patrón MVC
Figura XXV - Patrón Decorador
47 Gestión Empresarial Online
puede ejecutar funcionalidades de varias clases a la vez.
Esto nos permite no tener que crear sucesivas clases que hereden de la primera
incorporando la nueva funcionalidad, sino otras que la implementan y se asocian a la
primera.
Básicamente el patrón decorador nos permite añadir, modificar o eliminar comportamiento
de una instancia de una clase en tiempo de ejecución. La clave está en que el objeto inicial
no sabe que está siendo decorado. Sus principales ventajas son:
• El objeto original no tiene conocimiento de que está siendo decorado.
• No hay una clase gigante con un montón de funcionalidades.
• Las decoraciones son independientes unas de otras.
• Las decoraciones complejas se pueden realizar por composición de decoraciones
más simples.
Arquitectura impulsada a dominio ("domain driven architecture")
Un problema con las primeras versiones de Opentaps es que el marco Ofbiz que usa no es
un entorno orientado a objetos. En cambio, se basa en un modelo de datos que es
fundamentalmente relacional, y que el modelo de datos se accede a través de un objeto
mapa en Java llamado GenericValue. La mayoría de los servicios en la capa de negocio
utiliza un GenericDelegator para recuperar GenericValues de la base de datos, realizar
operaciones con ellos, y se almacena de nuevo en la base de datos usando de nuevo el
GenericDelegator mismo.
Si bien con esto se pueden hacer un montón de cosas, cuando Opentaps ha crecido se ha
hecho evidente que algunas de las aplicaciones podrían beneficiarse significativamente de
una arquitectura orientada a objetos. Finalmente se ha decidido, que lo que realmente
necesitaba Opentaps no era código orientado a objetos, sino más bien una clasificación más
formal de la lógica de negocio en los dominios. Con "Domain Driven Arquitecture"[10] se
pretende:
• Trabajar con más facilidad en Opentaps.
• Extender Opentaps más fácilmente y ponerlo más fácil para futuros desarrollos.
• Utilizar Opentaps de manera novedosa.
48 Presentación y estudio previo de Opentaps
9.4.5 - Freemarker
FreeMaker[14,15] es un motor de plantillas Java de código abierto que se centra en la
arquitectura de software MVC. Un motor de plantillas es una librería que permite separar
los datos de la presentación, lo que en nuestro entorno web equivale a separar la
programación Java del código HTML. A diferencia de JSP, no es dependiente de la
arquitectura servlet o HTTP.
Vemos como Freemarker junta las plantillas y el modelo de datos para enviar código
HTML al navegador.
Figura XXVI - Esquema Freemarker
La principal ventaja de este sistema es que la plantilla llevará sólo la programación mínima
necesaria para hacerla dinámica, dejando todo el peso de la programación fuera de la
plantilla.
49 Gestión Empresarial Online
10- Primera vista a Opentaps
Para acceder a Opentaps[10,19], introduciremos como ususario "admin" y contraseña "ofbiz",
ya que es el login por defecto del administrador. Vemos la primera pantalla al
identificarnos.
Figura XXVII - Pantalla principal Opentaps
Aquí podemos ver los módulos disponibles que se han ejecutado y están funcionando. Los
detallaremos de forma general brevemente.
CRM Comercio electrónico Módulo de Finanzas Almacén
Compras Módulo de Análisis Participantes y
Usuarios
Catálogo
Herramientas Web Ayuda RRHH
50 Primera vista a Opentaps
Podemos ver la suite de aplicaciones empresariales que tenemos en este producto. Están
comprendidas prácticamente todas las áreas de la empresa y aún hay módulos como "Punto
de Venta" o "Funambol" que no están cargados.
10.1 - Estructura de Opentaps en general
Creemos conveniente hacer una primera vista general a la estructura interior[17,13,10] de
Opentaps para movernos y saber encontrar lo que busquemos.
En Opentaps los archivos están organizados de acuerdo con los componentes, con cada
componente contenido en un solo directorio.
En el directorio "applications" se encuentra el núcleo de las
aplicaciones. Módulos como el de gestión de participantes y
usuarios o el de comercio electrónico, se consideran aplicaciones
núcleo porque son tan comúnmente utilizados por una gran
variedad de usuarios que deben ser integrados como parte de
Opentaps.
Los componentes "framework" de Opentaps son el fundamento de
la aplicación. Ellos son los responsables para el acceso de bases
de datos, almacenamiento en caché, renderizar las pantallas, la
gestión de transacciones, y muchas de las tareas de bajo nivel más
utilizadas por los componentes de aplicación. Saber de sus
características hará que no sea necesario entender el código dentro
de estos componentes.
En "specialpurpose" encontramos los componentes no calificados
como núcleos en Opentaps. Sirven para una fracción más
reducida de usuarios. Son componentes opcionales de los cuales Opentaps podría
prescindir y seguir funcionando.
"hot-deploy" es otro directorio en el que los componentes (que no son considerados
núcleo) se pueden quitar y cargar automáticamente.
Figura XXVIII - Directorio
Opentaps
51 Gestión Empresarial Online
En" runtime" podremos encontrar logs de ejecución, para observar errores y outputs de la
consola.
El directorio "themes" sirve para añadir temas visuales a la aplicación, tanto para la parte
de administración como para la parte de comercio electrónico.
Directorios:
Applications Framework Specialpurpose
Hot-deploy Runtime Themes
52 Primera vista a Opentaps
53 Gestión Empresarial Online
11- Parametrizaciones y configuraciones
El objetivo de esta fase, será instalar, parametrizar y testear la solución[16,19] a partir del
análisis de pre-implantación. Habremos de tener en cuenta los procesos de negocio futuros
que utilizaremos al trabajar con la solución. En nuestro caso, implicará en mayoría, una
reingeniería de procesos.
Además en esta fase identificaremos si hay funcionalidades que son o no cubiertas por el
estándar de la solución, y desarrollarlas si es posible. Finalmente haremos unas pruebas
para probar su funcionalidad con los nuevos procesos de negocio.
En esta fase, que resulta crítica para el éxito final del proyecto, se procederá a instalar,
parametrizar y testear la solución a partir del análisis de pre-implantación.
En cada apartado se contemplarán los errores ocurridos y sus soluciones, si es que se han
resuelto, como también pequeñas pruebas y comprobaciones de que el paso ha sido
correcto. También haremos mención sobre sus capacidades y diferentes características del
software como su estructura y motores.
Además se desarrollarán, si es necesario, funcionalidades no cubiertas por el estándar de la
solución, documentándolas adecuadamente.
Veremos las diferentes configuraciones en cada uno de los módulos para poder adaptarlos
a nuestro flujo de trabajo.
11.1 - Módulos de Soporte
En este apartado veremos módulos que nos ayudan a mantener el sistema y su correcto
funcionamiento. Se trata de 2 módulos, uno de herramientas web y otro de ayuda.
54 Parametrizaciones y configuraciones
11.1.1 - Módulo de Herramientas Web
Éste módulo de Herramientas Web, nos ofrece toda una serie de
herramientas para mantenimiento y desarrollo. Aquí podremos desde
importar o exportar datos hasta ejecutar tests.
Lo encontramos dividido en varias secciones:
Figura XXX - Pantalla principal Herramientas Web
Encontramos al principio herramientas para el mantenimiento[19] y la comprobación de los
archivos Log (Cache & Debug Tools), herramientas de referencia para entidades del
modelo de datos y los servicios existentes (General Artifact Info Tools) y herramientas
para la traducción (Label Manager).
Luego también tenemos herramientas para el motor de modelo de datos de Opentaps
(Entity Engine Tools) y para el motor de servicios SOA, exportar e importar mediante
XML, efectuar y configurar tests y certificados.
Nosotros no las utilizaremos todas pero sí nos ayudaremos con algunas de ellas.
Figura XXIX - Logo
Módulo
Herramientas Web
55 Gestión Empresarial Online
11.1.2 - Módulo de Ayuda
Este módulo lo único que hace es dirigirnos a la página principal de la
documentación de Opentaps o Ofbiz.
11.2 - Módulo Usuarios y Participantes
En este modulo podemos consultar todos los participantes en la
organización con su perfil definido específicamente para ellos. Por
supuesto los podemos modificar o eliminar según nuestras necesidades.
El perfil de usuario captura toda la información[16,19] que es básica para la
identidad del usuario en el sistema. Desde este módulo podemos controlar
casi toda la información de un participante al completo, sus relaciones con
otros participantes, su información personal, etc. Una de las características más
importantes es que podemos definir un grupo de seguridad para nuestro sistema y así
controlar su actividad.
Una de las cosas que nos damos cuenta es que la traducción es parcial, hay palabras no
traducidas. Vemos que la pantalla principal de este módulo se trata de una página de
búsqueda de participantes mediante diferentes criterios.
Figura XXXIII - Página principal "Parties & Users"
Figura XXXI - Logo Módulo Ayuda
Figura XXXII -
Logo Módulo
"Parties & Users"
56 Parametrizaciones y configuraciones
Por defecto se nos crean muchos participantes en la organización de ejemplo para todas las
áreas, desde empleados de almacén hasta equipo de compras. También se nos crea una
empresa que representa nuestra organización, identificada como "company".
Figura XXXIV - Pantalla principal de nuestra compañía
Observamos que la información sobre la compañía está compuesta por datos de ejemplo,
como dirección, nombre, pedidos, información de pagos, relaciones ficticias, que
substituiremos o eliminaremos. Podemos actualizar esta información fácilmente con los
botones actualizar.
Figura XXXV - Info. Compañía
57 Gestión Empresarial Online
Hemos cambiado fácilmente de momento el nombre del grupo o de la compañía en este
caso y la moneda preferida. Nos faltan definir algunas cosas importantes como la entidad
fiscal que mas adelante configuraremos.
"Requires1099" se refiere a la "Internal Revenue Service" que es la agencia tributaria en
EE.UU. [7]
La información referente al contacto e información de pago queda así:
Figura XXXVI - Información de contacto de la Compañía
Figura XXXVII - Información de Pago
Hemos introducido un correo de contacto y hemos creado una supuesta cuenta bancaria en
el banco BBVA. Podemos crear también certificados de regalo o tarjetas de crédito. La
cuenta bancaria nos damos cuenta que se trata de una cuenta EFT (2).
Gracias a un archivo de propiedades de pago (payment.properties), podemos configurar
esta forma de pago como EFT (Electronic Funds Transfer/Transferencia Bancaria
Electrónica) mediante Autorize.net y eCheck.NET[7].
58 Parametrizaciones y configuraciones
Veamos la cantidad de opciones que nos ofrecen los menús de éste modulo:
Figura XXXVIII - Menú principal "Parties & Users"
Podemos controlar casi todo lo referente a este participante desde este panel. Podemos
controlar desde contabilidad hasta pedidos. Es como el módulo total o completo.
Figura XXXIX - Manú general gestión de participantes
El menú home consiste en un enlace para cada módulo, mientras el menú de gestión de
participantes varía según nuestra navegación por el módulo. Por ejemplo, al entrar en
"Pedidos" se nos cambiará por "Gestión de Pedidos" con opciones referentes a dicha
gestión.
Figura XL - Menú general gestión de pedidos
59 Gestión Empresarial Online
O al entrar en cuentas de facturación se transforma en:
Roles
En este apartado, podemos escoger el rol de cada participante y crear de nuevos. Por
ejemplo:
Vemos roles básicos asignados a nuestra organización por defecto como organización
Padre, organización interna o proveedor que factura. Podemos crear de nuevos fácilmente
introduciendo tipo de rol y descripción.
Relaciones
Vemos un apartado donde podemos describir las relaciones con otros participantes. Esto
nos puede ayudar a describir mejor nuestra organización.
60 Parametrizaciones y configuraciones
Por defecto se nos crean relaciones con departamentos de contabilidad o partners, que
luego eliminaremos o modificaremos.
11.2.1 - Creación de miembros de la Organización
En este apartado crearemos los diferentes miembros de la organización. Comenzaremos
por mí. Para ello, utilizaremos el usuario administrador ya creado.
Figura XLI - Menú con usuario administrador y su empresa relacionada
Presionando encima de "THE PRIVILEGED ADMINISTRATOR" podremos acceder a su
información de participante, y modificarla como hemos hecho en nuestra compañía.
Figura XLII - Información de administrador y empresa modificados
Vemos que nuestra información ha variado en la cabecera, identificándonos como
miembros de esta organización (Siprotex).
Ahora crearemos los demás participantes de nuestra organización. Veamos que podemos
crear diferentes tipos de participante:
61 Gestión Empresarial Online
Figura XLIII - Pantalla creación de un nuevo participante
Lo que haremos será crear nuevos empleados. Crearemos al Gerente (Jordi), a una señora
contable (Concha) y al Ingeniero Químico (Bastian). Para su creación solo hemos de
rellenar el formulario.
Figura XLIV - Información del nuveo empleado Concha
En la misma creación ya se configura un acceso con su usuario y contraseña. Lo que faltará
es, una vez creados, adecuar su grupo de seguridad a ese acceso. Esta tarea la realizaremos
luego.
Para el equipo de almacén, crearemos un jefe de almacén y un empleado. Para ello
utilizaremos dos participantes ya creados en la demostración que serán "DemoEmployee1"
y " Demo Shipper One" que forman parte de un equipo de almacén, con los permisos de
administrador de almacén (Antonio) y administrador de envíos (Daniel) de almacén
respectivamente. Así solo nos hará falta cambiar su información personal y accesos
personales.
11.2.2 - Grupos de seguridad
Esta es una fase muy importante ya que perfila las posibilidades de ejecutar acciones que
van a poder tener los usuarios cuando entren al sistema. Hay que asegurar que las
funcionalidades estén de acuerdo con los procesos de trabajo y requisitos necesarios. Hay
que adecuarse exhaustivamente a sus tareas ya que unos permisos ligeros podrían acarrear
62 Parametrizaciones y configuraciones
errores graves de seguridad y unos permisos estrictos quizás poco margen de maniobra
para emergencias.
Para esto, hay creados ya por defecto muchos grupos de seguridad para adecuarlos a
nuestras necesidades. Para aplicarlos hemos de ir a la ficha del participante y en el usuario
que deseemos clicar en "Grupos de Seguridad".
Figura XLV - Uauarios creados para Bastian
Veamos cuales son los permisos que hemos asignado a cada miembro:
Jordi (Gerente)
Jordi es el gerente de la empresa, pero el trabajador total, conoce todos los procesos de su
empresa y toca todas las teclas del negocio, así que se le ha asignado un permiso de
administrador, con el que puede acceder a todos los módulos, pero sin permisos técnicos.
Figura XLVI - Grupo de seguridad de Jordi
Para aplicar un grupo de seguridad, solo hay que seleccionarlo del menú desplegable y
añadir.
Concha (Contable)
Concha es la encargada de la contabilidad, del control de las órdenes de compra y de venta.
Puede hacer gestiones con los contactos.
63 Gestión Empresarial Online
Figura XLVII - Grupo de seguridad de Concha
Víctor (Ingeniero técnico Informática de Gestión)
Será el encargado total de la parte técnica del sistema, el superadministrador. Dejaremos
los que nos ha puesto el sistema.
Figura XLVIII - Grupos de seguridad de Víctor (Administrador)
Bastian (Ingeniero Químico)
Trabaja muy conjuntamente con Jordi para la relación con los clientes y proveedores y
también con Concha para las compras de material. Por eso se le han asignado permisos
representativos en ventas y compras y catálogo de productos.
64 Parametrizaciones y configuraciones
Figura XLIX - Grupos de Seguridad de Bastian
Daniel ( Gestor envíos almacén)
Sólo trabajará con la parte de envíos del módulo de almacén.
Figura L - Grupos de seguridad para Daniel
Antonio (Jefe de Almacén)
Tendrá acceso completo al módulo de almacén.
Figura LI - Grupos de seguridad para Antonio
Aquí detallamos los accesos:
PARTICIPANTE NOMBRE USUARIO
Jordi jordi
Daniel dani
Concha concha
Víctor admin
Antonio antoni
Bastian bas
Tabla II - Participantes y sus Usuarios
65 Gestión Empresarial Online
Para trabajar de manera más ágil, como contraseña a todos estos accesos hemos puesto
"siprotex".
Con esto hemos finalizado la creación de los miembros de la organización. Ahora
procederemos con la parte del almacén y su equipo y configuración.
11.3 - Módulo Almacén y Envíos
En este módulo[19], se realizan todas las tareas referentes al almacén de la
empresa. También se puede utilizar para controlar la fabricación y
controlar fabricaciones, pero para nuestros requisitos nos basta con el
inventario y el control de envíos ya que nuestra empresa no fabrica,
compra el producto.
Lo primero que observamos es que éste modulo no está traducido al
castellano. En este caso, hemos de desarrollar una traducción, ya que el equipo de almacén
no sabe nada de Inglés.
El módulo viene por defecto con varios almacenes de demostración configurados. Nosotros
elegiremos Web Store Warehouse y lo modificaremos a nuestras necesidades. Este
almacén ya está vinculado a la tienda online existente. Mas adelante lo veremos.
Figura LIII - Elección de almacén
La primera página que se nos muestra, "My Home", es un resumen de los diferentes
aspectos del almacén, inventario, transporte y fabricación, y su estado actual.
Figura LII - Logo
Módulo de Almacén
66 Parametrizaciones y configuraciones
Figura LIV - Pantalla principal de almacén
Una vez dentro del almacén hagamos un vistazo al menú:
Figura LV - Menú principal de almacén
Vemos que el menú principal nos ofrece los apartados básicos de una buena gestión de
almacén. Tenemos inventario, envíos, fabricación (que en nuestro caso no la utilizaremos),
y configuración.
11.3.1 - Configuración nave de Almacén
Nuestro primer objetivo será configurar nuestro almacén, que lo llamaremos Siprotex
Logistics. Para ello nos dirigiremos al apartado de configuración. En él, podremos editar la
información.
67 Gestión Empresarial Online
Figura LVI - Info. Almacén
Pondremos artículos de inventario no serializado y días predefinidos para enviar 7. La
unidad de peso será el Kilogramo y el propietario nuestra empresa con la identificación
"Company". Observamos que se pueden escoger varios tipos de almacén.
11.3.2 - Configurar Equipo de Almacén
Para la configuración del equipo de almacén iremos a la pestaña del menú izquierdo "Team
Members". La función "Locations" es para crear ubicaciones especificas dentro del
almacén.
Figura LVII - Menú de configuración de almacén
Vemos que nuestros dos empleados Antonio y Daniel ya están incluidos en el equipo de
almacén y con sus respectivos roles.
68 Parametrizaciones y configuraciones
Figura LVIII - Miembros del equipo de Almacén
Si queremos añadir algún otro miembro al equipo solo hay que seleccionarlo y relacionarlo
con un rol específico.
Ahora será el momento de realizar la traducción del módulo "warehouse", pero antes
haremos una mirada general a la estructura de un componente Opentaps.
11.3.4 - Estructura general de un componente
En Opentaps cada módulo[13,17] es independiente, con su propio modelo de definiciones de
datos, lógica de negocio y presentación, aunque las aplicaciones pueden utilizar la lógica
de los otros negocios y por lo tanto dependen unas de otras.
Veamos el componente " hot-deploy/warehouse" :
• "build" es donde está el código Java compilado y las
bibliotecas para esta aplicación.
• "build.xml" informa a Apache ANTde cómo construir esta
aplicación.
• "config" es para los datos de configuración, tales como la
internacionalización.
• "data" es donde se encuentran los datos demo y por defecto,
en formato XML,.
• "entitydef " es donde se encuentran las definiciones del
modelo de datos de esta aplicación en XML.
• "script "es donde están las secuencias de comandos para la
lógica de negocio. Pueden ser escritos en beanshell,
Jython, etc.
Figura LIX - Estructura
componente
69 Gestión Empresarial Online
• "servicedef " donde los servicios, que son pequeñas partes granulares de la
lógica de negocio (similar a las funciones o métodos), se definen en formato XML.
• "src" es donde están las clases de Java para la aplicación de la lógica de negocio.
• "webapp" es donde está la interfaz web o presentación de las aplicaciones. Una
aplicación Opentaps puede tener más de una interfaz web.
• "ofbiz-component.xml" define una solicitud, indicando donde se encuentra su
modelo de datos, lógica de negocio, datos, y aplicaciones web.
• "widget" es donde se encuentran los widgets de Opentaps, que permiten definir,
mediante un sencillo lenguaje XML, interfaces de usuario, como elementos de
pantalla, menús o formularios.
A nosotros esta vez nos interesa el directorio "config ya que sirve para configuraciones y
interacionalización.
11.3.5 - Desarrollos - Traducción
En este apartado veremos cómo hemos realizado la traducción[13,17] de este módulo. De
paso, aprovecharemos para explicar la estructura de un módulo o aplicación de Opentaps
por dentro.
Encontramos un archivo de propiedades generales en el
que podemos modificar opciones generales, color de
visualización, la referencia a javascript y css,
propiedades de envío, de inventario y paginación. A
nosotros no nos será necesario tocar ninguna de ellas.
Luego vemos los archivos de traducción con la forma
WarehouseErrorLabels_XX.properties (traducción de
errores),
WarehouseEntityLabels_XX.properties(traducción de
entidad), WarehouseUiLabels_XX.properties
(traducción de la interfaz de usuario), donde la "xx"
significa el código estándar de una región, en nuestro caso será "es".
Figura LX - Directorio "config" del módulo de
almacén
70 Parametrizaciones y configuraciones
Para la traducción, hemos creado un archivo WarehouseUiLabels_es.properties con el
editor de texto, copiado el contenido de WarehouseUiLabels.properties y hemos ido
traduciendo cada propiedad a nuestro idioma.
Figura LXI - Archivo de traducción al castellano
En otras ocasiones las traducciones se efectúan con una hoja XML, en ese caso es muy
similar. Solo hay que añadir una fila <value xml:lang="es">.
Figura LXII - Archivo de traducción XML
Hemos aprovechado esta ocasión para realizar algunas traducciones generales de
Opentaps. Para ello hemos creado el archivo "OpentapsUiLabels_es.properties" en el
directorio "hot-deploy\opentaps-common\config". El directorio "opentaps-common" es un
directorio donde se encuentran las partes comunitarias de Opentaps.
De esta forma hemos cambiado la interfaz de usuario del módulo de almacén al idioma
español. Veamos los resultados:
71 Gestión Empresarial Online
Figura LXIII - Interfaz de Inventario
En inventario vemos la interfaz traducida casi en su totalidad pero suficiente para entender
la mayoría de sus funcionalidades. Vemos que el menú izquierdo nos ofrece todo lo que
podemos necesitar para el correcto manejo de inventarios.
Figura LXIV - Interfaz de transporte
Observamos que para el transporte nos ofrece muchas funcionalidades incluídas la de
Impresión de etiquetas. Podemos empaquetar la orden o visualizarla en PDF.
11.4 - Módulo de Compras
En este apartado configuraremos nuestro módulo de compras[19]. Para ello,
crearemos 2 proveedores, uno para los absorbentes y otro para kits.
En la primera pantalla también nos dan a escoger la organización como en
el módulo de almacén. Escogemos la nuestra de entre varias. Figura LXV - Logo
módulo compras
72 Parametrizaciones y configuraciones
Figura LXVI - Pantalla de selección de compañía
Una vez dentro de nuestra organización se nos muestra una página de resumen igual que en
el anterior módulo, informándonos sobre requerimientos de adquisición necesarios (de
producción, de compra, transferencia, etc.) y estado de las órdenes existentes.
Acompañado de un gráfico del estado de las órdenes.
Figura LXVII - Pantalla principal módulo de compras
Echamos un vistazo al menú:
Figura LXVIII - Menú principal módulo de compras
El menú está parcialmente traducido gracias a las traducciones generales que hemos hecho
anteriormente. Nosotros haremos uso del de el apartado de proveedores ("suppliers"),
Órdenes, Informes y algunas características de "Planning". El apartado de producción no
será necesario tenerlo en cuenta ya que nosotros no producimos. En planificación hay
características que nos pueden parecer interesantes como el control de inventario o
búsqueda de requerimientos de adquisición de producto.
Lo primero que haremos será ir al apartado de proveedores y configurar nuestros 2
proveedores.
73 Gestión Empresarial Online
11.4.1 - Crear y configurar proveedores
En el menú tenemos 3 funcionalidades sencillas, por defecto está la de buscar proveedor,
luego tenemos crear proveedor y hacer outsourcing de una tarea.
Figura LXIX - Pantalla de búsqueda de proveedores
Vemos que hay proveedores de prueba creados por defecto. Aprovecharemos esto para
substituir los datos y no haber de crearlos desde el comienzo. El proveedor con la id
"BigSupplier" será nuestro proveedor de absorbentes. Hacemos clic encima para ver su
información y modificarla a nuestro gusto.
Figura LXX - Detalles del proveedor
74 Parametrizaciones y configuraciones
La id del proveedor no la podemos cambiar, pero lo demás sí. Mas abajo nos fijamos que
hay 3 apartados más, uno para la creación de órdenes o el manejo de las mismas, otro para
acuerdos y notas sobre este proveedor.
Figura LXXI - Órdenes abiertas, acuerdos y notas sobre proveedor
La parte de acuerdos es muy interesante ya que se trata de un resumen del acuerdo
comercial entre las dos partes. Hemos creado un acuerdo sobre el mineral absorbente
Sepiolita, vamos a ver como lo hemos hecho.
Figura LXXII - Detalles de acuerdo con el proveedor
Primero y necesario son las especificaciones del contrato como tipo de contrato (en este
caso de compra), Estado (activo, completado), con qué empresa, fecha, descripción y
fecha límite.
75 Gestión Empresarial Online
Vemos una zona de texto donde podemos describir la información referente a los precios
de compra. Luego podemos crear términos de descripción del proveedor como su
transporte principal o favorito y más abajo especificar características de pago, como por
ejemplo pago en 30 días.
Estos acuerdos nos serán útiles para despejar malentendidos y crear órdenes de compra
más fácilmente.
Para el proveedor de Kits hemos creado uno nuevo desde el principio quedando así:
Figura LXXIII - Acuerdo sobre KitsADR con proveedor
Como Id le hemos puesto "NuestroProveedor" y también con un acuerdo sobre el precio de
los kits.
Con esto ya tenemos nuestros 2 proveedores principales dados de alta en el sistema y listos
para trabajar con ellos.
11.5 - Módulo CRM
[19]Este módulo es uno de los que utilizaremos más. Describirá todas
nuestras relaciones con los clientes, y desde él podremos también controlar
pedidos, presupuestos, campañas de marketing, oportunidades, etc.
Figura LXXIV - Logo módulo CRM
76 Parametrizaciones y configuraciones
Podremos enviar y recibir emails de los contactos, registrar llamadas y crear campañas de
marketing.
Cuando entramos en el módulo, lo primero que se nos presenta es un calendario donde
podremos representar todas las actividades programadas y es un acceso directo para
editar/visualizar tareas o eventos.
Figura LXXV - Pantalla principal módulo CRM
Debajo del calendario podremos visualizar correos electrónicos pendientes y recibidos. La
configuración del correo será lo más importante a configurar en este módulo.
En el menú superior se encuentran todos los accesos rápidos a cada uno de los grupos de
información: Prospectos, Contactos, Cuentas, Casos, etc. Dando clic en cada una se puede
acceder a la pantalla principal de cada grupo.
En los módulos de almacén y compras nos hemos fijado que inmediatamente debajo del
menú superior aparece un acceso directo con las últimas pantallas visitadas, en este caso
también.
77 Gestión Empresarial Online
11.5.1 - Configuración del correo electrónico
Correo saliente [19]
Para configurar el correo saliente y poder enviar emails hemos creado una cuenta de correo
gmail llamada [emailprotected]. Opentaps nos ofrece un archivo de propiedades
" general.properties" ubicado en "framework/common/config/" que nos permite configurar
facilmente dicho correo cambiando el valor de las propiedades. En nuestro caso:
# -- mail notifications enabled (Y|N) mail.notifications.enabled=Y # -- redirect all mail notifications to this address for testing [emailprotected] # -- the default mail server to use mail.smtp.relay.host=smtp.gmail.com # -- SMTP Auth settings [emailprotected] mail.smtp.auth.password=siprotex # -- Additional Required Fields needed for Gmail and other non traditional smtp servers # -- These added fields also work for Yahoo business mail for instance # -- Gmail smtp port can be either 465 or 587 mail.smtp.port=465 # -- Gmail requires StartTLS mail.smtp.starttls.enable=true # -- Gmail requires a JSSE socket factory, the following socketFactory settings will override JavaMail's default socketFactory settings # -- Port needs to be the same as mail.smtp.port mail.smtp.socketFactory.port=465 mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory #--Fallback [true|false] determines whether you will allow a non secure connection if you are unable to get a secure one mail.smtp.socketFactory.fallback=false # -- how the address are matched with the CRM addresses mail.address.caseInsensitive=N # -- debug SMTP mail option enabled (Y|N) mail.debug.on=N
Como observamos hemos habilitado las propiedades para configurar un correo Gmail e
introducido los datos necesarios para que podamos realizar un envío. Ahora ya podemos
enviar emails desde Opentaps con la dirección [emailprotected].
78 Parametrizaciones y configuraciones
Correo Entrante[19]
Para la recepción de emails hemos configurado el archivo ofbiz-containers.xml en la
ubicación "\framework\base\config" de esta manera:
Hemos habilitado esta parte del codigo xml quitándole los símbolos de comentario (<!-- --
>), y hemos modificado los datos con nuestra cuenta de correo.
<container name="javamail-container" class="org.ofbiz.service.mail.JavaMailContainer">
<property name="delegator-name" value="default"/>
<property name="dispatcher-name" value="JavaMailDispatcher"/>
<property name="run-as-user" value="system"/>
<property name="poll-delay" value="300000"/>
<property name="delete-mail" value="false"/>
<property name="maxSize" value="10000000000"/>
<property name="default-listener" value="store-listener">
<property name="mail.store.protocol" value="imaps"/>
<property name="mail.host" value="imap.gmail.com"/>
<property name="mail.port" value="993"/>
<property name="mail.user" value="[emailprotected]"/>
<property name="mail.pass" value="siprotex"/>
<property name="mail.debug" value="false"/>
</property>
</container>
Al realizar alguna prueba desde nuestro correo personal, vemos que ha funcionado.
79 Gestión Empresarial Online
Figura LXXVI - Pantalla con emails recibidos
11.6 - Módulo de estadísticas e informes (Opentaps Analitycs)
Este módulo tiene como función exclusiva crear y preparar informes y
estadísticas.
Es un módulo muy importante ya que esta herramienta nos servirá para la
toma de decisiones de negocio mediante el análisis de los datos empresariales. También
nos permite personalizar los informes de acuerdo con nuestras necesidades.
Desgraciadamente al intentar por primera vez en el nos encontramos con un error grave:
80 Parametrizaciones y configuraciones
No podemos acceder al módulo especificado.
11.6.1 - Desarrollo -> Error Analytics
En este apartado explicaremos cómo hemos resuelto este error[16] y ayudado a la
comunidad.
Este error es muy curioso ya que anteriormente en la versión Opentaps1.4- preview1
funcionaba perfectamente.
Lo primero que hemos hecho es consultar a la comunidad en sourceforge.net en busca de
una solución y hemos comprobado que ya hay una persona que ha expuesto el error.
Figura LXXVIII - Foro abierto sobre el error en Analytics
Figura LXXVII - Error en módulo Analytics
81 Gestión Empresarial Online
Como vemos se trata del mismo problema que el nuestro, comunicado por el usuario Ivan (
reman ) en la fecha 2009-12-10 10:01. Aún no hay solución, así que hemos de resolverlo
nosotros mismos. Para ello, hemos abierto Opentaps desde Eclipse para poder trabajar con
él.
Se hace de una manera muy sencilla, sólo hay que importar
el proyecto. Vamos a File > Import > "Existing Projects into
Workspace".
Desde Eclipse podremos acceder a todos los archivos y
modificarlos de manera más efectiva.
Volviendo al error de analytics, lo que hemos hecho es
seguir el rastro del método que hace saltar el error, en este
caso: "getPropertyValue(appName, appName +
".tab.ofbiz.target")"
En primer lugar podemos observar que se trata de un error al
intentar leer una property pero aún no sabemos por qué.
Siguiendo el rastro como hemos dicho, vemos que lo que hace Opentaps para entrar en la
aplicación es pedir el un "contextPath" de la petición devuelve como "appName". En la
clase UtilHttp.java encontramos:
public static String getApplicationName(HttpServletRequest request) {
String appName = "root";
if (request.getContextPath().length() > 1) {
appName = request.getContextPath().substring(1);
}
return appName;
}
Entonces el problema no está cuando concatenamos "appName + .tab.ofbiz.target"
Opentaps no encuentra dicha propiedad y por eso nos indica que está indefinida.
Figura LXXIX - Opentaps en
importado en Eclipse
82 Parametrizaciones y configuraciones
"Static["org.opentaps.common.util.UtilConfig"].getPropertyValue(appName, appName +
".tab.ofbiz.target") is undefined"
Qué propiedad falta respecto a las demás aplicaciones que hace que este error ocurra?
Nos damos cuenta enseguida de que, por ejemplo en la aplicación "warehouse", en su
"warehouse.properties" hay escrito esto:
warehouse.tab.ofbiz.target = /opentaps/
Como también en "purchasing.properties" (purchasing.tab.ofbiz.target = /opentaps/) o
"crmsfa.properties". Así que lo que hemos hecho es añadir al final del archivo
analytics.properties en el directorio "config" de la aplicación "hot-deploy/analytics/" esto:
analytics.tab.ofbiz.target = /opentaps/.
Aún así nos continua sin funcionar, y es que hemos de ejecutar Apache ANT antes de
ejecutar la aplicación. Esto hará que nos compile Opentaps y algunas otras tareas.
Figura LXXX - Compilar Opentaps con Ant desde MS-DOS
Esto puede tardar varios minutos pero ha merecido la pena.
Figura LXXXI - Pantalla principal analytics
83 Gestión Empresarial Online
Ahora funciona!
Una vez hecho esto es nuestro deber comunicárselo a la comunidad, y hemos decidido
ayudar a Iván a resolver el problema ofreciéndole nuestra solución.
Figura LXXXII - Respuesta en el foro del error con la solución
Le hemos indicado como primer paso que si puede copie una versión de analytics anterior,
ya que nosotros como hemos dicho antes, habíamos comprobado que en la versión anterior
funcionaba correctamente, y uno de los pasos que habíamos realizado para resolver el
problema era copiar la aplicación de analytics anterior a la nuestra por si podía influir.
Embargados por la emoción de haber resuelto el problema, respondimos a Iván antes de
darnos cuenta que la solución también funciona sin ese primer paso.
La configuración de Opentaps analytics es muy complicada y extensa y podría dar para
bastantes páginas más. Haremos una breve vista a su configuración y las herramientas que
utiliza y pondremos algún ejemplo de informe breve.
Para el completo funcionamiento de Opentaps es necesario descargarse el paquete
opentaps_analytics_pentaho.zip desde sourceforge.net y descomprimirlo en un directorio
aparte. Analytics está construido sobre los proyectos de código abierto:
• MySQL.
• Pentaho Suite de aplicaciones de inteligencia empresarial.
• JasperReports herramientas para informes, con las que podemos diseñar y
configurar nuestros informes con el diseñador de reportes iReport.
84 Parametrizaciones y configuraciones
Necesitamos entonces descargarnos y descomprimir dentro del directorio analytics los
paquetes de integración de pentaho (Pentaho Data Integration Kettle) y Pentaho BI server.
En versiones anteriores el módulo era completamente individual, pero ahora en las últimas
versiones de Opentaps, podemos acceder a sus reportes desde dentro de las aplicaciones,
aunque también puede seguir funcionando de forma autonómica y acceder a él como una
aplicación separada.
Nosotros hemos conseguido una funcionalidad casi al 100%, creando las bases de datos
necesarias en MySQL (opentaps_analytics y opentaps_analytics_testing) mediante Apache
ANT, parametrizando los archivos de configuración en el directorio "config" de analytics
(database-config.xml y install.properties) para que pueda acceder a la base de datos de
Opentaps y configurando el archivo entity.xml de Opentaps para que desde él podamos
acceder a las bases de datos MySQL de analytics.
Una vez relacionadas las 2 aplicaciones, ejecutamos una transformación de datos con los
comandos de apache ANT (ant transform). Esto hace que la información necesaria de la
base de datos de Opentaps se transforme en un pequeño datawarehouse en las bases de
datos de analytics en MySQL.
Una vez hecho esto, ya podemos crear reportes desde Opentaps como este:
Figura LXXXIII - Informe de ventas por mes del año
11.7 - Módulo de Catálogo
En este módulo es donde introduciremos todos nuestros productos y
servicios, podremos crear una tienda virtual y gestionar todo lo referente a
ella.
Nos permite describir todo lo relacionado con nuestros productos y es
donde se basa el módulo ecommerce[19] para obtener el contenido de la Figura LXXXIV -
Logo módulo de
Catálogo
85 Gestión Empresarial Online
tienda online. Casi todo lo que se modifique o se configure en esta aplicación, tendrá su
repercusión en la tienda online.
En este apartado crearemos nuestra tienda, con algunos productos de prueba que nos
servirán para probar nuestros procesos de negocio. También configuraremos los envíos.
Veamos la página principal.
Figura LXXXV - Pantalla principal del módulo Catálogo
Observamos que este módulo tiene una estructura parecida al de usuarios y participantes,
con un menú superior donde podemos dirigirnos a todos los otros módulos de Opentaps y
otro "Aplicación de Administración de Catálogos que nos señala a características propias
de donde nos encontramos. En esta pantalla principal carecemos del menú de la parte
izquierda, sino que es substituido por pequeñas aplicaciones, de búsqueda de Productos,
examinar catálogos y hojear categorías. Básicamente las funcionalidades que nos ofrecen
son las de modificar, buscar o crear productos, categorías y catálogos.
Nos damos cuenta también que la traducción de este módulo es mucho más completa,
excepto por algunos vocablos mal escritos o mal traducidos.
Hay muchos datos de prueba que se han introducido que eliminaremos desde la base de
datos explicando cómo. Datos de productos, catálogos, categorías, de ofertas, de
86 Parametrizaciones y configuraciones
promociones, etc. Pero antes de borrar todos estos datos, nos interesaremos por configurar
nuestra tienda.
11.7.1 - Creación tienda virtual
Una tienda de productos virtual representa una colección de productos, agrupados por
catálogos y categorías, y se vende bajo un conjunto común de transporte y políticas
fiscales.
Las tiendas pueden tener muchos catálogos, que se componen de las categorías de
productos y de los productos. También puede tener sus propios envíos, cumplimientos,
notificaciones, promociones, procesamiento de pagos y de impuestos y políticas de
cálculo. El sistema Opentaps soporta tantas tiendas como sea necesario.
Un almacén de producto puede estar asociado con varias tiendas, permitiendo que los
mismos productos se vendan en varios sitios de visita, o dominios. Como alternativa, las
tiendas, cada uno con sus propio sitio web, se puede configurar con precios y
procedimientos diferentes para el cumplimiento, por ejemplo, en diferentes países o
diferentes segmentos de mercado.
Vayamos a crear la nuestra. Con el menú superior nos dirigiremos al apartado de tiendas.
Figura LXXXVI - Menú prindipal del módulo Catálogo
Una vez allí, veremos las diferentes tiendas que hay de muestra.
87 Gestión Empresarial Online
Figura LXXXVII - Pantalla de tiendas
Una de estas tiendas "Dummy store for purchasing application [PURCHASING]" no se
puede borrar, es para el correcto funcionamiento del módulo de compras y así nos lo
especifican.
Nosotros utilizaremos la tienda con la ID 9000, OFBiz E-Commerce Store [9000]. Esta
tienda ya está vinculada a nuestro almacén y a la tienda online, sólo tendremos que
modificar parcialmente sus características. Hacemos Clic encima.
Al entrar en la tienda observamos primero el menú:
Figura LXXXVIII - Menú de tienda
Se trata de un menú muy similar al módulo de participantes, salvo en sus funciones. Como
vemos en Opentaps hay mucha reutilización de todo el código y diseño. Desde aquí
podemos asignarle un rol a esta tienda, controlar sus catálogos, manejar el sitio web,
configurar los tipos de envío y sus estimaciones, configurar los tipos de pago, las cuentas
financieras asociadas, configurar las direcciones de e-mail, las encuestas, reemplazar un
producto, segmentar nuestra tienda en subtiendas, configurar los pagos al proveedor y los
envíos de proveedores.
Ahora observamos la información general por defecto de la tienda, que modificaremos a
nuestras necesidades.
88 Parametrizaciones y configuraciones
Figura LXXXIX - Edición características de la tienda
La información es exhaustiva en todos los aspectos que puede tener una tienda. Desde el
tipo de inventario hasta mensajes personalizados o tipo de lista de compras. Observamos
una característica muy interesantes y es que hay una opción, marcada como afirmativa,
que la califica de tienda de demostración.
Vamos a ver como hemos modificado nosotros la información.
Figura XC - Características tienda Siprotex Store
89 Gestión Empresarial Online
Hemos incluido nuestra tienda en un grupo más amplio de tiendas de demostración, aquí se
puede comprobar que Opentaps puede tener configuradas muchas tiendas cada una de ellas
distinta. Hemos cambiado los datos, junto con la opción para aclarar que no es una tienda
de demostración. También hemos escogido un tema visual, que es el que luego se
visualizará en la tienda online, y el nombre de la tienda Siprotex Store.
Respecto al inventario, algunas de las características interesante son que hemos
seleccionado un orden de reserva FIFO, que no se exija la existencia de stock para la
compra pero que se compruebe el inventario.
Figura XCI - Características de carritao de compras, envío y pagos de Siprotex Store
Vemos las opciones que hemos seleccionado para el carrito de la compra, el transporte y
los pagos. Sobre el carrito de la compra por ejemplo hemos seleccionado que no se
visualice cada vez que añadamos un producto, que se guarde automáticamente y que no
muestre opciones de regalo, ya que nuestros productos nunca se utilizan para regalo.
En el apartado de transporte hemos seleccionado que no se especifique tipo de pago por
cada ítem del carrito y pero que sí se pueda escoger tipo de pago según el grupo de envío.
En las opciones de pago hemos escogido nuestra empresa como la receptora de los pagos.
Los clientes tendrán 30 días para ser cancelado por no pago. También que se prueben y se
reintente automáticamente las tarjetas de crédito.
90 Parametrizaciones y configuraciones
Figura XCII - Características de Órdenes, de moneda, y mensajes personalizados de Siprotex Store
Vemos las preferencias para las órdenes, sus estados y los mensajes de errores y
autorizaciones. Destacamos la aprobación automática de facturas y pedidos, que las
devoluciones requieran un reajuste del stock y que el canal de ventas es el Canal Web.
Figura XCIII - Características de impuestos, visitantes y cargas de Siprotex Store
91 Gestión Empresarial Online
Sólo nos quedan los impuestos, que más adelante enseñaremos cómo configurarlos, las
opciones respecto a los visitantes, y la carga de los envíos. Hemos configurado una
empresa de transportista por defecto que crearemos más adelante.
Ahora ya tenemos configurada nuestra tienda. Todas las opciones escogidas en este
apartado tendrán su repercusión en el funcionamiento e interfaz de nuestra tienda online.
Seguiremos con la creación de nuestros catálogos y productos de nuestra tienda. Pero
antes borraremos los datos de ejemplo de la base de datos. Para ello utilizaremos la
funcionalidad "Truncate Cascaded" de pgAdminIII.
11.7.2 - Eliminar datos demo
Junto a Opentaps se han instalado muchos datos de demostración, muchos de ellos no nos
sirven para nada pero tampoco son molestia. En cambio otros sí que será necesaria su
eliminación por la cantidad y la interferencia con nuestros objetivos.
Para eliminar los datos de demostración lo haremos
desde la base de datos y casi siempre utilizaremos la
funcionalidad "Truncate Cascaded" de pgAdminIII.
Hay casi 960 tablas en la base de datos de Opentaps,
pero mediante el orden alfabético y los nombres de las
tablas que hacen que se intuya muy bien su contenido y
están muy estandarizados, hacen que nos movamos y
localicemos los datos con facilidad.
Para la eliminación de los datos de ejemplo,
truncaremos todas las tablas referentes a "product". La
eliminación en cascada no nos funciona en postgreSQL,
así que si quisiéramos eliminar un solo producto,
habríamos de ir eliminando todas sus relaciones hasta
poder borrarlo por completo. Afortunadamente con truncar en cascada ya nos sirve.
De esta forma, podremos crear nuestros catálogos y productos desde una tienda vacía y no
nos confundiremos con productos ya creados o catálogos.
Figura XCIV - Truncar en cascada tabla en
pgAdminIII
92 Parametrizaciones y configuraciones
Una vez realizada esta tarea comenzaremos con la creación de nuestros catálogos.
Crearemos dos, uno de absorbentes y otro de kits ADR.
11.7.3 - Catálogos
Los catálogos son una capa de agrupación de varias categorías juntas. Los catálogos se
componen de muchas categorías y éstas de productos.
Se utiliza para agrupar muchas categorías de productos en conjunto y constituye una fase
media entre la organización entre los productos, categorías, y las tiendas. El catálogo de
productos se pueden utilizar para definir un aspecto y comportamiento común para todas
las categorías en este catálogo y especificar la forma de cómo se comportarán las diferentes
categorías.
La ficha principal de un catálogo de productos es principalmente para especificar la
apariencia. Cada catálogo puede tener su propia hoja de estilo (CSS), su propio logotipo,
un almacén de contenido propio y plantillas.
Figura XCV - Características del catálogo absorbentes
Vemos como hemos creado nuestro primer catálogo de absorbentes. Ahora veamos el
menú del catálogo.
Figura XCVI - Menú de catálogo
93 Gestión Empresarial Online
• La pestaña "tiendas" nos muestra una lista de tiendas en las que nuestro catálogo
puede incluirse o no. Hay que tener en cuenta que los catálogos y las tiendas
relación uno-a-uno: la misma tienda pueden contener varios catálogos, y el mismo
catálogo podría ser ofrecido en muchas tiendas.
• En "participantes" podemos ver los participantes asociados a este catálogo y añadir
otros.
• "categorías" muestra las categorías de productos diferentes y sus funciones para
este catálogo.
Lo que haremos será clicar en la pestaña tiendas para asignar nuestro catálogo a la tienda
que hemos creado.
Figura XCVII - Asignación de catálogo a Siprotex Store
Sólo tenemos que seleccionarla y escoger una fecha de inicio y de fin si es que queremos.
El número de secuencia es el orden en que se muestran las tiendas a las que hemos
asignado nuestro catálogo, pero como sólo hay uno no nos hace falta.
Para el catálogo de kits, utilizaremos el mismo procedimiento.
11.7.4 - Categorías
Las categorías son una agrupación ordenada de nuestros productos, y sirven entre otras
cosas para dar una función al grupo de productos dentro de un catálogo.
Para crear nuestra primera categoría iremos a la página principal del módulo y
seleccionaremos crear categoría. Se nos presenta un formulario sencillo que rellenaremos
con nuestra información.
94 Parametrizaciones y configuraciones
Figura XCVIII - Características de categoría en catálogo absorbentes
El tipo de categoría se utiliza para definir qué acciones están disponibles para la categoría.
La plantilla se utiliza para definir la ruta de una plantilla Freemarker, en relación con el
componente de comercio electrónico de la aplicación, utilizado para mostrar la
información de esta categoría a los visitantes. Esto nos permite a diferentes categorías de
productos tener presentaciones totalmente diferentes. Podemos definir también una
categoría padre.
Veamos el menú:
Figura XCIX - Menú de categoría
• La ficha de contenido se usa para asociar el contenido creado y administrado por el
contenido de aplicación de gestión de categorías.
• "Jerarquía" se usa para definir relaciones padre / hijo entre el producto categorías.
• En productos podremos ver todos los productos que son miembros de esta
categoría.
• Catálogos. Esta pestaña muestra lo que los catálogos de productos de esta
categoría está relacionado.
95 Gestión Empresarial Online
• La pestaña "características" nos permite asociar las características del producto con
las categorías de productos.
Lo que haremos nosotros será aplicar esta categoría al catálogo de absorbentes que hemos
creado.
Para ello iremos a la pestaña catálogos y le asignaremos un catálogo y una función.
Figura C - Asignar categoría a catálogo absorbentes
Hemos incluido nuestra categoría en el catálogo con el tipo de función de promociones.
Hay varios tipos de funciones:
• Catálogo - Categoría Estándar catálogo de productos, con información descriptiva y
de los productos.
• Adición rápida - los productos de estas categorías se puede agregar a la vez.
• Promociones - para la tienda de comercio electrónico por defecto, los productos de
la categoría de promociones se muestran en la primera página a todos los visitantes.
• Browse Root - categoría de raíz para la navegación por la tienda de comercio
electrónico.
• Por defecto de búsqueda - la búsqueda de productos por defecto se hacen en esta
categoría.
Para la categoría de kits hemos hecho exactamente lo mismo.
11.7.5 - Productos
En este apartado crearemos 2 productos, uno para cada categoría de las que hemos creado.
Estos 2 productos serán diferentes y tendrán diferentes características. Comenzaremos con
el producto para la categoría de los Kits.
96 Parametrizaciones y configuraciones
Vemos los diferentes apartados de los productos:
Figura CI - Menú de producto
Entre otras muchas cosas, podemos asignarle proveedores, almacenes, costes
características y muy importante, el precio.
Para crear nuestro primer producto, en la pantalla principal hacemos clic en crear nuevo
producto.
Figura CII- Características de producto Kit ADR
Vemos los datos que hemos introducido y también que el tipo de producto seleccionado es
configurable. Un producto configurable es un producto formado totalmente o parcialmente
por piezas o subproductos, justo lo que necesitamos para la formación del kit.
Destacar también la opción de producto virtual. Un producto virtual es un producto que
tiene varias características seleccionables, cada una de a cuales se resuelve en un producto
real. Un producto virtual no se puede añadir a la cesta de la compra o pedido.
97 Gestión Empresarial Online
Figura CIII - Características de producto, tasa, cantidad, medidas y transporte
Hemos introducido también un peso y su unidad en quilogramos y también hemos
seleccionado que se incluya en las promociones y la creación automática de palabras clave.
Observamos también los errores de visualización en la interfaz, que aunque no
imposibilitan la selección de ninguna característica, son desagradables para su uso.
Para cada producto en la sección de contenidos podremos insertar una imagen en varios
tamaños que luego se visualizara en nuestra tienda online.
Figura CIV - Asignar contenido al producto Kit ADR
98 Parametrizaciones y configuraciones
Para este producto tendremos que crear sus piezas configurables, que serán a la vez
productos en sí mismos.
Nuestro kit se compondrá de:
• Guantes de PVC
• Gafas
• Dos Triángulos Advertencia (1 solo producto)
• Lava ojos
• Linterna
• Chaleco de alta visibilidad (talla L o XL)
• Bolsa para guardar los elementos
Figura CV - Kit ADR
Para cada componente crearemos un producto nuevo, con su peso, su nombre y su precio.
Asignaremos el precio al producto kitADR. Para ello iremos a la pestaña precio del menú
del producto.
Figura CVI - Precio Kit ADR
99 Gestión Empresarial Online
Le hemos asignado un precio de 0€, ya que se calculará según el precio de los
componentes seleccionados, y también que este precio sea asignado en todo el grupo de
tiendas.
Podemos elegir entre varios tipos de precio (precio promocional, coste promedio, precio
competitivo), nosotros hemos puesto el precio por defecto.
La moneda por defecto se especifica según el grupo de tiendas de productos al que
pertenece la tienda pero podemos escoger la que queramos.
Para el precio de los componentes del kit, varía el tipo de precio, que en este caso será
precio de componente, y no asignaremos el precio al grupo de tiendas.
Figura CVII - Precio componente Guantes
A los guantes PVC les hemos asignado un precio de 5€ por ejemplo. Este proceso será el
mismo en cada componente.
11.7.6 - Configuraciones
Una vez hemos terminado de introducir todos los precios, pasaremos al apartado de
configuraciones del menú superior.
En este apartado podemos crear tantas configuraciones de productos como queramos y de
todos los tipos. Lo primero es escoger el tipo de configuración, un nombre y una
descripción.
100 Parametrizaciones y configuraciones
Figura CVIII - Opciones de configuracion de los componentes
Para la configuración de este kit, escogeremos una configuración de tipo múltiple para
poder escoger a la vez varias opciones y le pondremos como nombre Componentes.
Seguidamente crearemos las diferentes opciones de configuración, haciendo clic en la
pestaña "Opciones de Configuración".
Figura CIX - Opciones de configuración de componentes
Creamos nuevas configuraciones para cada componente. Para crear una nueva
configuración sólo nos hace falta introducir un nombre, una descripción y un número de
secuencia para ordenarlas. Una vez creadas podemos asociarles un producto con su precio
a cada una de ellas, para que al seleccionar el componente su precio se sume al de los otros
componentes seleccionados y también se compruebe el inventario y otros aspectos
diferentes.
101 Gestión Empresarial Online
Figura CX - Asignar producto a configuración
Como vemos, al hacer clic sobre una opción de configuración el sistema nos ofrece la
posibilidad de añadir un producto a esta configuración. Podemos añadir uno o más de uno
a cada opción según nuestras necesidades, el resultado podría ser una opción de
configuración compuesta también por varios productos. En nuestro caso, en la imagen
hemos asignado el producto con id GuantesPVC a la opción de configuración Guantes. Lo
hemos hecho indicando que cantidad de producto se asigna cada vez que el cliente
seleccione la configuración y el numero de secuencia asociado para el orden.
Este proceso lo repetiremos para cada opción de configuración seleccionando su producto
respectivamente.
Ahora si nos dirigimos a la página principal del producto kitsADR y hacemos clic en
"Página del Producto", veremos el resultado.
Figura CXI - Visualización Kit ADR en la tienda online
102 Parametrizaciones y configuraciones
Observamos que nosotros podemos seleccionar los diferentes componentes del kit y estos
suman su precio al producto total. Nuestro kit está listo para su venta.
Ahora crearemos otro producto para la categoría de promociones de absorbentes. Será de
tipo terminado y con el código SS04. Se trata de un cubo de 10Kg de absorbente mineral
sepiolita.
Figura CXII - Producto SS04 sepiolita
Figura CXIII - Características sepiolita
Su precio por defecto será de 14€ y se mostrará en todas las tiendas del grupo al que
pertenece la nuestra.
11.7.7 - Transporte
Ahora que tenemos listo el contenido de nuestra tienda referente a los catálogos, un factor
importante que nos queda especificar para nuestra tienda será el transporte.
Para eso, en el menú principal tenemos dos pestañas importantes "Envío" y "Ver
Estimaciones". En la primera, podemos controlar y configurar los diferentes tipos de envío,
103 Gestión Empresarial Online
y en la siguiente su estimación a la hora de calcular el precio e incluirlo en la orden de
compra.
Vemos que hay envíos ya configurados para empresas tan importantes como FEDEX,
UPS, USPS (Servicio postal de Estados Unidos) o DHL.
Figura CXIV - Métodos de envío de Siprotex Store
Se especifica el método de envío y la compañía, junto con otras opciones. Nosotros
podemos crear nuestros propios envíos, pero para ello necesitaremos crear antes nuestra
compañía de transporte que utiliza nuestro almacén y que la llamaremos SpainShip. Para
ello crearemos un nuevo grupo en el módulo de participantes asignándole el rol de
transportista.
104 Parametrizaciones y configuraciones
Figura CXV - Asignación rol de transportista a SpainShip
Una vez creada nuestra empresa de trasporte podemos crear tipos de envíos y sus
estimaciones con ella. En nuestro caso hemos creado 3 tipos de envío que son los que
nuestra empresa ofrece: entrega local "Local Delibery", Estándard y Express.
Figura CXVI - Diferentes métodos de envío para SpainShip
Para crear un tipo de envío hay que rellenar y seleccionar varias opciones para que este
tipo de envío se visualice sólo en ciertas ocasiones, por ejemplo cuando un peso sea X o
cuando el cliente sea de un cierto país.
105 Gestión Empresarial Online
Figura CXVII - Características método de envío para SpainShip Express
Nosotros hemos seleccionado que se muestre sólo a los clientes españoles ya que esta
empresa sólo da servicio a este país.
Ahora vamos a ver el apartado de estimaciones. En este apartado hemos de destacar que
Opentaps puede acceder a las API de UPS, Servicio Postal de EE.UU., DHL y Federal
Express. Para utilizar Opentaps con estos servicios de transporte tendríamos que ponernos
en contacto con la compañía y obtener las credenciales de envío que son necesarias. Para
su configuración solo habría que editar el archivo de
"applications/product/config/shipment.properties" y modificarlo según sean dichas
credenciales. Esto haría que los precios estimados de envío para las compras online se
calcularan automáticamente desde la API de la compañía. También podemos crear nuestras
propias estimaciones, configurándolas por peso por volumen o por precio por ejemplo, en
un intervalo como podría ser 500kg a 600kg.
Aquí en España nuestro sistema de correos no tiene un servicio como este, aunque si
podemos configurar UPS, Fedex o DHL para el cálculo de estimaciones.
106 Parametrizaciones y configuraciones
DHL ofrece el servicio DHL ShipIT. No hay casi información y nada en castellano.
También parece que solo está disponible para DHL USA. En DHL España no conseguimos
encontrar este servicio.
Figura CXVIII - Herramientas XML de DHL para conectar con su sistema, entre ellas ShipIT
Todo esto con sólo consiguiendo la autorización y credenciales de la compañía y
configurando el archivo .properties.
Nosotros no utilizaremos nada de ésto ya que la única compañía de trasporte que
utilizaremos será la nuestra. Nuestra empresa de trasporte utiliza un sistema de tarifas por
grupos de provincias y peso de la mercancía, dando sólo servicio al estado español.
Figura CXIX - Estimaciones de envío de Siprotex Store
Comprobamos que nuestra situación es complicada, ya que con el sistema utilizado por
Opentaps no podemos constituir un grupo de provincias y tendríamos que crear toda una
serie de estimaciones para cada escala de peso, y hay 50 provincias en nuestro país.
Además, para importar o exportar ante un cambió de tarifa no sería funcional. Así que
107 Gestión Empresarial Online
decidimos crear a medida el cálculo para nuestra compañía. Antes estudiaremos tanto el
motor de servicios como el de entidad que nos ofrece Opentaps.
11.7.8 - Motor de Servicios de Opentaps
Los servicios en Opentaps[13,17] operan en una Arquitectura Orientada a Servicios (SOA).
Estos servicios no sólo tienen la capacidad de invocar otros servicios internos, sino
también pueden ser invocados por control remoto mediante el protocolo de mensajería
SOAP. Serán definidos en archivos XML independientemente del lenguaje de
implementación.
Los servicios están en paquetes de grupos de conducta para formar un conjunto coherente
de "servicio". Lo veremos mejor al realizar la búsqueda de nuestro servicio de
estimaciones para su modificación posterior.
11.7.9 - Motor de entidad o modelo de datos
El motor de entidad de Opentaps[13,17] es declarativo. Es decir, que no implica hablar en las
lenguas nativas de muchos tipos de sistemas de base de datos que Opentaps es capaz de
utilizar. Esto significa que aprendiendo a manejar este motor de entidad podríamos ser
capaces de aprovechar cualquiera de los sistemas de bases de datos compatibles. Nos
ofrece un nivel superior de abstracción .
El modelo de datos está definido en archivos XML en los directorios " entitydef" de cada
componente y Opentaps nos proporciona un conjunto de APIs genéricos para trabajar con
los datos reales y buscar, crear, actualizar y eliminar los que queramos. El motor de la
entidad nos permite:
• Trabajar con los datos en un nivel superior, en lugar de en el bajo nivel de SQL o el
código de Java.
• Trabajar con un gran número de bases de datos comerciales o de código abierto.
• Reducir la cantidad de mantenimiento cuando las aplicaciones necesitan ser
modificadas, mediante la centralización de las definiciones y de trabajar con
conceptos más genéricos.
108 Parametrizaciones y configuraciones
• Evitar la sobrecarga de la persistencia de objetos relacionales con un sencillo
conjunto de API.
11.7.10 - Desarrollo -> Servicio Estimación de Envíos
En este apartado modificaremos el servicio de estimaciones para que nos ofrezca una
solución adecuada a nuestras necesidades. Esta modificación trabajará sobre unas nuevas
tablas que crearemos en la base de datos para poder adecuar mejor la estructura de nuestras
tarifas.
Para todo esto nos ayudaremos del motor de modelo de datos de Opentaps y de algunas
herramientas del módulo Web Tools.
La herramienta "Service Reference" nos ayudará a localizar el servicio que necesitamos.
Esta aplicación nos muestra la referencia a todos los servicios definidos en Opentaps y nos
ayuda a buscarlos mediante el orden alfabético o grupo al que pertenecen. Desde aquí
también podremos ejecutar el servicio o ver el Log.
Figura CXX - Herramienta de referencia de servicios
Realizando una búsqueda simple con el navegador por la palabra "estimate", encontramos
el método "calcShipmentCostEstimate".
Nos informa de que está implementado en java. Si hacemos clic encima vemos
información más detallada.
Figura CXXI - Informacion del servicio "calcShipmentCostEstimate"
109 Gestión Empresarial Online
Esta información no dice tanto los parámetros que tiene el método de entrada como de
salida y también que está localizado en el paquete de servicios
org.ofbiz.shipment.shipment.ShipmentServices.
Con esta localización en Eclipse lo podemos localizar fácilmente. Se encuentra definido en
la aplicación, "product".
Figura CXXII - Código en Eclipse del método de estimación de envíos
En la localización "/applications/product/servicedef", donde se definen todos los
servicios[13,17] referentes a los productos, encontramos el archivo "services_shipment.xml"
y dentro de él la definición de nuestro servicio.
Figura CXXIII - Definición XML del método de estimación de envíos
Esta es la base de la arquitectura SOA de Opentaps. Observamos que el servicio está
definido en lenguaje XML, indicándonos el nombre del servicio, el lenguaje de
implementación, la localización del grupo al que pertenece y también una descripción y la
implementación de una interface definida más arriba en el archivo.
La herramienta "Entity Reference - Interactive" nos permite ver qué entidades utiliza
nuestro grupo.
110 Parametrizaciones y configuraciones
Figura CXXIV - Tablas del grupo "org.ofbiz.shipment.shipment" mediante la herramienta de referencia de entidades
Si vamos a la localización que nos indica esta aplicación
"/applications/product/entitydef/entitymodel_shipment.xml" y abrimos el archivo
especificado vemos las diferentes entidades configuradas para el motor de entidades de
Opentaps en lenguaje XML.
Figura CXXV - Entidad "ShipmentCostEstimate" en XML
Observamos la entidad de estimaciones de envíos con su nombre y referencia al paquete al
que pertenece, seguidamente de sus campos. La entidad es similar a una tabla de SQL o un
objeto Java, con varios campos de atributos específicos. La definición, es, sin embargo, a
un nivel más abstracto. El motor de la entidad Opentaps interpretará esta definición y
creará las tablas en la base de datos, las consultará y modificará si es necesario.
111 Gestión Empresarial Online
Los tipos de los campos son tipos genéricos, en lugar de SQL o tipos específicos de Java.
El motor de entidades traducirá estos campos a los tipos de SQL cuando se trabaje con la
base de datos y de los tipos de Java cuando se trabaje en Java. La traducción exacta está
localizada en alguno de los archivos de "framework/entity/fieldtype/". Podemos ver las
definiciones fieldtype para todas las diferentes bases de datos.
Nosotros necesitamos trabajar con una tarifa de precios de este tipo:
Figura CXXVI - Tarifa de transporte
Se trata de una tarifa que calcula sus precios respecto al grupo de provincias al que
pertenece y el peso de la mercancía.
Para ello crearemos 2 tablas en la base de datos, una para especificar el grupo de
provincias y otra para los precios respecto al peso. Para la escala de los diferentes
intervalos de pesos aprovecharemos una tabla en la base de datos que se llama
"quantity_break".
112 Parametrizaciones y configuraciones
Figura CXXVII - Tabla con los intervalos de cantidad
Para las 2 otras tablas utilizaremos el motor de entidad de Opentaps para su creación. En el
archivo entitymodel_shipment.xml visto anteriormente, añadiremos las 2 siguientes
entidades en el grupo correcto.
"SpanishShipmentScales" para los diferentes grupos de provincias. Esta tabla tendrá 2
campos, uno con el código de la provincia y otro con la escala a la que pertenecen.
Observamos también que podemos describir las relaciones y escoger la clave primaria.
En este caso el campo geoId está relacionado con la entidad Geo y su campo geoId.
Figura CXXVIII - Entidad XML "SpanishShipmentScales"
"SpanishShipmentCostEstimate" para los diferentes precios para la mercancía respecto a la
escala que pertenecen y su peso. En este caso hay como clave primaria un campo
weightBreakId que hace referencia a las escalas de pesos creadas en la entidad
quantity_break. Los otros campos son los diferentes grupos de provincias.
113 Gestión Empresarial Online
Figura CXXIX - Entidad XML "SpanishShipmentCostEstimate"
Una vez hecho esto, reiniciamos Opentaps, y observamos que el motor de entidades de
Opentaps ya ha hecho su trabajo.
Este motor de entidad hace que sea mucho más fácil el trabajo de un desarrollador. Lo
siguiente que haremos es rellenar correctamente las dos tablas creadas quedando así.
Figura CXXX - Tabla de estimaciones creada en postgreSQL y rellenada
114 Parametrizaciones y configuraciones
Figura CXXXI - Tabla de grupos de provincias
En geo_id están todas las provincias españolas contempladas por Opentaps con su código.
Una vez creados los datos con los que trabajaremos, modificaremos el servicio para que dé
una respuesta personalizada para nuestra empresa de transportes Spain Ship. Lo
realizaremos mediante Eclipse.
Generic Object [13,18]
Opentaps trabaja con un objeto GenericDelegator para trabajar y acceder a la base de datos
y otro GenericValue para guardar los registros de una entidad de base de datos.
Cada recuperación de datos de la base de datos devolverá un GenericValue o una lista de
objetos GenericValue. Un objeto de GenericValue encapsula las operaciones: crear,
actualizar, y borrar. Eso significa que cada registro de la base de datos lo podemos crear,
actualizar o eliminar. También destacar que para las cifras numéricas Opentaps utiliza el
tipo BigDecimal.
115 Gestión Empresarial Online
Nosotros utilizaremos estos 2 objetos para trabajar con la base de datos en el código que
veremos a continuación.
En el servicio "calcShipmentCostEstimate()" hemos creado una condición if() para que
cuando se ejecute, si es una estimación de un tipo de envío referente a nuestra empresa, nos
ofrezca un resultado personalizado.
// get the ShipmentCostEstimate(s) if(carrierPartyId.equals("10000")){ GenericValue estimate = null; GenericValue previousEstimate = null; GenericValue scale = null; GenericValue previousScale = null; BigDecimal shippingTotal= BigDecimal.ZERO; BigDecimal previousShippingTotal= BigDecimal.ZERO; GenericValue shipAddress = null;
Si la empresa transportista tiene como id el número 10000 és SpainShip, entonces
ejecutamos nuestro código preparando algunos objetos GenericValue necesarios.
// Get the Contry Code try { shipAddress = delegator.findByPrimaryKey("PostalAddress", UtilMisc.toMap("contactMechId", shippingContactMechId)); } catch (GenericEntityException e) { return ServiceUtil.returnFailure("Cannot get shipping address entity"); } if (shippingContactMechId != null) { try { shipAddress = delegator.findByPrimaryKey("PostalAddress", UtilMisc.toMap("contactMechId", shippingContactMechId)); } catch (GenericEntityException e) { Debug.logError(e, module); return ServiceUtil.returnError("Cannot get shipping address entity"); } } else if ( shippingPostalCode != null) { shipAddress = delegator.makeValue("PostalAddress"); shipAddress.set("countryGeoId", shippingCountryCode); shipAddress.set("postalCodeGeoId", shippingPostalCode); }
Aquí lo que hacemos es recoger la dirección de envío de nuestro cliente. Observamos que
utilizamos "delegator.findByPrimaryKey()" para recoger datos mediante la clave primaria
de la tabla.
116 Parametrizaciones y configuraciones
Collection<GenericValue> weightBreaks = null; try { weightBreaks = delegator.findList("QuantityBreak", null, null, null, null, true); } catch (GenericEntityException e) { Debug.logError(e, module); return ServiceUtil.returnError("Unable to locate weight breaks from database"); }
Recojemos todos los diferentes intervalos de pesos en una colección de GenericValues
mediante delegator.findList().
//Interval of product weight String weightBreakId=null; boolean isBiger=false; shippableWeight = (BigDecimal) context.get("shippableWeight"); BigDecimal max=BigDecimal.ZERO; BigDecimal min=BigDecimal.ZERO; if(shippableWeight.compareTo(BigDecimal.valueOf(200.000000))>=0)isBiger=true; for (GenericValue thisWeightBreak: weightBreaks) { min = thisWeightBreak.getBigDecimal("fromQuantity"); max = thisWeightBreak.getBigDecimal("thruQuantity"); if (shippableWeight.compareTo(min) >= 0 && shippableWeight.compareTo(max) <= 0) { weightBreakId= thisWeightBreak.getString("quantityBreakId"); break; } }
Miramos a que intervalo pertenece el peso de la mercancía mediante una búsqueda.
//get Spanish estimate try { scale = delegator.findByPrimaryKey("SpanishShipmentScales", UtilMisc.toMap("geoId", shipAddress.getString("stateProvinceGeoId"))); estimate = delegator.findByPrimaryKey("SpanishShipmentCostEstimate", UtilMisc.toMap("weightBreakId", weightBreakId)); previousEstimate=delegator.findByPrimaryKey("SpanishShipmentCostEstimate", UtilMisc.toMap("weightBreakId", String.valueOf(Integer.valueOf(weightBreakId)-1))); previousScale=delegator.findByPrimaryKey("QuantityBreak", UtilMisc.toMap("quantityBreakId", String.valueOf(Integer.valueOf(weightBreakId)-1))); } catch (GenericEntityException e) { Debug.logError(e, module); return ServiceUtil.returnError("Unable to locate estimates from database"); }
Recogemos de la base de datos el grupo de provincias al que pertenece nuestro cliente
(scale) y los precios que se corresponden con el intervalo de peso de la mercancía.
117 Gestión Empresarial Online
También recogemos la fila previa ya que si el precio calculado es menos que el precio
inmediatamente inferior en la tarifa, se escoge el inferior.
Esto solo ocurrirá para pesos más grandes de 200 kg ya que el peso se calcula respecto a la
tonelada media.
Por ejemplo el cálculo de precio para 550kg es:
100€ (el precio en la tarifa para el intervalo de 500 a 1000kg)
60€ (el precio del intervalo de 200 a 500€)
el resultado sería --> 100/1000*550= 55€
Como el precio en el intervalo anterior es de 60€ y 60>55, se escoge como precio final
60€.
Los precios en los intervalos más pequeños a 200 son exactos y no necesitan ningún tipo
de cálculo. Si la mercancía pesa 85 kg. se aplicará el precio del intervalo entre 80-90kg.
// shipping total shippingTotal = estimate.getBigDecimal(scale.getString("scale")); previousShippingTotal= previousEstimate.getBigDecimal(scale.getString("scale")); if(isBiger){ BigDecimal TMestimate=shippingTotal.divide(BigDecimal.valueOf(1000.000000)).multiply(shippableWeight); if(shippableWeight.compareTo(BigDecimal.valueOf(500.000000))<=0){ if(TMestimate.compareTo(previousShippingTotal)<=0)shippingTotal=previousShippingTotal; else shippingTotal=TMestimate; } else{ BigDecimal prevTMestimate=previousShippingTotal.divide(BigDecimal.valueOf(1000.000000)); prevTMestimate=prevTMestimate.multiply(previousScale.getBigDecimal("thruQuantity")); if(TMestimate.compareTo(prevTMestimate)<=0)shippingTotal=prevTMestimate; else shippingTotal=TMestimate; } } if(shipmentMethodTypeId.equals("LOCAL_DELIVERY"))shippingTotal = BigDecimal.valueOf(0.000000);
118 Parametrizaciones y configuraciones
if(shipmentMethodTypeId.equals("EXPRESS"))shippingTotal = shippingTotal.multiply(BigDecimal.valueOf(1.20000));
Aquí es dónde hacemos todos los cálculos para obtener el precio final. Si es más grande de
200kg se efectuará el cálculo por tonelada media, si es menor aplicaremos simplemente la
escala de la tarifa que le toca. También comprobamos los métodos de envío. Si es una
entrega local el precio de envío será 0 €, mientras que si es un envío exprés será un 20%
más caro.
// prepare the return result
Map<String, Object> responseResult = ServiceUtil.returnSuccess(); responseResult.put("shippingEstimateAmount", shippingTotal.divide(BigDecimal.valueOf(1),2,BigDecimal.ROUND_UP)); return responseResult;
}else{ ....
Preparamos y devolvemos el resultado final. Redondeamos el resultado redondeado a 2
cifras y hacemos return con un Map.
Comprobamos su correcto funcionamiento en el módulo de ecommerce realizando algunas
pruebas.
Prueba1
Realizamos un pedido de 700kg de SS04 con un cliente demo ubicado en el grupo de
provincia "scale1" y el resultado es:
Figura CXXXII - Resultado de la estimación Prueba 1
Précio intervalo de 500 a 1000 kg =69,82€
Précio intervalo prévio de 200 a 500 kg = 100,69€
Cómo el peso es más grande que 200 kg se calculará mediante tonelada media así:
(69,82/1000)*700= 48,87€
119 Gestión Empresarial Online
Cálculo tarifa previa --> (100,69/1000)=50,35€
Como 50,35 > 48,87 el precio final estándar es 50,35€.
La prueba es correcta!
Prueba 2
Realizamos un pedido de 80kg de SS04 y el resultado es:
Figura CXXXIII - Resultado de la estimación Prueba 2
El código para nuestro intervalo es 9007.
Figura CXXXIV - Fila con código de intervalo
Vemos que la cifra para la ID 9007 es 15,44.
Figura CXXXV - Tabla de estimaciones para comprobar Prueba 2
La prueba es correcta!
120 Parametrizaciones y configuraciones
11.8 - Módulo de Contabilidad y Finanzas
En este modulo podemos configurar todo el sistema de contabilidad[19] de
nuestra empresa. Controlar las facturas, pagos, transacciones, etc.
Observamos que en este módulo no hay casi nada traducido a nuestro
idioma, y que la forma fiscal de la organización es Americana.
Desgraciadamente, en este proyecto no tendremos tiempo de estudiar y
adaptar este módulo a nuestras necesidades. Necesitaríamos más tiempo y
asesoramiento para completar una adaptación correcta a nuestro sistema contable.
Lo que sí haremos será configurar algunas aspectos sobre la información contable de
nuestra empresa y configurar el IVA para nuestra tienda.
Al entrar a este módulo encontramos una interfaz muy similar a la de módulo de almacén,
compras o CRM. Con un menú superior un resumen de las diferentes partes de este módulo
y un pequeño gráfico sobre la liquidez de la empresa.
Figura CXXXVII - Página principal de módulo contabilidad
Observamos en el menú los diferentes capacidades de este módulo. En "Recivibles"
podemos controlar facturas, acuerdos, pagos y créditos de nuestras ventas y clientes. En
"Pagables" facturas, pagos y comisiones sobre nuestras compras. El apartado de
Figura CXXXVI -
Logo módulo
contabilidad y
finanzas
121 Gestión Empresarial Online
"Employees" es para pagar a los empleados y el de "Partners" para facturas y acuerdos para
nuestros socios. Podemos crear todo tipo de informes y controlar nuestras transacciones en
la sección "Ledger".
Nosotros nos interesaremos por la sección de configuración.
Figura CXXXVIII - Pantalla de configuración de cuentas
Desde aquí podemos controlar y configurar todo nuestro sistema de contabilidad de la
empresa, sus métodos de pago, cuentas, períodos contables, etc. Hay todo un sistema
creado por defecto del cual no modificaremos nada. Solo nos interesaremos por la sección
"View Configuration".
Figura CXXXIX - Configuración contable de la compañia
En ella podremos ver la información y especificaciones contables de la empresa. Podremos
especificar prefijos para órdenes o facturas, escribir un texto para el pie de las facturas o
122 Parametrizaciones y configuraciones
escoger nuestra moneda. Para modificar estas opciones hay que hacerlo directamente en la
base de datos y para ello hemos utilizado la herramienta "Entity Data Maintenance". Con
esta herramienta podemos acceder a toda la información de nuestro modelo de entidades.
Es como si accediéramos a nuestra base de datos con pgAdminIII. Así encontramos la
tabla PartyAcctgPreference y en ella la información que buscábamos.
Figura CXL - Entidad de configuración contable de la compañía
Lo que haremos será editar los datos y configurarlos a nuestras necesidades. Por ejemplo
hemos especificado un prefijo para las órdenes y facturas como también la moneda.
11.8.1 - Creación de autoridad fiscal e impuestos
Como acciones referentes al sistema de contabilidad que hemos efectuado, ha sido borrar
todas las facturas y órdenes de ejemplo de la base de datos con pgAdmin mediante
"truncate cascaded" y configurado una autoridad fiscal para configurar el IVA.
Para crear la autoridad fiscal, lo hemos hecho desde el módulo de participantes y usuarios,
creando un grupo con el nombre Autoridad Fiscal Española y asignándole el rol
correspondiente.
Figura CXLI - Asignación de rol de autoridad fiscal
123 Gestión Empresarial Online
Luego mediante el botón de cuentas financieras accedemos a la Aplicación Administrador
Contable y desde su menú nos dirigimos a Autoridades Fiscales. Una vez allí, podemos ver
todas las autoridades creadas. La mayoría americanas. Nosotros creamos una nueva con
con nuestra autoridad fiscal creada anteriormente.
Figura CXLII - Edición de autoridad fiscal
Hemos escogido que el impuesto se incluya en los precios y como lugar de aplicación el
código del estado español. En "Categorías" podemos escoger las categorías de nuestro
módulo de catálogos que queremos asociar con esta autoridad fiscal y "Tarifas de
producto" podremos configurar el impuesto para nuestras categorías y los productos que
contienen.
Figura CXLIII - Asignación de categorías a la autoridad fiscal con impuesto de ventas
124 Parametrizaciones y configuraciones
Especificamos el tipo de impuesto, en nuestro caso impuesto de ventas, la tienda y la
categoría que queremos que se aplique este impuesto. Luego también el porcentaje sobre el
precio, que en nuestro caso será 16 %.
Lo que hemos hecho también es asociar a nuestra empresa esta autoridad fiscal. Hemos
buscado nuestra empresa en este modulo y hecho clic en la pestaña de "Información de
impuestos" y allí la hemos asociado asignándole nuestro CIF.
11.9 - Módulo de Comercio Electrónico
Opentaps nos ofrece un módulo de comercio electrónico[19] completamente
integrado al sistema. Es la fachada de nuestra tienda para nuestros clientes,
una completa tienda online. Desde allí nuestros clientes pueden realizar sus
compras y presupuestos, tener su propia lista de compra o editar su
información personal.
En este módulo veremos el resultado de muchas de las configuraciones
hechas hasta ahora, y todas las parametrizaciones e información del módulo de catálogo.
Al entrar por primera vez a este modulo, encontramos que la parte visual no es atractiva
visualmente pero también observamos su gran cantidad de funcionalidades.
Figura CXLV - Pantalla principal módulo Ecommerce
Figura CXLIV -
Logotipo módulo
Ecommerce
125 Gestión Empresarial Online
Vemos un título con información relevante de nuestro estado de compra y el título de
nuestra tienda. Seguidamente un menú principal donde podemos acceder como clientes o
desconectarnos (al desconectarnos aparece la opción para registrarse), contactar con la
organización o dirigirnos a la pantalla principal de la tienda. También hay la opción de
añadir rápido, en donde podemos añadir más de un producto a la vez en nuestro carro, ver
nuestro historial de compras, acceder a nuestra lista de compras, pedir presupuesto, hacer
peticiones y ver y modificar nuestro perfil.
En cuanto al cuerpo principal de la página, hay tres partes diferenciadas. Dos laterales que
incluyen módulos y una en medio que es donde se muestra la información, los productos,
foros etc.
En los módulos de la izquierda encontramos un primer módulo para navegar por los
diferentes catálogos, otro para búsqueda en los diferentes catálogos, otro para suscribirse a
los diferentes boletines informativos que creemos y módulos para acceder a foros
disponibles, encuestas, contenidos y blogs.
En la parte izquierda vemos módulos importantes como el módulo de idioma, que
contempla más de 100 idiomas diferentes y el de carro de la compra donde se nos informa
de nuestra selección de productos que queremos comprar. También hay un módulo de
curiosidades o informaciones y otro para navegar por las diferentes categorías.
Para registrarse en nuestra tienda hay que rellenar un completo formulario de datos. Con
esto no tendremos problemas al obtener toda la información que necesitamos de nuestros
clientes.
126 Parametrizaciones y configuraciones
Figura CXLVI - Formulario de registro
Una vez registrado, nuestro apartado de perfil nos ofrece configurar algunas otras opciones
como el tipo de envío por defecto, adjuntar archivos como por ejemplo una foto o vídeo,
crear tarjetas de crédito personales o cuentas EFT. También controlar nuestras
suscripciones, ver nuestros mensajes o responder a encuestas.
127 Gestión Empresarial Online
Figura CXLVII - Características de perfil de usuario
Nuestra tienda nos ofrece un completo carrito de la compra para manejar nuestros
productos seleccionados a nuestro antojo y con una funcionalidad para añadir rápido un
producto mediante su id. Podemos también solicitar una cotización o crear un presupuesto
como también añadir lo seleccionado a una lista de la compra personal. También
comprobamos que la configuración del IVA funciona ya que el precio configurado por
nosotros era de 14€ y se nos muestra como 16,24€.
Figura CXLVIII - Carrito virtual
Para realizar el pedido nos muestra un primer paso para la selección de la dirección de
envío configurada en nuestro perfil.
128 Parametrizaciones y configuraciones
Figura CXLIX - Selección dirección de envío
Un segundo paso que nos muestra los tipos de envío disponibles y sus estimaciones para
que seleccionemos uno. Podemos informar de instrucciones especiales para el envío e
introducir la dirección de correo electrónico dónde se enviará el pedido.
Figura CL - Selección método y compañía de envío
El último paso hace que especifiquemos la forma de pago, que se especificará en el pedido.
Podemos utilizar nuestras tarjetas de crédito o cuentas EFT para realizar nuestro pago entre
opciones como utilizar PayPal o WorldPay para realizar el pago.
129 Gestión Empresarial Online
Figura CLI - Selección de método de pago
Después de esto, se pasa a una revisión final de todo el pedido donde si todo es correcto
registraremos la orden.
Para hacer nuestra tienda más presentable hemos decidido modificar el aspecto visual.
11.9.1 - Temas visuales
Opentaps trabaja con temas visuales, los cuales podemos escoger tanto para la
visualización de los módulos, aunque el de participantes y usuarios o el de catálogo son los
únicos que soportan esta función ya que en los demás sólo podemos modificar el color,
como también para la visualización de nuestra tienda.
Los temas visuales en Opentaps están incluidos en el directorio "/themes". Cada carpeta es
un tema visual diferente.
En los módulos participantes y catálogo podemos seleccionar el tema visual en la parte
superior de la pantalla. Entre otras opciones está el idioma.
Figura CLII - Opciones generales parte superior de la pantalla
El tema visual para nuestra tienda lo podemos seleccionar en las opciones de tienda del
menú de catálogos. Opentaps por defecto viene con dos temas visuales. Comprobamos que
130 Parametrizaciones y configuraciones
el segundo tema es visualmente más agradable aunque con muchos fallos, como si no
estuviera terminado.
Figura CLIII - 2º tema visual por defecto
Nosotros hemos decidido escoger este segundo tema visual y adaptarlo a nuestras
necesidades pero antes veremos las características de la arquitectura MVC de Opentaps.
11.9.2 - Modelo-Vista-Controlador (MVC) en Opentaps
En esta sección describiremos la arquitectura MVC[10,13,17] de Opentaps dentro de un
módulo. Cada componente tiene su propia estructura MVC.
Modelo
El modelo en Opentaps está definido en archivos XML localizados en la carpeta
"entitydef" como hemos visto anteriormente.
Vista
Las vistas o interfaces en Opentaps pueden residir en dos lugares diferentes, en función de
qué tecnología se está utilizando para definirlos.
131 Gestión Empresarial Online
Cuando se utiliza la tecnología OFBiz widget, las definiciones de interfaz de usuario
residen en la carpeta con el nombre "widget". Cada componente Opentaps tiene una
carpeta widget.
El Widget OFBiz es uno de los componentes básicos del marco Opentaps. Cada widget
representa un elemento de la interfaz de usuario reutilizable, que puede ser incluido y
ampliado en diferentes aplicaciones.
Los widgets permiten definir, mediante un sencillo lenguaje XML, interfaces de usuario,
como elementos de pantalla, menús, formularios en una plataforma y formato de salida
independientes, los widgets están también estrechamente integrados con los motores de
datos, servicios y entidades de Opentaps.
En tiempo de ejecución, cuando un widget es interpretado, su definición widget (en XML)
se pasa al procesador widget que lo transforma en el formato de salida: un documento
HTML, un documento PDF, un valor separado por comas, etc.
Vemos un ejemplo de widget en el módulo de almacén localizado en "\hot-
deploy\warehouse\widget\warehouse\screens\myhome\MyHomeScreens.xml"
Figura CLIV - Widget de la pantalla MyHome en el módulo de almacén
Al utilizar HTML o tecnología FTL, las definiciones de interfaz de usuario residen en la
carpeta "webapp". Dentro de cada webapp hay un directorio WEB-INF que contiene los
componentes de flujo o la lógica de negocio.
132 Parametrizaciones y configuraciones
Los archivos FTL son interpretados por el motor de plantillas Freemarker, que nos ayuda a
separar el código de programación de la maquetación de la página web. Las Webapps o
aplicaciones web proporcionan el front-end a través del cual los usuarios finales pueden
trabajar gracias al servidor web incorporado Tomcat.
La carpeta webapp está dividida en carpetas para organizar los archivos .ftl en grupos y
una carpeta WEB-INF.
Figura CLV - Directorio "webapp" del módulo de almacén
Los archivos controller.xml y web.xml controlan las peticiones a los archivos de
programación que implementan las acciones de la pagina web localizados en la carpeta
actions, que está dividida en carpetas de la misma forma que webapp para tener una mejor
organización.
Figura CLVI - Directorio "actions" con los archivos de script para cada pantalla
Vemos un ejemplo de código freemarker en el archivo
"\warehouse\webapp\warehouse\includes\selectFacility.ftl".
133 Gestión Empresarial Online
Figura CLVII - Codigo Freeemarker
Controlador
Los controladores de flujo o de la lógica de negocio en Opentaps pueden residir en tres
diferentes lugares, dependiendo de la tecnología utilizada para definir la lógica de negocio.
Cuando se usa Java, las definiciones de la lógica de negocio debe residir en carpetas con el
nombre src.
Cuando se utiliza Groovy, Minilang o BeanShell, las definiciones de la lógica de negocio
residen habitualmente en carpetas llamadas script, y también en la carpeta WEB-
INF\actions dentro de webapp.
Los archivos controller.xml y web.xml en la carpeta WEB-INF también se consideran
controladores mando en la arquitectura MVC.
11.9.2 - Desarrollo -> Tema Visual
Para mejorar el aspecto de nuestra página web, modificaremos el tema visual contenido en
la carpeta "themes\vt_multiflex". Dentro de esta carpeta encontramos tres carpetas y un
archivo .xml.
Figura CLVIII - Directorio de tema visual multiflex
En la carpeta "data" encontraremos un archivo xml que define el tema visual. En
"includes" encontramos los archivos FTL[13,17] con las partes que se repetirán en la página
134 Parametrizaciones y configuraciones
web como el "header" o el "footer" y en webapp las diversas imágenes añadidas a las que
ya están en Opentaps y un archivo CSS que define las clases de estilo o las redefine de las
ya existentes en Opentaps.
Mediante el retoque del archivo CSS y la edición FTL tanto de la carpeta del tema visual
como de Opentaps en general (archivos del componente Ecommerce o partes comunes de
Opentaps) hemos conseguido una visualización como la siguiente.
Figura CLIX - Pantalla principal Ecommerce modificada
La estructura es la misma pero el menú y el estilo han cambiado. También hemos añadido
la opción en el margen superior derecha para cambiar el idioma a castellano haciendo clic
en la bandera española.
135 Gestión Empresarial Online
Figura CLX - Pantalla Ecommerce modificada con menú desplegado
Aunque el menú ha cambiado, las funcionalidades siguen intactas.
Como dificultades, comentar que ha sido muy difícil conseguir una correcta visualización
en Internet Explorer y Firefox por definiciones de valores CSS en %.
11.9.3 - Gestión de contenido
Para la modificación, edición y creación de contenido de la tienda y también de Opentaps,
hay una Aplicación de Administración de Contenidos en el módulo de participantes y
usuarios.
Para modificar los contenidos de la tienda online, accederemos a la aplicación desde el
menú principal de tienda en el módulo de catálogos, haciendo clic por ejemplo en la
pestaña de "encuestas".
136 Parametrizaciones y configuraciones
Figura CLXI - Menú de gestor de contenidos
Vemos que desde esta aplicación podemos gestionar todos los contenidos de Opentaps.
Nosotros lo que haremos será llenar la tienda de contenido mediante esta herramienta y
añadiendo más productos.
Como hemos podido ver, este módulo nos ofrece todas las funcionalidades que una tienda
online.
11.10 - Módulo de Recursos Humanos
En este módulo podremos modelar nuestra organización. Podemos
especificar las tareas que incumben a cada empleado, sus características,
asignar departamentos a nuestra empresa, etc.
Es un módulo agregado recientemente y está en pleno desarrollo, aunque
muchas de sus funcionalidades ya funcionan perfectamente.
Figura CLXII -
Logo módulo de
recursos humanos
137 Gestión Empresarial Online
Figura CLXIII - Menú módulo de recursos humanos
La interfaz es muy similar a la del módulo de usuarios y el de catálogo. Como vemos
podemos realizar muchas acciones. En "Empleados" podremos ver todos los empleados del
sistema y en "Employments" podemos asignar un trabajador a nuestra empresa. También
podremos detallar su rendimiento, sus habilidades, tareas de su empleo, vacaciones o
ausencias.
Nosotros lo que hemos hecho es asignar nuestros trabajadores a nuestra empresa y a una
posición.
Figura CLXIV - Información de empleado Jordi
Tampoco ha sido de los módulos que hemos estudiado más pero creemos que puede ser
muy útil cuando todas las funcionalidades estén al 100%.
11.10.1 - Desarrollo -> Icono Principal
Hemos decidido cambiar su icono principal ya que creemos que no era adecuado su
aspecto en relación a los demás módulos. Lo que hemos hecho es substituir las imágenes
"humanres.png" y "humanres_hover.png" en la carpeta "hot-deploy\opentaps-
common\webapp\images\homeapps".
138 Parametrizaciones y configuraciones
El resultado es el siguiente:
Figura CLXV - Ícono modificado de recursos humanos
11.11 - Otros módulos disponibles
No queremos que se nos pase también comentar brevemente algunas de las posibilidades
de esta gran aplicación y que nosotros no contemplaremos su configuración en este
proyecto, ya que no las necesitamos, aunque en un futuro los podamos necesitar.
Opentaps ofrece módulos y capacidades[19] como:
Figura CLXVI - Menú inferior constante en Opentaps
eBay -> Podemos integrar nuestro catálogo de productos con eBay.
GoogleBase-> Integración con Google base.
Google Base es un servicio que permite a cualquier persona con una cuenta de usuario de
Google (gratuita) insertar directamente cualquier tipo de información en los servidores de
Google. La información puede ser de cualquier tipo (coches para vender, recetas de cocina,
ofertas de empleo, cursos de álgebra, ...). Todos estos datos podrán ser encontrados a través
de un buscador propio de 'Google Base' y, si son relevantes, también aparecerán en las
búsquedas web de Google, en Froogle o en Google Local.
Gestión de Almacén PDA -> Nos ofrece la capacidad de controlar diversos aspectos del
almacén vía PDA.
139 Gestión Empresarial Online
Figura CLXVII - Menú módulo gestión PDA de almacén
OAGIS -> Integración con OAGIS (Open Applications Group Integration Specification)
OAGIS se utiliza para proporcionar un lenguaje de negocio canónico para la integración de
la información. Se utiliza XML como el alfabeto común para definir los mensajes de
negocios, y para la identificación de procesos de negocio que permiten a las empresas y las
aplicaciones comunicarse.
WebPos-> Nos proporciona un terminal punto de venta online.
Figura CLXVIII - Pantalla principal módulo POS
Se trata de un punto de venta de código abierto. La interfaz utiliza XUI mientras que la
funcionalidad de negocio son directamente la reutilización de la tecnología Opentaps
básica. Así, este terminal recoge la información de Opentaps en torno a productos, precios,
promociones e instalaciones, etc.
Amazon -> Opentaps nos ofrece también un módulo para la integración de nuestros
productos en Amazon.com.
140 Parametrizaciones y configuraciones
Figura CLXIX - Pantalla principal módulo Amazon
Funambol -> La integración con la aplicación Funambol nos permite sincronizar nuestra
información entre Opentaps y Microsoft Outlook o con un teléfono móvil (mediante
SyncML).
Asterisk -> La integración con asterisk nos permite utilizar la comunicación VOIP y
llamar desde Opentaps a nuestros contactos o recibir llamadas.
Gestión de Proyectos -> Hay un módulo de gestión de proyectos incluido en el módulo de
participantes y usuarios.
11.12 - Otros desarrollos
Hay varios desarrollos generales que hemos hecho en Opentaps para que algunas de sus
funcionalidades funcionen correctamente.
11.12.1 - Desarrollos visuales
Hemos corregido algunos errores de visualización en los menús para que el texto incluido
se visualice correctamente y también en la parte de acceso a la aplicación.
Figura CLXXI - - Menú de aplicación de
administración contable Figura CLXX - - Menú de
aplicación de administración
contable modificado
141 Gestión Empresarial Online
Retocando el archivo CSS incluido en la carpeta "\themes\bluelight\webapp\bluelight"
conseguimos una mejor visualización.
Retocando el archivo "forms.css" ubicado en el directorio "\hot-deploy\opentaps-
common\webapp\css".
11.12.2 - Desarrollos en reportes
Hemos modificado los archivos "OrderReportHeaderInfo.fo.ftl" y
"OrderReportBody.fo.ftl" "applications\order\webapp\ordermgr\order". Estos archivos
están en lenguaje XSL:FO y en Freemarker. Hemos hecho retoques en otros pdf's también.
Hemos modificado por ejemplo las propiedades de los márgenes como en este caso.
<fo:table border-spacing="3pt" margin-top="2cm">
Figura CLXXIII -
Formulario de acceso a
Opentaps
Figura CLXXII -
Formulario de acceso a
Opentaps modificado
Figura CLXXV - Cabecera en la
visualización en pdf de una orden Figura CLXXIV- Cabecera en la
visualización en pdf de una orden una vez
modificado el código XSL:FO
142 Parametrizaciones y configuraciones
143 Gestión Empresarial Online
12- Errores
Durante nuestro trabajo con la aplicación hemos encontrado que hay funcionalidades
básicas en algún módulo que no funcionan o podría ser que nuestro aprendizaje sea
incorrecto a la hora de ejecutarlas correctamente y queremos hablar de ellas.
• En el módulo de compras, el IVA a la hora de crear una orden de compra no se
aplica. En cambio si creamos una orden de compra desde el módulo de
participantes sí se aplica.
• Otros errores visuales en los formularios a rellenar o menús.
• Errores en los reportes en pdf, los contenidos se mezclan al no ser el inglés el
idioma escogido.
• En el gestor de contenido hay funcionalidades que no funcionan al 100% y hay
errores.
• Hay secciones en las que sólo se puede acceder mediante una función relacionada.
Por ejemplo para la aplicación contable del módulo de usuarios hay que acceder
haciendo clic en "Cuentas Financieras" disponible en la página principal de
cualquier usuario.
• Cuando cambian los temas visuales, cambian los menús en los módulos de usuarios
y catálogo. Esto hace que al cambiar de tema visual nos hagamos un lío.
144 Errores
145 Gestión Empresarial Online
13- Pruebas
Una vez llegado este punto, sólo nos quedará realizar pruebas en el prototipo conseguido.
Para eso testearemos la aplicación con algunos procesos de trabajo, adquiriendo en cada
caso los diferentes roles de los actores que participan en el caso de uso. Las pruebas las
realizaremos sobre los procesos de gestión de compra, gestión de venta, alta y búsqueda de
clientes que creemos que son los más importantes.
13.1 - Gestión de ventas
Cliente
Como clientes, añadiremos una cantidad de producto a nuestra cesta de compra virtual. En
este caso 20 unidades de cubos de absorbente SS04 de 20 Kg cada uno.
Figura CLXXVI - Carro virtual con SS04 añadido
El envío será realizará a la dirección:
Para: Mr. Víctor Sancho Coma
C/Astronauta Armstrong
Mataró
ES-B
08304
ESP
Utilizaremos el tipo de envío SpainShip Express y en pago seleccionaremos Cheque/Giro
bancario. Registraremos la orden, la cual podremos descargarla cuando queramos en PDF.
146 Pruebas
Si nos fijamos hay un estado para cada orden, en este caso "Creado", luego la empresa
decidirá si aprobar o no el pedido.
Figura CLXXVII - Confirmación de compra en la tienda virtual
El cliente recibirá un correo electrónico también con los detalles de la operación.
Gerente (Jordi)
El gerente entra en el sistema con su acceso personal (jordi). Se dirige a la aplicación CRM
donde en la sección de pedidos visualiza la nueva orden de pedido que ha comunicado este
cliente con la ID ORD_10090.
Figura CLXXVIII - Orden pendiente en módulo CRM
Visualiza el pedido y si todo es correcto aprueba la orden.
147 Gestión Empresarial Online
Figura CLXXIX - Aprobación del pedido una vez visualizado
Contable (Concha)
Entrará al sistema con su acceso personalizado, se dirigirá al módulo de participantes y
usuarios y una vez allí a la página de nuestra compañía (company). Desde ahí accederá al
gestor de pedidos y visualizará el pedido que ha sido aprobado.
Figura CLXXX - Orden pendiente en módulo de Participantes
Accederá al pedido y una vez comprobado que el pago lo hemos recibido en nuestra cuenta
bancaria, informará al sistema que el pago ha sido recibido.
Figura CLXXXI - Información de pago de la orden
148 Pruebas
Selecciona el importe y como hemos recibido el pago, y el pedido ya queda como pagado.
Figura CLXXXII - Información del pago recibido
Almacén
Daniel accederá al sistema desde el almacén con su acceso personal y entrará en su único
modulo "warehouse". Una vez allí se le informará que hay una nueva orden para enviar.
Figura CLXXXIII - Información resumen de las órdenes listas para enviar en el módulo de almacén
Haciendo clic encima, se dirigirá a la sección de transporte donde podrá empaquetar la
orden.
Figura CLXXXIV - Órdenes listas para empaquetar y enviar en el módulo de almacén
Figura CLXXXV - Empaquetado de la orden
149 Gestión Empresarial Online
Una vez esté empaquetada la orden, se pulsará el botón de terminado, generando una
factura, un albarán, un código de barras y enviando un email al cliente informándole que su
pedido ha sido servido.
Figura CLXXXVI - Orden empaquetada
Esta factura la podrá visualizar Concha desde el módulo de finanzas y controlar su estado.
También el cliente la podrá consultar siempre que quiera conectándose a su cuenta en la
tienda online y accediendo a la sección Historial de Compras.
13.2 - Gestión de compra
Contable (Concha)
Concha accederá al sistema mediante su acceso para dirigirse al módulo de compras. Una
vez allí, en la sección de órdenes, creará una orden de compra a nuestro proveedor de
absorbente pidiendo 3000kg de SS04 (300 cubos) y aprobará el pedido.
Figura CLXXXVII - Resumen de pedido de compra
150 Pruebas
Almacén
Una vez el material llegue al almacén, Antonio accederá al sistema con su acceso y se
dirigirá al módulo de almacén. En la sección de inventario clicará sobre el menú "Recibir
Órdenes de Compra". Allí seleccionará la orden que quiere recibir y el grupo de embalaje.
Figura CLXXXVIII - Recepción de producto comprado
Introducirá el número final de unidades recibidas y cerrará el pedido. Observaremos que el
producto ha sido correctamente recibido en el inventario.
Figura CLXXXIX - Artículos de inventario en el almacén
Concha desde el módulo de finanzas en la sección "pagables" procederá al pago de esta
mercancía al proveedor correcto.
151 Gestión Empresarial Online
13.3 - Alta y búsqueda de clientes
Cliente
El cliente accederá a la tienda online y efectuará su registro rellenando la información
necesaria. Luego editará su perfil con las características que crea necesarias.
Figura CXC - Registro de nuevo cliente en la tienda online
Ingeniero Químico (Bastian)
Bastian accederá al sistema con su acceso con la intención de buscar un contacto. En la
aplicación CRM se dirigirá a la sección de contactos y clicará "Buscar Contactos" en el
menú.
Figura CXCI - Búsqueda de contactos en módulo CRM
152 Pruebas
Observamos que nuestro cliente creado ya está introducido y con su información
disponible para los que la necesiten en la empresa. También se podrá acceder a su
información desde el módulo de participantes y usuarios.
153 Gestión Empresarial Online
14- Conclusiones
14.1 - Conclusiones sobre la aplicación
Después de todo este tiempo de estudio y práctica, podemos hablar con propiedad sobre
esta aplicación, sacando estas conclusiones.
Opentaps se trata de una aplicación magnífica, tanto en su filosofía de procesos de trabajo,
como por las capacidades que tiene y su adaptabilidad y flexibilidad gracias a su
arquitectura. Ofrece muchas ventajas a la hora de desarrollar o modificar código y es única
en sus prestaciones.
Por otro lado, es una aplicación que no está muy adaptada a una realidad española, con
traducciones a medias y forma fiscal americana. También se trata de una aplicación que
está en construcción y evolución en estos momentos y sus capacidades no funcionan al
100%, hay errores en su funcionamiento. Es gigante y con muchas partes aun sin acabar de
perfilar. A pesar de esto hay muchas otras funcionalidades que se ejecutan a la perfección y
se puede llegar a trabajar con la versión actual. Hay empresas existentes que la han
adaptado a su empresa. Hemos comprobado también que hoy en día las aplicaciones son
prácticamente en su totalidad configurables y los desarrollos a medida necesarios son
mínimos. Así creemos acertada la decisión de haber escogido adaptar un software en vez
de la creación de uno propio.
Nosotros con todo este trabajo hemos conseguido un prototipo que funciona y demostrado
que soluciona la problemática en muchos de los aspectos de los procesos de trabajo
actuales en la empresa. Adjuntamos un DVD con el caso práctico.
Creemos que ésta va a ser una aplicación que va a ofrecer mucho en el campo de la gestión
empresarial en un futuro no muy lejano, o eso esperamos.
154 Conclusiones
14.2 - Conclusiones personales
Personalmente estoy muy satisfecho, este proyecto creo que me ha aportado mucho en
experiencia y conocimientos.
La elaboración del proyecto ha sido muy laboriosa, pero entretenida, ya que tenía mucha
motivación al hacerlo. Le he tenido que dedicar mucho tiempo, sobretodo hasta pasar la
curva de aprendizaje, que ha sido un factor muy importante en este proyecto, de las nuevas
tecnologías y marcos de trabajo.
Muchas de las tecnologías que he estudiado y trabajado con ellas no había ni oído hablar
de ellas, como son las arquitecturas SOA, freemarker o el mismo Opentaps con su motor
de entidades. Otras sí pero no las había ni visto y menos manejado como PostgreSQL o
Eclipse. Aunque también he de decir que ha sido también una elección personal hacerlo de
esta manera, ya que con un camino difícil siempre se aprende más.
Estoy muy contento por el nivel de conocimiento y experiencia adquirido de las diferentes
tecnologías. Además de la cantidad de conocimientos adquiridos, pienso que son muy
útiles en la actualidad y con mucha proyección.
Creo que la aplicación que he conseguido en su mayor medida a manejar y desarrollar, es
una herramienta que llegará lejos y será conocida en el panorama de las tecnologías
empresariales y eso hace que esté aún mucho más satisfecho y motivado para seguir
avanzando en su estudio y desarrollo.
Los objetivos principales creo que los he cumplido y eso hace que uno esté en definitiva,
contento por el trabajo realizado.
155 Gestión Empresarial Online
15- Trabajo futuro
Una vez realizado todo este trabajo, queremos comentar el mucho trabajo que queda por
hacer. Se puede seguir trabajando en dirección a mejorar la aplicación, consiguiendo la
funcionalidad 100% de capacidades que aún no están plenamente desarrolladas o mejorar
las existentes, y realizar una mejor adaptabilidad a un entorno español. Tareas como las
que exponemos pueden ser muy importantes para el avance en esta dirección:
• Adaptar el módulo de Finanzas a una realidad contable española con sus
características.
• Realizar una traducción completa y correcta de todo el sistema.
• Trabajar en la conexión de Joomla o Magento y Opentaps.
• Corregir y mejorar aspectos visuales de la aplicación, consiguiendo además una
interfaz más amigable.
• Conseguir el 100% de funcionalidad de sus capacidades.
156 Trabajo futuro
157 Gestión Empresarial Online
16- Glosario
"Requires 1099": El formulario 1099 es un informe de pagos en el cual un pagador
reporta la cantidad que te han pagado por diversas rentas que no son salarios (por ejemplo
interés).
EFT (Electronic Funds Transfer/Transferencia Bancaria Electrónica): Es un programa
de transferencia electrónica que permite efectuar la transferencia de dinero de una cuenta
bancaria directamente a otra sin ningún tipo de papel o moneda, sino electrónicamente.
eBay: Un sitio web destinado a la subasta de productos a través de Internet
(www.ebay.es). Es uno de los pioneros en este tipo de transacciones, fundado en el año
1995. Es la mayor red de subastas por Internet y líder en este mercado. Cualquier persona
puede registrarse en la página web de eBay y comprar o vender cualquiera de los artículos
disponibles, agrupados en un sistema de categorías.
Amazon: Amazon.com es una compañía estadounidense de comercio electrónico. Fue una
de las primeras grandes compañías en vender bienes a través de Internet.
PostgreSQL: Un sistema de gestión de base de datos relacional orientada a objetos de
código libre, publicado bajo la licencia BSD. El proyecto está dirigido por una comunidad
de desarrolladores y organizaciones comerciales que trabajan en su desarrollo.
Eclipse: Un entorno de desarrollo integrado de código abierto multiplataforma para
desarrollar "Aplicaciones de Cliente Enriquecido". Es utilizado para desarrollar entornos
de desarrollo integrados (del inglés IDE), como el IDE de Java llamado Java Development
Toolkit (JDT) y el compilador (ECJ) que se entrega como parte de Eclipse (y que son
usados también para desarrollar el mismo Eclipse).
Autorize.net: Authorize.Net es un proveedor de servicio de pago que permite a los
comerciantes a aceptar tarjetas de crédito y cheques electrónicos a través de su sitio web y
sobre una dirección IP (Protocolo de Internet) de conexión.
eCheck.NET: Con el uso de eCheck.Net, los comerciantes pueden aceptar y procesar los
pagos y las cuentas bancarias de empresas directamente desde su sitio web o a través de la
Terminal virtual Authorize.Net.
158 Glosario
PayPal: Es una empresa estadounidense perteneciente al sector del comercio electrónico por Internet que permite la transferencia de dinero entre usuarios que tengan correo electrónico. PayPal también procesa peticiones de pago en comercio electrónico y otros servicios webs, por los que cobra un porcentaje.
WorldPay: RBS WorldPay es una división de la Royal Bank of Scotland. It provides
payment services for mail order and internet retailers, as well as point of sale transactions.
Proporciona servicios de pago por correo, así como transacciones en puntos de venta. .
RBS WorldPay se inició como un proveedor de pago electrónico, pero se ha extendido a
pedido por correo / teléfono, pagos desatendidos y manejo de pagos seguros por Internet a
través de fusiones y adquisiciones de otras empresa.
MySQL: Sistema de gestión de base de datos (SGBD) relacional, multihilo y multiusuario.
Pentaho: Herramientas de inteligencia de negocios es un tipo de software de aplicaciones
diseñado para colaborar con la inteligencia de negocios (BI) en los procesos de las
organizaciones. Específicamente se trata de herramientas que asisten el análisis y la
presentación de los datos.
JasperReports: Es una herramienta de creación de informes Java open source que tiene la
habilidad de entregar contenido enriquecido en el monitor, a la impresora o a ficheros PDF,
HTML, XLS, CSV y XML.
iReports: JasperReports se usa comúnmente con iReport, un front-end gráfico open source para la edición de informes.
159 Gestión Empresarial Online
17- Bibliografía
[1] http://www.dolibarr.org/ (Enero 2010)
[2] http://www.openbravo.com/ (Enero 2010)
[3] http://www.opentaps.org (Enero 2010)
[4] http://www.aplicacionesempresariales.com/opentaps-solucion-erp-y-crm-en-una-
sola-aplicacion.html (Enero 2010)
[5] http://ofbiz.apache.org/ (Enero 2010)
[6] http://ant.apache.org/manual/index.html (Enero 2010)
[7] http://www.wikipedia.org/ (Enero 2010)
[8] http://www.w3schools.com/xslfo/default.asp (Enero 2010)
[9] http://ofbiz.apache.org/docs/minilang.html (Enero 2010)
[10] http://www.opentaps.org/docs/index.php/Opentaps_Technical_Reference
(Enero 2010)
[11] Microsoft, SOA in the Real World, ARC.
[12] http://www.adictosaltrabajo.com/tutoriales/pdfs/soa.pdf (Enero 2010)
[13] Jonathon Wong y Rupert Howell, Apache OFBiz Development: The Beginner's
Tutorial. Packt Publishing. (Enero 2010)
[14] http://www.freemarker.org/ (Enero 2010)
[15] http://www.javahispano.org/contenidos/es/tutorial_de_freemarker/ (Enero 2010)
[16] http://sourceforge.net/projects/opentaps/ (Enero 2010)
[17] http://www.opensourcestrategies.com/ofbiz/tutorials.php (Enero 2010)
[18] http://www.opentaps.org/javadocs/ (Enero 2010)
[19] http://www.opentaps.org/docs/index.php/Opentaps_Users_Manual (Enero 2010)
160 Bibliografía
161 Gestión Empresarial Online
Anexo I - Instalación Opentaps
Procederemos a la instalación de Opentaps en el PC con PostgreSQL:
Primeros Pasos
Como primer paso, hemos de comprobar que la máquina virtual Java esta correctamente
instalada. Nuestra versión (Opentaps 1.4 -preview2) , trabaja con Java 5 o 6. Debemos
utilizar el SDK de Java de Sun no el suplido por Windows. Si no la tenemos instalada, la
podemos descargar de la página de Sun.
Nosotros utilizaremos Java Runtime Environment (JRE) 1.6.
Figura CXCII - Pantalla acerca de Java 6
El siguiente paso es descargar el software Opentaps ERP+CRM comprimido en un arhivo
.zip de la página sourgeforge.net . Creamos una carpeta con el nombre Opentaps, en la
unidad C:\. Esto es así porque si utilizamos rutas con directorios cuyos nombres están
escritos con espacios podríamos tener problemas.
162 Anexo I - Instalación Opentaps
Figura CXCIII - Pantalla de descarga de sourceforge
Vemos la página sourgeforge,net donde podemos descargar el código de Opentaps. El
paquete ocupa 372 MB y al descomprimirlo nos queda un directorio que ocupa 1,03GB y
estructurado de la siguiente forma:
Figura CXCIV - Directorio con los archivos descomprimidos
163 Gestión Empresarial Online
Instalación y ejecución de PostgreSQL 8.4
Para la base de datos de Opentaps utilizaremos PostgreSQL 8.4 y para eso, hemos de
instalar-lo y configurarlo. Haremos un vistazo rápido a la instalación de este apartado con
las indicaciones adecuadas y veremos más detalladamente su configuración.
Para la instalación, descargaremos desde el sitio de descargas de la página postgresql.org la
aplicación. En Windows, PostgreSQL se instala como un servicio y crea un usuario por
defecto con el nombre "postgres" al que le podemos asignar la contraseña que queramos.
Este usuario se podrá utilizar para gestionar las bases de datos y los nuevos usuarios.
Con la instalación en windows de PostgreSQL, nos viene incluida la aplicación pgAdmin
III. Ésta, esta herramienta de administración gráfica de PostrgreSQL. Para crear la base de
datos y los usuarios necesarios, ejecutamos pgAdmin III y seguiremos los siguientes pasos:
1. Creamos un servidor nuevo con la dirección "localhost", puerto 5432, base de
datos "template1", nombre de usuario "postgres" y la contraseña que creó para la
PostgreSQL (no operativo ) del sistema "postgres" usuario antes.
Figura CXCV - Características del nuevo servidor
164 Anexo I - Instalación Opentaps
2. Hacemos clic derecho sobre el nuevo servidor y creamos un nuevo "rol de login"
(usuario), con el nombre "opentaps", con una contraseña que decidamos y con la
opcion "Puede crear objetos de Base de Datos" activada en la pestaña de
"Privilegios de Rol".
Figura CXCVI - Nuevo usuario opentaps
3. A continuación, hacemos clic derecho y seleccionamos "Nueva base de datos" y
creamos una base de datos llamada "opentaps", cuyo propietario es el usuario
"opentaps".
Figura CXCVII - Características de la nueva base de datos
165 Gestión Empresarial Online
Ahora ya tenemos listo y configurado PostgreSQL para la implantación de Opentaps. A
continuación vamos a ver como configurar Opentaps para que trabaje con PostgreSQL y la
base de datos que hemos creado.
Configurar Opentaps con PostgreSQL
En el directorio "framework/entity/lib/jdbc" de Opentaps, está incluido un controlador
JDBC para PostgreSQL. Este controlador es compatible con la mayoria de versiones
PostgreSQL actuales. En el caso de existir una version mejorada, la podríamos descargar
del sitio de descargas PostgreSQL y substituir en el directorio nombrado anteriormente.
Opentaps por defecto viene configurado para trabajar con una base de datos Derby ya
integrada. Para indicar a Opentaps que trabaje con PostgreSQL e indicarle en que base de
datos, hemos de hacer unas modificaciones en el archivo
framework/entity/config/entityengine.xml, siguendo estos pasos:
1. Cambiar todos los atributos "datasource-name" en la entidad <delegator
name="default"...> del valor predeterminado "localderby" a "localpostgres".
Figura CXCVIII - Cabecera del archivo XML para configuración del tipo de base de datos
2. Cambiar (más abajo) el "jdbc-uri" en la entidad <datasource
name="localpostgres"...> por "jdbc:postgresql://127.0.0.1/opentaps". Donde
"/opentaps" será el nombre que le hemos dado a nuestra base de datos.
3. Cambiar bajo la misma entidad el "jdbc-username" a "opentaps"
4. Cambiar "jdbc-password" por la contraseña que hemos escogido anteriormente.
166 Anexo I - Instalación Opentaps
Figura CXCIX - Parte XML para la configuración de la base de datos postgreSQL
Ahora Opentaps ya está correctamente configurado para trabajar con PostgreSQL instalado
en nuestro equipo.
Cargar datos y comprobar instalación
Lo que haremos a continuación, es dar la orden a Opentaps para que cree las tablas y datos
necesarios en la base de datos utilizando Apache ANT.
Para ello, accederemos al directorio C:\opentaps desde símbolo del sistema de Windows y
ejecutaremos la sentencia "ant run-install". Esto hará que Opentaps cree en nuestra base de
datos todas las tablas necesarias incluidos datos de ejemplo. Hemos preferido instalar datos
de ejemplo porque nos pueden ayudar a entender mejor el sistema. El proceso puede durar
unos 10 min.
Hay también la opción de instalar Opentaps sin los datos de ejemplo, mediante la sentencia
"ant run-install-seed", pero antes habríamos de configurar nuestro acceso como
administrador y diferentes informaciones sobre nuestra organización en los archivos xml
en el directorio "\hot-deploy\mycompany\data".
Observamos que la base de datos se ha creado satisfactoriamente junto con sus datos.
167 Gestión Empresarial Online
Figura CC - Tablas creadas en la base de datos opentaps, después de la instalación
Ejecución de Opentaps
Ahora ya podemos ejecutar Opentaps. Para eso hemos de ejecutar la sentencia "startofbiz"
en el símbolo del sistema:
Figura CCI - Comandos en MS-DOS para la ejecución de Opentaps
Para comprobar la correcta ejecución, vamos a acceder a Opentaps. Para ello hemos de
poner en la barra de navegación de un navegador web "http://localhost:8080/opentaps".
Esta dirección siempre será la misma para acceder a la aplicación, donde "localhost" se
traducirá como la dirección del servidor, en este caso local.
168 Anexo I - Instalación Opentaps
Figura CCII - Pagina de acceso a Opentaps
Vemos que se nos muestra la página principal. Lo hemos conseguido!
Posibles errores y soluciones
Aquí expondremos las dificultades o errores que nos hemos encontrado y la solución.
Error en la ruta especificada a Java
En el primer caso, vemos que al ejecutar la sentencia, el sistema no encuentra la ruta a "\bin\java".
Figura CCIII - Visualizacion en MS-DOS del error en la ruta java especificada
Para solucionar esto, hemos de crear una variable de entorno JAVA_HOME, indicando el directorio "jdk" de nuestro equipo. En Panel de Control -> Sistema -> Configuración Avanzada del Sistema -> Variables de entorno.
169 Gestión Empresarial Online
Figura CCIV - Variable JAVA_HOME creada en el sistema
No se puede crear máquina virtual Java
Este error ocurre porque los parámetros para controlar la memoria de la máquina virtual
Java son muy altos. Estos parámetros permiten controlar el tamaño inicial y el tamaño
máximo que puede tomar la máquina virtual. En este caso los valores altos por defecto han
provocado que surja este error.
-Xms512m: Tamaño de inicio de la máquina virtual a 512 Mb.
-Xmx1536m: Tamaño máximo de la máquina virtual de Java 1536Mb.
-XX:MaxPermSize=128m: Tamaño máximo de la memoria de tipo PermGen a 1024Mb.
Figura CCV - Visualización en MS-DOS del error de memoria java
Este error puede ocurrir en la ejecución del programa o por ejemplo en la instalación de la
base de datos. Por eso hay 2 soluciones para cada caso.
En el caso de la ejecución, hay que modificar estos valores en el archivo "startofbiz.bat".
Lo abrimos con el bloc de notas, y modificamos los valores numéricos. En nuestro caso:
Figura CCVI - Configuración de parámetros java en startofbiz.bat para la correcta ejecución
170 Anexo I - Instalación Opentaps
En el caso que ocurra en la sentencia ant, hay que modificarlos en el archivo "build.xml",
por ejemplo de esta forma:
Figura CCVII - Configuración de parámetros java en build.xml para la correcta ejecución de apache ant
Estos archivos, "build.xml" y "startofbiz.bat" se encuentran en el directorio principal de
Opentaps "C: \opentaps"
.
Figura CCVIII - Archivos en directorio principal de Opentaps
171 Gestión Empresarial Online
Anexo II - Contenido de DVD del caso práctico
1. Archivos memoria.pdf y memoria.doc con la documentación del proyecto.
2. Carpeta de aplicaciones:
• Archivo opentaps.rar con la aplicación Opentaps.
• Archivo analytics.rar con la aplicación analytics.
3. Carpeta con los scripts necesarios para la BBDD.
• Archivo "opentaps.backup" para la restauración en PostgreSQL.
• Carpeta con archivos XML de cada tabla para su importación desde
Opentaps si es necesario.
• Carpeta con BBDD Opentaps analytics.
4. Software necesario:
• Eclipse
• PostgresSQL 8.4.1
• Java SE Runtime Environment 6u18
• MySQL 5.1
5. Documentación de estudio adicional:
• Jonathon Wong y Rupert Howell, Apache OFBiz Development: The
Beginner's Tutorial. Packt Publishing.
• Microsoft, SOA in the Real World, ARC.