Catalog · How the catalog works
APIContable
API desarrollada en Object Pascal con el IDE Delphi 12
- ★ 2 on GitHub
Anyone may press Interesting, signed in or not. It helps others find this project.
README
API REST Contable
Este proyecto es una API REST desarrollada en Delphi usando el framework Horse, que permite registrar operaciones contables bajo el principio de partida doble.
Admite entrada de datos en formato JSON y XML, y utiliza SQLite como base de datos.
Características
- Registro de operaciones contables.
- Comprobación de que el DEBE y el HABER están equilibrados.
- Soporte para entrada de datos en JSON y XML.
- Almacenamiento en base de datos SQLite.
- API sencilla y extensible.
Requisitos
- Delphi IDE (Recomendado: Delphi Community Edition 11 o superior).
- Git
- Postman o cualquier cliente REST (para pruebas).
- DB Browser for SQLite: Para generar la base de datos y las tablas necesarias.
Base de datos
- Por defecto, la API utiliza un fichero
delphi.dben SQLite
Tablas de la base de datos
CREATE TABLE operaciones (
id SERIAL PRIMARY KEY,
fecha_operacion DATE NOT NULL,
descripcion TEXT,
fecha_insercion TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);CREATE TABLE apuntes (
id SERIAL PRIMARY KEY,
operacion_id INTEGER REFERENCES operaciones(id) ON DELETE CASCADE,
codigo_cuenta VARCHAR(20) NOT NULL,
importe NUMERIC(12,2) NOT NULL CHECK (importe > 0),
tipo VARCHAR(5) CHECK (tipo IN ('DEBE', 'HABER')) NOT NULL
);Librerías necesarias
-
Horse
Instalar:
git clone https://github.com/HashLoad/horse.gitLuego añadir la ruta del directorio
srcal proyecto en:Project > Options > Delphi Compiler > Search PathEj: C:\Users\Administrador\Desktop\Project Delphi\horse\src
-
Jhonson (para entrada en JSON)
Instalar:
git clone https://github.com/HashLoad/jhonson.gitLuego añadir la ruta del directorio
srcal proyecto en:Project > Options > Delphi Compiler > Search PathEj: C:\Users\Administrador\Desktop\Project Delphi\jhonson\src
-
OmniXML (para entrada en XML si no tienes MSXML)
Instalar:
git clone https://github.com/mremec/omnixml.gitLuego añadir la ruta del directorio
omnixmlal proyecto en:Project > Options > Delphi Compiler > Search PathEj: C:\Users\Administrador\Desktop\Project Delphi\omnixml
Configuración del proyecto
- Abrir el proyecto (
.dpr) con Delphi. - Verificar que el framework Horse está referenciado en las rutas del proyecto.
- Si usas SQLite tienes que colocar la base de datos junto al .exe del programa (C:\Users\Administrador\Documents\Embarcadero\Studio\Projects\Win32\Debug)
- NOTA: Si hay problemas al abrir, se puede crear un nuevo proyecto tal que así: File -> New -> Console Application - Delphi Copiamos el código fuente y añadimos las librerías descargadas en: Project -> Options -> Building -> Delphi Compiler -> Search path y añadimos las tres rutas donde hubiéramos descargado las librerias necesarias.
Endpoints disponibles
POST /api/operaciones
Contenido JSON
{
"fecha_operacion": "2025-07-07",
"descripcion": "Pago de factura",
"apuntes": [
{ "codigo_cuenta": "430000", "importe": 1000.00, "tipo": "DEBE" },
{ "codigo_cuenta": "700000", "importe": 1000.00, "tipo": "HABER" }
]
}Contenido XML
<operacion>
<fecha_operacion>07-07-2025</fecha_operacion>
<descripcion>Desde XML</descripcion>
<apuntes>
<apunte>
<codigo_cuenta>430000</codigo_cuenta>
<importe>1000.00</importe>
<tipo>DEBE</tipo>
</apunte>
<apunte>
<codigo_cuenta>700000</codigo_cuenta>
<importe>1000.00</importe>
<tipo>HABER</tipo>
</apunte>
</apuntes>
</operacion>Content-Type requerido:
-
application/jsonoapplication/xmlRespuesta exito:
{
"mensaje": "Operación registrada correctamente",
"id_operacion": 1
}Respuesta error:
{
"error": "La suma del debe (400,00) no coincide con la suma del haber (4060,00)"
}GET /api/operaciones/:id
Devuelve los datos de una operación contable por su ID.
Pruebas
Se recomienda usar Postman o curl para enviar peticiones de prueba. En caso de POST: http://localhost:9000/api/operaciones En caso de GET: http://localhost:9000/api/operaciones/1
Notas
- El formato de fecha en XML debe ser
dd-mm-yyyy.
Licencia
MIT Nicolás Vidal Méndez

