4.3 Requerimientos generales



4.3.1 Seguridad

Compiere provee una infraestructura de seguridad que soporta seguridad por función (o sea basada en roles de usuarios que controla el acceso a ventanas, reportes y procesos) y por datos, basada en el cliente y la organización. También es posible asegurar tablas, columnas y hasta registros individuales que impidan a los usuarios crear reportes o exportar ciertos datos. Y las claves en los clientes se almacenan en forma encriptada.



Seguridad

Total

Seguridad por módulo

Total

Seguridad por nivel de acceso

Total

Usuarios oficiales de seguridad

Total

Usuarios de auditoría interna

Total

Manejo de roles

Total



Anulación

Total

Anulación total

Total

Anulación con registro de 'comprobante anulado'

Total

Anulación mediante ingreso de comprobante opuesto

Total



Controles de carga

Total

Validación por información del sistema

Total

Validación por información ya ingresada

Total

Validación de no duplicación

Total



Contingencias

No implementado

Facturar sin conexión con sistema principal

No implementado

Sincronización de datos

Total

Mantenimiento de datos de contingencia

No implementado


Compiere cumple 15 de los 18 requerimientos establecidos para la seguridad. Los 3 requerimientos no cumplidos son los vinculados a un sistema de contingencia. Esta funcionalidad no está prevista por el sistema, ya que es tolerante a fallos, pero en caso de una caída de la línea, fallo de la corriente, incendio u otro detalle, será necesario contar con procedimientos y sistemas adecuados.



4.3.2 Robustez

En general las aplicaciones están diseñadas para asumir que todo funciona bien y todos los datos son ingresados correctamente y son consistentes. En caso de fallo hay que buscar la causa e identificar los daños.

En contraste Compiere está diseñado de modo de ser tolerante a fallos, cada transacción puede ser repetida y regenerada, la mayoría de los fallos son identificados por el sistema y el usuario puede intentar corregir el problema y si la recuperación no es posible, el error es aislado del resto del sistema que continúa trabajando. Esto es posible debido al desacoplamiento de las transacciones.

Cada transacción realiza solamente una tarea, por lo que el impacto de un fallo es aislado y fácil de identificar. La comunicación entre transacciones individuales se hace mediante mensajes, permitiendo como se dijo, ejecutar las transacciones en lote de forma asincrónica.

El sistema controla regularmente si una transacción está completa. Si no está completa y no es consistente debido a un fallo del sistema, el administrador y el usuario son informados.

A medida que las aplicaciones se vuelven más complejas, la probabilidad de errores crece, pero de este modo Compiere provee un marco de validación y en caso de que algo falle, aísla el problema asegurando alta disponibilidad de las funciones principales.



4.3.3 Performance

La performance de una ERP está determinada por múltiples factores, además del software. Por ejemplo, vinculado al DBMS, al ancho de banda de la línea de comunicación, etc.

A este respecto, las mejoras de performance deberán fundarse en la forma de acceder al DBMS, y en particular al abordaje que mencionamos arriba sobre desacoplamiento de consultas. Por ejemplo, la subestructura de la transacción 'venta en efectivo al mostrador de un producto' sería:

Cuando se hace el commit, solamente dos subtransacciones son realizadas, la de material y la de facturación. Esto asegura que rápidamente el usuario pueda continuar ingresando las siguiente transacción. Las sub-transacciones restantes son planificadas (y opcionalmente corridas en lote) y son ejecutadas y corridas en paralelo. Esto permite utilizar reglas de balance de carga para asegurar tiempos de actualizaciones rápidos para el usuario.

En el caso de las ventas al público, con puntos de venta, es indispensable que los tiempos de respuesta entre que se ingresa una factura y se procesa; otro tanto vale para quienes negocian con proveedores, que deberán tomar decisiones muy rápidamente.



4.3.4 Escalabilidad

Determinar si cuando la empresa crece, la organización cambia o se produce una fusión o escisión, el sistema puede adaptarse o deberá cambiarlo.

La escalabilidad no es un problema en absoluto para el software, ya que Compiere está diseñado para operar sobre diversas organizaciones, e incluso como ASP. El problema del crecimiento o el incremento de la complejidad de la organización está resuelto desde el diseño.

Compiere está diseñado para permitir complejas estructuras de cooperación entre empresas (socios de negocios, como ser distribuidores) lo que simplifica la interacción entre empresas a través de centralizar la información que se desea compartir (y mantener privada la que no).

También permite manejar, para cada empresa, organizaciones con estructuras jerárquicas. Esto lo hace mediante una estructura en tres niveles: sistema, cliente y jerarquía organizacional. El nivel del sistema corresponde a la infraestructura, el nivel de cliente define la información y estructura contable, productos, etc. de cada cliente (p.ej. de cada empresa 'socia' o federada) y el nivel de la jerarquía organizacional es al nivel al que se realizan las transacciones. Las organizaciones pueden tener sus propios datos e información que no quieran compartir, y a su vez estar estructuradas en forma jerárquica (p.ej. sucursales).

Además, la seguridad está garantizada porque los datos en cada nivel solamente pueden ser ingresados o modificados si el rol lo permite. Se pueden ver y usar datos de niveles superiores, pero no cambiarlos. Por ejemplo, con un usuario para el nivel del sistema se puede acceder y modificar datos del sistema, pero no acceder o ver datos de los niveles de cliente u organización. Con un usuario para el nivel de organización se puede acceder a los datos del sistema, de los clientes, pero no modificarlos. Un usuario puede tener acceso a varios niveles.

De esta manera es fácil reorganizar una estructura organizacional o aún cuando una empresa se fusiona.



4.3.5 Flexibilidad

Determinar si es capaz de satisfacer las necesidades de empresas de diversos rubros.

Compiere es una ERP horizontal1, esta característica permite resolver las necesidades de empresas de diversos rubros. El sistema es completamente configurable, desde los planes de cuenta hasta los workflows de las órdenes, incluyendo las reglas de contabilidad automática y los impuestos.

Permite transacciones entre diversas divisas, p.ej. hacer ventas en otras monedas distintas a las que se usan para contabilizar. También se puede revaluar las transacciones y tener cuentas de banco en otras monedas. Para reportes: Permite traducir las transacciones o los balances a diversas monedas para poder hacer reportes. Esto es útil cuando los socios de negocios están en otros países.

Permite llevar la contabilidad en varias monedas en paralelo. Esto es especialmente útil en países con monedas inestables (como es el caso de Uruguay).

Compiere soporta todos los aspectos de trabajar con múltiples monedas (desde listas de precios en la moneda deseada, hasta facturar en la moneda preferida por el cliente) sin necesidad de copiar o replicar las transacciones. Una transacción puede tener una o varias monedas. Todas las monedas están al mismo nivel, no hay una moneda primaria: esto permite agregar, cambiar o detener operativas en distintas monedas sin dificultad. Esta funcionalidad no es menor, piénsese por ejemplo en la liberación del tipo de cambio en 2002.

Esta funcionalidad además es importante por dos motivos, el turismo y el comercio internacional.

Compiere soporta impuestos a las ventas. Además permite impuestos compuestos (como en Canadá, o en Uruguay con el COFIS). Hay un motor de impuestos que determina el tipo correcto de impuestos, el monto y la fecha basado en la fecha de la transacción, el producto (y su categoría), el origen y destino del envío y el origen y el destino de la factura.

Las entradas en contabilidad se generan automáticamente basadas en reglas. Aunque también está permitido ingresar entradas adicionales en forma manual.

El objetivo es generar todas los asientos contables, por lo tanto todas las cuentas deben estar predefinidas. Por ejemplo, si se vende un producto, se usa la cuenta correspondiente a la rentabilidad del producto, la cual debe estar definida. Esto permite que se definan las cuentas una sola vez y olvidarse de ellas cuando se ingresan transacciones.

Para facilitar el ingreso de datos para las cuentas, todas las cuentas tienen asientos predefinidos en el esquema contable. Los asientos por defecto para productos provienen de la categoría del producto, los asientos por defecto para los socios de negocio provienen de su grupo, etc.

Las reglas para la contabilidad determinan basadas en el contexto de la transacción que cuentas y montos usar.

Por lo tanto, Compiere no sólo no es específico de un solo rubro sino que permite incorporar las formas de operar y hacer negocios de empresas de un mismo rubro, dentro de un marco de buenas prácticas. Si existe un punto en contra es la ausencia de un módulo de activo fijo y de mantenimiento de planta, especialmente útiles en el caso de fábricas, o la ausencia de un módulo de salarios y recursos humanos.



4.3.6 Extensibilidad

Se puede agregar o modificar funcionalidades de manera sencilla, mediante herramientas de productividad. Compiere provee funcionalidad de scripting a través de BeanShell para extender la funcionalidad del producto. Las ventajas que tiene son que ocupa poca memoria, que emplea la sintaxis de Java y que se puede acceder fácilmente a las clases Java de Compiere y a los datos. Para extender el sistema más allá de esto, se cuenta con APIs bien documentadas.

Así mismo, Compiere incluye la funcionalidad de reportes inteligentes que permiten generar reportes automáticamente en el formato que desee el usuario. Para la mayoría de las aplicaciones, hacer reportes es un agregado o una aplicación separada. En el caso de Compiere, se basa en el diccionario de datos, lo que permite acceder a cualquier nivel de granularidad de entidades siempre y cuando las definiciones de acceso y seguridad lo permitan.

Toda la salida de los reportes puede verse en pantalla antes de enviarla a una impresora o generar archivos en diferentes formatos (p.ej. HTML, XML, Excel, Word, PDF, etc.). También se puede acceder a todas las entidades referenciadas (p.ej. a información de un artículo que aparece en una línea de una factura, o a las ordenes de compra que están relacionadas con ese artículo).

Todas las reglas de seguridad son aplicadas automáticamente. Esto incluye control de acceso a tablas, columnas e incluso registros (p.ej. No incluir un artículo en particular dentro del reporte). También se puede evitar hacer reportes sobre ciertos datos o evitar que se impriman o exporten.

Compiere tiene cuatro tipos de reportes: listados, formularios, reportes financieros, declaración de cuentas.

Los listados están disponibles en todas las ventanas y tienen parámetros de selección predefinidos que pueden modificarse. Los formularios (p.ej. facturas, permite cambiar la disposición de los formatos de impresión); Compiere soporta formularios múltiples (p.ej. diferentes tipos de formato de factura para una organización, para un socio de negocios específico, o para un tipo de factura específico). Los reportes financieros incluyen modelos con varios parámetros de selección. Una declaración de cuentas para un período o fecha lista todas las transacciones de la cuenta o un segmento de esa cuenta.

Compiere diferencia la 'vista' del 'modelo'. El modelo (los datos) los provee Compiere y cada usuario puede elegir como desplegar, sumarizar y ordenar esos datos. Compiere permite definir el reporte tanto a nivel de sistema, cliente, organización y usuario.

Está planeado poder incluir gráficos de barras, líneas y circulares.

El idioma del reporte está basado en el idioma del usuario, cada usuario puede, por lo tanto tener un diferente idioma. La estructura del reporte se copia de los niveles inferiores (sistema, cliente, organización).

Se puede generar fácilmente un reporte de granularidad más fina automáticamente a partir de un reporte basado en una entidad (drill-down). Por ejemplo un reporte que sumariza algún dato mensualmente se usa para generar un reporte de las transacciones originales.

También se puede crear un reporte basado en una entidad específica (drill-across). Por ejemplo, en un listado de productos, elijo un producto y después listo las líneas de los pedidos o de las facturas donde ese producto aparece.

Si estas funcionalidades no fueran suficientes (p.ej. no incluye gráficos) se pueden exportar los datos a una planilla donde embellecerlos. También se puede usar una herramienta para hacer reportes, p.ej. Crystal Reports, aunque difícilmente se tenga la flexibilidad, granularidad y seguridad que se tiene con las facilidades de Compiere.



4.3.7 Integración

Se destaca que la integración entre los módulos2 es completa desde el punto de partida: la visión de diseño de Compiere está basada en procesos de negocios ya que estos atraviesan los sectores funcionales, y de esta forma se puede optimizar la operativa de toda la empresa en lugar de la de un sector en detrimento (potencialmente) de los otros.

La integración con los DBMS se hace a través de un servidor de aplicaciones basado en estándares y tecnologías abiertas (p.ej. JBOSS accediendo vía JDBC). Hasta recientemente, Compiere solamente funcionaba con el DBMS de Oracle, y la integración era perfecta ya que la experiencia de los desarrolladores estaba fundada sobre dicho DBMS, empleando características como PL/SQL, stored procedures y triggers. En este caso la integración implicaba un grado de acoplamiento indeseable, que se está revirtiendo ya que Compiere va en camino a la total independencia de DBMS: p.ej. la última versión ha sustituido el código PL/SQL por código Java.

Por último, la integración con herramientas de productividad es muy alta: Compiere puede exportar todos los datos en reportes a los siguientes formatos: Excel, HTML, XML, Texto, PDF, PS, Word, y hasta a Cubos OLAP. Se observa que no se pueden exportar datos directamente a formato de OpenOffice.org.

En cuanto a importar datos, Compiere es excelente. Compiere provee tablas de interfaz para productos, socios de negocios, ordenes, facturas, stock, etc. Se puede cargar la información directamente (mediante SQL) o vía el Cargador de Datos de Compiere, que extrae datos de archivos de texto plano (p.ej. separado por comas), o en XML.

El proceso consiste en asociar cada elemento a importar con una columna de una tabla, después se verifica el formato y se cargan los datos. Compiere puede, por defecto, importar los siguientes datos: productos y precios, socios de negocios, ordenes, facturas, confirmación de recibos, pagos, documentos bancarios, planes de cuenta, conjuntos de líneas de reportes financieros, inventario físico, diarios del libro mayor, tasas de cambio.

La herramienta permite visualizar los datos a ser importados para poder corregirlos de ser necesario. El proceso de importar los datos verifica la correctitud de éstos antes de cargarlos en las tablas.

Esta funcionalidad es especialmente útil en el caso de migrar datos de otro sistema, así como convertir datos (p.ej. La lista de precios de un proveedor) al esquema de la empresa.



4.3.8 Interoperabilidad


Compiere usa estándares abiertos y tecnologías abiertas y muy populares (Java, Apache, Tomcat, JBOSS, J2EE) con APIs bien documentadas para la extensión del sistema, lo cual simplifica la construcción de interfaces entre éste y otros sistemas, exportar sus datos, exportar su funcionalidad para cooperar a nivel semántico, etc.



4.3.9 Usabilidad

Compiere usa un diccionario de datos central, un repositorio de información, que contiene meta-datos. Este repositorio sabe como acceder a los datos y como éstos se relacionan. Contiene definiciones de entidades (tipo, validación, etc.) y como se despliega esa información (etiqueta en pantallas y reportes, ayudas, posición relativas a otros campos) y reglas para mostrarse (por ejemplo reglas de acceso y seguridad).

Tanto la interfaz de usuario del cliente Java como las pantallas HTML son generadas en tiempo de ejecución basadas en el diccionario de aplicaciones. El resultado es una interfaz de usuario consistente, que permite a los usuarios navegar rápidamente en áreas poco familiares de la aplicación.

Este método de generar una interfaz de usuario permite un desarrollo más rápido y el sistema resultado es mucho más estable comparado con aplicaciones de otro tipo.

La interfaz del cliente Java es mejor porque utiliza el poder del PC y es preferible en situaciones en que es importante la navegación rápida. En cambio la interfaz del cliente HTML permite usar la aplicación desde cualquier máquina con un navegador web.

El diccionario de datos (ADD) sabe sobre estructura y dependencias. Esto permite que el usuario con el acceso adecuado pueda acceder a la ventana donde pueda ingresar o actualizar datos. Por ejemplo, los usuarios pueden ingresar un nuevo cliente o actualizar la información de un cliente existente mientras está entrando una orden de venta sin abandonar la ventana original.

El diccionario de datos permite que el usuario pueda acceder rápidamente a la información, cuando el usuario necesita más información para tomar una decisión. Por ejemplo, si hay que ingresar información extra sobre una empresa cliente, se invoca la funcionalidad Info que despliega rápidamente información sobre la empresa: dirección, límite de crédito, etc. (o para productos, que despliega precios, margen y disponibilidad).

También permite el filtrado de resultados, a saber, el ingreso de criterios para reducir el número de registros en una ventana. Los resultados pueden ser ordenados.

El usuario también puede adecuar la disposición de los elementos de una pantalla para una situación o cliente específico.

Existe también un plugin (Looks) que es una extensión que permite modificar los colores y el aspecto de las ventanas, pudiendo agregar texturas e imágenes de fondo. Looks incluye utilidades para administrar estos cambios a nivel del usuario individual. Y además permite ver que aspecto tendría una configuración de colores para un daltónico.



4.3.10 Internacional

Compiere puede ser utilizado por empresas con filiales en distintos países, debido a que está diseñado para operar con múltiples monedas, múltiples impuestos, y múltiples idiomas. Tanto el operar con múltiples monedas como con múltiples impuestos y reglamentaciones contables se abordó en la sección 4.3.5. Completamos el punto con la descripción de la funcionalidad de múltiples idiomas.

Compiere permite traducir todos los elementos, que usuarios diferentes puedan tener en sus pantallas y reportes en su propio idioma e imprimir documentos en el formato y lenguaje del cliente o del proveedor.

Además, se pueden crear documentos en los idiomas de los clientes y proveedores. Muy pocas aplicaciones permiten esto porque requiere que se impriman en el idioma correcto tanto los nombres de los campos como diferentes formatos de direcciones, descripciones de productos, etc.

Como todas las traducciones están basadas en el diccionario de datos, son mucho más consistentes. Desafortunadamente, los paquetes de idiomas son uno de los productos Comerciales que ofrece la empresa ComPier.



1no aborda especificidades de ningún rubro empresarial

2No confundir integración con acoplamiento. El acoplamiento es bajo debido a que el sistema está diseñado usando tecnología orientada a objetos; de hecho los antecedentes de este software y las primeras versiones estaban hechas en Smalltalk.

Estudio del Open/Free (GNU/Linux) como plataforma de servicios de red en entornos empresariales
Daniel Caraballo - Mario Madera - Marcelo Odin
Tutor: Ariel Sabiguero Yawelak
2004 - 2005.