@dwast/verifactu-lib 0.1.0-beta.1 → 0.1.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/dist/cjs/aeat/client.d.ts +115 -14
  2. package/dist/cjs/aeat/client.d.ts.map +1 -1
  3. package/dist/cjs/aeat/client.js +223 -47
  4. package/dist/cjs/aeat/client.js.map +1 -1
  5. package/dist/cjs/aeat/index.d.ts +1 -0
  6. package/dist/cjs/aeat/index.d.ts.map +1 -1
  7. package/dist/cjs/aeat/index.js +1 -0
  8. package/dist/cjs/aeat/index.js.map +1 -1
  9. package/dist/cjs/aeat/response.d.ts +80 -0
  10. package/dist/cjs/aeat/response.d.ts.map +1 -0
  11. package/dist/cjs/aeat/response.js +118 -0
  12. package/dist/cjs/aeat/response.js.map +1 -0
  13. package/dist/cjs/core/hash/chain.d.ts +42 -0
  14. package/dist/cjs/core/hash/chain.d.ts.map +1 -1
  15. package/dist/cjs/core/hash/chain.js +40 -0
  16. package/dist/cjs/core/hash/chain.js.map +1 -1
  17. package/dist/cjs/core/index.d.ts +2 -0
  18. package/dist/cjs/core/index.d.ts.map +1 -1
  19. package/dist/cjs/core/index.js +2 -0
  20. package/dist/cjs/core/index.js.map +1 -1
  21. package/dist/cjs/core/models/index.d.ts +0 -1
  22. package/dist/cjs/core/models/index.d.ts.map +1 -1
  23. package/dist/cjs/core/models/index.js +0 -1
  24. package/dist/cjs/core/models/index.js.map +1 -1
  25. package/dist/cjs/core/models/invoice.d.ts +42 -17
  26. package/dist/cjs/core/models/invoice.d.ts.map +1 -1
  27. package/dist/cjs/core/utils/date.d.ts +16 -0
  28. package/dist/cjs/core/utils/date.d.ts.map +1 -0
  29. package/dist/cjs/core/utils/date.js +27 -0
  30. package/dist/cjs/core/utils/date.js.map +1 -0
  31. package/dist/cjs/core/utils/index.d.ts +2 -0
  32. package/dist/cjs/core/utils/index.d.ts.map +1 -0
  33. package/dist/cjs/core/utils/index.js +18 -0
  34. package/dist/cjs/core/utils/index.js.map +1 -0
  35. package/dist/cjs/core/validation/index.d.ts +2 -0
  36. package/dist/cjs/core/validation/index.d.ts.map +1 -0
  37. package/dist/cjs/core/validation/index.js +18 -0
  38. package/dist/cjs/core/validation/index.js.map +1 -0
  39. package/dist/cjs/core/validation/validate.d.ts +18 -0
  40. package/dist/cjs/core/validation/validate.d.ts.map +1 -0
  41. package/dist/cjs/core/validation/validate.js +65 -0
  42. package/dist/cjs/core/validation/validate.js.map +1 -0
  43. package/dist/cjs/core/xml/generator.d.ts +117 -11
  44. package/dist/cjs/core/xml/generator.d.ts.map +1 -1
  45. package/dist/cjs/core/xml/generator.js +239 -64
  46. package/dist/cjs/core/xml/generator.js.map +1 -1
  47. package/dist/cjs/integration/accountability.d.ts +41 -0
  48. package/dist/cjs/integration/accountability.d.ts.map +1 -0
  49. package/dist/cjs/integration/accountability.js +92 -0
  50. package/dist/cjs/integration/accountability.js.map +1 -0
  51. package/dist/cjs/integration/index.d.ts +2 -0
  52. package/dist/cjs/integration/index.d.ts.map +1 -1
  53. package/dist/cjs/integration/index.js +2 -0
  54. package/dist/cjs/integration/index.js.map +1 -1
  55. package/dist/cjs/integration/p12.d.ts +58 -0
  56. package/dist/cjs/integration/p12.d.ts.map +1 -0
  57. package/dist/cjs/integration/p12.js +127 -0
  58. package/dist/cjs/integration/p12.js.map +1 -0
  59. package/dist/cjs/integration/repository.d.ts +4 -3
  60. package/dist/cjs/integration/repository.d.ts.map +1 -1
  61. package/dist/cjs/integration/service.d.ts +11 -2
  62. package/dist/cjs/integration/service.d.ts.map +1 -1
  63. package/dist/cjs/integration/service.js +115 -15
  64. package/dist/cjs/integration/service.js.map +1 -1
  65. package/dist/cjs/integration/tenant-credentials.d.ts +44 -0
  66. package/dist/cjs/integration/tenant-credentials.d.ts.map +1 -0
  67. package/dist/cjs/integration/tenant-credentials.js +62 -0
  68. package/dist/cjs/integration/tenant-credentials.js.map +1 -0
  69. package/dist/esm/aeat/client.d.ts +115 -14
  70. package/dist/esm/aeat/client.d.ts.map +1 -1
  71. package/dist/esm/aeat/client.js +218 -46
  72. package/dist/esm/aeat/client.js.map +1 -1
  73. package/dist/esm/aeat/index.d.ts +1 -0
  74. package/dist/esm/aeat/index.d.ts.map +1 -1
  75. package/dist/esm/aeat/index.js +1 -0
  76. package/dist/esm/aeat/index.js.map +1 -1
  77. package/dist/esm/aeat/response.d.ts +80 -0
  78. package/dist/esm/aeat/response.d.ts.map +1 -0
  79. package/dist/esm/aeat/response.js +115 -0
  80. package/dist/esm/aeat/response.js.map +1 -0
  81. package/dist/esm/core/hash/chain.d.ts +42 -0
  82. package/dist/esm/core/hash/chain.d.ts.map +1 -1
  83. package/dist/esm/core/hash/chain.js +37 -0
  84. package/dist/esm/core/hash/chain.js.map +1 -1
  85. package/dist/esm/core/index.d.ts +2 -0
  86. package/dist/esm/core/index.d.ts.map +1 -1
  87. package/dist/esm/core/index.js +2 -0
  88. package/dist/esm/core/index.js.map +1 -1
  89. package/dist/esm/core/models/index.d.ts +0 -1
  90. package/dist/esm/core/models/index.d.ts.map +1 -1
  91. package/dist/esm/core/models/index.js +0 -1
  92. package/dist/esm/core/models/index.js.map +1 -1
  93. package/dist/esm/core/models/invoice.d.ts +42 -17
  94. package/dist/esm/core/models/invoice.d.ts.map +1 -1
  95. package/dist/esm/core/utils/date.d.ts +16 -0
  96. package/dist/esm/core/utils/date.d.ts.map +1 -0
  97. package/dist/esm/core/utils/date.js +24 -0
  98. package/dist/esm/core/utils/date.js.map +1 -0
  99. package/dist/esm/core/utils/index.d.ts +2 -0
  100. package/dist/esm/core/utils/index.d.ts.map +1 -0
  101. package/dist/esm/core/utils/index.js +2 -0
  102. package/dist/esm/core/utils/index.js.map +1 -0
  103. package/dist/esm/core/validation/index.d.ts +2 -0
  104. package/dist/esm/core/validation/index.d.ts.map +1 -0
  105. package/dist/esm/core/validation/index.js +2 -0
  106. package/dist/esm/core/validation/index.js.map +1 -0
  107. package/dist/esm/core/validation/validate.d.ts +18 -0
  108. package/dist/esm/core/validation/validate.d.ts.map +1 -0
  109. package/dist/esm/core/validation/validate.js +62 -0
  110. package/dist/esm/core/validation/validate.js.map +1 -0
  111. package/dist/esm/core/xml/generator.d.ts +117 -11
  112. package/dist/esm/core/xml/generator.d.ts.map +1 -1
  113. package/dist/esm/core/xml/generator.js +233 -64
  114. package/dist/esm/core/xml/generator.js.map +1 -1
  115. package/dist/esm/integration/accountability.d.ts +41 -0
  116. package/dist/esm/integration/accountability.d.ts.map +1 -0
  117. package/dist/esm/integration/accountability.js +88 -0
  118. package/dist/esm/integration/accountability.js.map +1 -0
  119. package/dist/esm/integration/index.d.ts +2 -0
  120. package/dist/esm/integration/index.d.ts.map +1 -1
  121. package/dist/esm/integration/index.js +2 -0
  122. package/dist/esm/integration/index.js.map +1 -1
  123. package/dist/esm/integration/p12.d.ts +58 -0
  124. package/dist/esm/integration/p12.d.ts.map +1 -0
  125. package/dist/esm/integration/p12.js +119 -0
  126. package/dist/esm/integration/p12.js.map +1 -0
  127. package/dist/esm/integration/repository.d.ts +4 -3
  128. package/dist/esm/integration/repository.d.ts.map +1 -1
  129. package/dist/esm/integration/service.d.ts +11 -2
  130. package/dist/esm/integration/service.d.ts.map +1 -1
  131. package/dist/esm/integration/service.js +117 -17
  132. package/dist/esm/integration/service.js.map +1 -1
  133. package/dist/esm/integration/tenant-credentials.d.ts +44 -0
  134. package/dist/esm/integration/tenant-credentials.d.ts.map +1 -0
  135. package/dist/esm/integration/tenant-credentials.js +58 -0
  136. package/dist/esm/integration/tenant-credentials.js.map +1 -0
  137. package/package.json +3 -1
  138. package/readme.md +731 -38
  139. package/src/aeat/client.ts +298 -57
  140. package/src/aeat/index.ts +1 -0
  141. package/src/aeat/response.ts +198 -0
  142. package/src/core/hash/chain.ts +68 -0
  143. package/src/core/index.ts +2 -0
  144. package/src/core/models/index.ts +0 -1
  145. package/src/core/models/invoice.ts +40 -18
  146. package/src/core/utils/date.ts +27 -0
  147. package/src/core/utils/index.ts +1 -0
  148. package/src/core/validation/index.ts +1 -0
  149. package/src/core/validation/validate.ts +71 -0
  150. package/src/core/xml/generator.ts +312 -73
  151. package/src/integration/accountability.ts +125 -0
  152. package/src/integration/index.ts +2 -0
  153. package/src/integration/p12.ts +155 -0
  154. package/src/integration/repository.ts +4 -3
  155. package/src/integration/schema.sql +0 -14
  156. package/src/integration/service.ts +134 -16
  157. package/src/core/models/event.ts +0 -25
@@ -1,32 +1,138 @@
1
- import type { Invoice } from '../models/invoice.js';
1
+ import type { Invoice, SistemaInformatico } from '../models/invoice.js';
2
2
  /**
3
- * Datos de la factura que se anula.
3
+ * Datos de un registro de anulación (RegistroFacturacionAnulacionType).
4
4
  */
5
5
  export interface AnulacionInput {
6
6
  /** NIF del emisor de la factura anulada. */
7
7
  idEmisorFacturaAnulada: string;
8
8
  /** Número y serie de la factura anulada. */
9
9
  numSerieFacturaAnulada: string;
10
- /** Fecha de expedición de la factura anulada. */
10
+ /** Fecha de expedición de la factura anulada (DD-MM-YYYY). */
11
11
  fechaExpedicionFacturaAnulada: string;
12
12
  /** Huella (hash) de la factura anulada. */
13
13
  huellaFacturaAnulada: string;
14
+ /** Sistema informático que genera el registro. */
15
+ sistemaInformatico: SistemaInformatico;
16
+ /** Fecha/hora de generación con huso horario. */
17
+ fechaHoraHusoGenRegistro: string;
18
+ /** Huella (hash) del propio registro de anulación. */
19
+ huella: string;
20
+ /** Versión del esquema (por defecto '1.0'). */
21
+ idVersion?: string;
14
22
  }
23
+ /**
24
+ * Genera el elemento `<RegistroAlta>` de una factura (registro de alta).
25
+ *
26
+ * Estructura según el XSD `SuministroInformacion.xsd` de la AEAT
27
+ * (`RegistroFacturacionAltaType`). NOTA: validar contra el XSD oficial
28
+ * antes de producción.
29
+ */
30
+ export declare function generateRegistroAltaXml(invoice: Invoice, previousHash: string | null): string;
31
+ /**
32
+ * Namespace del esquema `SuministroLR.xsd` de la AEAT.
33
+ */
34
+ export declare const AEAT_SUMINISTRO_NAMESPACE = "https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroLR.xsd";
35
+ /**
36
+ * Namespace del esquema `SuministroInformacion.xsd` de la AEAT.
37
+ */
38
+ export declare const AEAT_INFORMACION_NAMESPACE = "https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd";
39
+ /**
40
+ * Namespace del esquema `EventosSIF.xsd` de la AEAT (registro de eventos).
41
+ */
42
+ export declare const AEAT_EVENTO_NAMESPACE = "https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/EventosSIF.xsd";
43
+ /**
44
+ * Cabecera del suministro (CabeceraType del XSD).
45
+ */
46
+ export interface Cabecera {
47
+ /** Nombre o razón social del obligado a emitir. */
48
+ nombreRazon: string;
49
+ /** NIF del obligado a emitir. */
50
+ nif: string;
51
+ /** Representante del obligado (solo si el envío lo hace un representante). */
52
+ representante?: {
53
+ /** Nombre o razón social del representante. */
54
+ nombreRazon: string;
55
+ /** NIF del representante. */
56
+ nif: string;
57
+ };
58
+ }
59
+ /**
60
+ * Genera el elemento `<RegFactuSistemaFacturacion>` completo (operación SOAP),
61
+ * con la `Cabecera` y el `RegistroFactura` que envuelve el registro.
62
+ */
63
+ export declare function generateSuministroXml(registroXml: string, cabecera: Cabecera): string;
64
+ /**
65
+ * Construye la `Cabecera` del suministro, detectando si el certificado es de
66
+ * un representante.
67
+ *
68
+ * Si se proporciona el certificado en PEM y su NIF difiere del NIF del
69
+ * obligado, se añade el bloque `Representante` (el certificado actúa como
70
+ * representante del obligado), usando el nombre del titular del certificado.
71
+ */
72
+ export declare function buildCabecera(obligado: {
73
+ nombreRazon: string;
74
+ nif: string;
75
+ }, certificatePem?: string, extractInfo?: (pem: string) => {
76
+ nif: string;
77
+ nombreRazon: string;
78
+ } | null): Cabecera;
15
79
  /**
16
80
  * Genera el XML Verifactu de una factura (registro de alta).
17
81
  *
18
- * Estructura basada en el RD 1007/2023 y la documentación técnica de la
19
- * AEAT. NOTA: el esquema XSD oficial debe validarse antes de producción;
20
- * este esqueleto refleja los bloques principales (IDFactura, IDEmisorFactura,
21
- * TipoFactura, TipoDesglose, Desglose, CuotaTotal, Encadenamiento, Huella).
82
+ * Alias de `generateRegistroAltaXml` por compatibilidad.
22
83
  */
23
84
  export declare function generateInvoiceXml(invoice: Invoice, previousHash: string | null): string;
24
85
  /**
25
- * Genera el XML Verifactu de un registro de anulación.
86
+ * Genera el XML Verifactu de un registro de anulación (`<sf:RegistroAnulacion>`).
26
87
  *
27
- * Referencia la factura anulada (IDFactura + Huella) y encadena con el hash
28
- * anterior. Estructura basada en el RD 1007/2023; validar contra el XSD
29
- * oficial antes de producción.
88
+ * Referencia la factura anulada (IDFactura) y encadena con el hash anterior.
89
+ * Estructura según el XSD `SuministroInformacion.xsd` (`RegistroFacturacionAnulacionType`).
30
90
  */
31
91
  export declare function generateAnulacionXml(anulacion: AnulacionInput, previousHash: string | null): string;
92
+ /**
93
+ * Datos de un registro de evento (RegistroEvento, EventosSIF.xsd).
94
+ */
95
+ export interface EventoInput {
96
+ /** Sistema informático que genera el evento. */
97
+ sistemaInformatico: SistemaInformatico;
98
+ /** Obligado a emitir (persona física o jurídica española). */
99
+ obligadoEmision: {
100
+ nombreRazon: string;
101
+ nif: string;
102
+ };
103
+ /** Fecha/hora de generación con huso horario (ISO 8601). */
104
+ fechaHoraHusoGenEvento: string;
105
+ /** Tipo de evento (01–10, 90). */
106
+ tipoEvento: string;
107
+ /** Huella (hash) del evento. */
108
+ huellaEvento: string;
109
+ /** Evento anterior de la cadena (obligatorio para el 2º evento en adelante). */
110
+ eventoAnterior?: {
111
+ /** Tipo de evento del evento anterior. */
112
+ tipoEvento: string;
113
+ /** Fecha/hora de generación del evento anterior. */
114
+ fechaHoraHusoGenEvento: string;
115
+ /** Huella (hash) del evento anterior. */
116
+ huellaEvento: string;
117
+ };
118
+ /** Versión del esquema (por defecto '1.0'). */
119
+ idVersion?: string;
120
+ }
121
+ /**
122
+ * Genera el XML Verifactu de un registro de evento (RegistroEvento).
123
+ *
124
+ * Estructura basada en `EventosSIF.xsd` (namespace `sf`). El evento se envía
125
+ * como un suministro independiente (no dentro de `RegFactuSistemaFacturacion`).
126
+ *
127
+ * El encadenado emite `<sf:PrimerEvento>S</sf:PrimerEvento>` si es el primer
128
+ * evento, o `<sf:EventoAnterior>` con los datos del evento previo si se
129
+ * proporciona `eventoAnterior`.
130
+ */
131
+ export declare function generateEventoXml(evento: EventoInput): string;
132
+ /**
133
+ * Envuelve un elemento de operación Verifactu en el sobre SOAP que la AEAT
134
+ * espera en el envío. El XML de entrada DEBE ser ya el elemento de operación
135
+ * (p. ej. `<RegFactuSistemaFacturacion>` o `<ConsultaFactuSistemaFacturacion>`).
136
+ */
137
+ export declare function buildRemisionEnvelope(operationXml: string): string;
32
138
  //# sourceMappingURL=generator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../../src/core/xml/generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,4CAA4C;IAC5C,sBAAsB,EAAE,MAAM,CAAC;IAC/B,4CAA4C;IAC5C,sBAAsB,EAAE,MAAM,CAAC;IAC/B,iDAAiD;IACjD,6BAA6B,EAAE,MAAM,CAAC;IACtC,2CAA2C;IAC3C,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAqBD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAwDxF;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,cAAc,EACzB,YAAY,EAAE,MAAM,GAAG,IAAI,GAC1B,MAAM,CAqBR"}
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../../src/core/xml/generator.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AEAT_EVENTO_NAMESPACE = exports.AEAT_INFORMACION_NAMESPACE = exports.AEAT_SUMINISTRO_NAMESPACE = void 0;
4
+ exports.generateRegistroAltaXml = generateRegistroAltaXml;
5
+ exports.generateSuministroXml = generateSuministroXml;
6
+ exports.buildCabecera = buildCabecera;
3
7
  exports.generateInvoiceXml = generateInvoiceXml;
4
8
  exports.generateAnulacionXml = generateAnulacionXml;
9
+ exports.generateEventoXml = generateEventoXml;
10
+ exports.buildRemisionEnvelope = buildRemisionEnvelope;
5
11
  /**
6
12
  * Escapa caracteres especiales para XML.
7
13
  */
@@ -20,88 +26,257 @@ function formatAmount(value) {
20
26
  return value.toFixed(2);
21
27
  }
22
28
  /**
23
- * Genera el XML Verifactu de una factura (registro de alta).
29
+ * Genera el elemento `<RegistroAlta>` de una factura (registro de alta).
24
30
  *
25
- * Estructura basada en el RD 1007/2023 y la documentación técnica de la
26
- * AEAT. NOTA: el esquema XSD oficial debe validarse antes de producción;
27
- * este esqueleto refleja los bloques principales (IDFactura, IDEmisorFactura,
28
- * TipoFactura, TipoDesglose, Desglose, CuotaTotal, Encadenamiento, Huella).
31
+ * Estructura según el XSD `SuministroInformacion.xsd` de la AEAT
32
+ * (`RegistroFacturacionAltaType`). NOTA: validar contra el XSD oficial
33
+ * antes de producción.
29
34
  */
30
- function generateInvoiceXml(invoice, previousHash) {
31
- const { id, emisor, desglose, tipoFactura, tipoDesglose } = invoice;
32
- const detalles = desglose.tipoOperaciones
33
- .map((op) => {
34
- const iva = op.detallesIva
35
- .map((d) => ` <DetalleIVA>` +
36
- `<TipoImpositivo>${formatAmount(d.tipoImpositivo)}</TipoImpositivo>` +
37
- `<BaseImponible>${formatAmount(d.baseImponible)}</BaseImponible>` +
38
- `<CuotaRepercutida>${formatAmount(d.cuotaRepercutida)}</CuotaRepercutida>` +
39
- `</DetalleIVA>`)
40
- .join('\n');
41
- return (` <DesgloseTipoOperacion>` +
42
- `<TipoOperacion>${escapeXml(op.tipoOperacion)}</TipoOperacion>` +
43
- `\n <DesgloseIVA>\n${iva}\n </DesgloseIVA>` +
44
- `\n </DesgloseTipoOperacion>`);
45
- })
35
+ function generateRegistroAltaXml(invoice, previousHash) {
36
+ const { id, emisor, desglose, tipoFactura, sistemaInformatico } = invoice;
37
+ const idVersion = invoice.idVersion ?? '1.0';
38
+ const descripcion = invoice.descripcion ?? '';
39
+ const detalles = desglose.detalles
40
+ .map((d) => ` <sf:DetalleDesglose>` +
41
+ (d.claveRegimen !== undefined
42
+ ? `<sf:ClaveRegimen>${escapeXml(d.claveRegimen)}</sf:ClaveRegimen>`
43
+ : '') +
44
+ `<sf:CalificacionOperacion>${escapeXml(d.calificacionOperacion)}</sf:CalificacionOperacion>` +
45
+ (d.tipoImpositivo !== undefined
46
+ ? `<sf:TipoImpositivo>${formatAmount(d.tipoImpositivo)}</sf:TipoImpositivo>`
47
+ : '') +
48
+ `<sf:BaseImponibleOimporteNoSujeto>${formatAmount(d.baseImponible)}</sf:BaseImponibleOimporteNoSujeto>` +
49
+ (d.cuotaRepercutida !== undefined
50
+ ? `<sf:CuotaRepercutida>${formatAmount(d.cuotaRepercutida)}</sf:CuotaRepercutida>`
51
+ : '') +
52
+ `</sf:DetalleDesglose>`)
46
53
  .join('\n');
54
+ const encadenamiento = previousHash
55
+ ? ` <sf:RegistroAnterior><sf:IDEmisorFactura>${escapeXml(emisor.nif)}</sf:IDEmisorFactura><sf:NumSerieFactura>${escapeXml(id.serie ?? '')}${escapeXml(id.numero)}</sf:NumSerieFactura><sf:FechaExpedicionFactura>${id.fechaExpedicion}</sf:FechaExpedicionFactura><sf:Huella>${previousHash}</sf:Huella></sf:RegistroAnterior>`
56
+ : ` <sf:PrimerRegistro>S</sf:PrimerRegistro>`;
47
57
  const xml = [
48
58
  '<?xml version="1.0" encoding="UTF-8"?>',
49
- '<RegistroFactura>',
50
- ' <IDFactura>',
51
- ' <IDEmisorFactura>',
52
- ` <NIF>${escapeXml(emisor.nif)}</NIF>`,
53
- ` <NombreRazon>${escapeXml(emisor.nombreRazon)}</NombreRazon>`,
54
- emisor.pais ? ` <Pais>${escapeXml(emisor.pais)}</Pais>` : '',
55
- emisor.codigoPostal ? ` <CodigoPostal>${escapeXml(emisor.codigoPostal)}</CodigoPostal>` : '',
56
- emisor.municipio ? ` <Municipio>${escapeXml(emisor.municipio)}</Municipio>` : '',
57
- emisor.direccion ? ` <Direccion>${escapeXml(emisor.direccion)}</Direccion>` : '',
58
- ' </IDEmisorFactura>',
59
- id.serie ? ` <SerieFactura>${escapeXml(id.serie)}</SerieFactura>` : '',
60
- ` <NumeroFactura>${escapeXml(id.numero)}</NumeroFactura>`,
61
- ` <FechaExpedicionFactura>${id.fechaExpedicion}</FechaExpedicionFactura>`,
62
- id.fechaOperacion ? ` <FechaOperacion>${id.fechaOperacion}</FechaOperacion>` : '',
63
- ' </IDFactura>',
64
- ` <TipoFactura>${tipoFactura}</TipoFactura>`,
65
- ` <TipoDesglose>${tipoDesglose}</TipoDesglose>`,
66
- ' <Desglose>',
59
+ `<sf:RegistroAlta xmlns:sf="${exports.AEAT_INFORMACION_NAMESPACE}">`,
60
+ ` <sf:IDVersion>${idVersion}</sf:IDVersion>`,
61
+ ' <sf:IDFactura>',
62
+ ` <sf:IDEmisorFactura>${escapeXml(emisor.nif)}</sf:IDEmisorFactura>`,
63
+ ` <sf:NumSerieFactura>${escapeXml(id.serie ?? '')}${escapeXml(id.numero)}</sf:NumSerieFactura>`,
64
+ ` <sf:FechaExpedicionFactura>${id.fechaExpedicion}</sf:FechaExpedicionFactura>`,
65
+ ' </sf:IDFactura>',
66
+ ` <sf:NombreRazonEmisor>${escapeXml(emisor.nombreRazon)}</sf:NombreRazonEmisor>`,
67
+ ` <sf:TipoFactura>${tipoFactura}</sf:TipoFactura>`,
68
+ ` <sf:DescripcionOperacion>${escapeXml(descripcion)}</sf:DescripcionOperacion>`,
69
+ ...(invoice.destinatarios && invoice.destinatarios.length
70
+ ? [
71
+ ' <sf:Destinatarios>',
72
+ ...invoice.destinatarios.map((d) => ` <sf:IDDestinatario><sf:NombreRazon>${escapeXml(d.nombreRazon)}</sf:NombreRazon><sf:NIF>${escapeXml(d.nif)}</sf:NIF></sf:IDDestinatario>`),
73
+ ' </sf:Destinatarios>',
74
+ ]
75
+ : []),
76
+ ' <sf:Desglose>',
67
77
  detalles,
68
- ' </Desglose>',
69
- ` <CuotaTotal>${formatAmount(desglose.cuotaTotal)}</CuotaTotal>`,
70
- ' <Encadenamiento>',
71
- ` <HashAnterior>${previousHash ?? ''}</HashAnterior>`,
72
- ' </Encadenamiento>',
73
- '</RegistroFactura>',
78
+ ' </sf:Desglose>',
79
+ ` <sf:CuotaTotal>${formatAmount(desglose.cuotaTotal)}</sf:CuotaTotal>`,
80
+ ` <sf:ImporteTotal>${formatAmount(desglose.importeTotal)}</sf:ImporteTotal>`,
81
+ ' <sf:Encadenamiento>',
82
+ encadenamiento,
83
+ ' </sf:Encadenamiento>',
84
+ ' <sf:SistemaInformatico>',
85
+ ` <sf:NombreRazon>${escapeXml(sistemaInformatico.nombreRazon)}</sf:NombreRazon>`,
86
+ ` <sf:NIF>${escapeXml(sistemaInformatico.nif)}</sf:NIF>`,
87
+ ` <sf:NombreSistemaInformatico>${escapeXml(sistemaInformatico.nombreSistemaInformatico)}</sf:NombreSistemaInformatico>`,
88
+ ` <sf:IdSistemaInformatico>${escapeXml(sistemaInformatico.idSistemaInformatico)}</sf:IdSistemaInformatico>`,
89
+ ` <sf:Version>${escapeXml(sistemaInformatico.version)}</sf:Version>`,
90
+ ` <sf:NumeroInstalacion>${escapeXml(sistemaInformatico.numeroInstalacion)}</sf:NumeroInstalacion>`,
91
+ ' <sf:TipoUsoPosibleSoloVerifactu>S</sf:TipoUsoPosibleSoloVerifactu>',
92
+ ' <sf:TipoUsoPosibleMultiOT>N</sf:TipoUsoPosibleMultiOT>',
93
+ ' <sf:IndicadorMultiplesOT>N</sf:IndicadorMultiplesOT>',
94
+ ' </sf:SistemaInformatico>',
95
+ ` <sf:FechaHoraHusoGenRegistro>${invoice.fechaHoraHusoGenRegistro}</sf:FechaHoraHusoGenRegistro>`,
96
+ ' <sf:TipoHuella>01</sf:TipoHuella>',
97
+ ` <sf:Huella>${invoice.huella}</sf:Huella>`,
98
+ '</sf:RegistroAlta>',
74
99
  ]
75
100
  .filter((line) => line !== '')
76
101
  .join('\n');
77
102
  return xml;
78
103
  }
79
104
  /**
80
- * Genera el XML Verifactu de un registro de anulación.
105
+ * Namespace del esquema `SuministroLR.xsd` de la AEAT.
106
+ */
107
+ exports.AEAT_SUMINISTRO_NAMESPACE = 'https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroLR.xsd';
108
+ /**
109
+ * Namespace del esquema `SuministroInformacion.xsd` de la AEAT.
110
+ */
111
+ exports.AEAT_INFORMACION_NAMESPACE = 'https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd';
112
+ /**
113
+ * Namespace del esquema `EventosSIF.xsd` de la AEAT (registro de eventos).
114
+ */
115
+ exports.AEAT_EVENTO_NAMESPACE = 'https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/EventosSIF.xsd';
116
+ /**
117
+ * Genera el elemento `<RegFactuSistemaFacturacion>` completo (operación SOAP),
118
+ * con la `Cabecera` y el `RegistroFactura` que envuelve el registro.
119
+ */
120
+ function generateSuministroXml(registroXml, cabecera) {
121
+ const body = registroXml.replace(/^<\?xml[^>]*\?>\s*/, '');
122
+ const representante = cabecera.representante
123
+ ? [
124
+ ' <sf:Representante>',
125
+ ` <sf:NombreRazon>${escapeXml(cabecera.representante.nombreRazon)}</sf:NombreRazon>`,
126
+ ` <sf:NIF>${escapeXml(cabecera.representante.nif)}</sf:NIF>`,
127
+ ' </sf:Representante>',
128
+ ].join('\n')
129
+ : '';
130
+ return [
131
+ '<?xml version="1.0" encoding="UTF-8"?>',
132
+ `<sfLR:RegFactuSistemaFacturacion xmlns:sfLR="${exports.AEAT_SUMINISTRO_NAMESPACE}" xmlns:sf="${exports.AEAT_INFORMACION_NAMESPACE}">`,
133
+ ' <sfLR:Cabecera>',
134
+ ' <sf:ObligadoEmision>',
135
+ ` <sf:NombreRazon>${escapeXml(cabecera.nombreRazon)}</sf:NombreRazon>`,
136
+ ` <sf:NIF>${escapeXml(cabecera.nif)}</sf:NIF>`,
137
+ ' </sf:ObligadoEmision>',
138
+ representante,
139
+ ' </sfLR:Cabecera>',
140
+ ' <sfLR:RegistroFactura>',
141
+ body,
142
+ ' </sfLR:RegistroFactura>',
143
+ '</sfLR:RegFactuSistemaFacturacion>',
144
+ ].join('\n');
145
+ }
146
+ /**
147
+ * Construye la `Cabecera` del suministro, detectando si el certificado es de
148
+ * un representante.
149
+ *
150
+ * Si se proporciona el certificado en PEM y su NIF difiere del NIF del
151
+ * obligado, se añade el bloque `Representante` (el certificado actúa como
152
+ * representante del obligado), usando el nombre del titular del certificado.
153
+ */
154
+ function buildCabecera(obligado, certificatePem, extractInfo) {
155
+ const cabecera = { nombreRazon: obligado.nombreRazon, nif: obligado.nif };
156
+ if (certificatePem && extractInfo) {
157
+ const info = extractInfo(certificatePem);
158
+ if (info && info.nif !== obligado.nif) {
159
+ cabecera.representante = { nombreRazon: info.nombreRazon, nif: info.nif };
160
+ }
161
+ }
162
+ return cabecera;
163
+ }
164
+ /**
165
+ * Genera el XML Verifactu de una factura (registro de alta).
81
166
  *
82
- * Referencia la factura anulada (IDFactura + Huella) y encadena con el hash
83
- * anterior. Estructura basada en el RD 1007/2023; validar contra el XSD
84
- * oficial antes de producción.
167
+ * Alias de `generateRegistroAltaXml` por compatibilidad.
168
+ */
169
+ function generateInvoiceXml(invoice, previousHash) {
170
+ return generateRegistroAltaXml(invoice, previousHash);
171
+ }
172
+ /**
173
+ * Genera el XML Verifactu de un registro de anulación (`<sf:RegistroAnulacion>`).
174
+ *
175
+ * Referencia la factura anulada (IDFactura) y encadena con el hash anterior.
176
+ * Estructura según el XSD `SuministroInformacion.xsd` (`RegistroFacturacionAnulacionType`).
85
177
  */
86
178
  function generateAnulacionXml(anulacion, previousHash) {
179
+ const idVersion = anulacion.idVersion ?? '1.0';
180
+ const si = anulacion.sistemaInformatico;
181
+ const encadenamiento = previousHash
182
+ ? ` <sf:RegistroAnterior><sf:IDEmisorFactura>${escapeXml(anulacion.idEmisorFacturaAnulada)}</sf:IDEmisorFactura><sf:NumSerieFactura>${escapeXml(anulacion.numSerieFacturaAnulada)}</sf:NumSerieFactura><sf:FechaExpedicionFactura>${anulacion.fechaExpedicionFacturaAnulada}</sf:FechaExpedicionFactura><sf:Huella>${previousHash}</sf:Huella></sf:RegistroAnterior>`
183
+ : ` <sf:PrimerRegistro>S</sf:PrimerRegistro>`;
184
+ return [
185
+ '<?xml version="1.0" encoding="UTF-8"?>',
186
+ `<sf:RegistroAnulacion xmlns:sf="${exports.AEAT_INFORMACION_NAMESPACE}">`,
187
+ ` <sf:IDVersion>${idVersion}</sf:IDVersion>`,
188
+ ' <sf:IDFactura>',
189
+ ` <sf:IDEmisorFacturaAnulada>${escapeXml(anulacion.idEmisorFacturaAnulada)}</sf:IDEmisorFacturaAnulada>`,
190
+ ` <sf:NumSerieFacturaAnulada>${escapeXml(anulacion.numSerieFacturaAnulada)}</sf:NumSerieFacturaAnulada>`,
191
+ ` <sf:FechaExpedicionFacturaAnulada>${anulacion.fechaExpedicionFacturaAnulada}</sf:FechaExpedicionFacturaAnulada>`,
192
+ ' </sf:IDFactura>',
193
+ ' <sf:Encadenamiento>',
194
+ encadenamiento,
195
+ ' </sf:Encadenamiento>',
196
+ ' <sf:SistemaInformatico>',
197
+ ` <sf:NombreRazon>${escapeXml(si.nombreRazon)}</sf:NombreRazon>`,
198
+ ` <sf:NIF>${escapeXml(si.nif)}</sf:NIF>`,
199
+ ` <sf:NombreSistemaInformatico>${escapeXml(si.nombreSistemaInformatico)}</sf:NombreSistemaInformatico>`,
200
+ ` <sf:IdSistemaInformatico>${escapeXml(si.idSistemaInformatico)}</sf:IdSistemaInformatico>`,
201
+ ` <sf:Version>${escapeXml(si.version)}</sf:Version>`,
202
+ ` <sf:NumeroInstalacion>${escapeXml(si.numeroInstalacion)}</sf:NumeroInstalacion>`,
203
+ ' <sf:TipoUsoPosibleSoloVerifactu>S</sf:TipoUsoPosibleSoloVerifactu>',
204
+ ' <sf:TipoUsoPosibleMultiOT>N</sf:TipoUsoPosibleMultiOT>',
205
+ ' <sf:IndicadorMultiplesOT>N</sf:IndicadorMultiplesOT>',
206
+ ' </sf:SistemaInformatico>',
207
+ ` <sf:FechaHoraHusoGenRegistro>${anulacion.fechaHoraHusoGenRegistro}</sf:FechaHoraHusoGenRegistro>`,
208
+ ' <sf:TipoHuella>01</sf:TipoHuella>',
209
+ ` <sf:Huella>${anulacion.huella}</sf:Huella>`,
210
+ '</sf:RegistroAnulacion>',
211
+ ].join('\n');
212
+ }
213
+ /**
214
+ * Genera el XML Verifactu de un registro de evento (RegistroEvento).
215
+ *
216
+ * Estructura basada en `EventosSIF.xsd` (namespace `sf`). El evento se envía
217
+ * como un suministro independiente (no dentro de `RegFactuSistemaFacturacion`).
218
+ *
219
+ * El encadenado emite `<sf:PrimerEvento>S</sf:PrimerEvento>` si es el primer
220
+ * evento, o `<sf:EventoAnterior>` con los datos del evento previo si se
221
+ * proporciona `eventoAnterior`.
222
+ */
223
+ function generateEventoXml(evento) {
224
+ const si = evento.sistemaInformatico;
225
+ const encadenamiento = evento.eventoAnterior
226
+ ? [
227
+ ' <sf:Encadenamiento>',
228
+ ' <sf:EventoAnterior>',
229
+ ` <sf:TipoEvento>${escapeXml(evento.eventoAnterior.tipoEvento)}</sf:TipoEvento>`,
230
+ ` <sf:FechaHoraHusoGenEvento>${evento.eventoAnterior.fechaHoraHusoGenEvento}</sf:FechaHoraHusoGenEvento>`,
231
+ ` <sf:HuellaEvento>${evento.eventoAnterior.huellaEvento}</sf:HuellaEvento>`,
232
+ ' </sf:EventoAnterior>',
233
+ ' </sf:Encadenamiento>',
234
+ ]
235
+ : [' <sf:Encadenamiento>', ' <sf:PrimerEvento>S</sf:PrimerEvento>', ' </sf:Encadenamiento>'];
87
236
  const xml = [
88
237
  '<?xml version="1.0" encoding="UTF-8"?>',
89
- '<RegistroFactura>',
90
- ' <RegistroAnulacion>',
91
- ' <IDFactura>',
92
- ' <IDEmisorFactura>',
93
- ` <NIF>${escapeXml(anulacion.idEmisorFacturaAnulada)}</NIF>`,
94
- ' </IDEmisorFactura>',
95
- ` <NumeroFactura>${escapeXml(anulacion.numSerieFacturaAnulada)}</NumeroFactura>`,
96
- ` <FechaExpedicionFactura>${anulacion.fechaExpedicionFacturaAnulada}</FechaExpedicionFactura>`,
97
- ' </IDFactura>',
98
- ` <Huella>${anulacion.huellaFacturaAnulada}</Huella>`,
99
- ' </RegistroAnulacion>',
100
- ' <Encadenamiento>',
101
- ` <HashAnterior>${previousHash ?? ''}</HashAnterior>`,
102
- ' </Encadenamiento>',
103
- '</RegistroFactura>',
238
+ `<sf:RegistroEvento xmlns:sf="${exports.AEAT_EVENTO_NAMESPACE}">`,
239
+ ` <sf:IDVersion>${escapeXml(evento.idVersion ?? '1.0')}</sf:IDVersion>`,
240
+ ' <sf:Evento>',
241
+ ' <sf:SistemaInformatico>',
242
+ ` <sf:NombreRazon>${escapeXml(si.nombreRazon)}</sf:NombreRazon>`,
243
+ ` <sf:NIF>${escapeXml(si.nif)}</sf:NIF>`,
244
+ ` <sf:NombreSistemaInformatico>${escapeXml(si.nombreSistemaInformatico)}</sf:NombreSistemaInformatico>`,
245
+ ` <sf:IdSistemaInformatico>${escapeXml(si.idSistemaInformatico)}</sf:IdSistemaInformatico>`,
246
+ ` <sf:Version>${escapeXml(si.version)}</sf:Version>`,
247
+ ` <sf:NumeroInstalacion>${escapeXml(si.numeroInstalacion)}</sf:NumeroInstalacion>`,
248
+ ' <sf:TipoUsoPosibleSoloVerifactu>S</sf:TipoUsoPosibleSoloVerifactu>',
249
+ ' <sf:TipoUsoPosibleMultiOT>N</sf:TipoUsoPosibleMultiOT>',
250
+ ' <sf:IndicadorMultiplesOT>N</sf:IndicadorMultiplesOT>',
251
+ ' </sf:SistemaInformatico>',
252
+ ' <sf:ObligadoEmision>',
253
+ ` <sf:NombreRazon>${escapeXml(evento.obligadoEmision.nombreRazon)}</sf:NombreRazon>`,
254
+ ` <sf:NIF>${escapeXml(evento.obligadoEmision.nif)}</sf:NIF>`,
255
+ ' </sf:ObligadoEmision>',
256
+ ` <sf:FechaHoraHusoGenEvento>${evento.fechaHoraHusoGenEvento}</sf:FechaHoraHusoGenEvento>`,
257
+ ` <sf:TipoEvento>${escapeXml(evento.tipoEvento)}</sf:TipoEvento>`,
258
+ ...encadenamiento,
259
+ ' <sf:TipoHuella>01</sf:TipoHuella>',
260
+ ` <sf:HuellaEvento>${evento.huellaEvento}</sf:HuellaEvento>`,
261
+ ' </sf:Evento>',
262
+ '</sf:RegistroEvento>',
104
263
  ].join('\n');
105
264
  return xml;
106
265
  }
266
+ /**
267
+ * Envuelve un elemento de operación Verifactu en el sobre SOAP que la AEAT
268
+ * espera en el envío. El XML de entrada DEBE ser ya el elemento de operación
269
+ * (p. ej. `<RegFactuSistemaFacturacion>` o `<ConsultaFactuSistemaFacturacion>`).
270
+ */
271
+ function buildRemisionEnvelope(operationXml) {
272
+ const body = operationXml.replace(/^<\?xml[^>]*\?>\s*/, '');
273
+ return [
274
+ '<?xml version="1.0" encoding="UTF-8"?>',
275
+ '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">',
276
+ ' <soap:Body>',
277
+ body,
278
+ ' </soap:Body>',
279
+ '</soap:Envelope>',
280
+ ].join('\n');
281
+ }
107
282
  //# sourceMappingURL=generator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../src/core/xml/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../src/core/xml/generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import type { Invoice } from '../core/models/invoice.js';
2
+ import type { VerifactuRepository, StoredRecord } from './repository.js';
3
+ /**
4
+ * Configuración de la integración de accountability (contabilidad).
5
+ *
6
+ * Se puede aportar el material TLS ya extraído (`cert`/`key`) o el `.p12`
7
+ * en bruto (`p12Buffer` + `p12Password`). El NIF del emisor se aporta
8
+ * siempre en `nif` (la librería no interpreta los campos del certificado).
9
+ */
10
+ export interface AccountabilityConfig {
11
+ /** URL base del servicio AEAT. */
12
+ baseUrl: string;
13
+ /** NIF del emisor. */
14
+ nif: string;
15
+ /** Certificado de cliente en PEM (mTLS). */
16
+ cert?: string;
17
+ /** Clave privada del cliente en PEM (mTLS). */
18
+ key?: string;
19
+ /** Contenido del `.p12` (alternativa a `cert`/`key`). */
20
+ p12Buffer?: Buffer;
21
+ /** Contraseña del `.p12`. */
22
+ p12Password?: string;
23
+ }
24
+ /**
25
+ * Integración de accountability (contabilidad) para Verifactu.
26
+ *
27
+ * Une las credenciales del certificado (`.p12`) con el cliente mTLS y la
28
+ * persistencia, para registrar facturas de forma verificable ante la AEAT.
29
+ */
30
+ export declare class AccountabilityService {
31
+ private readonly repository;
32
+ private readonly client;
33
+ private readonly nif;
34
+ constructor(repository: VerifactuRepository, config: AccountabilityConfig);
35
+ /**
36
+ * Registra una factura (alta) ante la AEAT, usando el certificado del
37
+ * emisor para autenticar el envío.
38
+ */
39
+ registerInvoice(invoice: Invoice): Promise<StoredRecord>;
40
+ }
41
+ //# sourceMappingURL=accountability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accountability.d.ts","sourceRoot":"","sources":["../../../src/integration/accountability.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAOzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACnC,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,sBAAsB;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,qBAAa,qBAAqB;IAK9B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAJ7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;gBAGV,UAAU,EAAE,mBAAmB,EAChD,MAAM,EAAE,oBAAoB;IAwB9B;;;OAGG;IACG,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;CAqD/D"}