Integracion con Contasol / A3
Por que Contasol
Contasol (Wolters Kluwer) y A3ERP son los programas de contabilidad mas utilizados por asesorias y pequenas empresas en Espana. Aunque no tienen API nativa, la importacion de datos se puede automatizar mediante archivos CSV con formatos estandarizados.
Lo que puedes integrar
| Proceso | Formato | Periodo |
|---|---|---|
| Facturas emitidas | CSV importable | Diario/Semanal |
| Asientos contables | CSV o XLSX | Mensual |
| Clientes/proveedores | CSV | A demanda |
Guia paso a paso
Paso 1: Obtener contratos firmados
bash
curl -X GET "https://api.pro.cargoffer.com/api/company/contracts/?dateFrom=2026-06-01&dateTo=2026-06-30" \
-H "Authorization: Bearer <token...
### Paso 2: Generar CSV en formato Contasol
Contasol espera un formato especifico de columnas. Este script genera el archivo listo para importar:
```python
import csv, requests
from datetime import datetime
TOKEN=*** = "exportaciones"
def generar_asientos_contasol():
"""Genera CSV de asientos contables para importar en Contasol."""
r = requests.get(
"https://api.pro.cargoffer.com/api/company/contracts/",
headers={"Authorization": f"Bearer {TOKEN}"}
)
contratos = r.json()
fecha_archivo = datetime.now().strftime("%Y%m%d")
archivo = f"{DIR_EXPORT}/asientos_cargoffer_{fecha_archivo}.csv"
with open(archivo, "w", newline="", encoding="utf-8") as f:
writer = csv.writer(f, delimiter=";")
# Cabecera Contasol
writer.writerow([
"Diario", "Fecha", "Cuenta", "Debe", "Haber",
"Concepto", "Documento", "CIF"
])
for c in contratos:
# Asiento de ingreso
writer.writerow([
"VT", # Diario de ventas
c["date"],
"70500001", # Cuenta de ingresos (personalizar)
"", # Debe
str(c["amount"]), # Haber
f"Transporte {c['serviceCode']}",
c["serviceCode"],
c["client"]["cif"]
])
# Asiento de IVA (si aplica)
writer.writerow([
"VT",
c["date"],
"47700001", # Cuenta de IVA repercutido
"",
str(round(c["amount"] * 0.21, 2)),
f"IVA Transporte {c['serviceCode']}",
c["serviceCode"],
c["client"]["cif"]
])
return archivoPaso 3: Importar en Contasol
- Abre Contasol
- Ve a
Utilidades -> Importar -> Asientos - Selecciona el archivo CSV generado
- Mapea las columnas segun el orden del CSV
- Ejecuta la importacion
Paso 4: Automatizar con tarea programada
bash
# En Linux (cron diario a las 22:00)
0 22 * * * /usr/bin/python3 /scripts/exportar_contasol.py
# En Windows (Programador de tareas)
# C:\Python39\python.exe C:\scripts\exportar_contasol.pyFormato CSV para A3ERP
Si usas A3ERP en lugar de Contasol, el formato es ligeramente diferente:
python
def generar_a3erp(contratos):
with open("asientos_a3.csv", "w", newline="") as f:
writer = csv.writer(f, delimiter=";")
writer.writerow([
"TipoAsiento", "Fecha", "CuentaContable",
"ImporteDebe", "ImporteHaber", "Concepto"
])
for c in contratos:
writer.writerow(["F", c["date"], "43000001",
c["amount"], "", f"Cobro {c['serviceCode']}"])
writer.writerow(["F", c["date"], "57000001",
"", c["amount"], f"Cobro {c['serviceCode']}"])Automatizacion completa con Power Automate
Si no quieres programar, puedes usar Microsoft Power Automate para:
- Trigger: Calendario (cada dia a las 22:00)
- Accion: Llamar a API Cargoffer para obtener contratos
- Accion: Generar archivo CSV
- Accion: Enviar por email al despacho contable