Flujos y casos de uso (Contabilidad)
Visión de extremo a extremo
1. Onboarding y suscripción
Landing → registro → se crea subscriptions/{uid}_accountants (estado trialing, 30 días) → dashboard → activar plan. Paddle maneja el cobro; la Cloud Function paddleWebhook actualiza el estado. Los planes definen límites de clientes/facturas (isBlocked corta cuando se excede).
2. Alta de cliente
/accountants → modal de nuevo cliente → opcional “Consultar Hacienda” (useHaciendaLookup) → autorelleno de régimen y actividades económicas (CIIU) → guardar en users/{uid}/clients/{id}. El estado moroso/omiso se muestra como badge.
3. Ingesta de comprobantes
/bills → drag-and-drop de XML (lotes de 50):
- Parseo con
fast-xml-parser; se quitan los nodos de firma (ds:*,xades:*). flatten()aplana a notación punto y calcula el desglose de IVA/TE/Otros + detección de tarifa-mismatch.tipoMovimiento= ingreso si la cédula del cliente es el emisor, gasto si es el receptor.- Detección de duplicados por
Clave. - Escritura por
writeBatchaaccountantFiles/{fileId}(+ backfill deFechaEmisionTS).
Tipos de raíz soportados: FacturaElectronica, NotaDebito/CreditoElectronica, TiqueteElectronico, FacturaElectronicaCompra (FEC), FacturaElectronicaExportacion, ReciboElectronicoPago, y los mensajes MensajeHacienda/MensajeReceptor (actualizan MH/MR).
4. Libros (compras / ventas)
/books → BooksView carga los accountantFiles del año y construye las filas (buildPurchaseBookRows / buildSalesBookRows, solo aceptadas). En LibrosTab el contador puede:
- Asignar cuenta contable (
CuentaContableModal, árbol con overrides por año). - Asignar detalle fiscal (
DetalleIngresosModal) y actividad/régimen. - Edición masiva (
BulkEditModal). - Resolver tarifa-mismatch (
TarifaMismatchModal: tarifa real / código / TE). - Calcular prorrata (
ProrrataModal). - Guardar (
LibroConfirmModal) engastosBook/ingresosBook/{year}/months/{periodo}/rows/{rowKey}(se guarda el breakdown original, sin redistribuir).
5. Generar declaración
Botón “Generar formulario” → FormModal con el selector según el régimen del cliente:
| Régimen | Formulario |
|---|---|
| Tradicional | D-150 (mensual) |
| Simplificado | D-153 (si hay factor IVA) · D-104 (físico) · D-105 (jurídico) — trimestral |
| Especial agropecuario | D-152 (anual) o D-151 (cuatrimestral) |
Se elige el período, se pueden editar los factores por actividad, y se exporta a PDF/Excel. El cálculo es en runtime — las declaraciones no se persisten (solo los libros, prorrata, pagos, taxi y cuentas).
6. Pagos y cobros
/payments (PagosView/PagoModal) y /receivables (CobrosView): registran el flujo de caja contra facturas, con condición crédito/contado y estado vencido/vigente (colección pagos).
7. Módulo taxi
/taxi: lecturas de odómetro por placa/trimestre → cálculo automático del recorrido (recálculo en cascada entre trimestres) → genera la sección de D-104 simplificado (monto = totalRecorrido × factorISU, CIIU 4922.2).
8. Analítica del cliente
/info: useClientBookSummaries agrega los monthSummaries de ingresos/gastos → gráficos (Recharts) + estado Hacienda.
9. Habilitar la facturación (App B)
/accountants/clients/[clientId]/facturacion → FacturadorAccessPanel: crea/gestiona el usuario POS (acceso a App B) con custom claims confinados al clientId. Ver Arquitectura → Relación con App B.