← Volver a proyectos▍ Club de pádel: ventas del bar y contabilidad

R2 Pádel

El TPV del bar de un club de pádel, conectado a una app de análisis y a Holded a partir de la copia de seguridad que el TPV ya hacía cada día.

R2 Pádel, Club de pádel: ventas del bar y contabilidad
R2 Pádel, Club de pádel: ventas del bar y contabilidad

[01] El Reto

El bar de R2 Pádel funciona con Ágora, un TPV de hostelería, en su versión Lite: sin módulo de integración, sin API y sin más exportación que lo que imprime la caja. Cuatro años y medio de ventas vivían en una base de datos SQL Server dentro de un único PC táctil detrás de la barra. El club quería ver qué se vende, cuándo y a qué precio, y las ventas de cada día tenían que llegar a Holded, su programa de contabilidad, sin que nadie las volviera a teclear.

R2 Pádel, Club de pádel: ventas del bar y contabilidad
Página completa · r2 pádel

[02] El Enfoque

En lugar de pagar el módulo de integración de Ágora o ejecutar código contra el TPV en marcha, AEMEDIA aprovechó algo que el TPV ya hace cada día: su propia copia de seguridad. Un pequeño agente programado en el TPV envía cada copia nueva a nuestro servidor por HTTPS, en trozos de 2 MB que se reanudan, para que la conexión del bar pueda caerse a mitad de subida sin perder el día. En el servidor, un worker la restaura en SQL Server Express, pasa una serie de comprobaciones (totales contra líneas, cobros contra totales) y carga un histórico de ventas limpio en PostgreSQL. Nunca se borra nada, así que un TPV reiniciado no puede llevarse el pasado por delante.

R2 Pádel, Club de pádel: ventas del bar y contabilidad
▍ Stack
  • Python
  • FastAPI
  • PostgreSQL
  • SQL Server Express
  • React
  • Holded API
  • Docker
▍ Capacidades

Integración de sistemas · Pipelines de datos · App de análisis · Sincronización contable · Monitorización

Móvil · r2 pádel

[03] La Solución

Sobre ese histórico hay una app de análisis privada y bilingüe (español e inglés): ventas en el tiempo comparadas con cualquier periodo anterior, las horas fuertes de cada día de la semana, qué se vende por familia y producto, tarjeta frente a efectivo y un histórico de precios que muestra qué pasó con las ventas después de cada cambio de precio. Todo se exporta a Excel. Con los mismos datos, cada día cerrado se convierte en un ticket de venta en Holded, con una línea por producto y los cobros del día en tarjeta y efectivo. Holded redondea el IVA línea a línea y Ágora ticket a ticket, así que la sincronización reparte unos céntimos entre líneas hasta que los dos coinciden; probada contra todo el histórico, cada día cuadra con la caja al céntimo.

R2 Pádel system diagram: the bar's Ágora POS sends its daily backup over HTTPS in chunks to a FastAPI service; a worker restores it on SQL Server Express, checks it and loads PostgreSQL; FastAPI serves the analytics app from PostgreSQL, and the worker posts one sales receipt per day to Holded.▍ r2 pádel · sistema[02] integrationsbar → server · HTTPS · device token · sha256.bakzchunksJSONjobsSQLcorerestore1 receipt / dayÁgora TPVbar POS · daily backupFastAPIingest · sessions · APIReact appanalytics · ES / ENWorkerETL · checks · alertsPostgreSQLsales historySQL ServerExpress · restore onlyHoldedaccounting
Sistema

[04] Resultado

La app de análisis está en producción desde octubre de 2026 y se alimenta cada día de la copia de seguridad del propio TPV, con monitorización y avisos por correo si una copia no llega o una comprobación falla. La sincronización con Holded está construida y funcionando contra una empresa de pruebas, a la espera del visto bueno de la gestoría antes de pasar a la contabilidad real.

▍ Siguiente proyectoChic DentalClínica Dental · Sur de EspañaUn sitio de clínica orientado a conversión, hecho para convertir la búsqueda local en citas reservadas.→
Chic Dental, Clínica Dental

Cuéntanos el problema, no el briefing.

Con tres líneas basta: qué falla o qué falta, qué usas hoy y para cuándo lo necesitas. Contesta uno de los dos; aquí no hay formulario que se pierda por el camino.

hello@aemedia.es ↗