Bisoños Usuarios de GNU/Linux de Mallorca y Alrededores   |   Bergantells Usuaris de GNU/Linux de Mallorca i Afegitons
Nueva Versión de BulmaGés (0.4.1) (26380 lectures)
Per Tomeu Borrás, tborras (http://www.iglues.org)
Creado el 06/10/2004 12:36 modificado el 06/10/2004 12:37

bulmages(1)

Versión 0.4.1 de BulmaGés.

Nuevas capacidades, nuevos proyectos. De esta nueva versión hay muchas cosas que contar. Como el proyecto BContaWeb, los inicios de BulmaFact, la integración con Reports de Santiago Capel, importación de datos desde Contaplus, etc

El anuncio de una nueva versión es siempre muy escueto (4 líneas cortas), intentaré cambiar esa tendencia y explicaré un poco el proceso de instalación del programa y cómo compilarlo.

BulmaGés vuelve a la carga con una nueva versión. (la 0.4.1)

En ella se pueden encontrar nuevas características que dotan a este gran programa de nuevas funcionalidades y mejoras.

Junto a BulmaGés hay una serie de proyectos que aumentan las posibilidades de este programa, ya sea ampliando sus capacidades o ofreciendo servicios alternativos que se relacionan con éste.

Algunos de dichos proyectos brevemente resumidos:

BCONTAWEB

Este proyecto nace para dar la capacidad a BulmaGés para ser operada a través de web. Aparte, como la programación web es algo más sencilla que la programación clásica y PHP tiene capacidades de scripting que lo hacen muy adecuado para algunas tareas.

Se destapa con este proyecto la sincronización entre diferentes programas de un proceso empresarial.

El primer caso concreto que sobre el que se está trabajando es Galopin - BulmaGés.

Galopin(2) es un sistema de facturación desarrollado en php por Rubén D. Mancera Morán y Pedro Obregón Mejías. Con una programación muy sencilla e intuitiva que permiten que sea fácilmente adaptado a determinadas necesidades.

Es esta característica la que nos hizo empezar a sincronizar BulmaGés con este proyecto.

(3) (4)

Este proyecto se distribuye junto con BulmaGés en un mismo instalador y comparte los ficheros de configuración con éste.

BULMAFACT

Este proyecto aun está arrancando, hay muchas ideas, una base de datos modelada con ERM(5) y algunas pantallas. Hay algunas iniciativas y gestiones en marcha para poder hacer que este montón de buenas ideas se conviertan en una realidad, pero de momento aun esta bastante verde. Aqui podeis ver algunas pantallas de las que se na modelado para el programa.

(6)

REPORTS

El proyecto Reports es una iniciativa de Santiago Capel (Creador de GestiONG) para generar informes de forma elegante y práctica. Utiliza plantillas XML para generar una salida y direccionarla a distintos formatos (Open Office, HTML, WEB, incluso tiene un visor própio). Este proyecto ya estaba presente en BulmaGés en la versión 0.3.1, luego por problemas de compilación se quedó en stand-by y ahora vuelve a estar incorporado dando al programa una capacidad generativa impresionante.

(7)

Con todo este panorama cada vez es más viable para los informáticos plantear migraciones empresariales hacia el mundo del open source. Tener una contabilidad que se integre con una facturación dan la competitividad necesaria para presentar una alternativa frente a soluciones propietarias (Alguien podría argumentar que hay cierto software que se vende en los kioscos que es competitivo y económico. Pero seamos serios, estamos hablando de soluciones, no de problematicas).

Los argumentos para convencer al empresario para que migre pesan mucho, aqui dejo unos cuantos por si algún día hay que usarlos:

  • Independencia del informático, es posible cambiar de informático sin perder funcionalidades empresariales.
  • Sistemas adaptables y personalizables sin enfrentar el coste de realizar una aplicación desde cero.
  • Integración de procesos con clientes y proveedores.

INSTALACIÓN DE BULMAGÉS

En este apartado voy a explicar detalladamente cómo se instala el programa:

- La base de datos.

La mayor fuente de problemas al instalar el programa suele ser el sistema de base de datos. BulmaGés esta desarrollada sobre postgresql y utiliza características avanzadas de este gestor como el lenguaje plpgsql. Esto confiere al sistema mucha potencia, pero es necesario tener bien instalado el motor de base de datos para poder instalar el programa adecuadamente.

- Configurando postgresql

Es probable que una vez se haya instalado postgresql se tengan problemas para empezar a trabajar.

Esto es debido a que postgres requiere de algunos conocimientos sobre su funcionamiento antes de poder trabajar con él. Principalmente sobre su sistema de permisos y usuarios.

La política de control de acceso a bases de datos, en principio, viene bastante restringida. Dicha política está definida en el archivo pg_hba.conf. Dicho archivo contiene una serie de líneas donde se especifica maquina, usuarios, base de datos y privilegio de permisos. Con este archivo podemos determinar desde qué máquinas se puede y desde qué máquinas no se puede, quién puede y quién no puede y a qué puede y a qué no puede conectarse.

La configuración de este archivo es parecida a la configuración de un cortafuegos.

## TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD

local all all trust
host all all 0.0.0.0 255.255.255.255 reject
Vamos a analizar el contenido del archivo:
  • TYPE: Postgres permite dos tipos de conexiones. Locales y por red (host).
  • DATABASE: Podemos poner una base de datos especifica o all para que la orden afecte a todas las bases de datos.
  • USER: Podemos poner un usuario o all
  • IP-ADDRESS, IP-MASK: Si hemos puesto conexiones del tipo host podemos especificar qué máquinas se ven afectadas.
  • METHOD: Esta es la linea más importante, indica cómo es el acceso al motor de base de datos. Existen tres métodos de acceso:
    1. trust: Siempre tiene acceso (no requiere password).
    2. ident sameuser: Requiere que el usuario se autentifique para tener acceso.
    3. reject: Siempre deniega el acceso.
    Creación de usuarios

    Otro de los temas importantes para el correcto funcionamiento de postgres es que los usuarios que pueden acceder a la base de datos deben ser creados con anterioridad.

    En un postgres recien instalado el único usuario que puede manipular la base de datos es postgres (que es el administrador de base de datos). Si queremos que nuestro usuario pueda manipular bases de datos debemos crearlo. Para ello entramos como usuario postgres (desde root hacer: su postgres) y ejecutamos createuser XXXX donde XXXX es el nombre de usuario que usamos normalmente. Una vez realizado este paso el usuario podrá acceder al motor de base de datos.

    - El lenguaje plpgsql

    Postgres incorpora un lenguaje de SCRIPTING llamado plpgsql que permite de forma sencilla crear triggers y otros temas avanzados de administración de bases de datos. BulmaGés utiliza esta característica por lo que el lenguaje tiene que estar presente. No todas las distribuciones incorporan el lenguaje por defecto con postgresql. La instalación no es el paso complicado, lo difícil es que para usar este lenguaje en una base de datos debe especificarse una ruta hacia la librería que lo implementa.

    En este ejemplo podeís ver que se crea un manejador de lenguaje y se enlaza con una librería plpgsql.so Este paso debe realizarse con cada base de datos que se crea. El problema es que la ubicación de dicha librería puede variar entre distribuciones. Es por este motivo que la creación de la base de datos puede dar problemas si no se modifica el archivo que la define.

    CREATE FUNCTION plpgsql_call_handler() RETURNS language_handler AS '/usr/lib/postgresql/lib/plpgsql.so', 'plpgsql_call_handler' LANGUAGE c;
    CREATE TRUSTED PROCEDURAL LANGUAGE plpgsql HANDLER plpgsql_call_handler;

    La potencia que da este lenguaje es increíble. Sobretodo si queremos romper la integridad de la base de datos (siempre por motivos de eficiencia) y recuperarla al mismo nivel de base de datos (sin depender de que cada llamada a base de datos debe hacer recolocaciones de datos para mantener la integridad).

    ¿Quién no ha implementado alguna vez las funciones "recalculaesto" ó actualizaaquello" ? En este ejemplo vemos un sencillo script que posteriormente es llamado mediante inserciones o modificaciones de la tabla "c_coste". Si analizais el código podreis ver que el algoritmo es recursivo dispárandose a si mismo al hacer un UPDATE. En este caso concreto la utilidad sirve para propagar valores a través de un árbol y en su recorrido va regenerando las sumas parciales de todo el árbol a partir de las modificaciones en los nodos "hoja".

    Todo esto profundiza en la "filosofía de BulmaGés". Penalizar en las inserciones para ganar tiempo en las consultas. Creando redundancia de datos y garantizando su integridad a nivel de Base de Datos.

    CREATE FUNCTION propagaacumuladoccoste() RETURNS "trigger"
    AS '
    DECLARE
    incdebe FLOAT8;
    inchaber FLOAT8;
    BEGIN
    incdebe = NEW.debe - OLD.debe;
    inchaber = NEW.haber - OLD.haber;
    IF incdebe <> 0 OR inchaber <> 0 THEN
    UPDATE c_coste SET debe = debe + incdebe, haber = haber + inchaber WHERE idc_coste = OLD.padre;
    END IF;
    RETURN NEW;
    END;

    - Los archivos que componen la instalación.

    La instalación se encuentra bajo el directorio installbulmages. Dentro de éste cabe destacar los siguientes componentes:
    • 1.- El script de instalación (installbulmages)
    • 2.- El script de desinstalación (deinstallbulmages)
    • 3.- Los archivos de modelado de datos (directorio dbmodels)
    • 4.- Ejecutables.
    • 5.- El archivo bulmages.conf y sus revisiones.
    • 6.- Los archivos de ayuda (directorio ayuda)
    • 7.- Los archivos de informes (directorio reports)
    Los archivos auxiliares para que funcione BulmaGés son pocos y su ubicación es sencilla.
  • bulmages.conf debe copiarse en /etc
  • todo lo que está en installbulmages debe ir en /usr/share/bulmages
  • los ejecutables (bulmages, creaemp, borraremp) deben ir a un directorio que esté en el PATH (/usr/bin es una buena opción)
  • - El archivo de configuración.

    Uno de los archivos más importantes, o que se debe conocer de BulmaGés, es el archivo /etc/bulmages.conf Este archivo contiene toda una serie de parámetros para configurar el programa a nuestras necesidades específicas.

    El archivo está comentado con cada opción disponible. En la ayuda del programa se puede encontrar más información.

    - Actualizacion del Sistema.

    Existe una problemática adicional en el caso de una actualización. Entre dos versiones de BulmaGés pueden existir cambios a nivel de base de datos. Obviamente no vamos a permitir que un contable pierda todos sus datos al pasar de una versión a otra del programa, cosa que sucedía en versiones anteriores de éste.

    Esto implica que una actualización de BulmaGés puede requerir hacer determinadas tareas de actualización de datos. Esto hace que se deba controlar qué versión se tiene instalada e ir aplicando los scripts adecuados de actualización.

    La instalación de BulmaGés viene arrastrando una serie de archivos de revisión que se van aplicando o no dependiendo de si ya están o no en el directorio destino del programa.

    - El script de instalación.

    Afrontar la instalación de BulmaGés es, al mismo tiempo, afrontar todos estos problemas. No se puede decir que instalar el programa sea copiar un par de archivos a un directorio. Sino que conlleva todo un proceso de configuración.

    Para esta versión se ha invertido mucho esfuerzo en generar un script de instalación práctico y que haga de la instalación algo sencillo. Creo que esta vez lo hemos conseguido ya que en la mayoría de casos instalar el programa es ejecutar el script de instalación y la mayor parte de las problemáticas se resuelven.

    Con el nuevo script de instalación se hacen todas las comprobaciones de la base de datos. Incluso se busca el directorio donde se pueda encontrar plpgsql.so y se cambian los archivos de creación de base de datos para que especifique bien la ruta de dichos archivos.

    (8)

    En la imagen se puede ver el script de instalación en accion. Concretamente preguntando por el usuario que va a utilizar el programa normalmente para hacer el "CREATE USER".

    COMPILACIÓN DE BULMAGÉS

    - Descarga del CVS.

    El código fuente de BulmaGés ya no se distribuye en forma de tgz. Para obtenerlo hay que acudir al CVS del proyecto en sourceforge.

    Hay dos formas de bajar el CVS, si eres desarrollador o si eres un usuario anónimo. Nosotros vamos a contar la forma anónima ya que es la más generalizada (http://sourceforge.net/cvs/?group_id=35566(9)).

    cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/bulmages login Para bajar bulmages: cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/bulmages co bulmages Para bajar bulmafact: cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/bulmages co bulmafact

    Dentro del directorio bulmages (que se ha creado al bajar del cvs) hay un directorio llamado fuentes. Este directorio contiene el codigo fuente del programa.

    El directorio installbulmages contiene todos los archivos necesarios para la instalación. A cada nueva versión del programa compilamos el ejecutable, lo agregamos a este directorio, comprimimos todo en un tgz y ya tenemos la nueva versión preparada.

    También se podran encontrar directorios para las distintas webs relacionadas con el proyecto y para otros proyectos relacionados.

    BulmaGés se desarrolla sobre varias distribuciones. En mi caso utilizo Debian en su versión Inestable. Hay problemas si se quiere compilar con una Woody porque las librerías qt no son las mismas.

    Esta es la relación de Paquetes que utilizo para desarrollar, compilar y ejecutar el programa (Seguramente con el próximo update cambie alguna versión de las librerias.)



    ii libqt3-compat-headers 3.3.3-4.1 Qt 1.x and 2.x compatibility includes
    ii libqt3-headers 3.3.3-4.1 Qt3 header files
    ii libqt3-i18n 3.3.3-4.1 i18n files for Qt3 library
    ii libqt3-mt-dev 3.3.3-4.1 Qt development files (Threaded)
    ii libqt3c102 3.3.3-4.1 Qt GUI Library, Version 3
    ii libqt3c102-mt 3.3.3-4.1 Qt GUI Library (Threaded runtime version), Version 3
    ii qt-doc 2.3.2-14 Reference documentation for Qt
    ii qt3-assistant 3.3.3-4.1 The Qt3 assistant application
    ii qt3-designer 3.3.3-4.1 Qt3 Designer
    ii qt3-dev-tools 3.3.3-4.1 Qt3 development tools
    ii qt3-dev-tools-embedded 3.3.3-4.1 Tools to develop embedded Qt applications
    ii qt3-doc 3.3.3-4.1 Qt3 API documentation
    ii qt3-linguist 3.3.3-4.1 The Qt3 Linguist
    ii postgresql 7.4.5-3 Object-relational SQL database, descended from POSTGRES
    ii postgresql-client 7.4.5-3 Front-end programs for PostgreSQL
    ii postgresql-dev 7.4.5-3
    Header files for libpq (postgresql library)

    En el directorio fuentes se encuentra el código fuente del programa. Compilarlo es sencillo pero requiere entender algunos detalles.

    BulmaGés se puede compilar utilizando tres librerías gráficas distintas. ( Una adaptación de TORA, GDCCHART y DISTLIN).

    Cada una de estas librerías debe encontrarse dentro del directorio especificado en las fuentes. Por tanto, antes de compilar el programa, hay que asegurarse que sólo uno de los siguientes directorios exista:

    estadisticas, gdchart o dislin

    En cada caso la librería debe compilarse antes de poder enlazar con BulmaGés. La explicación de cómo compilar cada una de éstas librerias no entra en los objetivo de este articulo. Cada librería corresponde con un proyecto diferente del que tienen más conocimiento sus respectivos autores.

    Con los fuentes se incorpora tanto estadísticas como gdchart. Dislin debe ser descargado desde la web del proyecto.

    (NOTA) Dislin no es open source, está sujeto a una licencia non-commercial. Documéntese antes de compilar el programa con dicha librería. Ya que podría estar infringiendo la ley usando esta librería con fines comerciales.

    También es opcional compilar el programa con soporte para REPORTS (Aunque es recomendable). Si queremos usar estas librerias de generación de informes debemos acudir a http://sourceforge.net/projects/reports descargar el código fuente y ponerlo dentro del directorio reports.

    Reports debe ser compilado antes de compilar BulmaGés. Una vez más debemos buscar el soporte de otros proyectos para compilar este módulo, puedo asegurar que los pasos son muy sencillos.

    Una vez hayamos comprobado que todo esta en orden podemos proceder a compilar. Dentro del directorio fuentes podemos ejecutar los siguientes comandos:
    $ qmake $ make

    qmake detectará automáticamente las librerías que se quieren usar y preparará la compilación con ellas.

    make realizará toda la compilación. Este paso puede tardar varios minutos.

    Una vez completados todos estos pasos el ejecutable "bulmages" estará en el directorio bin. No es necesario moverlo a ninguna ubicación (aunque su ubicación natural es /usr/bin) lanzarlo. Es preciso tener hecha la instalación del programa para que pueda encontrar los archivos y bases de datos que necesita para funcionar.

    Y con esto concluye este artículo sobre como instalar y compilar BulmaGés. En un próximo artículo intentaré ampliar la información sobre como compilarlo y modificarlo.


    Referencias

    DISLIN: http://www.linmpi.mpg.de/dislin(10)
    GDCHART: http://www.fred.net/brv/chart/(11)
    TORA: http://www.globecom.net/tora/(12)
    GALOPIN: http://galopin.sinuh.org/(13)
    BULMAGÉS: http://bulmages.bulma.net(14)
    REPORTS: http://reports.sourceforge.net/(15)

    Lista de enlaces de este artículo:
    1. http://bulma.net/~tborras/bges041/splash.png
    2. http://galopin.sinuh.org
    3. http://bulma.net/~tborras/bges041/bcontaweb.png
    4. http://bulma.net/~tborras/bges041/galopin.jpg
    5. http://bulmages.bulma.net/erm/index.php
    6. http://bulma.net/~tborras/bges041/bulmafact.png
    7. http://bulma.net/~tborras/bges041/reports.png
    8. http://bulma.net/~tborras/bges041/usuario.png
    9. http://sourceforge.net/cvs/?group_id=35566
    10. http://www.linmpi.mpg.de/dislin
    11. http://www.fred.net/brv/chart/
    12. http://www.globecom.net/tora/
    13. http://galopin.sinuh.org/
    14. http://bulmages.bulma.net
    15. http://reports.sourceforge.net/

    E-mail del autor: tborras _ARROBA_ conetxia.com
    Podrás encontrar este artículo e información adicional en: http://bulma.net/body.phtml?nIdNoticia=2103