
Principal |
Información General
|
Descargas
|
Información para Programadores
|
Otra Información
|
Documentación
|
Buscar
|
|
Visión General de la Arquitectura
GnuCash está escrito principalmente en de los lenguajes: C y Scheme.
El servidor/motor está escrito en C principalmente para mayor velocidad,
portabilidad, estabilidad y motivos históricos. La mayoríia del código
de trabajo en el día a día está escrito en Scheme,
principalmente por su poder, expresividad y facilidad de desarrollo. La
interface de usuario es gtk/gnome, algo de ello hecho en C, algo en scheme,
y otro en la herramienta de desarrollo gráfico glade.
El GnuCash es modular, permitiendo así que varios individuos
mantengan, desarrollen y mejoren algunos módulos sin perturbar la totalidad
del desarrollo. (Nunca se olvide que los módulos ayudam a evitar código
spaghetti y feas modificaciones martilladas). Las interfaces entre módulos
están documentadas, y , en su mayoría, estables e inmutables.
Este
diagrama de bloques muestra sus principales componentes. El GnuCash
consiste actualmente en los siguientes módulos:
|
Módulo
|
Descripción
|
|
Motor |
|
El Motor (localizado debajo del directorio src/engine
en la estructura de código del GnuCash) disponibiliza una
interface para crear, manipular, y destruir tres entidades
financieras básicas: Cuentas, Transacciones (conocidas como
Entradas de Registro en la contabilidad profesional), y Parcelas
(conocidas como Detalles de Registro). Estas tres entidades
son las estructuras de datos centrales del modelo de datos
financiero del GnuCash, tal
como se ilustra en este diagrama.
El código del Motor no posee cualquier código de Interface
Gráfico, y es esencialmente neutral al nivel del SO. Está
escrito en su totalidad en C.
|
|
Consulta |
|
El módulo de Consulta (src/engine/Query.*)
disponibiliza una interface para el motor para encontrar transacciones
basadas en un conjunto de criterios, tales como la descripción
, fecha de entrada, filiación de cuenta, etc. Consultas
simples pueden ser combinadas utilizando operadores booleanos
estándar.
|
|
I/O (Lectura/Escritura) de Archivos |
|
El módulo de I/O de Archivos (src/engine/FileIO.*)
disponibiliza una interface para leer y escribir un conjunto
de Cuentas, Transacciones, y Parcelas para un archivo binário.
Este módulo está por ser abandonado. Un formato basado
en texto utilizando formularios scheme está por ser desarrollado
en su remplazo. Este nuevo módulo será separado del motor.
|
|
Registro |
|
El Registro (src/register) implementa
una interface tipo libro de entrada que permite al usuario
introducir dinámicamente fechas, precios, anotaciones,
etc. de una forma intuitiva que deberá ser obvia para cualquiera
que esté habituado a utilizar el registro de un libro
de cheques. El código es muy configurable, permitiendo que
las filas y columnas del registro sean dispuestas de cualquier
forma, sin restricciones a la función, tipo y número
de columnas/filas. Por ejemplo, se puede definir una hoja
de registro com tres campos de fecha, un campo de precio,
y cuatro campos de anotaciones de una forma simple. Objetos
de gestión de celdas soportan y validan los datos introducidos
automáticamente, sean fechas, anotaciones (que se completan
automáticamente), precios, cajas de combo (menús
de selección ), y cajas de selección multi-estado.
Las celdas pueden ser marcadas para lectura y escritura, o
apenas lectura. Se puede asignar colores exclusivos a las
celdas. La fila del registro seleccionada actualmente puede
ser destacada con un color único.
El código del registo es completamente independiente del
código del motor, no sabe nada sobre contabilidad o cualquiera
de los otros subsistemas del GnuCash. Puede ser utilizado
en proyectos independientes que no tengan nada que ver con
contabilidad.
|
|
Informes (Reportes/Relatorios)
|
|
El módulo de Informes (Reportes/Relatorios) (src/scm/report.scm,
src/scm/reports) es un sistema basado en scheme
(guile) para crear hojas de balance, demonstraciones de pérdidas
y ganancias, etc. utilizando la API del motor para obtener
y presentar datos formateados en HTML.
Este módulo va a ser rediseñado para utilizar la API
de Consultas para obtener la información del motor
en vez de utilizar directamente la interface del motor. El
nuevo diseño de informes irá a utilizar las Consultas
para extraer datos y agregarlos en un formato independiente
de la visualización. Estos datos serán entonces
convertidos a informes en HTML y /o gráficos tales como gráficos
de barras o circulares.
|
|
Gráficos |
|
El módulo de Gráficos va a ser en el futuro un
módulo que implementa gráficos tales como barras y circulares.
Estos gráficos serán interactivos por lo que el usuario
podrá , por ejemplo, mover las margenes del círculo, y 'vivos'
en el sentido en que el usuario podrá hacer click en una subsección
del gráfico para ver un gráfico detallado o informe de esa
subsección en particular.
Este módulo será implementado utilizando la biblioteca GUPPI
que se encuentra en desarrollo por Jon Trowbridge (<http://www.gnome.org/guppi>).
|
|
Cotizaciones |
|
El módulo de Cotizaciones (src/quotes)
es un sistema en Perl para obtener cotizaciones de acciones
de Internet e insertarlas en el Motor del GnuCash. Este módulo
requiere las funcionalidades del módulo Finance::Quote disponible
en el SourceForge. El módulo Finance::Quote module puede obtener
cotizaciones de varios locales diferentes incluyendo el Yahoo,
Yahoo Europe, y algunas bolsas de valores internacionales.
El módulo Finance::Quote también soporta la obtención
de tasas de cambio monetarias. El GnuCash será extendido para
permitir la obtención y utilización de tasas
de cambio monetarias.
|
|
Preferencias del usuario |
|
El módulo de Preferencias del usuario (src/scm/options.scm,
src/scm/prefs.scm) disponibiliza una infraestructura
para definir las preferencias configurables por el usuario
e internas. Las preferencias son definidas en scheme utilizando
varios tipos de preferencias predefinidas tales como booleana,
texto, fecha, etc. Las preferencias son 'implementadas' disponibilizando
una interface gráfica que permite al usuario ver y modificar
los valores de las preferencias. Una API es disponibilizada
para consultar los valores de las preferencias y para registrar
llamadas de alerta (callbacks) que serán invocadas
cuando las preferencias fuesen alteradas.
Los valores de las preferencias que difieren de los valores
por defecto son almacenados como formularios scheme en archivos
de preferencias específicos al usuario (~/.gnucash/config.auto).
Este archivo es cargado automáticamente durante el
arranque.
|
|
Importación QIF |
|
El módulo de Importación QIF (src/scm/qif-import)
disponibiliza funcionalidades para importar datos QIF (Quicken
Interchange Format - Formato de Intercambio Rápido)
para el GnuCash.
|
|
GnuCash |
|
El módulo GnuCash (src/gnome, src/register/gnome
y src/*.[ch]) es la interface gráfica principal
de la aplicación. Consiste en una colección
de varios códigos de interface gráfica para juntar todas las
piezas sobre un todo coherente. Se espera que sea fácil de
utilizar e intuitivo para el usuario novato sin sacrificar
el poder y flexibilidad que un profesional deberá esperar.
Cuando las personas dicen que el GnuCash va a intentar ser
semejante en "aspecto/funcionalidades/comportamiento al Quicken
o MS Money", es a esta pieza que se refieren. Está realmente
diseñado para ser un gestor de finanzas personales
con poder suficiente para el usuario experto y simple de utilizar
para el novato.
Actualmente, la interface Gnome es la única interface operacional.
Existe una interface obsoleta en Motif que no va a ser mantenida.
El código Qt no compilará, y la mayoría/ todas las
funcionalidades están por implementar.
|
|
|