@dwast/verifactu-lib 0.1.0-beta.2 → 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 (52) hide show
  1. package/dist/cjs/aeat/client.d.ts +2 -6
  2. package/dist/cjs/aeat/client.d.ts.map +1 -1
  3. package/dist/cjs/aeat/client.js +19 -19
  4. package/dist/cjs/aeat/client.js.map +1 -1
  5. package/dist/cjs/aeat/response.d.ts +2 -0
  6. package/dist/cjs/aeat/response.d.ts.map +1 -1
  7. package/dist/cjs/aeat/response.js +1 -0
  8. package/dist/cjs/aeat/response.js.map +1 -1
  9. package/dist/cjs/core/models/index.d.ts +0 -1
  10. package/dist/cjs/core/models/index.d.ts.map +1 -1
  11. package/dist/cjs/core/models/index.js +0 -1
  12. package/dist/cjs/core/models/index.js.map +1 -1
  13. package/dist/cjs/core/xml/generator.d.ts +13 -15
  14. package/dist/cjs/core/xml/generator.d.ts.map +1 -1
  15. package/dist/cjs/core/xml/generator.js +16 -3
  16. package/dist/cjs/core/xml/generator.js.map +1 -1
  17. package/dist/cjs/integration/repository.d.ts +2 -3
  18. package/dist/cjs/integration/repository.d.ts.map +1 -1
  19. package/dist/cjs/integration/service.d.ts.map +1 -1
  20. package/dist/cjs/integration/service.js +16 -2
  21. package/dist/cjs/integration/service.js.map +1 -1
  22. package/dist/esm/aeat/client.d.ts +2 -6
  23. package/dist/esm/aeat/client.d.ts.map +1 -1
  24. package/dist/esm/aeat/client.js +19 -19
  25. package/dist/esm/aeat/client.js.map +1 -1
  26. package/dist/esm/aeat/response.d.ts +2 -0
  27. package/dist/esm/aeat/response.d.ts.map +1 -1
  28. package/dist/esm/aeat/response.js +1 -0
  29. package/dist/esm/aeat/response.js.map +1 -1
  30. package/dist/esm/core/models/index.d.ts +0 -1
  31. package/dist/esm/core/models/index.d.ts.map +1 -1
  32. package/dist/esm/core/models/index.js +0 -1
  33. package/dist/esm/core/models/index.js.map +1 -1
  34. package/dist/esm/core/xml/generator.d.ts +13 -15
  35. package/dist/esm/core/xml/generator.d.ts.map +1 -1
  36. package/dist/esm/core/xml/generator.js +16 -3
  37. package/dist/esm/core/xml/generator.js.map +1 -1
  38. package/dist/esm/integration/repository.d.ts +2 -3
  39. package/dist/esm/integration/repository.d.ts.map +1 -1
  40. package/dist/esm/integration/service.d.ts.map +1 -1
  41. package/dist/esm/integration/service.js +17 -3
  42. package/dist/esm/integration/service.js.map +1 -1
  43. package/package.json +1 -1
  44. package/readme.md +175 -6
  45. package/src/aeat/client.ts +21 -21
  46. package/src/aeat/response.ts +3 -0
  47. package/src/core/models/index.ts +0 -1
  48. package/src/core/xml/generator.ts +25 -19
  49. package/src/integration/repository.ts +2 -3
  50. package/src/integration/schema.sql +0 -14
  51. package/src/integration/service.ts +22 -3
  52. package/src/core/models/event.ts +0 -25
@@ -1 +1 @@
1
- {"version":3,"file":"response.js","sourceRoot":"","sources":["../../../src/aeat/response.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"response.js","sourceRoot":"","sources":["../../../src/aeat/response.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,2 @@
1
1
  export * from './invoice.js';
2
- export * from './event.js';
3
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/models/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/models/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
@@ -1,3 +1,2 @@
1
1
  export * from './invoice.js';
2
- export * from './event.js';
3
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/models/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/models/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
@@ -28,15 +28,6 @@ export interface AnulacionInput {
28
28
  * antes de producción.
29
29
  */
30
30
  export declare function generateRegistroAltaXml(invoice: Invoice, previousHash: string | null): string;
31
- /**
32
- * Cabecera del suministro (CabeceraType del XSD).
33
- */
34
- export interface Cabecera {
35
- /** Nombre o razón social del obligado a emitir. */
36
- nombreRazon: string;
37
- /** NIF del obligado a emitir. */
38
- nif: string;
39
- }
40
31
  /**
41
32
  * Namespace del esquema `SuministroLR.xsd` de la AEAT.
42
33
  */
@@ -98,12 +89,6 @@ export declare function generateInvoiceXml(invoice: Invoice, previousHash: strin
98
89
  * Estructura según el XSD `SuministroInformacion.xsd` (`RegistroFacturacionAnulacionType`).
99
90
  */
100
91
  export declare function generateAnulacionXml(anulacion: AnulacionInput, previousHash: string | null): string;
101
- /**
102
- * Datos de un registro de evento (RegistroEvento).
103
- *
104
- * Nota: el `NIF` aparece dos veces: `nifSistemaInformatico` (del sistema
105
- * informático) y `nifObligado` (del obligado a emitir).
106
- */
107
92
  /**
108
93
  * Datos de un registro de evento (RegistroEvento, EventosSIF.xsd).
109
94
  */
@@ -121,6 +106,15 @@ export interface EventoInput {
121
106
  tipoEvento: string;
122
107
  /** Huella (hash) del evento. */
123
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
+ };
124
118
  /** Versión del esquema (por defecto '1.0'). */
125
119
  idVersion?: string;
126
120
  }
@@ -129,6 +123,10 @@ export interface EventoInput {
129
123
  *
130
124
  * Estructura basada en `EventosSIF.xsd` (namespace `sf`). El evento se envía
131
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`.
132
130
  */
133
131
  export declare function generateEventoXml(evento: EventoInput): string;
134
132
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../../src/core/xml/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../../src/core/xml/generator.ts"],"names":[],"mappings":"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"}
@@ -205,9 +205,24 @@ export function generateAnulacionXml(anulacion, previousHash) {
205
205
  *
206
206
  * Estructura basada en `EventosSIF.xsd` (namespace `sf`). El evento se envía
207
207
  * como un suministro independiente (no dentro de `RegFactuSistemaFacturacion`).
208
+ *
209
+ * El encadenado emite `<sf:PrimerEvento>S</sf:PrimerEvento>` si es el primer
210
+ * evento, o `<sf:EventoAnterior>` con los datos del evento previo si se
211
+ * proporciona `eventoAnterior`.
208
212
  */
209
213
  export function generateEventoXml(evento) {
210
214
  const si = evento.sistemaInformatico;
215
+ const encadenamiento = evento.eventoAnterior
216
+ ? [
217
+ ' <sf:Encadenamiento>',
218
+ ' <sf:EventoAnterior>',
219
+ ` <sf:TipoEvento>${escapeXml(evento.eventoAnterior.tipoEvento)}</sf:TipoEvento>`,
220
+ ` <sf:FechaHoraHusoGenEvento>${evento.eventoAnterior.fechaHoraHusoGenEvento}</sf:FechaHoraHusoGenEvento>`,
221
+ ` <sf:HuellaEvento>${evento.eventoAnterior.huellaEvento}</sf:HuellaEvento>`,
222
+ ' </sf:EventoAnterior>',
223
+ ' </sf:Encadenamiento>',
224
+ ]
225
+ : [' <sf:Encadenamiento>', ' <sf:PrimerEvento>S</sf:PrimerEvento>', ' </sf:Encadenamiento>'];
211
226
  const xml = [
212
227
  '<?xml version="1.0" encoding="UTF-8"?>',
213
228
  `<sf:RegistroEvento xmlns:sf="${AEAT_EVENTO_NAMESPACE}">`,
@@ -230,9 +245,7 @@ export function generateEventoXml(evento) {
230
245
  ' </sf:ObligadoEmision>',
231
246
  ` <sf:FechaHoraHusoGenEvento>${evento.fechaHoraHusoGenEvento}</sf:FechaHoraHusoGenEvento>`,
232
247
  ` <sf:TipoEvento>${escapeXml(evento.tipoEvento)}</sf:TipoEvento>`,
233
- ' <sf:Encadenamiento>',
234
- ' <sf:PrimerEvento>S</sf:PrimerEvento>',
235
- ' </sf:Encadenamiento>',
248
+ ...encadenamiento,
236
249
  ' <sf:TipoHuella>01</sf:TipoHuella>',
237
250
  ` <sf:HuellaEvento>${evento.huellaEvento}</sf:HuellaEvento>`,
238
251
  ' </sf:Evento>',
@@ -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":"AAwBA;;GAEG;AACH,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,KAAK;SACT,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAgB,EAAE,YAA2B;IACnF,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC;IAC1E,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;IAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;IAE9C,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ;SAC/B,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CACJ,4BAA4B;QAC5B,CAAC,CAAC,CAAC,YAAY,KAAK,SAAS;YAC3B,CAAC,CAAC,oBAAoB,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,oBAAoB;YACnE,CAAC,CAAC,EAAE,CAAC;QACP,6BAA6B,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,6BAA6B;QAC5F,CAAC,CAAC,CAAC,cAAc,KAAK,SAAS;YAC7B,CAAC,CAAC,sBAAsB,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,sBAAsB;YAC5E,CAAC,CAAC,EAAE,CAAC;QACP,qCAAqC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,qCAAqC;QACvG,CAAC,CAAC,CAAC,gBAAgB,KAAK,SAAS;YAC/B,CAAC,CAAC,wBAAwB,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,wBAAwB;YAClF,CAAC,CAAC,EAAE,CAAC;QACP,uBAAuB,CAC1B;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,cAAc,GAAG,YAAY;QACjC,CAAC,CAAC,gDAAgD,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,4CAA4C,SAAS,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,mDAAmD,EAAE,CAAC,eAAe,0CAA0C,YAAY,oCAAoC;QAClU,CAAC,CAAC,8CAA8C,CAAC;IAEnD,MAAM,GAAG,GAAG;QACV,wCAAwC;QACxC,8BAA8B,0BAA0B,IAAI;QAC5D,mBAAmB,SAAS,iBAAiB;QAC7C,kBAAkB;QAClB,2BAA2B,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,uBAAuB;QACvE,2BAA2B,SAAS,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,uBAAuB;QAClG,kCAAkC,EAAE,CAAC,eAAe,8BAA8B;QAClF,mBAAmB;QACnB,2BAA2B,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,yBAAyB;QACjF,qBAAqB,WAAW,mBAAmB;QACnD,8BAA8B,SAAS,CAAC,WAAW,CAAC,4BAA4B;QAChF,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM;YACvD,CAAC,CAAC;gBACE,sBAAsB;gBACtB,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAC1B,CAAC,CAAC,EAAE,EAAE,CACJ,0CAA0C,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,4BAA4B,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,+BAA+B,CAChJ;gBACD,uBAAuB;aACxB;YACH,CAAC,CAAC,EAAE,CAAC;QACP,iBAAiB;QACjB,QAAQ;QACR,kBAAkB;QAClB,oBAAoB,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,kBAAkB;QACvE,sBAAsB,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,oBAAoB;QAC7E,uBAAuB;QACvB,cAAc;QACd,wBAAwB;QACxB,2BAA2B;QAC3B,uBAAuB,SAAS,CAAC,kBAAkB,CAAC,WAAW,CAAC,mBAAmB;QACnF,eAAe,SAAS,CAAC,kBAAkB,CAAC,GAAG,CAAC,WAAW;QAC3D,oCAAoC,SAAS,CAAC,kBAAkB,CAAC,wBAAwB,CAAC,gCAAgC;QAC1H,gCAAgC,SAAS,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,4BAA4B;QAC9G,mBAAmB,SAAS,CAAC,kBAAkB,CAAC,OAAO,CAAC,eAAe;QACvE,6BAA6B,SAAS,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,yBAAyB;QACrG,wEAAwE;QACxE,4DAA4D;QAC5D,0DAA0D;QAC1D,4BAA4B;QAC5B,kCAAkC,OAAO,CAAC,wBAAwB,gCAAgC;QAClG,qCAAqC;QACrC,gBAAgB,OAAO,CAAC,MAAM,cAAc;QAC5C,oBAAoB;KACrB;SACE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;SAC7B,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GACpC,2HAA2H,CAAC;AAE9H;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GACrC,oIAAoI,CAAC;AAEvI;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAChC,yHAAyH,CAAC;AAmB5H;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,WAAmB,EAAE,QAAkB;IAC3E,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;IAC3D,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa;QAC1C,CAAC,CAAC;YACE,wBAAwB;YACxB,yBAAyB,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,mBAAmB;YACzF,iBAAiB,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW;YACjE,yBAAyB;SAC1B,CAAC,IAAI,CAAC,IAAI,CAAC;QACd,CAAC,CAAC,EAAE,CAAC;IACP,OAAO;QACL,wCAAwC;QACxC,gDAAgD,yBAAyB,eAAe,0BAA0B,IAAI;QACtH,mBAAmB;QACnB,0BAA0B;QAC1B,yBAAyB,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,mBAAmB;QAC3E,iBAAiB,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW;QACnD,2BAA2B;QAC3B,aAAa;QACb,oBAAoB;QACpB,0BAA0B;QAC1B,IAAI;QACJ,2BAA2B;QAC3B,oCAAoC;KACrC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAC3B,QAA8C,EAC9C,cAAuB,EACvB,WAA0E;IAE1E,MAAM,QAAQ,GAAa,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC;IACpF,IAAI,cAAc,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC;QACzC,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG,EAAE,CAAC;YACtC,QAAQ,CAAC,aAAa,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5E,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAgB,EAAE,YAA2B;IAC9E,OAAO,uBAAuB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AACxD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,SAAyB,EACzB,YAA2B;IAE3B,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,IAAI,KAAK,CAAC;IAC/C,MAAM,EAAE,GAAG,SAAS,CAAC,kBAAkB,CAAC;IACxC,MAAM,cAAc,GAAG,YAAY;QACjC,CAAC,CAAC,gDAAgD,SAAS,CAAC,SAAS,CAAC,sBAAsB,CAAC,4CAA4C,SAAS,CAAC,SAAS,CAAC,sBAAsB,CAAC,mDAAmD,SAAS,CAAC,6BAA6B,0CAA0C,YAAY,oCAAoC;QACxW,CAAC,CAAC,8CAA8C,CAAC;IAEnD,OAAO;QACL,wCAAwC;QACxC,mCAAmC,0BAA0B,IAAI;QACjE,mBAAmB,SAAS,iBAAiB;QAC7C,kBAAkB;QAClB,kCAAkC,SAAS,CAAC,SAAS,CAAC,sBAAsB,CAAC,8BAA8B;QAC3G,kCAAkC,SAAS,CAAC,SAAS,CAAC,sBAAsB,CAAC,8BAA8B;QAC3G,yCAAyC,SAAS,CAAC,6BAA6B,qCAAqC;QACrH,mBAAmB;QACnB,uBAAuB;QACvB,cAAc;QACd,wBAAwB;QACxB,2BAA2B;QAC3B,uBAAuB,SAAS,CAAC,EAAE,CAAC,WAAW,CAAC,mBAAmB;QACnE,eAAe,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW;QAC3C,oCAAoC,SAAS,CAAC,EAAE,CAAC,wBAAwB,CAAC,gCAAgC;QAC1G,gCAAgC,SAAS,CAAC,EAAE,CAAC,oBAAoB,CAAC,4BAA4B;QAC9F,mBAAmB,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,eAAe;QACvD,6BAA6B,SAAS,CAAC,EAAE,CAAC,iBAAiB,CAAC,yBAAyB;QACrF,wEAAwE;QACxE,4DAA4D;QAC5D,0DAA0D;QAC1D,4BAA4B;QAC5B,kCAAkC,SAAS,CAAC,wBAAwB,gCAAgC;QACpG,qCAAqC;QACrC,gBAAgB,SAAS,CAAC,MAAM,cAAc;QAC9C,yBAAyB;KAC1B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AA6BD;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAmB;IACnD,MAAM,EAAE,GAAG,MAAM,CAAC,kBAAkB,CAAC;IACrC,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc;QAC1C,CAAC,CAAC;YACE,yBAAyB;YACzB,2BAA2B;YAC3B,0BAA0B,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,kBAAkB;YACvF,sCAAsC,MAAM,CAAC,cAAc,CAAC,sBAAsB,8BAA8B;YAChH,4BAA4B,MAAM,CAAC,cAAc,CAAC,YAAY,oBAAoB;YAClF,4BAA4B;YAC5B,0BAA0B;SAC3B;QACH,CAAC,CAAC,CAAC,yBAAyB,EAAE,4CAA4C,EAAE,0BAA0B,CAAC,CAAC;IAC1G,MAAM,GAAG,GAAG;QACV,wCAAwC;QACxC,gCAAgC,qBAAqB,IAAI;QACzD,mBAAmB,SAAS,CAAC,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,iBAAiB;QACxE,eAAe;QACf,6BAA6B;QAC7B,yBAAyB,SAAS,CAAC,EAAE,CAAC,WAAW,CAAC,mBAAmB;QACrE,iBAAiB,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW;QAC7C,sCAAsC,SAAS,CAAC,EAAE,CAAC,wBAAwB,CAAC,gCAAgC;QAC5G,kCAAkC,SAAS,CAAC,EAAE,CAAC,oBAAoB,CAAC,4BAA4B;QAChG,qBAAqB,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,eAAe;QACzD,+BAA+B,SAAS,CAAC,EAAE,CAAC,iBAAiB,CAAC,yBAAyB;QACvF,0EAA0E;QAC1E,8DAA8D;QAC9D,4DAA4D;QAC5D,8BAA8B;QAC9B,0BAA0B;QAC1B,yBAAyB,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,mBAAmB;QACzF,iBAAiB,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW;QACjE,2BAA2B;QAC3B,kCAAkC,MAAM,CAAC,sBAAsB,8BAA8B;QAC7F,sBAAsB,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,kBAAkB;QACpE,GAAG,cAAc;QACjB,uCAAuC;QACvC,wBAAwB,MAAM,CAAC,YAAY,oBAAoB;QAC/D,gBAAgB;QAChB,sBAAsB;KACvB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,YAAoB;IACxD,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;IAC5D,OAAO;QACL,wCAAwC;QACxC,wEAAwE;QACxE,eAAe;QACf,IAAI;QACJ,gBAAgB;QAChB,kBAAkB;KACnB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
@@ -1,4 +1,3 @@
1
- import type { Event } from '../core/models/event.js';
2
1
  /**
3
2
  * Estado de un registro de facturación en el sistema consumidor.
4
3
  */
@@ -21,6 +20,8 @@ export interface StoredRecord {
21
20
  previousHash: string | null;
22
21
  /** Payload del QR Verifactu (URL de verificación con el hash). */
23
22
  qrPayload?: string;
23
+ /** `true` si la huella devuelta por AEAT coincide con la calculada. */
24
+ hashVerified?: boolean;
24
25
  /** Estado del registro. */
25
26
  status: RecordStatus;
26
27
  /** Fecha/hora de creación. */
@@ -73,7 +74,5 @@ export interface VerifactuRepository {
73
74
  saveResponse(response: StoredResponse): Promise<void>;
74
75
  /** Obtiene las respuestas de un registro. */
75
76
  getResponses(recordId: string): Promise<StoredResponse[]>;
76
- /** Guarda un evento. */
77
- saveEvent(event: Event): Promise<void>;
78
77
  }
79
78
  //# sourceMappingURL=repository.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../src/integration/repository.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAErD;;GAEG;AACH,MAAM,MAAM,YAAY,GACpB,SAAS,GACT,MAAM,GACN,WAAW,GACX,UAAU,GACV,UAAU,CAAC;AAEf;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,0CAA0C;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,oCAAoC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2BAA2B;IAC3B,MAAM,EAAE,YAAY,CAAC;IACrB,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,6CAA6C;IAC7C,EAAE,EAAE,MAAM,CAAC;IACX,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC;IACvB,uBAAuB;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kCAAkC;IAClC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,yCAAyC;IACzC,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,0CAA0C;IAC1C,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpE,qCAAqC;IACrC,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IACpD,kEAAkE;IAClE,aAAa,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAC9C,mCAAmC;IACnC,YAAY,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,6CAA6C;IAC7C,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAC1D,wBAAwB;IACxB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"}
1
+ {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../src/integration/repository.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,MAAM,YAAY,GACpB,SAAS,GACT,MAAM,GACN,WAAW,GACX,UAAU,GACV,UAAU,CAAC;AAEf;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,0CAA0C;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,oCAAoC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,2BAA2B;IAC3B,MAAM,EAAE,YAAY,CAAC;IACrB,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,6CAA6C;IAC7C,EAAE,EAAE,MAAM,CAAC;IACX,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC;IACvB,uBAAuB;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kCAAkC;IAClC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,yCAAyC;IACzC,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,0CAA0C;IAC1C,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpE,qCAAqC;IACrC,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IACpD,kEAAkE;IAClE,aAAa,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAC9C,mCAAmC;IACnC,YAAY,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,6CAA6C;IAC7C,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;CAC3D"}
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/integration/service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAqG,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAM/J,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAQzE;;;;;;GAMG;AACH,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;gBAFf,UAAU,EAAE,mBAAmB,EAC/B,MAAM,EAAE,eAAe,EACvB,cAAc,CAAC,EAAE,MAAM,YAAA;IAG1C;;;OAGG;IACG,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;IAiE9D;;;;;OAKG;IACG,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;IA8E/E;;;;;;OAMG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;IAQxF;;;;;OAKG;IACG,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;CAoDhE"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/integration/service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAqG,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAM/J,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAQzE;;;;;;GAMG;AACH,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;gBAFf,UAAU,EAAE,mBAAmB,EAC/B,MAAM,EAAE,eAAe,EACvB,cAAc,CAAC,EAAE,MAAM,YAAA;IAG1C;;;OAGG;IACG,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;IAoF9D;;;;;OAKG;IACG,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;IA8E/E;;;;;;OAMG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;IAQxF;;;;;OAKG;IACG,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;CAoDhE"}
@@ -1,5 +1,5 @@
1
1
  import { generateInvoiceXml, generateSuministroXml, buildCabecera, generateAnulacionXml, generateEventoXml } from '../core/xml/generator.js';
2
- import { computeRegistroAlta, computeRegistroAnulacion, computeRegistroEvento } from '../core/hash/chain.js';
2
+ import { computeRegistroAlta, computeRegistroAnulacion, computeRegistroEvento, verifyRegistroAlta } from '../core/hash/chain.js';
3
3
  import { buildQrPayload } from '../core/qr/qr.js';
4
4
  import { nowIsoWithOffset } from '../core/utils/date.js';
5
5
  import { validateInvoice } from '../core/validation/validate.js';
@@ -78,10 +78,24 @@ export class VerifactuService {
78
78
  message: result.message,
79
79
  receivedAt: new Date().toISOString(),
80
80
  });
81
- // 5. Actualizar el estado del registro según la respuesta.
81
+ // 5. Verificar la huella devuelta por AEAT (integridad del registro).
82
+ const aeatHash = result.registro?.huella;
83
+ const hashVerified = result.status === 'OK' && aeatHash !== undefined
84
+ ? verifyRegistroAlta({
85
+ idEmisorFactura: invoice.emisor.nif,
86
+ numSerieFactura: `${invoice.id.serie ?? ''}${invoice.id.numero}`,
87
+ fechaExpedicionFactura: invoice.id.fechaExpedicion,
88
+ tipoFactura: invoice.tipoFactura,
89
+ cuotaTotal: invoice.desglose.cuotaTotal.toFixed(2),
90
+ importeTotal: invoice.desglose.importeTotal.toFixed(2),
91
+ huellaAnterior: previousHash,
92
+ fechaHoraHusoGenRegistro,
93
+ }, aeatHash)
94
+ : undefined;
95
+ // 6. Actualizar el estado del registro según la respuesta.
82
96
  const status = result.status === 'OK' ? 'CONFIRMED' : 'REJECTED';
83
97
  await this.repository.updateRecordStatus(record.id, status);
84
- return { ...record, status };
98
+ return { ...record, status, hashVerified };
85
99
  }
86
100
  /**
87
101
  * Anula una factura previamente registrada.
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/integration/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/integration/service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dwast/verifactu-lib",
3
- "version": "0.1.0-beta.2",
3
+ "version": "0.1.0-beta.3",
4
4
  "description": "Librería para la gestión de Verifactu (RD 1007/2023): modelo de datos, encadenado hash, generación XML, QR y cliente AEAT.",
5
5
  "type": "module",
6
6
  "main": "./dist/cjs/index.js",
package/readme.md CHANGED
@@ -25,10 +25,11 @@ npm install @dwast/verifactu-lib
25
25
  ```
26
26
  src/
27
27
  ├── core/
28
- │ ├── models/ # Tipos: Invoice, Emisor, Desglose, SistemaInformatico, Event
28
+ │ ├── models/ # Tipos: Invoice, Emisor, Desglose, SistemaInformatico
29
29
  │ ├── hash/ # Encadenado hash (SHA-256)
30
30
  │ ├── xml/ # Generación XML Verifactu (RegistroAlta, Anulacion, Evento, Suministro)
31
31
  │ ├── qr/ # Generación QR Verifactu
32
+ │ ├── validation/ # Validación de facturas
32
33
  │ └── utils/ # Utilidades (fecha/hora con huso)
33
34
  ├── aeat/ # Cliente de servicios AEAT (SOAP + mTLS)
34
35
  ├── integration/ # Repositorio, servicio, p12, accountability
@@ -46,6 +47,175 @@ src/
46
47
 
47
48
  ---
48
49
 
50
+ ## Cómo usar
51
+
52
+ Guía práctica paso a paso. La receta recomendada es **`VerifactuService`** (se encarga de validar, generar el hash, el XML, encadenar con la huella anterior, enviar y persistir). Para casos "de bajo nivel" usa el `VerifactuClient` directamente.
53
+
54
+ ### 0. Configuración inicial (certificado `.p12` → cliente)
55
+
56
+ Extrae `cert` + `key` del `.p12` y construye el cliente (aquí en entorno de **pruebas**; en producción usa `baseUrl` y no pases `env`).
57
+
58
+ ```ts
59
+ import { readFileSync } from 'node:fs';
60
+ import { readP12 } from '@dwast/verifactu-lib/integration';
61
+ import { VerifactuClient, AEAT_TEST_SOAP_URL } from '@dwast/verifactu-lib/aeat';
62
+ import { VerifactuService } from '@dwast/verifactu-lib/integration';
63
+ import type { VerifactuRepository } from '@dwast/verifactu-lib/integration';
64
+
65
+ // 1. Leer el .p12 y extraer certificado + clave (PEM).
66
+ const { certificates, keys } = readP12(
67
+ readFileSync('mi-certificado.p12'),
68
+ 'contraseña-del-p12',
69
+ );
70
+
71
+ // 2. Cliente AEAT con mTLS. env:'test' → usa testBaseUrl (pruebas).
72
+ const client = new VerifactuClient({
73
+ testBaseUrl: AEAT_TEST_SOAP_URL, // https://prewww1.aeat.es/.../VerifactuSOAP
74
+ env: 'test',
75
+ cert: certificates[0],
76
+ key: keys[0],
77
+ timeoutMs: 15_000,
78
+ });
79
+
80
+ // 3. Servicio de orquestación (repositorio implementado por tu app + cliente).
81
+ // El 3er arg (cert PEM) sirve para detectar representante en la cabecera.
82
+ const repo: VerifactuRepository = /* tu implementación (Mongoose, Prisma...) */;
83
+ const service = new VerifactuService(repo, client, certificates[0]);
84
+ ```
85
+
86
+ > **Producción:** omite `env` y `testBaseUrl`, usa `baseUrl`:
87
+ > `new VerifactuClient({ baseUrl: AEAT_PRODUCTION_SOAP_URL, cert, key })`.
88
+
89
+ ### 1. Enviar 1 factura (alta)
90
+
91
+ ```ts
92
+ import type { Invoice } from '@dwast/verifactu-lib/core';
93
+
94
+ const invoice: Invoice = {
95
+ id: { serie: 'A', numero: '2026-0001', fechaExpedicion: '07-09-2026' }, // DD-MM-YYYY
96
+ emisor: { nif: 'B18579458', nombreRazon: 'MOVVIENDO TOURISM GROUP SL' },
97
+ tipoFactura: 'F1',
98
+ tipoDesglose: 'S1',
99
+ descripcion: 'Servicios de consultoria',
100
+ destinatarios: [{ nombreRazon: 'CLIENTE SL', nif: 'B12345678' }],
101
+ desglose: {
102
+ detalles: [
103
+ { calificacionOperacion: 'S1', claveRegimen: '01', tipoImpositivo: 21, baseImponible: 100, cuotaRepercutida: 21 },
104
+ ],
105
+ cuotaTotal: 21,
106
+ importeTotal: 121,
107
+ },
108
+ sistemaInformatico: {
109
+ nombreRazon: 'MOVVIENDO TOURISM GROUP SL',
110
+ nif: 'B18579458',
111
+ nombreSistemaInformatico: 'SIF-PROD',
112
+ idSistemaInformatico: '01', // máx 2 caracteres
113
+ version: '1.0',
114
+ numeroInstalacion: '1',
115
+ },
116
+ fechaHoraHusoGenRegistro: new Date().toISOString().replace(/\.\d+Z/, 'Z'), // o nowIsoWithOffset()
117
+ huella: '', // la calcula el servicio
118
+ };
119
+
120
+ const record = await service.registerInvoice(invoice);
121
+
122
+ console.log(record.status); // 'CONFIRMED' | 'REJECTED'
123
+ console.log(record.hash); // huella SHA-256 (64 hex)
124
+ console.log(record.hashVerified); // true/false (si AEAT devolvió huella que coincide)
125
+ console.log(record.qrPayload); // URL del QR
126
+ console.log(record.xml); // XML Verifactu que se envió (persistir)
127
+ ```
128
+
129
+ > La **fecha/hora** debe ser la actual (margen AEAT de 240s). Usa `nowIsoWithOffset()` de `@dwast/verifactu-lib/core` en vez de `toISOString()`.
130
+
131
+ ### 2. Enviar varias facturas encadenadas
132
+
133
+ `VerifactuService` **encadena automáticamente** la huella: cada alta usa como `huellaAnterior` el hash del último registro guardado en `getLastRecord()`. Solo encadena **dentro del mismo obligado + sistema informático**.
134
+
135
+ ```ts
136
+ const f1 = await service.registerInvoice(invoice1); // PrimerRegistro
137
+ const f2 = await service.registerInvoice(invoice2); // usa f1.hash como huellaAnterior
138
+ const f3 = await service.registerInvoice(invoice3); // usa f2.hash
139
+ console.log(f2.previousHash === f1.hash); // true
140
+ ```
141
+
142
+ > **Importante:** el sistema informático (`numeroInstalacion`/`idSistemaInformatico`) debe ser **el mismo** en toda la cadena. Para empezar una cadena nueva por cada sistema, usa un `numeroInstalacion` único.
143
+
144
+ ### 3. Anular una factura
145
+
146
+ ```ts
147
+ await service.annulInvoice(invoiceId, invoice);
148
+ // - Genera el registro de anulación (encadena con el último hash).
149
+ // - Envía a AEAT.
150
+ // - Marca la factura original como 'ANNULLED'.
151
+ ```
152
+
153
+ `invoiceId` es la **referencia de la original** (serie + número, p. ej. `A2026-0001`), que debe existir en el repositorio. Pasa la `invoice` completa si quieres que use su `sistemaInformatico` y sus fechas; si no, usa los valores por defecto de la librería.
154
+
155
+ ### 4. Modificar una factura
156
+
157
+ Verifactu **no tiene "modificación"**: se hace como anulación + nuevo alta. `modifyInvoice` lo hace por ti.
158
+
159
+ ```ts
160
+ const original: Invoice = /* la factura ya enviada */;
161
+ await service.registerInvoice(original);
162
+
163
+ const corregida: Invoice = { ...original, id: { ...original.id, numero: '2026-0002' }, /* cambios */ };
164
+ await service.modifyInvoice(`${original.id.serie ?? ''}${original.id.numero}`, corregida);
165
+ // Anula la original y emite la corregida como nuevo alta (CONFIRMED si AEAT la acepta).
166
+ ```
167
+
168
+ ### 5. Consultar la huella de un registro enviado
169
+
170
+ En lugar de guardar la huella, puedes pedirla a AEAT. Necesitas el **número de factura** y el **mes** real.
171
+
172
+ ```ts
173
+ const res = await client.queryInvoice({
174
+ obligado: { nombreRazon: 'MOVVIENDO TOURISM GROUP SL', nif: 'B18579458' },
175
+ numSerieFactura: 'A2026-0001',
176
+ ejercicio: '2026',
177
+ periodo: '09', // 01–12, el mes real de la factura
178
+ });
179
+
180
+ const huella = res.consulta?.huella; // hash confirmado por AEAT
181
+ const pagSiguiente = res.consulta?.clavePaginacion; // pasar como clavePaginacion en la siguiente consulta
182
+ ```
183
+
184
+ > **Recomendación:** para encadenar la siguiente factura es más fiable **guardar la huella localmente** (`getLastRecord()`). `queryInvoice` es útil para auditoría o recuperación puntual. Consultar "por periodo" sin número devuelve registros de todos los sistemas y ejecuciones (poco fiable).
185
+
186
+ ### 6. Enviar un evento (`RegistroEvento`)
187
+
188
+ ```ts
189
+ import { computeRegistroEvento } from '@dwast/verifactu-lib/core';
190
+
191
+ const last = await repo.getLastRecord(); // último registro (para encadenar)
192
+ const fechaHora = nowIsoWithOffset();
193
+ const hash = computeRegistroEvento({
194
+ nifSistemaInformatico: 'B18579458',
195
+ id: '', // IDOtro del software (vacío si usa NIF)
196
+ idSistemaInformatico: '01',
197
+ version: '1.0',
198
+ numeroInstalacion: '1',
199
+ nifObligado: 'B18579458',
200
+ tipoEvento: '01', // 01–10, 90 (ver EventosSIF.xsd)
201
+ huellaAnterior: last?.hash ?? null,
202
+ fechaHoraHusoGenEvento: fechaHora,
203
+ });
204
+
205
+ await service.registerEvent({
206
+ sistemaInformatico: { /* igual que en la factura */ },
207
+ obligadoEmision: { nombreRazon: 'MOVVIENDO TOURISM GROUP SL', nif: 'B18579458' },
208
+ fechaHoraHusoGenEvento: fechaHora,
209
+ tipoEvento: '01',
210
+ huellaEvento: hash,
211
+ // eventoAnterior: { tipoEvento, fechaHoraHusoGenEvento, huellaEvento } // para el 2º evento en adelante
212
+ });
213
+ ```
214
+
215
+ > **⚠️ Envío de eventos.** La generación del XML (`generateEventoXml`) es correcta y está cubierta por unit tests, pero **el envío real necesita un endpoint/operación SOAP específica de eventos** que el cliente actual (`VerifactuSOAP`) todavía no cubre (AEAT devuelve error 4118). Úsalo cuando se añada ese endpoint.
216
+
217
+ ---
218
+
49
219
  ## Núcleo (`core`)
50
220
 
51
221
  ### Modelos (`core/models`)
@@ -272,8 +442,7 @@ const client = new VerifactuClient({
272
442
  | Método | Descripción |
273
443
  |--------|-------------|
274
444
  | `sendRecord(xml)` | Envía un registro (alta/anulación/evento) a AEAT |
275
- | `getOperationStatus(operationId)` | ⚠️ **Deprecado**: la consulta por ID no está soportada por AEAT (error 4118). Usa `queryInvoice` |
276
- | `queryInvoice({ obligado, numSerieFactura, ejercicio, periodo })` | Consulta un registro por número de factura y devuelve su huella |
445
+ | `queryInvoice({ obligado, numSerieFactura, ejercicio, periodo, clavePaginacion? })` | Consulta un registro por número de factura y devuelve su huella; acepta `clavePaginacion` para cursar las páginas siguientes |
277
446
 
278
447
  ### `queryInvoice` — obtener la huella de un registro enviado
279
448
 
@@ -296,7 +465,7 @@ const huella = res.consulta?.huella; // hash confirmado por AEAT
296
465
 
297
466
  ### Formato de respuesta (`SendResult`)
298
467
 
299
- `sendRecord`, `getOperationStatus` y `queryInvoice` devuelven **todo lo recibido de AEAT**, sea OK o error:
468
+ `sendRecord` y `queryInvoice` devuelven **todo lo recibido de AEAT**, sea OK o error:
300
469
 
301
470
  ```ts
302
471
  interface SendResult {
@@ -332,6 +501,7 @@ interface ConsultaResponse {
332
501
  descripcionError?: string;
333
502
  csv?: string;
334
503
  huella?: string; // hash del primer registro devuelto
504
+ clavePaginacion?: string; // cursor para la página siguiente
335
505
  registros?: RegistroResponse[];
336
506
  }
337
507
 
@@ -421,7 +591,7 @@ WSDL: `.../tikeV1.0/cont/ws/SistemaFacturacion.wsdl`. La operación de consulta
421
591
 
422
592
  ### Requisitos del sistema consumidor
423
593
 
424
- 1. **Persistencia.** El sistema DEBE implementar `VerifactuRepository` y disponer de las tablas de `src/integration/schema.sql` (`verifactu_records`, `verifactu_responses`, `verifactu_events`). La AEAT exige conservar la respuesta de cada envío.
594
+ 1. **Persistencia.** El sistema DEBE implementar `VerifactuRepository` y disponer de las tablas de `src/integration/schema.sql` (`verifactu_records`, `verifactu_responses`). La AEAT exige conservar la respuesta de cada envío.
425
595
  2. **Credenciales.** Para el envío real, el sistema aporta el certificado (`.p12`) y el NIF.
426
596
 
427
597
  ### Repositorio (`VerifactuRepository`)
@@ -437,7 +607,6 @@ const repo: VerifactuRepository = {
437
607
  getLastRecord() { /* ... */ },
438
608
  saveResponse(response) { /* ... */ },
439
609
  getResponses(recordId) { /* ... */ },
440
- saveEvent(event) { /* ... */ },
441
610
  };
442
611
  ```
443
612
 
@@ -197,27 +197,6 @@ export class VerifactuClient {
197
197
  return this.request(url, 'POST', headers, envelope);
198
198
  }
199
199
 
200
- /**
201
- * @deprecated La consulta por ID de operación no está soportada por el
202
- * esquema `ConsultaLR.xsd` de AEAT (devuelve error 4118). Usa
203
- * {@link queryInvoice} para consultar registros por número de factura.
204
- */
205
- async getOperationStatus(operationId: string): Promise<SendResult> {
206
- const consultaXml = `<ConsultaFactuSistemaFacturacion xmlns="${this.config.namespace}"><ID>${operationId}</ID></ConsultaFactuSistemaFacturacion>`;
207
- const envelope = buildRemisionEnvelope(consultaXml);
208
- const url = new URL(this.config.baseUrl);
209
- const headers: Record<string, string> = {
210
- 'Content-Type': 'text/xml; charset=utf-8',
211
- SOAPAction: '',
212
- Accept: 'application/xml',
213
- };
214
- if (this.config.authToken) {
215
- headers.Authorization = `Bearer ${this.config.authToken}`;
216
- }
217
-
218
- return this.request(url, 'POST', headers, envelope);
219
- }
220
-
221
200
  /**
222
201
  * Consulta un registro de facturación por número de factura y devuelve la
223
202
  * respuesta completa (incluida la huella confirmada por AEAT).
@@ -233,6 +212,8 @@ export class VerifactuClient {
233
212
  ejercicio: string;
234
213
  /** Periodo de imputación, p. ej. `01` (enero) o `12` (diciembre). */
235
214
  periodo: string;
215
+ /** Clave de paginación devuelta por AEAT en la página anterior (cursor). */
216
+ clavePaginacion?: string;
236
217
  }): Promise<SendResult> {
237
218
  const consultaXml = [
238
219
  `<sfLRC:ConsultaFactuSistemaFacturacion xmlns:sfLRC="${AEAT_CONSULTA_NAMESPACE}" xmlns:sf="${AEAT_INFORMACION_NAMESPACE}">`,
@@ -251,6 +232,9 @@ export class VerifactuClient {
251
232
  ...(params.numSerieFactura
252
233
  ? [` <sfLRC:NumSerieFactura>${params.numSerieFactura}</sfLRC:NumSerieFactura>`]
253
234
  : []),
235
+ ...(params.clavePaginacion
236
+ ? [` <sfLRC:ClavePaginacion>${params.clavePaginacion}</sfLRC:ClavePaginacion>`]
237
+ : []),
254
238
  ' </sfLRC:FiltroConsulta>',
255
239
  '</sfLRC:ConsultaFactuSistemaFacturacion>',
256
240
  ].join('\n');
@@ -332,6 +316,22 @@ export class VerifactuClient {
332
316
  response = soap;
333
317
  data = soap.body;
334
318
  operationId = String(soap.body['ID'] ?? soap.body['IdPeticion'] ?? '');
319
+ // SOAP Fault: AEAT devolvió un error técnico (HTTP 200 con <Fault>).
320
+ const faultString = String(soap.body['faultstring'] ?? '');
321
+ if (soap.operation === 'Fault' || faultString) {
322
+ status = 'ERROR';
323
+ message = faultString || message;
324
+ errorCode = String(soap.body['faultcode'] ?? '') || errorCode;
325
+ return {
326
+ operationId,
327
+ status,
328
+ message,
329
+ errorCode,
330
+ rawResponse: raw,
331
+ data,
332
+ response,
333
+ };
334
+ }
335
335
  // Estado según el registro/consulta/evento mapeado.
336
336
  const reg = soap.registro;
337
337
  const con = soap.consulta;
@@ -37,6 +37,8 @@ export interface ConsultaResponse {
37
37
  csv?: string;
38
38
  /** Huella (hash) de la operación consultada. */
39
39
  huella?: string;
40
+ /** Clave de paginación para obtener la siguiente página (cursor). */
41
+ clavePaginacion?: string;
40
42
  /** Registros devueltos por la consulta. */
41
43
  registros?: RegistroResponse[];
42
44
  }
@@ -160,6 +162,7 @@ function mapConsulta(opBody: Record<string, unknown> | undefined): ConsultaRespo
160
162
  descripcionError: str(opBody['DescripcionError']),
161
163
  csv: str(opBody['CSV']),
162
164
  huella: registros?.[0]?.huella,
165
+ clavePaginacion: str(opBody['ClavePaginacion']),
163
166
  registros: registros as RegistroResponse[] | undefined,
164
167
  };
165
168
  }
@@ -1,2 +1 @@
1
1
  export * from './invoice.js';
2
- export * from './event.js';