Contabilidad y declaraciones (App A) — Visión general
App A (el repo principal, TributaPro) es una plataforma SaaS de contabilidad e impuestos para contadores de Costa Rica (multi-cliente). El contador administra varios contribuyentes y, por cada uno, ingesta comprobantes electrónicos (XML), arma los libros de IVA (compras/ventas) y genera las declaraciones ante Hacienda.
App A no emite comprobantes a Hacienda — eso lo hace App B (Facturación). App A consume los XML/comprobantes y los procesa para contabilidad y declaraciones.
Capacidades
- Ingesta de XML de Hacienda (factura, tiquete, NC/ND, FEC, exportación, recibo de pago, MensajeHacienda/Receptor) → aplanado y guardado en Firestore.
- Libros de compras (gastos) y ventas (ingresos): desglose de IVA por tarifa, cuenta contable, detalle fiscal y régimen.
- Declaraciones: D-150 (tradicional mensual), D-104/D-105/D-153 (régimen simplificado), D-151/D-152 (agropecuario).
- Conciliación de IVA: gravado/exento desde el desglose vs.
TotalVentaNeta, con overrides de tarifa-mismatch. - Prorrata (proporción gravado/exento) para crédito fiscal.
- Módulos auxiliares: pagos/cobros, módulo taxi (odómetro → D-104), analítica del cliente, suscripciones (Paddle) y gestión de accesos a la app de facturación.
Mapa rápido del código
| Área | Ubicación |
|---|---|
| Tarifas de IVA | lib/accountants/rateConfig.ts |
| Códigos Hacienda | lib/constants/invoiceCodes.ts |
| Filas de libro | lib/accountants/bookRowBuilders.ts |
| Ingesta/aplanado XML | components/organisms/accountants/BillsView.tsx (flatten) |
| Editor de libros + declaraciones | components/organisms/accountants/LibrosTab.tsx |
| Mismatch (runtime) | LibrosTab.tsx → applyMismatchOverridesToRows |
| Declaraciones | lib/accountants/FormHelpers.ts, formFieldMaps.ts, D153Helpers.ts, D104/D105/D150/D151/D152Helpers.ts |
| Lookup Hacienda | hooks/useHaciendaLookup.ts |
| Accesos a App B | app/api/facturador/access/route.ts, lib/facturador/** |
Seguí con Arquitectura para el detalle de stack, módulos e integración con App B.