miércoles, 21 de junio de 2006

Entendiendo un ERP

Una completa definición de ERP y/o sistemas de planificación de recursos y a mi entender bastante buena, se puede ver en Wikipedia, otro más aplio en la página web de SIC Desarrollo. Básicamente consiste en una aplicación que aglutina la gestión de todas las funcionalidades de una organización de forma centralizada y homogénea. Las denominadas "Suites de Gestión" no se consideran ERP debido a que, aunque entre sus aplicaciones independientes el traspaso de datos suele ser automático, en realidad los datos están duplicados, o no están aglutinados en torno a una única base de datos. Una característica importante de cualquier herramienta ERP es que debe poder ser personalizable, es decir, adaptable al "modus operandi" de la empresa que estemos tratando. Por tanto debe disponer de dos interfaces, uno para la personalización y otro (el resultante de la personalización) para el cliente. Hay tres características que distinguen a un ERP:
  1. Son sistemas integrales,
  2. son sistemas modulares
  3. y adaptables.
Términos muy relacionados con ERP son CRM (gestión de relaciones con los clientes) y PM (gestión de proyectos). Un completo y detallado artículo que recomiendo se puede encontrar en: Planeación de recursos empresariales (ERP).

Los objetivos principales de los sistemas ERP son:
  1. Optimización de los procesos empresariales.
  2. Acceso a información confiable, precisa y oportuna.
  3. La posibilidad de compartir información entre todos los componentes de la organización.
  4. Eliminación de datos y operaciones innecesarias.
  5. Reducción de tiempos y de los costes de los procesos.
El propósito fundamental de un ERP es otorgar apoyo a los clientes del negocio, tiempos rápidos de respuesta a sus problemas así como un eficiente manejo de información que permita la toma oportuna de decisiones y disminución de los costos totales de operación.

Las principales cuestiones que debe resolver son:
  • Diccionario de datos: Con este módulo debemos gestionar la base de datos del ERP a nivel de tablas. También se utiliza en la personalización de la solución a la organización.
  • Diccionario de reglas: Es el módulo que define y determina los papeles en contreto que definien a la organización donde está aplicado el ERP. Debe contener los datos principales de la organización, reglas, roles de los usuarios y a los propios usuarios y sus permisos.
  • Gestión de compras: Módulo encargado de gestionar las necesidades, funcionalidades y la información requerida durante los procedimientos de compras de la organización. Debe asegurar en todo momento la trazabilidad de este proceso.
  • Gestión de ventas: Análogo al anterior pero con las ventas.
  • Gestión de pagos: Análogo al anterior sobre los pagos.
  • Gestión de cobros: Análogo al anterior sobre los cobros.
  • Gestión de fábrica: Encargado de gestionar la fabricación de los productos de la organización y la dirección de planta según la metodología de producción de la organización.
  • Gestión de servicios: En las organizaciones proveedoras de servicios, con el objeto de atender las solicitudes, la asignación de recursos y el seguimiento y control y los procesos (actividades) destinados a llevarlos a término.
  • Gestión de proyectos: Para las organizaciones que dividen sus actividades en proyectos, con el objeto de que puedan deliverar, organizar, y concluir los mismos.
  • Gestión de clientes: Destinado a la ayudar a los clientes en sus relaciones con la empresa.
  • Gestión de proveedores: Análogo al anterior con los proveedores.
  • Gestión financiera: Módulo de contabilidad y finanzas fundamental en cualquier organización.
  • Gestión de activos: Módulo para la gestión de los mismos.
  • Gestión de calidad: Destinado a la gestión y supervisión del sistema de calidad de la empresa.
  • Gestión del sistema: Destinado a la información y gestión de los recursos bajo los que corre la aplicación con el objeto de que el administrador pueda optimizar el funcionamiento de la misma.
  • Estadística y toma de decisiones: Módulo para permitir la toma de decisiones de la gerencia.
  • Gestión de ayuda y publicaciones (web por ejemplo)
Los principales recursos o componentes con que debe contar un ERP son a mi entender:
  • Ventana
  • Formulario
  • Listado (reporte)
  • Gráfico (para estadísticas y estados)
  • Tarea
  • Proceso
  • Flujo de trabajo
  • Comunicaciones (foros, chat, correo, ...)
  • Herramientas (calculadora, agenta, notas, ...)
  • Estado (para informar al usuario del estado de la aplicación)
  • Ayuda
Para poder ofrecer interfaz web, cualquier ERP que se precie debe estar formado por al menos las siguientes herramientas:
  • Base de datos
  • Servidor Web
  • Plantillas + Lenguaje de script de servidor para generar el interfaz del cliente.
  • Motor de flujo de trabajo que implemente la lógica de negocio. Puede utilizar el propio lenguaje de script del servidor.
Los dos últimos puntos también pueden ser englobados dentro de un servidor de aplicaciones al uso, o también utilizar un servidor de aplicaciones con plantillas y un leguaje de script.

En términos generales se pueden definir cinco etapas fundamentales para la implantación de un ERP cualquiera en cualquier empresa:
  1. Elaboración del plan de trabajo y estructuración de los equipos asignados a las diferentes tareas.
  2. Organización y planificación.
  3. Depuración de la información, en la cual se revisa y corrige la información actual. Procesos de realimentación las veces necesarias.
  4. Formación de los usuarios. Capacitación en los aspectos técnico y operativo y con simulaciones para que los usuarios se familiaricen con el sistema.
  5. Liberación formal del sistema o la implantación total del mismo.

Comparativa de ERP's se puede encontrar en el blog de TodoBI. Herramientas ERP open source se encuentran descritas en Wikipedia. Un índice de todas las herramientas ERP opensource se puede encontrar en sourceforge. Las que a mí más me han sonado son :
  • Compiere es una solución que integra ERP + CRM (gestión de las relaciones con los clientes) bajo interfaces Windows y Web. Es una solución internacional basada en los flujos de trabajo que realiza el personal de la empresa. Es una solución 100% Java sobre base de datos Oracle, con servidor de aplicaciones JBOSS. Es quizá las más antigua, completa y potente solución del mercado, a partir de la que han evolucionado el resto de ERP's.
  • ]project-open[ es un ERP Open Source orientado a proyectos, para empresas de servicios exclusivamente (no está pensado para empresas manufactureras o que fabriquen o vendan productos físicos) orientado a web; con una rara mezcla de licencias. Utiliza como base de datos PostgreSQL o Oracle y está desarrollado utilizando la herramienta OpenACS basada a su vez en el servidor web AOLserver.
  • Openbravo un ERP de codigo abierto realizado en Java siguiendo la filosofía MVC y en España. Es un ERP totalmente orientado a la WEB, con innumerables módulos como cualquier ERP que se precie. Está adaptado a la legislación española en base a los desarrollos previos de Compire. Es uno de los ERP que mas éxito parece tener. Tiene licencia basada en la "Mozilla Public License", lo que permite que las modificaciones se tengan que distribuir como MPL, pero las adiciones se puedan o no distribuir bajo la licencia deseada por el autor. Necesita Tomcat y Oracle y PostgreSQL.
  • openXpertya es un ERP y CRM de código abierto, con integración de servicios en línea de B2B o B2C (en función del tipo de cliente final) e incluso B2E (servicios internos) y con soporte de exportación e datos (enlaces) al estandar EDI (intercambio electrónico de información entre empresa: facturas, albaranes, pedidos: EDIFACT, estandard mundial de la ONU) y con posibilidad de trabajar con cubos multidimensionales OLAP (análisis exhaustivo de resultados). Utilizaba inicialmente la base de datos Oracle, aunque ahora admite otras. Está desarrollado en España bajo el patrocinio del Principado de Asturias y por tanto, está adaptado a la legislación española. Es un ERP Java basado en JBOSS (aunque también Apache TomCat), por tanto está básicamente orientado a ventanas, aunque también tiene módulos web para interacturar con por ejemplo clientes, ... Dispone también de los principales módulos que debe contener todo ERP. Está liberado bajo licencia basada en la CDDL desarrollada por SUN que a su vez se basó en la MLP de Mozilla.
  • Adempiere. Es una solución que parte de la escisión de colaboradores del proyecto Compiere. El proyecto ADempiere fue creado en Septiembre de 2006 después de las difererencias que se tuvieron entre Compiere Inc., los desarrolladores de Compiere™, y la comunidad que se formó alrededor del proyecto. La comunidad consideró que Compiere Inc. puso especial énfasis en la naturaleza de código abierto del proyecto, en lugar de la naturaleza comunitaria del proyecto. Después de una intensa discusión se decidió separarse de Compiere y dar nacimiento al proyecto ADempiere. ADempiere está desarrollado con tecnología J2EE; específicamente utiliza el servidor de aplicaciones JBOSS. Actualmente el soporte de bases de datos está restringido a Oracle y PostgreSQL, no obstante, la independencia de la base de datos es una meta prioritaria para el proyecto. Hay que tener en cuenta el poco tiempo que lleva a la hora de tomar decisiones sobre esta solución.
  • jAllInOne es un ERP y CRM realizado en java orientado a ventanas puesto que está ampliamente basado en Openswing y que utiliza el protocolo http para comunicar servidor y clientes. Actua como una aplicación web a la hora de instalarse en los clientes ya que utiliza javaws. Está también basado en el paradigma MVC y utiliza JDBC para conectarse a la base de datos (está testeado con Oracle, MS Sqlserver y MySQL). Está licenciado bajo LGPL.
  • Apache OFBiz es un ERP y CRM muy amplio patrocinado por la fundación Apache.
  • OpenTaps es otra solución ERP y CRM open source.
  • Sugar CRM solución ERP.
  • TinyERP. Es un software de ERP bajo licencia GPL. Inicialmente desarrollado en Bélgica, hay traducciones al español en versiones anteriores. TinyERP es un ERP reducido (5-50 usuarios) y principalmente enfocado a la PYME, aunque dispone de módulos como gestión de proyectos o estadísticas, más habituales de empresas de mayor tamaño. Implementa funcionalidades como Ventas, Compras, Stock, Contabilidad, Tesorería y algunos más. Dispone de funcionalidad para la generación de impresos vía PDF, HTML y permite exportar datos a otros programas como OpenOffice o MS-Excel. TinyERP se encuentra en un estado funcional sobre Linux y Windows (utiliza fundamentalemente la librería de ventanas GTK+), aunque algunos módulos aún están en desarrollo. Actualmente está avanzando hacia su integración con EzPublish. TinyERP internamente usa un modelo de Flujos de Trabajo (WorkFlow), con arquitectura en tres capas. Está desarrollado en Python, PyGTK y sobre PostgreSQL, lo que podría ser interpretado como su punto débil debido a la velocidad obtenida. (Wikipedia).
  • Boxerp es un proyecto basado en la plataforma Mono, y uno de sus principales objetivos es servir de guía en el aprendizaje de esta tecnología. Está liberado bajo licencia BSD. Se trata de un framework para la construcción de aplicaciones de gestión que pretende ser estable y escalable y que está ampliamente documentado para que cualquiera que empieza pueda incorporarse al equipo de desarrollo, sirviendo también como punto de partida para otros proyectos similares. (Wikipedia). ¡Cuidado, que realmente no es un ERP, si no un framework!
  • CK-ERP es un ERP y CRM de código abierto bajo licencia GNU/GPL que consta de 20 módulos o aplicaciones que incluyen facilidades para la gestión de la contabilidad de la empresa, pagos, ingresos, pedidos u órdenes de compra, gestión de ventas, cotizaciones recibidas, gestión del punto de venta, gestión de recursos humanos o personal, gestión de nóminas, gestión de contactos, entre otros. Su interfase online, es bastante simple pero es fácilmente adaptable a las necesidades de cualquier empresa. Esta desarrollado en PHP, utilizando XOOPS (sistema de gestión de contenidos desarrollado en PHP) y MySQL.
  • Fisterra es un ERP para entornos GNOME patronizando por Hispalinux. En la actualidad soporta: administración de clientes y pedidos, facturación, gestión de stock y de pagos, punto de venta, funcionamiento distribuido y replicación offline de los datos. La implementación usa Gnome SDK y PostgreSQL. Fisterra es una aplicación de gestión empresarial, publicada bajo licencia GPL.
  • ERP5 es otro ERP y CRM para entornos Windows, Linux y Mac enfocado principalmente a ventanas distribuido bajo licencia GPL. Está basado en tecnología de base de datos Zope. Dispone de un producto ERP5 Express que pude utilizarse desde hosting en cualquier dispositivo, incluídos teléfonos móviles y PDA's y que promete estar listo para su utilización en menos de 5 minutos.
  • FacturaLUX es software libre de tipo ERP (Enterprise Resource Planning) orientado a la administración, gestión comercial, finanzas y en general a cualquier tipo de aplicación donde se manejen grandes bases de datos y procesos administrativos. Su aplicación abarca desde la gestión financiera y comercial en empresas hasta la adaptación a procesos complejos de producción. Genera aplicaciones multiplataforma (windows, linux, Mac,...). El objetivo inicial de FacturaLUX es crear una aplicación informática que permita desarrollar soluciones para la administración y gestión de la PYME, así como distintas personalizaciones que cubran las necesidades de gestión y finanzas de las empresas, basándose en el modelo de software libre. Hoy por hoy, aunque dispone de algunas "personalizaciones" para diferentes tipos de empresas, creo que todavía está lejos de llegar a ser un ERP como tal por el contrario creo que es un referente en cuanto al open software de facturación + contabilidad. Creo por tanto, que se está realizando muy buen trabajo y le auguro un futuro muy prometedor. Soporta bases de datos PostgreSQL, MySQL y SQLite. Está desarrollado en C++ en conjunción con las herramientas Qt, lo que le proporciona un sistema multiplataforma. Utiliza profusamente QtScript, lo que le permite una rápida y ágil personalización. Es software libre bajo licencia GPL y Creative Commons.
  • TNTConcept es un software para la gestión interna por web, construido con las últimas tecnologías de desarrollo Java/J2EE (Spring, JSF, Hibernate, Acegi, Maven, Subversion, etc.) y disponible bajo licencia GPL. Seguro que a muchos profesionales independientes y PYMES os ayudará a organizar mejor vuestra operativa. La aplicación es gratuita, su código fuente está disponible y se encuentra bajo una licencia GPL. Se asemeja mucho a un ERP sencillo, simple, pero operativo. Es la liberación bajo licencia GPL de una aplicación de gestión interna de la propia empresa creadora Autentia. Tiene muchas características incluidas en los ERP y CRM, por lo que su visión es mucho más amplia que la de un programa de gestión al uso; sin embargo entiendo que no se puede calificar de ERP puesto que es una solución en sí y no existe documentación para su parametrización de acuerdo a nuestras necesidades (es una aplicación muy incipiente por ahora). Si me ha parecido muy válido para la gestión de una PYME y muy sencillo de implantar si nos adecuamos a sus características.
Existen también innumerables frameworks con los que se pueden desarrollar a su vez y de forma directa la herramienta ERP. En este caso no conseguiriamos en sí un ERP, puesto que lo más logico sería suprimir el interface de personalización e implentar directamente el interface del cliente según su propio sistema de trabajo (perdería la tercera caracteristica, adaptabilidad). A pesar de esto, el trabajo a realizar, caso de pretender una cobertura importante, sigue siendo ingente y no abordable salvo por un importante grupo de trabajo o que tengamos la paciencia suficiente. Entre los frameworks yo destacaría:

  • PHP

    • Zend Framework
    • CakePHP
    • Symfony Project
    • Seagull Framework
    • WACT
    • Prado
    • PHP on TRAX
    • ZooP Framework
    • eZ Components
    • CodeIgniter
    • ActiveGrid desarrollado bajo la plataforma LAMP (Linux + Apache + MySql + Php | Perl | Phyton) con soporte AJAX. Con un entorno de programación propio y aparentemente muy sencillo y eficaz. Su salida son páginas web con XForms (formato XML para poder definir interfaces de usuario, principalmente formularios web). Para desarrollar se pueden utilizar sistemas Windows o Linux; sin embargo su servidor sólo corre bajo Linux. Tiene una versión open source y otra comercial, sin embargo, los binarios y su código fuente están liberados bajo Apache Software License 2.0.

  • Java

    • Struts
    • Spring
    • JSF
    • TapesTry bajo Apache Software License.
    • WebWork bajo una licencia modificada similar a Apache license.
    • DbForms bajo licencia LGPL.
    • OpenXava bajo licencia LGPL. OpenXava es un marco de trabajo para desarrollar fácilmente aplicaciones de gestión con XML y Java. Su principal virtud reside en el hecho de que el corazón de nuestras aplicaciones es XML en vez de Java. OpenXava genera para tí una aplicación J2EE completa (con Hibernate o EJB para la persistencia) a partir de ficheros XML. La aplicación resultante te permite hacer manteniento, búsquedas, filtros, ordenaciones, generar informes en formato PDF, exporta a Excel, etc.

  • Otros

    • Ruby on Rails, también conocido como RoR o Rails es un framework de aplicaciones web de código abierto escrito en el lenguaje de programación Ruby, siguiendo el paradigma de la arquitectura Modelo-Vista-Controlador (MVC). El lenguaje de programación Ruby permite la metaprogramación, de la cual Rails hace uso, lo que resulta en una sintaxis que muchos de sus usuarios encuentran muy legible. Ruby es un lenguaje de programación interpretado y orientado a objetos. La filosofía de Ruby es don't repeat yourself (DRY) - no te repitas. La idea de ruby es que usted no necesita repetir lo que ya ha definido en otro lugar. Esto hace a ruby muy compacto.
    • Zope no es un framework en sí sino otro concepto más amplio como es un "servidor de aplicaciones" realizado en Python con una licencia similar a la Apache Software License, denominada ZPL.
    • DotNetNuke bajo licencia BSD sobre Microsoft ASP.NET (VB.NET)
    • Atlas el framework de Microsft con ASP y Ajax