facturas 0.10.0 → 0.12.0

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 (36) hide show
  1. package/README.md +98 -850
  2. package/bin/facturas.mjs +4 -0
  3. package/dist/{chunk-ALH5IPSY.mjs → chunk-D5ZWXTCV.mjs} +21 -12
  4. package/dist/chunk-D5ZWXTCV.mjs.map +1 -0
  5. package/dist/{chunk-76WU5BVI.mjs → chunk-GX5ERXT6.mjs} +1 -1
  6. package/dist/chunk-GX5ERXT6.mjs.map +1 -0
  7. package/dist/chunk-QEJCLJDS.mjs +4243 -0
  8. package/dist/chunk-QEJCLJDS.mjs.map +1 -0
  9. package/dist/{chunk-QHHLHSBW.mjs → chunk-QHYJ424J.mjs} +103 -177
  10. package/dist/chunk-QHYJ424J.mjs.map +1 -0
  11. package/dist/chunk-VGNLXU4T.mjs +169 -0
  12. package/dist/chunk-VGNLXU4T.mjs.map +1 -0
  13. package/dist/cli.d.ts +49 -0
  14. package/dist/cli.mjs +2316 -0
  15. package/dist/cli.mjs.map +1 -0
  16. package/dist/client-DbK78fyQ.d.ts +542 -0
  17. package/dist/constants.d.ts +1 -1
  18. package/dist/constants.mjs +1 -1
  19. package/dist/{wsfe-DDY9E1GJ.d.ts → decimal-xie0oMOQ.d.ts} +13 -42
  20. package/dist/errors.d.ts +2 -2
  21. package/dist/{fiscal-evidence-DBzakqBE.d.ts → fiscal-evidence-Dpj-Iao8.d.ts} +2 -2
  22. package/dist/{index-CVGQyyYM.d.ts → index-CT1ffEAL.d.ts} +1 -1
  23. package/dist/index.d.ts +11 -285
  24. package/dist/index.mjs +121 -2523
  25. package/dist/index.mjs.map +1 -1
  26. package/dist/padron.d.ts +2 -2
  27. package/dist/{types-BiznC1-X.d.ts → types-SdBQAflw.d.ts} +4 -1
  28. package/dist/types.d.ts +1 -1
  29. package/dist/wsfe.d.ts +45 -4
  30. package/dist/wsfe.mjs +5 -3
  31. package/dist/wsmtxca.d.ts +7 -3
  32. package/dist/wsmtxca.mjs +1 -1
  33. package/package.json +5 -1
  34. package/dist/chunk-76WU5BVI.mjs.map +0 -1
  35. package/dist/chunk-ALH5IPSY.mjs.map +0 -1
  36. package/dist/chunk-QHHLHSBW.mjs.map +0 -1
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+ import { main } from "../dist/cli.mjs";
3
+
4
+ await main(process.argv.slice(2));
@@ -17,12 +17,14 @@ function createWsmtxcaService(options) {
17
17
  async function executeWsmtxcaAuthenticatedOperation(operation, input, body = {}, retries) {
18
18
  const auth = await options.auth.login("wsmtxca", {
19
19
  representedTaxId: input.representedTaxId,
20
- forceRefresh: input.forceRefresh
20
+ forceRefresh: input.forceRefresh,
21
+ signal: input.signal
21
22
  });
22
23
  const response = await options.soap.execute({
23
24
  service: "wsmtxca",
24
25
  operation,
25
26
  ...retries === void 0 ? {} : { retries },
27
+ signal: input.signal,
26
28
  bodyElementName: `${operation}Request`,
27
29
  bodyElementNamespaceMode: "prefix",
28
30
  body: {
@@ -40,7 +42,8 @@ function createWsmtxcaService(options) {
40
42
  async function executeWsmtxcaAuthorization({
41
43
  representedTaxId,
42
44
  data,
43
- forceRefresh
45
+ forceRefresh,
46
+ signal
44
47
  }) {
45
48
  if (Object.hasOwn(data, "authRequest")) {
46
49
  throw new ArcaInputError(
@@ -55,7 +58,7 @@ function createWsmtxcaService(options) {
55
58
  try {
56
59
  const raw = await executeWsmtxcaAuthenticatedOperation(
57
60
  "autorizarComprobante",
58
- { representedTaxId, forceRefresh },
61
+ { representedTaxId, forceRefresh, signal },
59
62
  data,
60
63
  0
61
64
  );
@@ -74,7 +77,8 @@ function createWsmtxcaService(options) {
74
77
  representedTaxId,
75
78
  voucherType,
76
79
  salesPoint,
77
- forceRefresh
80
+ forceRefresh,
81
+ signal
78
82
  }) {
79
83
  return executeWithAuthenticationRecovery({
80
84
  service: "wsmtxca",
@@ -84,7 +88,8 @@ function createWsmtxcaService(options) {
84
88
  representedTaxId,
85
89
  voucherType,
86
90
  salesPoint,
87
- forceRefresh: attemptForceRefresh
91
+ forceRefresh: attemptForceRefresh,
92
+ signal
88
93
  })
89
94
  });
90
95
  }
@@ -92,12 +97,13 @@ function createWsmtxcaService(options) {
92
97
  representedTaxId,
93
98
  voucherType,
94
99
  salesPoint,
95
- forceRefresh
100
+ forceRefresh,
101
+ signal
96
102
  }) {
97
103
  const operation = "consultarUltimoComprobanteAutorizado";
98
104
  const raw = await executeWsmtxcaAuthenticatedOperation(
99
105
  operation,
100
- { representedTaxId, forceRefresh },
106
+ { representedTaxId, forceRefresh, signal },
101
107
  {
102
108
  consultaUltimoComprobanteAutorizadoRequest: {
103
109
  codigoTipoComprobante: voucherType,
@@ -169,7 +175,8 @@ function createWsmtxcaService(options) {
169
175
  voucherType,
170
176
  salesPoint,
171
177
  voucherNumber,
172
- forceRefresh
178
+ forceRefresh,
179
+ signal
173
180
  }) {
174
181
  return executeWithAuthenticationRecovery({
175
182
  service: "wsmtxca",
@@ -180,7 +187,8 @@ function createWsmtxcaService(options) {
180
187
  voucherType,
181
188
  salesPoint,
182
189
  voucherNumber,
183
- forceRefresh: attemptForceRefresh
190
+ forceRefresh: attemptForceRefresh,
191
+ signal
184
192
  })
185
193
  });
186
194
  }
@@ -189,12 +197,13 @@ function createWsmtxcaService(options) {
189
197
  voucherType,
190
198
  salesPoint,
191
199
  voucherNumber,
192
- forceRefresh
200
+ forceRefresh,
201
+ signal
193
202
  }) {
194
203
  const operation = "consultarComprobante";
195
204
  const raw = await executeWsmtxcaAuthenticatedOperation(
196
205
  operation,
197
- { representedTaxId, forceRefresh },
206
+ { representedTaxId, forceRefresh, signal },
198
207
  {
199
208
  consultaComprobanteRequest: {
200
209
  codigoTipoComprobante: voucherType,
@@ -646,4 +655,4 @@ function formatCompactDateToIso(dateValue) {
646
655
  export {
647
656
  createWsmtxcaService
648
657
  };
649
- //# sourceMappingURL=chunk-ALH5IPSY.mjs.map
658
+ //# sourceMappingURL=chunk-D5ZWXTCV.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/services/wsmtxca.ts"],"sourcesContent":["import {\n ArcaInputError,\n ArcaInvalidSoapResponseError,\n ArcaServiceError,\n ArcaSoapFaultError,\n ArcaTransportError,\n} from \"../errors\";\nimport {\n classifyArcaAuthenticationError,\n classifyArcaAuthenticationIssues,\n createArcaAuthenticationEvidence,\n executeWithAuthenticationRecovery,\n} from \"../internal/authentication\";\nimport type { ArcaClientConfig, ArcaRepresentedTaxId } from \"../internal/types\";\nimport type { SoapTransport } from \"../soap\";\nimport type { WsaaAuthModule } from \"../wsaa\";\nimport type {\n ArcaAuthorizationIndeterminateReason,\n ArcaAuthorizationOutcome,\n ArcaFiscalIssue,\n ArcaVoucherLookupResult,\n} from \"./fiscal-evidence\";\n\n/** Input data for one WSMTXCA voucher authorization. */\nexport type WsmtxcaAuthorizeVoucherInput = {\n representedTaxId?: ArcaRepresentedTaxId;\n data: Record<string, unknown>;\n forceRefresh?: boolean;\n /** Aborts login, submission and consultation with the caller's deadline. */\n signal?: AbortSignal;\n};\n\n/** Structured evidence from one exact WSMTXCA authorization attempt. */\nexport type WsmtxcaAuthorizationOutcome = ArcaAuthorizationOutcome<\"wsmtxca\">;\n\n/** Result of querying the last authorized voucher number. */\nexport type WsmtxcaLastAuthorizedVoucherResult = {\n voucherNumber: number;\n raw: Record<string, unknown>;\n};\n\n/** A point of sale enabled for WSMTXCA. */\nexport type WsmtxcaSalesPoint = {\n number: number;\n blocked: boolean;\n deletedAt?: string;\n};\n\n/** Result of querying WSMTXCA points of sale. */\nexport type WsmtxcaSalesPointsResult = {\n salesPoints: WsmtxcaSalesPoint[];\n raw: Record<string, unknown>;\n};\n\n/** Typed provider fields used to match one exact WSMTXCA voucher. */\nexport type WsmtxcaVoucherInfo = {\n voucherNumber?: number;\n invoiceDate?: string;\n salesPoint?: number;\n voucherType?: number;\n concept?: number;\n documentType?: number;\n documentNumber?: string;\n receiverVatConditionId?: number;\n totalAmount?: number;\n subtotalAmount?: number;\n taxableAmount?: number;\n nonTaxableAmount?: number;\n exemptAmount?: number;\n taxAmount?: number;\n vatAmount?: number;\n currencyId?: string;\n exchangeRate?: number;\n cae?: string;\n caeExpiry?: string;\n raw: Record<string, unknown>;\n};\n\n/** Typed exact-voucher consultation result for WSMTXCA. */\nexport type WsmtxcaVoucherLookupOutcome = ArcaVoucherLookupResult<\n WsmtxcaVoucherInfo,\n \"wsmtxca\"\n>;\n\n/** Result of looking up a specific WSMTXCA voucher. */\nexport type WsmtxcaVoucherLookupResult = {\n invoiceDate: string;\n voucher: Record<string, unknown>;\n messages: string[];\n raw: Record<string, unknown>;\n};\n\n/** WSMTXCA electronic invoicing service (Factura de Crédito Electrónica). */\nexport type WsmtxcaService = {\n /**\n * Issues one exact voucher: a single autorizarComprobante without transport\n * retries, returning structured evidence instead of throwing.\n */\n issue(\n input: WsmtxcaAuthorizeVoucherInput\n ): Promise<WsmtxcaAuthorizationOutcome>;\n /** Returns the last authorized voucher number for the given sales point and type. */\n getLastAuthorizedVoucher(input: {\n representedTaxId?: ArcaRepresentedTaxId;\n voucherType: number;\n salesPoint: number;\n forceRefresh?: boolean;\n signal?: AbortSignal;\n }): Promise<WsmtxcaLastAuthorizedVoucherResult>;\n /** Returns the points of sale enabled for WSMTXCA. */\n getSalesPoints(input: {\n representedTaxId?: ArcaRepresentedTaxId;\n forceRefresh?: boolean;\n }): Promise<WsmtxcaSalesPointsResult>;\n /** Consults one exact voucher and normalizes WSMTXCA error 1503 to `not_found`. */\n lookupVoucher(input: {\n representedTaxId?: ArcaRepresentedTaxId;\n voucherType: number;\n salesPoint: number;\n voucherNumber: number;\n forceRefresh?: boolean;\n signal?: AbortSignal;\n }): Promise<WsmtxcaVoucherLookupOutcome>;\n /** Retrieves details for a specific voucher. */\n getVoucher(input: {\n representedTaxId?: ArcaRepresentedTaxId;\n voucherType: number;\n salesPoint: number;\n voucherNumber: number;\n forceRefresh?: boolean;\n }): Promise<WsmtxcaVoucherLookupResult>;\n};\n\nexport type CreateWsmtxcaServiceOptions = {\n config: ArcaClientConfig;\n auth: WsaaAuthModule;\n soap: SoapTransport;\n};\n\n/** Creates a WSMTXCA service instance wired with authentication and SOAP transport. */\nexport function createWsmtxcaService(\n options: CreateWsmtxcaServiceOptions\n): WsmtxcaService {\n async function executeWsmtxcaAuthenticatedOperation(\n operation: WsmtxcaOperation,\n input: {\n representedTaxId?: ArcaRepresentedTaxId;\n forceRefresh?: boolean;\n signal?: AbortSignal;\n },\n body: Record<string, unknown> = {},\n retries?: number\n ) {\n const auth = await options.auth.login(\"wsmtxca\", {\n representedTaxId: input.representedTaxId,\n forceRefresh: input.forceRefresh,\n signal: input.signal,\n });\n const response = await options.soap.execute<\n Record<string, unknown>,\n Record<string, unknown>\n >({\n service: \"wsmtxca\",\n operation,\n ...(retries === undefined ? {} : { retries }),\n signal: input.signal,\n bodyElementName: `${operation}Request`,\n bodyElementNamespaceMode: \"prefix\",\n body: {\n // WSMTXCA request types use an XML sequence with authentication first.\n authRequest: createWsmtxcaAuth(\n input.representedTaxId ?? options.config.taxId,\n auth.token,\n auth.sign\n ),\n ...body,\n },\n });\n\n return unwrapWsmtxcaOperationResponse(response.result, operation);\n }\n\n async function executeWsmtxcaAuthorization({\n representedTaxId,\n data,\n forceRefresh,\n signal,\n }: WsmtxcaAuthorizeVoucherInput): Promise<{\n outcome: WsmtxcaAuthorizationOutcome;\n error?: unknown;\n }> {\n if (Object.hasOwn(data, \"authRequest\")) {\n throw new ArcaInputError(\n 'WSMTXCA authorization data cannot include the reserved top-level field \"authRequest\".',\n {\n code: \"ARCA_INPUT_RESERVED_FIELD\",\n field: \"data.authRequest\",\n expected: \"omitted because facturas manages authentication fields\",\n }\n );\n }\n\n try {\n const raw = await executeWsmtxcaAuthenticatedOperation(\n \"autorizarComprobante\",\n { representedTaxId, forceRefresh, signal },\n data,\n 0\n );\n return { outcome: classifyWsmtxcaAuthorization(raw) };\n } catch (error) {\n return {\n outcome: createWsmtxcaIndeterminateOutcome(error),\n error,\n };\n }\n }\n\n async function issue(\n input: WsmtxcaAuthorizeVoucherInput\n ): Promise<WsmtxcaAuthorizationOutcome> {\n return (await executeWsmtxcaAuthorization(input)).outcome;\n }\n\n function getLastAuthorizedVoucher({\n representedTaxId,\n voucherType,\n salesPoint,\n forceRefresh,\n signal,\n }: {\n representedTaxId?: ArcaRepresentedTaxId;\n voucherType: number;\n salesPoint: number;\n forceRefresh?: boolean;\n signal?: AbortSignal;\n }): Promise<WsmtxcaLastAuthorizedVoucherResult> {\n return executeWithAuthenticationRecovery({\n service: \"wsmtxca\",\n operation: \"consultarUltimoComprobanteAutorizado\",\n forceRefresh,\n execute: (attemptForceRefresh) =>\n getLastAuthorizedVoucherOnce({\n representedTaxId,\n voucherType,\n salesPoint,\n forceRefresh: attemptForceRefresh,\n signal,\n }),\n });\n }\n\n async function getLastAuthorizedVoucherOnce({\n representedTaxId,\n voucherType,\n salesPoint,\n forceRefresh,\n signal,\n }: {\n representedTaxId?: ArcaRepresentedTaxId;\n voucherType: number;\n salesPoint: number;\n forceRefresh?: boolean;\n signal?: AbortSignal;\n }): Promise<WsmtxcaLastAuthorizedVoucherResult> {\n const operation = \"consultarUltimoComprobanteAutorizado\";\n const raw = await executeWsmtxcaAuthenticatedOperation(\n operation,\n { representedTaxId, forceRefresh, signal },\n {\n consultaUltimoComprobanteAutorizadoRequest: {\n codigoTipoComprobante: voucherType,\n numeroPuntoVenta: salesPoint,\n },\n }\n );\n const errors = extractWsmtxcaIssues(raw, operation, \"error\");\n\n if (errors.length > 0 && errors.every((issue) => issue.code === \"1502\")) {\n return { voucherNumber: 0, raw };\n }\n if (errors.length > 0) {\n throw createWsmtxcaServiceError(operation, errors);\n }\n\n return {\n voucherNumber: parseWsmtxcaVoucherNumber(\n raw.numeroComprobante ?? raw.cbteNro ?? raw.nroComprobante,\n \"WSMTXCA did not return the last authorized voucher number\",\n true\n ),\n raw,\n };\n }\n\n function getSalesPoints({\n representedTaxId,\n forceRefresh,\n }: {\n representedTaxId?: ArcaRepresentedTaxId;\n forceRefresh?: boolean;\n }): Promise<WsmtxcaSalesPointsResult> {\n return executeWithAuthenticationRecovery({\n service: \"wsmtxca\",\n operation: \"consultarPuntosVenta\",\n forceRefresh,\n execute: (attemptForceRefresh) =>\n getSalesPointsOnce({\n representedTaxId,\n forceRefresh: attemptForceRefresh,\n }),\n });\n }\n\n async function getSalesPointsOnce({\n representedTaxId,\n forceRefresh,\n }: {\n representedTaxId?: ArcaRepresentedTaxId;\n forceRefresh?: boolean;\n }): Promise<WsmtxcaSalesPointsResult> {\n const operation = \"consultarPuntosVenta\";\n const raw = await executeWsmtxcaAuthenticatedOperation(operation, {\n representedTaxId,\n forceRefresh,\n });\n throwForWsmtxcaOperationErrors(operation, raw);\n const rawSalesPoints = toRecord(raw.arrayPuntosVenta)?.puntoVenta;\n const entries = Array.isArray(rawSalesPoints)\n ? rawSalesPoints\n : rawSalesPoints\n ? [rawSalesPoints]\n : [];\n const salesPoints = entries.flatMap((entry) => {\n const record = toRecord(entry);\n const number = parseOptionalPositiveInteger(record?.numeroPuntoVenta);\n if (number === undefined) {\n return [];\n }\n const deletedAt = normalizeWsmtxcaResponseDate(record?.fechaBaja);\n return [\n {\n number,\n blocked: String(record?.bloqueado ?? \"N\").toUpperCase() === \"S\",\n ...(deletedAt === undefined ? {} : { deletedAt }),\n },\n ];\n });\n\n return { salesPoints, raw };\n }\n\n function lookupVoucher({\n representedTaxId,\n voucherType,\n salesPoint,\n voucherNumber,\n forceRefresh,\n signal,\n }: {\n representedTaxId?: ArcaRepresentedTaxId;\n voucherType: number;\n salesPoint: number;\n voucherNumber: number;\n forceRefresh?: boolean;\n signal?: AbortSignal;\n }): Promise<WsmtxcaVoucherLookupOutcome> {\n return executeWithAuthenticationRecovery({\n service: \"wsmtxca\",\n operation: \"consultarComprobante\",\n forceRefresh,\n execute: (attemptForceRefresh) =>\n lookupVoucherOnce({\n representedTaxId,\n voucherType,\n salesPoint,\n voucherNumber,\n forceRefresh: attemptForceRefresh,\n signal,\n }),\n });\n }\n\n async function lookupVoucherOnce({\n representedTaxId,\n voucherType,\n salesPoint,\n voucherNumber,\n forceRefresh,\n signal,\n }: {\n representedTaxId?: ArcaRepresentedTaxId;\n voucherType: number;\n salesPoint: number;\n voucherNumber: number;\n forceRefresh?: boolean;\n signal?: AbortSignal;\n }): Promise<WsmtxcaVoucherLookupOutcome> {\n const operation = \"consultarComprobante\";\n const raw = await executeWsmtxcaAuthenticatedOperation(\n operation,\n { representedTaxId, forceRefresh, signal },\n {\n consultaComprobanteRequest: {\n codigoTipoComprobante: voucherType,\n numeroPuntoVenta: salesPoint,\n numeroComprobante: voucherNumber,\n },\n }\n );\n const errors = extractWsmtxcaIssues(raw, operation, \"error\");\n const observations = extractWsmtxcaIssues(raw, operation, \"observation\");\n\n if (errors.length > 0 && errors.every((issue) => issue.code === \"1503\")) {\n return {\n kind: \"not_found\",\n service: \"wsmtxca\",\n operation,\n errors,\n observations,\n raw,\n };\n }\n if (errors.length > 0) {\n throw createWsmtxcaServiceError(operation, errors);\n }\n\n const voucher = extractWsmtxcaVoucherPayload(raw);\n if (voucher === raw && !toRecord(raw.comprobante)) {\n throw new ArcaServiceError(\n \"WSMTXCA did not return the voucher issue date\",\n {\n service: \"wsmtxca\",\n operation,\n issues: observations,\n }\n );\n }\n\n return {\n kind: \"found\",\n service: \"wsmtxca\",\n operation,\n voucher: mapWsmtxcaVoucherInfo(voucher),\n observations,\n raw,\n };\n }\n\n async function getVoucher(input: {\n representedTaxId?: ArcaRepresentedTaxId;\n voucherType: number;\n salesPoint: number;\n voucherNumber: number;\n forceRefresh?: boolean;\n }): Promise<WsmtxcaVoucherLookupResult> {\n const lookup = await lookupVoucher(input);\n if (lookup.kind === \"not_found\") {\n throw createWsmtxcaServiceError(lookup.operation, lookup.errors);\n }\n\n const invoiceDate = lookup.voucher.invoiceDate;\n if (!invoiceDate) {\n throw new ArcaServiceError(\n formatWsmtxcaIssues(lookup.observations)[0] ??\n \"WSMTXCA did not return the voucher issue date\",\n {\n service: \"wsmtxca\",\n operation: lookup.operation,\n issues: lookup.observations,\n }\n );\n }\n\n return {\n invoiceDate,\n voucher: lookup.voucher.raw,\n messages: formatWsmtxcaIssues(lookup.observations),\n raw: lookup.raw,\n };\n }\n\n return {\n issue,\n getLastAuthorizedVoucher,\n getSalesPoints,\n lookupVoucher,\n getVoucher,\n };\n}\n\nfunction createWsmtxcaAuth(\n representedTaxId: number | string,\n token: string,\n sign: string\n) {\n return {\n token,\n sign,\n cuitRepresentada: Number.parseInt(String(representedTaxId), 10),\n };\n}\n\nfunction toRecord(value: unknown): Record<string, unknown> | undefined {\n return value && typeof value === \"object\" && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : undefined;\n}\n\ntype WsmtxcaOperation =\n | \"autorizarComprobante\"\n | \"consultarUltimoComprobanteAutorizado\"\n | \"consultarPuntosVenta\"\n | \"consultarComprobante\";\n\nfunction unwrapWsmtxcaOperationResponse(\n response: unknown,\n operation: WsmtxcaOperation\n) {\n const responseRecord = toRecord(response) ?? {};\n\n if (operation === \"autorizarComprobante\") {\n return (\n toRecord(responseRecord.autorizarComprobanteResponse) ??\n toRecord(responseRecord.autorizarComprobanteResult) ??\n toRecord(responseRecord.comprobanteCAEResponse) ??\n toRecord(responseRecord.comprobanteCAEReponse) ??\n responseRecord\n );\n }\n\n if (operation === \"consultarComprobante\") {\n return (\n toRecord(responseRecord.consultarComprobanteResponse) ??\n toRecord(responseRecord.consultaComprobanteResponse) ??\n toRecord(responseRecord.consultarComprobanteResult) ??\n responseRecord\n );\n }\n\n if (operation === \"consultarPuntosVenta\") {\n return (\n toRecord(responseRecord.consultarPuntosVentaResponse) ??\n toRecord(responseRecord.consultarPuntosVentaResult) ??\n responseRecord\n );\n }\n\n return (\n toRecord(responseRecord.consultarUltimoComprobanteAutorizadoResponse) ??\n toRecord(responseRecord.consultaUltimoComprobanteAutorizadoResponse) ??\n toRecord(responseRecord.consultarUltimoComprobanteAutorizadoResult) ??\n responseRecord\n );\n}\n\nfunction extractWsmtxcaAuthorizationPayload(raw: Record<string, unknown>) {\n return (\n toRecord(raw.comprobanteResponse) ??\n toRecord(raw.comprobanteCAEResponse) ??\n toRecord(raw.comprobanteCAEReponse) ??\n raw\n );\n}\n\nfunction extractWsmtxcaVoucherPayload(raw: Record<string, unknown>) {\n return (\n toRecord(raw.comprobanteResponse) ??\n toRecord(raw.comprobante) ??\n toRecord(raw.cmp) ??\n raw\n );\n}\n\nfunction classifyWsmtxcaAuthorization(\n raw: Record<string, unknown>\n): WsmtxcaAuthorizationOutcome {\n const operation = \"autorizarComprobante\";\n const payload = extractWsmtxcaAuthorizationPayload(raw);\n const result = normalizeWsmtxcaResult(raw.resultado ?? payload.resultado);\n const cae = normalizeWsmtxcaString(\n payload.CAE ?? payload.codigoAutorizacion ?? raw.codigoAutorizacion\n );\n const caeExpiry = normalizeWsmtxcaResponseDate(\n payload.fechaVencimientoCAE ??\n payload.fechaVencimiento ??\n raw.fechaVencimiento\n );\n const voucherNumber = parseOptionalPositiveInteger(\n payload.numeroComprobante ?? raw.numeroComprobante\n );\n const errors = extractWsmtxcaIssues(raw, operation, \"error\");\n const observations = extractWsmtxcaIssues(raw, operation, \"observation\");\n const base = {\n service: \"wsmtxca\" as const,\n operation,\n results: createWsmtxcaResults(result),\n errors,\n observations,\n raw,\n };\n\n const authenticationOutcome = createWsmtxcaAuthenticationOutcome({\n base,\n result,\n cae,\n voucherNumber,\n });\n if (authenticationOutcome) {\n return authenticationOutcome;\n }\n\n if (\n (result === \"A\" || result === \"O\") &&\n cae &&\n voucherNumber !== undefined &&\n errors.length === 0\n ) {\n return {\n ...base,\n kind: \"authorized\",\n result,\n resultLevel: \"operation\",\n cae,\n ...(caeExpiry === undefined ? {} : { caeExpiry }),\n voucherNumber,\n };\n }\n\n if (result === \"R\" && !cae && errors.length > 0) {\n return {\n ...base,\n kind: \"rejected\",\n result: \"R\",\n resultLevel: \"operation\",\n };\n }\n\n const outcome: WsmtxcaAuthorizationOutcome = {\n ...base,\n kind: \"indeterminate\",\n reason:\n (result === \"R\" && Boolean(cae)) ||\n ((result === \"A\" || result === \"O\") && Boolean(errors.length))\n ? \"contradictory_response\"\n : \"incomplete_response\",\n ...(result === undefined ? {} : { result }),\n ...(result === undefined ? {} : { resultLevel: \"operation\" }),\n };\n assignWsmtxcaValue(outcome, \"cae\", cae);\n assignWsmtxcaValue(outcome, \"caeExpiry\", caeExpiry);\n assignWsmtxcaValue(outcome, \"voucherNumber\", voucherNumber);\n return outcome;\n}\n\nfunction createWsmtxcaAuthenticationOutcome({\n base,\n result,\n cae,\n voucherNumber,\n}: {\n base: {\n service: \"wsmtxca\";\n operation: string;\n results: ReturnType<typeof createWsmtxcaResults>;\n errors: ArcaFiscalIssue[];\n observations: ArcaFiscalIssue[];\n raw: Record<string, unknown>;\n };\n result?: string;\n cae?: string;\n voucherNumber?: number;\n}): WsmtxcaAuthorizationOutcome | undefined {\n const authenticationError = classifyArcaAuthenticationIssues(base.errors, {\n service: base.service,\n operation: base.operation,\n });\n if (\n !authenticationError ||\n result === \"A\" ||\n result === \"O\" ||\n cae ||\n voucherNumber !== undefined\n ) {\n return undefined;\n }\n\n return {\n ...base,\n kind: \"indeterminate\",\n reason: \"authentication_rejected\",\n authentication: createArcaAuthenticationEvidence(authenticationError),\n ...(result === undefined ? {} : { result }),\n ...(result === undefined ? {} : { resultLevel: \"operation\" }),\n };\n}\n\nfunction createWsmtxcaIndeterminateOutcome(\n error: unknown\n): WsmtxcaAuthorizationOutcome {\n const authenticationError = classifyArcaAuthenticationError(error, {\n service: \"wsmtxca\",\n operation: \"autorizarComprobante\",\n });\n return {\n kind: \"indeterminate\",\n service: \"wsmtxca\",\n operation: \"autorizarComprobante\",\n results: {},\n reason: authenticationError\n ? \"authentication_rejected\"\n : getWsmtxcaIndeterminateReason(error),\n ...(authenticationError\n ? {\n authentication: createArcaAuthenticationEvidence(authenticationError),\n }\n : {}),\n errors: [],\n observations: [],\n };\n}\n\nfunction getWsmtxcaIndeterminateReason(\n error: unknown\n): ArcaAuthorizationIndeterminateReason {\n if (error instanceof ArcaTransportError) {\n return \"transport_error\";\n }\n if (error instanceof ArcaSoapFaultError) {\n return \"soap_fault\";\n }\n if (error instanceof ArcaInvalidSoapResponseError) {\n return \"invalid_response\";\n }\n return \"unexpected_error\";\n}\n\nfunction createWsmtxcaResults(operationResult?: string) {\n const results: { operation?: string } = {};\n assignWsmtxcaValue(results, \"operation\", operationResult);\n return results;\n}\n\nfunction createWsmtxcaServiceError(\n operation: string,\n issues: ArcaFiscalIssue[]\n) {\n const authenticationError = classifyArcaAuthenticationIssues(issues, {\n service: \"wsmtxca\",\n operation,\n });\n if (authenticationError) {\n return authenticationError;\n }\n\n const firstIssue = issues[0];\n return new ArcaServiceError(\n formatWsmtxcaIssues(issues).join(\" | \") ||\n \"WSMTXCA returned a service error\",\n {\n service: \"wsmtxca\",\n operation,\n ...(firstIssue?.code === undefined\n ? {}\n : { serviceCode: firstIssue.code }),\n issues,\n }\n );\n}\n\nfunction throwForWsmtxcaOperationErrors(\n operation: string,\n raw: Record<string, unknown>\n): void {\n const errors = extractWsmtxcaIssues(raw, operation, \"error\");\n if (errors.length > 0) {\n throw createWsmtxcaServiceError(operation, errors);\n }\n}\n\nfunction extractWsmtxcaIssues(\n raw: Record<string, unknown>,\n operation: string,\n source: \"error\" | \"observation\"\n): ArcaFiscalIssue[] {\n const container = toRecord(\n source === \"error\" ? raw.arrayErrores : raw.arrayObservaciones\n );\n return normalizeWsmtxcaIssueEntries(container?.codigoDescripcion).map(\n (entry) => ({\n service: \"wsmtxca\",\n operation,\n source,\n category:\n source === \"observation\"\n ? \"observation\"\n : operation === \"autorizarComprobante\"\n ? \"business\"\n : \"unknown\",\n ...(entry.code === undefined ? {} : { code: entry.code }),\n message: entry.message,\n ...(operation === \"autorizarComprobante\"\n ? { resultLevel: \"operation\" as const }\n : {}),\n })\n );\n}\n\nfunction normalizeWsmtxcaIssueEntries(value: unknown) {\n const entries = Array.isArray(value) ? value : value ? [value] : [];\n return entries.map((entry) => {\n const record = toRecord(entry) ?? {};\n const code = record.codigo;\n const description = record.descripcion;\n return {\n ...(code === undefined || code === null ? {} : { code: String(code) }),\n message:\n description === undefined || description === null\n ? \"Unknown WSMTXCA issue\"\n : String(description),\n };\n });\n}\n\nfunction formatWsmtxcaIssues(issues: ArcaFiscalIssue[]): string[] {\n return issues.map((issue) => {\n const prefix = issue.source === \"error\" ? \"Error\" : \"Obs\";\n return `${prefix}${issue.code ? ` ${issue.code}` : \"\"}: ${issue.message}`;\n });\n}\n\nfunction mapWsmtxcaVoucherInfo(\n raw: Record<string, unknown>\n): WsmtxcaVoucherInfo {\n const voucher: WsmtxcaVoucherInfo = { raw };\n const invoiceDate = normalizeWsmtxcaResponseDate(\n raw.fechaEmision ?? raw.fecha ?? raw.CbteFch\n );\n const cae = normalizeWsmtxcaString(raw.codigoAutorizacion ?? raw.CAE);\n const caeExpiry = normalizeWsmtxcaResponseDate(\n raw.fechaVencimiento ?? raw.fechaVencimientoCAE\n );\n const vatAmount = sumWsmtxcaVatAmounts(raw.arraySubtotalesIVA);\n\n assignWsmtxcaValue(\n voucher,\n \"voucherNumber\",\n parseOptionalPositiveInteger(raw.numeroComprobante)\n );\n assignWsmtxcaValue(voucher, \"invoiceDate\", invoiceDate);\n assignWsmtxcaValue(\n voucher,\n \"salesPoint\",\n parseOptionalPositiveInteger(raw.numeroPuntoVenta)\n );\n assignWsmtxcaValue(\n voucher,\n \"voucherType\",\n parseOptionalPositiveInteger(raw.codigoTipoComprobante)\n );\n assignWsmtxcaValue(\n voucher,\n \"concept\",\n parseOptionalNumber(raw.codigoConcepto)\n );\n assignWsmtxcaValue(\n voucher,\n \"documentType\",\n parseOptionalNumber(raw.codigoTipoDocumento)\n );\n assignWsmtxcaValue(\n voucher,\n \"documentNumber\",\n normalizeWsmtxcaString(raw.numeroDocumento)\n );\n assignWsmtxcaValue(\n voucher,\n \"receiverVatConditionId\",\n parseOptionalNumber(raw.condicionIVAReceptor)\n );\n assignWsmtxcaValue(\n voucher,\n \"totalAmount\",\n parseOptionalNumber(raw.importeTotal)\n );\n assignWsmtxcaValue(\n voucher,\n \"subtotalAmount\",\n parseOptionalNumber(raw.importeSubtotal)\n );\n assignWsmtxcaValue(\n voucher,\n \"taxableAmount\",\n parseOptionalNumber(raw.importeGravado)\n );\n assignWsmtxcaValue(\n voucher,\n \"nonTaxableAmount\",\n parseOptionalNumber(raw.importeNoGravado)\n );\n assignWsmtxcaValue(\n voucher,\n \"exemptAmount\",\n parseOptionalNumber(raw.importeExento)\n );\n assignWsmtxcaValue(\n voucher,\n \"taxAmount\",\n parseOptionalNumber(raw.importeOtrosTributos)\n );\n assignWsmtxcaValue(voucher, \"vatAmount\", vatAmount);\n assignWsmtxcaValue(\n voucher,\n \"currencyId\",\n normalizeWsmtxcaString(raw.codigoMoneda)\n );\n assignWsmtxcaValue(\n voucher,\n \"exchangeRate\",\n parseOptionalNumber(raw.cotizacionMoneda)\n );\n assignWsmtxcaValue(voucher, \"cae\", cae);\n assignWsmtxcaValue(voucher, \"caeExpiry\", caeExpiry);\n\n return voucher;\n}\n\nfunction sumWsmtxcaVatAmounts(value: unknown): number | undefined {\n const subtotals = toRecord(value)?.subtotalIVA;\n const entries = Array.isArray(subtotals)\n ? subtotals\n : subtotals\n ? [subtotals]\n : [];\n const amounts = entries\n .map((entry) => parseOptionalNumber(toRecord(entry)?.importe))\n .filter((amount): amount is number => amount !== undefined);\n return amounts.length > 0\n ? amounts.reduce((total, amount) => total + amount, 0)\n : undefined;\n}\n\nfunction parseWsmtxcaVoucherNumber(\n value: unknown,\n message: string,\n allowZero = false\n) {\n const parsed = Number.parseInt(String(value ?? \"\"), 10);\n if (!Number.isFinite(parsed) || (allowZero ? parsed < 0 : parsed <= 0)) {\n throw new ArcaServiceError(message, {\n service: \"wsmtxca\",\n });\n }\n return parsed;\n}\n\nfunction parseOptionalPositiveInteger(value: unknown): number | undefined {\n const parsed = Number.parseInt(String(value ?? \"\"), 10);\n return Number.isFinite(parsed) && parsed > 0 ? parsed : undefined;\n}\n\nfunction parseOptionalNumber(value: unknown): number | undefined {\n if (value === undefined || value === null || value === \"\") {\n return undefined;\n }\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : undefined;\n}\n\nfunction normalizeWsmtxcaResult(value: unknown): string | undefined {\n if (typeof value !== \"string\") {\n return undefined;\n }\n const normalized = value.trim().toUpperCase();\n return normalized || undefined;\n}\n\nfunction normalizeWsmtxcaString(value: unknown): string | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n const normalized = String(value).trim();\n return normalized || undefined;\n}\n\nfunction assignWsmtxcaValue<TTarget, TKey extends keyof TTarget>(\n target: TTarget,\n key: TKey,\n value: TTarget[TKey] | undefined\n) {\n if (value !== undefined) {\n target[key] = value;\n }\n}\n\nfunction normalizeWsmtxcaResponseDate(value: unknown): string | undefined {\n if (typeof value === \"number\" && Number.isInteger(value)) {\n return formatCompactDateToIso(value);\n }\n\n if (typeof value !== \"string\") {\n return undefined;\n }\n\n const trimmed = value.trim();\n if (!trimmed) {\n return undefined;\n }\n\n if (/^\\d{8}$/.test(trimmed)) {\n return formatCompactDateToIso(Number.parseInt(trimmed, 10));\n }\n\n if (/^\\d{4}-\\d{2}-\\d{2}/.test(trimmed)) {\n return trimmed.slice(0, 10);\n }\n\n return undefined;\n}\n\nfunction formatCompactDateToIso(dateValue?: number | null): string | undefined {\n if (!dateValue) {\n return undefined;\n }\n\n const raw = String(dateValue);\n if (raw.length !== 8) {\n return undefined;\n }\n\n return `${raw.slice(0, 4)}-${raw.slice(4, 6)}-${raw.slice(6, 8)}`;\n}\n"],"mappings":"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","names":["issue"]}
@@ -106,4 +106,4 @@ export {
106
106
  ARCA_FINAL_CONSUMER_IDENTIFICATION_THRESHOLD_MINOR_UNITS,
107
107
  ARCA_INVOICE_CLASS_BY_ISSUER
108
108
  };
109
- //# sourceMappingURL=chunk-76WU5BVI.mjs.map
109
+ //# sourceMappingURL=chunk-GX5ERXT6.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/constants.ts"],"sourcesContent":["/** Common ARCA reference data for readable userland code and examples. */\nexport const ARCA_VOUCHER_TYPES = {\n FACTURA_A: 1,\n NOTA_DEBITO_A: 2,\n NOTA_CREDITO_A: 3,\n FACTURA_B: 6,\n NOTA_DEBITO_B: 7,\n NOTA_CREDITO_B: 8,\n FACTURA_C: 11,\n NOTA_DEBITO_C: 12,\n NOTA_CREDITO_C: 13,\n} as const;\n\n/** Common document types accepted by ARCA services. */\nexport const ARCA_DOCUMENT_TYPES = {\n CUIT: 80,\n DNI: 96,\n CONSUMIDOR_FINAL: 99,\n} as const;\n\n/**\n * Common receiver IVA condition identifiers used by WSFE.\n * Allowed values depend on the voucher class and ARCA's live catalog.\n */\nexport const ARCA_RECEIVER_VAT_CONDITIONS = {\n RESPONSABLE_INSCRIPTO: 1,\n EXENTO: 4,\n CONSUMIDOR_FINAL: 5,\n MONOTRIBUTISTA: 6,\n IVA_NO_ALCANZADO: 15,\n} as const;\n\n/** Supported invoice concept types for WSFE requests. */\nexport const ARCA_CONCEPT_TYPES = {\n PRODUCTOS: 1,\n SERVICIOS: 2,\n PRODUCTOS_Y_SERVICIOS: 3,\n} as const;\n\n/** Common IVA rate identifiers used by WSFE. */\nexport const ARCA_VAT_RATES = {\n IVA_0: 3,\n IVA_10_5: 4,\n IVA_21: 5,\n IVA_27: 6,\n IVA_5: 8,\n IVA_2_5: 9,\n} as const;\n\n/** ISO currency codes accepted by the high-level WSFE builders. */\nexport const ISO_CURRENCIES = {\n ARS: \"ARS\",\n USD: \"USD\",\n} as const;\n\n/** ARCA currency identifiers keyed by their corresponding ISO currency. */\nexport const ARCA_CURRENCY_IDS = {\n ARS: \"PES\",\n USD: \"DOL\",\n} as const;\n\n/**\n * Common ARCA currency identifiers.\n * @deprecated Use ISO_CURRENCIES for builders or ARCA_CURRENCY_IDS at the exact provider boundary.\n */\nexport const ARCA_CURRENCIES = {\n PES: \"PES\",\n DOL: \"DOL\",\n} as const;\n\n/** Legal assertions supported by the invoice high-level API; never inferred from Padrón. */\nexport type IssuerCondition =\n | \"responsable_inscripto\"\n | \"monotributo\"\n | \"exento\"\n | \"no_alcanzado\";\nexport type ReceiverCondition = IssuerCondition | \"consumidor_final\";\nexport type VoucherClass = \"A\" | \"B\" | \"C\";\n\nexport const ARCA_RECEIVER_CONDITION_IDS = {\n responsable_inscripto: ARCA_RECEIVER_VAT_CONDITIONS.RESPONSABLE_INSCRIPTO,\n monotributo: ARCA_RECEIVER_VAT_CONDITIONS.MONOTRIBUTISTA,\n exento: ARCA_RECEIVER_VAT_CONDITIONS.EXENTO,\n consumidor_final: ARCA_RECEIVER_VAT_CONDITIONS.CONSUMIDOR_FINAL,\n no_alcanzado: ARCA_RECEIVER_VAT_CONDITIONS.IVA_NO_ALCANZADO,\n} as const satisfies Record<ReceiverCondition, number>;\n\nexport const ARCA_ISSUER_CONDITION_IDS = {\n responsable_inscripto: 1,\n monotributo: 6,\n exento: 4,\n no_alcanzado: 15,\n} as const satisfies Record<IssuerCondition, number>;\n\n// RG 5866/2026, art. 1(f), effective 2026-07-01 (art. 4).\n// https://www.argentina.gob.ar/normativa/nacional/norma-427092/texto\nexport const ARCA_FINAL_CONSUMER_IDENTIFICATION_THRESHOLD_MINOR_UNITS =\n 1_000_000_000n;\n\n// WSFE v4.7, physical PDF p. 203, validations 10243/10246; issuer asserted first.\n// ARCA checks actual issuer eligibility independently at authorization.\nexport const ARCA_INVOICE_CLASS_BY_ISSUER = {\n responsable_inscripto: {\n responsable_inscripto: \"A\",\n monotributo: \"A\",\n exento: \"B\",\n consumidor_final: \"B\",\n no_alcanzado: \"B\",\n },\n monotributo: {\n responsable_inscripto: \"C\",\n monotributo: \"C\",\n exento: \"C\",\n consumidor_final: \"C\",\n no_alcanzado: \"C\",\n },\n exento: {\n responsable_inscripto: \"C\",\n monotributo: \"C\",\n exento: \"C\",\n consumidor_final: \"C\",\n no_alcanzado: \"C\",\n },\n no_alcanzado: {\n responsable_inscripto: \"C\",\n monotributo: \"C\",\n exento: \"C\",\n consumidor_final: \"C\",\n no_alcanzado: \"C\",\n },\n} as const satisfies Record<\n IssuerCondition,\n Record<ReceiverCondition, VoucherClass>\n>;\n"],"mappings":";AACO,IAAM,qBAAqB;AAAA,EAChC,WAAW;AAAA,EACX,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX,eAAe;AAAA,EACf,gBAAgB;AAClB;AAGO,IAAM,sBAAsB;AAAA,EACjC,MAAM;AAAA,EACN,KAAK;AAAA,EACL,kBAAkB;AACpB;AAMO,IAAM,+BAA+B;AAAA,EAC1C,uBAAuB;AAAA,EACvB,QAAQ;AAAA,EACR,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,kBAAkB;AACpB;AAGO,IAAM,qBAAqB;AAAA,EAChC,WAAW;AAAA,EACX,WAAW;AAAA,EACX,uBAAuB;AACzB;AAGO,IAAM,iBAAiB;AAAA,EAC5B,OAAO;AAAA,EACP,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,SAAS;AACX;AAGO,IAAM,iBAAiB;AAAA,EAC5B,KAAK;AAAA,EACL,KAAK;AACP;AAGO,IAAM,oBAAoB;AAAA,EAC/B,KAAK;AAAA,EACL,KAAK;AACP;AAMO,IAAM,kBAAkB;AAAA,EAC7B,KAAK;AAAA,EACL,KAAK;AACP;AAWO,IAAM,8BAA8B;AAAA,EACzC,uBAAuB,6BAA6B;AAAA,EACpD,aAAa,6BAA6B;AAAA,EAC1C,QAAQ,6BAA6B;AAAA,EACrC,kBAAkB,6BAA6B;AAAA,EAC/C,cAAc,6BAA6B;AAC7C;AAEO,IAAM,4BAA4B;AAAA,EACvC,uBAAuB;AAAA,EACvB,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,cAAc;AAChB;AAIO,IAAM,2DACX;AAIK,IAAM,+BAA+B;AAAA,EAC1C,uBAAuB;AAAA,IACrB,uBAAuB;AAAA,IACvB,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,kBAAkB;AAAA,IAClB,cAAc;AAAA,EAChB;AAAA,EACA,aAAa;AAAA,IACX,uBAAuB;AAAA,IACvB,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,kBAAkB;AAAA,IAClB,cAAc;AAAA,EAChB;AAAA,EACA,QAAQ;AAAA,IACN,uBAAuB;AAAA,IACvB,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,kBAAkB;AAAA,IAClB,cAAc;AAAA,EAChB;AAAA,EACA,cAAc;AAAA,IACZ,uBAAuB;AAAA,IACvB,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,kBAAkB;AAAA,IAClB,cAAc;AAAA,EAChB;AACF;","names":[]}