Modelo de datos y XML v4.4 (Facturación)
Firestore
Todo cuelga del negocio: users/{ownerUid}/clients/{clientId}/...
| Colección | Contenido |
|---|---|
comprobantes | Cada comprobante emitido (ComprobanteDoc): clave, consecutivo, tipo, estado, receptor, líneas, totales, condición, medio, fechas, detalleMensaje. |
productos | Catálogo: nombre, codigoCABYS, codigoTarifaIVA, exento, precioUnitario, unidadMedida, permiteFracciones, controlaInventario + existencias, datos de medicamento (registro, forma farmacéutica). |
receptores | Clientes/proveedores: identificación, Ubicación v4.4, correo, MAG (activoMAG, vencimientoMAG), exoneración (documento) + sub-doc exo/cabys (CABYS cubiertos), otrasSenasExtranjero (FEC 05). |
| emisor (config) | Razón social, nombre comercial, actividades económicas, ubicación, certificado + credenciales (server-side). |
Storage: XML firmado + XML respuesta de Hacienda (xmlStoragePath(...)). El PDF se genera on-demand.
Cadena de tipos (mantener en sync)
EmitirInput (emitir.ts) ← payload de entrada
→ ComprobanteDoc (emisorStore) ← lo que se guarda en Firestore
→ ComprobanteMeta (client/api) ← lo que lee el cliente
→ ReciboData (ReciboModal) ← tiquet imprimible
→ FacturaPdfData (pdf.ts) ← PDFEstructura del XML (Hacienda v4.4)
Clave numérica (50 dígitos)
506 | DD MM AA | cédula emisor (12) | consecutivo (20) | situación (1) | código seguridad (8)Número consecutivo (20 dígitos)
casa (3) | terminal (5) | tipo doc (2) | consecutivo (10)tipo doc: 01 factura, 02 ND, 03 NC, 04 tiquete, 08 FEC, 09 FEE.
Bloques principales
- Emisor / Receptor — identificación +
Ubicacion(provincia, cantón, distrito, otras señas). En FEC los roles se invierten. - CondicionVenta + PlazoCredito (solo crédito 02/10) + MedioPago.
- DetalleServicio / LineaDetalle — por línea:
CodigoCABYS,Cantidad(decimal),UnidadMedida,Detalle,PrecioUnitario,Impuesto(tarifa) yExoneracionopcional (TipoDocumento, NumeroDocumento, NombreInstitucion, FechaEmision, TarifaExonerada). - ResumenFactura —
TotalVentaNeta, desgloses de IVA,TotalComprobante. - InformacionReferencia (NC/ND/FEC) — orden XSD:
TipoDocIR → TipoDocRefOTRO → Numero → FechaEmisionIR → Codigo → CodigoReferenciaOTRO → Razon. - ds:Signature / xades:QualifyingProperties — firma XAdES-EPES.
Firma digital
XAdES-EPES, SHA256 + RSA, firma enveloped, con la llave criptográfica del emisor (.p12), incluyendo la política de firma de Hacienda (URL + hash).
Recepción (API)
POST /recepcion con el cuerpo { clave, fecha, emisor, receptor?, comprobanteXml (base64), consecutivoReceptor?, callbackUrl? }. Estado por GET /recepcion/{clave} → JSON con ind-estado y respuesta-xml (base64 del MensajeHacienda; de ahí se extrae <DetalleMensaje>).
Catálogos de códigos
- Identificación receptor:
01Física ·02Jurídica ·03DIMEX ·04NITE ·05Extranjero No Domiciliado (no válido en factura 01; sí en FEC). - Condición de venta:
01Contado ·02Crédito ·03Consignación ·04Apartado ·05/06Arrendamiento ·07Cobro a favor de tercero ·08Servicios al Estado ·10Crédito IVA ≤90 días ·12-15·99Otros. - Medio de pago:
01Efectivo ·02Tarjeta ·03Cheque ·04Transferencia ·05Recaudado por terceros ·06SINPE Móvil ·07Plataforma Digital ·99Otros. - Unidades de medida:
Unid,Sp(servicios) — enteras;Kg,G,L,mL,M,cm,h,D… — fraccionables.
Toda emisión se audita contra la guía oficial ANEXOS Y ESTRUCTURAS v4.4 de Hacienda.