arcli 1.2.0 → 1.4.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 (161) hide show
  1. package/CHANGELOG.md +79 -1
  2. package/README.md +4 -3
  3. package/dist/cli/commands/billing.command.batch.d.ts +22 -0
  4. package/dist/cli/commands/billing.command.batch.js +51 -0
  5. package/dist/cli/commands/billing.command.batch.js.map +1 -0
  6. package/dist/cli/commands/billing.command.options.js +1 -1
  7. package/dist/cli/commands/billing.command.options.js.map +1 -1
  8. package/dist/cli/commands/billing.command.parser.d.ts +7 -0
  9. package/dist/cli/commands/billing.command.parser.js +82 -11
  10. package/dist/cli/commands/billing.command.parser.js.map +1 -1
  11. package/dist/cli/commands/billing.command.shared.js +16 -13
  12. package/dist/cli/commands/billing.command.shared.js.map +1 -1
  13. package/dist/cli/commands/config.command.d.ts +5 -0
  14. package/dist/cli/commands/config.command.js +3 -3
  15. package/dist/cli/commands/config.command.js.map +1 -1
  16. package/dist/cli/commands/fce-obligation.command.js +2 -2
  17. package/dist/cli/commands/fce-obligation.command.js.map +1 -1
  18. package/dist/cli/commands/interactive.command.d.ts +3 -0
  19. package/dist/cli/commands/interactive.command.js +22 -0
  20. package/dist/cli/commands/interactive.command.js.map +1 -0
  21. package/dist/cli/commands/storybook.command.js +3 -2
  22. package/dist/cli/commands/storybook.command.js.map +1 -1
  23. package/dist/cli/commands/vouchers.command.d.ts +2 -0
  24. package/dist/cli/commands/vouchers.command.js +96 -0
  25. package/dist/cli/commands/vouchers.command.js.map +1 -0
  26. package/dist/cli/help.d.ts +1 -0
  27. package/dist/cli/help.js +23 -1
  28. package/dist/cli/help.js.map +1 -1
  29. package/dist/cli/index.js +3 -1
  30. package/dist/cli/index.js.map +1 -1
  31. package/dist/cli/interactive/advanced-options.d.ts +14 -0
  32. package/dist/cli/interactive/advanced-options.js +126 -0
  33. package/dist/cli/interactive/advanced-options.js.map +1 -0
  34. package/dist/cli/interactive/history.flow.d.ts +2 -0
  35. package/dist/cli/interactive/history.flow.js +22 -0
  36. package/dist/cli/interactive/history.flow.js.map +1 -0
  37. package/dist/cli/interactive/interactive-mode.d.ts +3 -0
  38. package/dist/cli/interactive/interactive-mode.js +93 -0
  39. package/dist/cli/interactive/interactive-mode.js.map +1 -0
  40. package/dist/cli/interactive/invoice.flow.d.ts +22 -0
  41. package/dist/cli/interactive/invoice.flow.js +132 -0
  42. package/dist/cli/interactive/invoice.flow.js.map +1 -0
  43. package/dist/cli/interactive/note.flow.d.ts +26 -0
  44. package/dist/cli/interactive/note.flow.js +236 -0
  45. package/dist/cli/interactive/note.flow.js.map +1 -0
  46. package/dist/cli/interactive/prompts.d.ts +21 -0
  47. package/dist/cli/interactive/prompts.js +46 -0
  48. package/dist/cli/interactive/prompts.js.map +1 -0
  49. package/dist/cli/interactive/session.d.ts +22 -0
  50. package/dist/cli/interactive/session.js +88 -0
  51. package/dist/cli/interactive/session.js.map +1 -0
  52. package/dist/cli/interactive/validators.d.ts +9 -0
  53. package/dist/cli/interactive/validators.js +35 -0
  54. package/dist/cli/interactive/validators.js.map +1 -0
  55. package/dist/cli/program.js +4 -0
  56. package/dist/cli/program.js.map +1 -1
  57. package/dist/cli/spinner.d.ts +8 -0
  58. package/dist/cli/spinner.js +14 -0
  59. package/dist/cli/spinner.js.map +1 -0
  60. package/dist/cli/version.d.ts +1 -1
  61. package/dist/cli/version.js +1 -1
  62. package/dist/modules/billing/billing.amounts.d.ts +1 -1
  63. package/dist/modules/billing/billing.amounts.js +34 -13
  64. package/dist/modules/billing/billing.amounts.js.map +1 -1
  65. package/dist/modules/billing/billing.batch.d.ts +23 -0
  66. package/dist/modules/billing/billing.batch.js +43 -0
  67. package/dist/modules/billing/billing.batch.js.map +1 -0
  68. package/dist/modules/billing/billing.display.js +16 -7
  69. package/dist/modules/billing/billing.display.js.map +1 -1
  70. package/dist/modules/billing/billing.iva-receptor.d.ts +1 -0
  71. package/dist/modules/billing/billing.iva-receptor.js +3 -0
  72. package/dist/modules/billing/billing.iva-receptor.js.map +1 -1
  73. package/dist/modules/billing/billing.schemas.d.ts +35 -4
  74. package/dist/modules/billing/billing.schemas.js +26 -6
  75. package/dist/modules/billing/billing.schemas.js.map +1 -1
  76. package/dist/modules/billing/billing.text.js +10 -6
  77. package/dist/modules/billing/billing.text.js.map +1 -1
  78. package/dist/modules/config/config-value-parser.js +2 -1
  79. package/dist/modules/config/config-value-parser.js.map +1 -1
  80. package/dist/modules/config/config.presenter.js +2 -2
  81. package/dist/modules/config/config.presenter.js.map +1 -1
  82. package/dist/modules/config/config.schemas.d.ts +2 -2
  83. package/dist/modules/examples/examples.js +2 -13
  84. package/dist/modules/examples/examples.js.map +1 -1
  85. package/dist/modules/fce/fce-obligation.presenter.js +1 -1
  86. package/dist/modules/fce/fce-obligation.presenter.js.map +1 -1
  87. package/dist/modules/interactive/amount-input.d.ts +6 -0
  88. package/dist/modules/interactive/amount-input.js +29 -0
  89. package/dist/modules/interactive/amount-input.js.map +1 -0
  90. package/dist/modules/interactive/choices.d.ts +13 -0
  91. package/dist/modules/interactive/choices.js +56 -0
  92. package/dist/modules/interactive/choices.js.map +1 -0
  93. package/dist/modules/interactive/equivalent-command.d.ts +8 -0
  94. package/dist/modules/interactive/equivalent-command.js +98 -0
  95. package/dist/modules/interactive/equivalent-command.js.map +1 -0
  96. package/dist/modules/interactive/wizard.d.ts +16 -0
  97. package/dist/modules/interactive/wizard.js +33 -0
  98. package/dist/modules/interactive/wizard.js.map +1 -0
  99. package/dist/modules/storybook/showcase.d.ts +1 -1
  100. package/dist/modules/storybook/showcase.js +50 -6
  101. package/dist/modules/storybook/showcase.js.map +1 -1
  102. package/dist/modules/update-check/update-check.presenter.js +1 -1
  103. package/dist/modules/update-check/update-check.presenter.js.map +1 -1
  104. package/dist/modules/vouchers/voucher-history.d.ts +34 -0
  105. package/dist/modules/vouchers/voucher-history.js +43 -0
  106. package/dist/modules/vouchers/voucher-history.js.map +1 -0
  107. package/dist/modules/vouchers/voucher-history.presenter.d.ts +22 -0
  108. package/dist/modules/vouchers/voucher-history.presenter.js +108 -0
  109. package/dist/modules/vouchers/voucher-history.presenter.js.map +1 -0
  110. package/dist/services/arca/arca-voucher-history.gateway.d.ts +8 -0
  111. package/dist/services/arca/arca-voucher-history.gateway.js +36 -0
  112. package/dist/services/arca/arca-voucher-history.gateway.js.map +1 -0
  113. package/dist/ui/components/contentPanel.d.ts +2 -2
  114. package/dist/ui/components/contentPanel.js +2 -1
  115. package/dist/ui/components/contentPanel.js.map +1 -1
  116. package/dist/ui/components/errorPanel.js +3 -3
  117. package/dist/ui/components/errorPanel.js.map +1 -1
  118. package/dist/ui/components/index.d.ts +3 -0
  119. package/dist/ui/components/index.js +3 -0
  120. package/dist/ui/components/index.js.map +1 -1
  121. package/dist/ui/components/keyValuePanel.d.ts +2 -2
  122. package/dist/ui/components/keyValuePanel.js +2 -1
  123. package/dist/ui/components/keyValuePanel.js.map +1 -1
  124. package/dist/ui/components/rawPanel.js +1 -1
  125. package/dist/ui/components/rawPanel.js.map +1 -1
  126. package/dist/ui/components/sectionHeading.d.ts +3 -0
  127. package/dist/ui/components/sectionHeading.js +13 -0
  128. package/dist/ui/components/sectionHeading.js.map +1 -0
  129. package/dist/ui/components/statusBar.d.ts +6 -0
  130. package/dist/ui/components/statusBar.js +24 -0
  131. package/dist/ui/components/statusBar.js.map +1 -0
  132. package/dist/ui/components/statusPanel.d.ts +2 -2
  133. package/dist/ui/components/statusPanel.js +2 -1
  134. package/dist/ui/components/statusPanel.js.map +1 -1
  135. package/dist/ui/components/testingBanner.d.ts +2 -0
  136. package/dist/ui/components/testingBanner.js +6 -0
  137. package/dist/ui/components/testingBanner.js.map +1 -0
  138. package/dist/ui/presenters/errors.presenter.js +11 -1
  139. package/dist/ui/presenters/errors.presenter.js.map +1 -1
  140. package/dist/ui/presenters/errors.zod-presenter.d.ts +2 -0
  141. package/dist/ui/presenters/errors.zod-presenter.js +4 -0
  142. package/dist/ui/presenters/errors.zod-presenter.js.map +1 -1
  143. package/dist/ui/presenters/index.d.ts +1 -0
  144. package/dist/ui/presenters/index.js +1 -0
  145. package/dist/ui/presenters/index.js.map +1 -1
  146. package/dist/ui/primitives/renderLogo.js +5 -0
  147. package/dist/ui/primitives/renderLogo.js.map +1 -1
  148. package/dist/ui/primitives/renderPanel.d.ts +3 -1
  149. package/dist/ui/primitives/renderPanel.js +68 -21
  150. package/dist/ui/primitives/renderPanel.js.map +1 -1
  151. package/dist/ui/primitives/terminalWidth.d.ts +4 -0
  152. package/dist/ui/primitives/terminalWidth.js +11 -0
  153. package/dist/ui/primitives/terminalWidth.js.map +1 -0
  154. package/dist/ui/primitives/text.d.ts +10 -0
  155. package/dist/ui/primitives/text.js +101 -30
  156. package/dist/ui/primitives/text.js.map +1 -1
  157. package/dist/ui/theme/theme.d.ts +45 -4
  158. package/dist/ui/theme/theme.js +183 -5
  159. package/dist/ui/theme/theme.js.map +1 -1
  160. package/llms.txt +15 -2
  161. package/package.json +15 -13
package/CHANGELOG.md CHANGED
@@ -8,6 +8,82 @@ El formato sigue [Keep a Changelog](https://keepachangelog.com/es-ES/1.1.0/) y e
8
8
 
9
9
  ## [Sin publicar]
10
10
 
11
+ ## [1.4.0] - 2026-10-02
12
+
13
+ Esta versión suma dos comandos para ver lo emitido (`ultimos` y `consultar`), facturas con varias alícuotas de IVA y un modo interactivo más completo. Los lotes ahora se validan enteros antes de emitir. No se rompe ningún comando, flag ni JSON existente: `--alicuota` con un solo número funciona igual que antes.
14
+
15
+ ### Agregado
16
+
17
+ - **Modo interactivo:**
18
+ - **Volver al paso anterior** con "← Volver" en las opciones o `<` en los textos.
19
+ - **Opciones avanzadas** antes de la vista previa: moneda extranjera (incluida la cotización oficial si te pagan en dólares), exento y no gravado, período del servicio y vencimiento del pago.
20
+ - Las notas comunes se pueden asociar **a un período** en lugar de a una factura.
21
+ - **Varias alícuotas por comprobante:** repetí `--alicuota TASA:MONTO` con el monto IVA incluido de cada una, por ejemplo `--alicuota general:1210 --alicuota reducida:552.50`. El total se calcula solo y se envía una entrada de IVA por alícuota. En JSON: `alicuotas: [{tasa, monto}]`.
22
+ - **Alias de alícuotas:** `general` (21), `reducida` (10.5), `incrementada` (27) y `cero` (0). Se aceptan igual que el número en `--alicuota`, `alicuotaIva` y `config alicuota`.
23
+ - `arcli ultimos <tipo>`: lista los últimos comprobantes emitidos en ARCA (`--cantidad` de 1 a 50, por defecto 10).
24
+ - `arcli consultar <tipo> <numero>`: muestra el detalle de un comprobante emitido, con CAE, vencimiento, importes y receptor.
25
+ - Los dos tienen `--json` y `--pv`. Antes esto solo se podía ver desde el modo interactivo.
26
+
27
+ ### Cambiado
28
+
29
+ - **Lotes (`--cargar` con un array):**
30
+ - Se validan **todos** los comprobantes antes de emitir el primero. Si alguno es inválido, no se emite ninguno y el error `BATCH_VALIDATION_ERROR` los lista a todos con su índice.
31
+ - Antes, las reglas de negocio se validaban mientras se emitía: si el #3 era inválido, el #1 y el #2 ya estaban emitidos y sus resultados no se mostraban.
32
+ - Si la emisión se corta a mitad (red, ARCA), se muestran los comprobantes ya procesados y después el error `BATCH_EMISSION_ERROR`, con el ítem que falló y los que quedaron sin procesar.
33
+
34
+ ### Corregido
35
+
36
+ - El comando equivalente del modo interactivo no incluía la moneda extranjera (`--moneda`, `--cm`, `--misma-moneda`).
37
+ - **La salida `--json` traía códigos de color ANSI cuando se redirigía** (`arcli ... --json | jq` fallaba con `parse error`). Ahora solo hay colores si la salida es una terminal real. `FORCE_COLOR=1` los fuerza y `NO_COLOR` los apaga.
38
+ - En el modo interactivo, el logo ahora tiene 3 líneas en blanco abajo, igual que arriba. Antes la barra de estado quedaba pegada.
39
+
40
+ ## [1.3.0] - 2026-10-02
41
+
42
+ Esta versión suma el modo interactivo para quien factura de vez en cuando y renueva la salida de la terminal: bordes según el tipo de panel, paneles que se ajustan a ventanas angostas y varios bugs de color corregidos. No se rompe ningún comando, flag ni JSON existente. El único cambio de comportamiento es que `arcli` sin argumentos, en una terminal interactiva, abre el asistente en lugar de la ayuda.
43
+
44
+ ### Agregado
45
+
46
+ - `ARCLI_ASCII=1` dibuja los paneles con ASCII puro, para terminales que no muestran caracteres de caja.
47
+ - **Modo interactivo.** `arcli` sin argumentos en una terminal interactiva abre un asistente paso a paso (también `arcli interactivo`):
48
+ - Emitir facturas A, B o C, comunes o FCE.
49
+ - Notas de crédito y débito eligiendo la factura de una lista de las últimas emitidas, consultadas a ARCA.
50
+ - Ver los últimos comprobantes y revisar la configuración.
51
+ - Antes de emitir muestra la vista previa y el comando equivalente. En producción pide una segunda confirmación.
52
+ - Usa las mismas validaciones y la misma emisión que los comandos con flags. Ver [Modo interactivo](docs/modo-interactivo.md).
53
+
54
+ ### Cambiado
55
+
56
+ - **Bordes según el tipo de panel**, para reconocerlo antes de leerlo:
57
+ - Comprobantes: la línea antes del estado ahora es de puntos y llega al borde (`├┄┄┤`).
58
+ - Errores del CLI y de ARCA: `╭─╮`, con una franja gruesa `┃` a la izquierda.
59
+ - Observaciones y avisos del régimen FCE: la misma forma, con la franja a trazos `╏`. Sugerencias: franja fina `┆`.
60
+ - Configuración y régimen FCE: ficha `┌─┐` con el título a la izquierda.
61
+ - Revisión de configuración: `╓─╖` con el veredicto en el pie (`╟──╢`).
62
+ - Últimos comprobantes (modo interactivo): solo reglas `══` arriba y abajo, sin costados.
63
+ - Avisos simples ("No se emitió nada"): solo las esquinas `┌ ┐ └ ┘`.
64
+ - Banner de TESTING: `┌╌┐`. Aviso de nueva versión: `╭─╮`. JSON y respuestas crudas: `┌┈┐`.
65
+ - Encabezado del modo interactivo: una barra de estado de una línea (`━━ MODO INTERACTIVO ━━ testing · PV 3 ━━`).
66
+ - Títulos de `arcli ejemplos`: una línea de sección (`── FACTURA C ──`) en lugar de una caja.
67
+ - "Esto equivale a:" del modo interactivo: solo `▎` a la izquierda, sin borde derecho, para que el comando se copie limpio.
68
+ - `arcli storybook bordes` muestra cada estilo con el panel donde se usa.
69
+ - Las etiquetas de las tablas, los pies de los paneles y el "CLI" del logo usan el color por defecto de la terminal en lugar de blanco fijo, que casi no se leía en terminales con fondo claro.
70
+ - Los títulos de los paneles de JSON, respuesta bruta y eventos pasan de celeste a gris, para que no compitan con los paneles informativos.
71
+ - Los errores muestran **Detalles** en cian y **Sugerencia** en amarillo, como dice la paleta. Antes estaban al revés. El panel "Sugerencias" de la respuesta también pasa a amarillo.
72
+ - `arcli` sin argumentos en una terminal interactiva abre el asistente en lugar de la ayuda. Sin terminal (pipes, CI, agentes) o con `--json` sigue mostrando la ayuda. `arcli ayuda` y `arcli --ayuda` no cambian.
73
+
74
+ ### Corregido
75
+
76
+ - Los títulos de los paneles ignoraban el color pedido desde la primera versión. Ahora el comprobante sale verde si fue aprobado, amarillo si quedó observado y rojo si fue rechazado; los errores, en rojo.
77
+ - El texto atenuado dejaba el atenuado prendido y apagaba lo que se imprimía después: el comando del "Esto equivale a:" y el comienzo del panel siguiente hasta el título.
78
+ - En terminales angostas los paneles medían al menos 68 columnas y se rompían. Ahora se ajustan al ancho de la ventana: las filas etiqueta/valor parten el valor debajo de su columna y, si no hay lugar, apilan etiqueta y valor. El logo se reemplaza por el nombre si no entra.
79
+ - El README decía que alcanzaba con Node.js 20. El mínimo es Node.js 22.22.1, como pide `engines`.
80
+
81
+ ### Dependencias
82
+
83
+ - `boxen` 8 → 9, `zod` 4.4 → 4.6 y `@inquirer/select` 5.2.2 → 5.2.5. No cambia la salida de la terminal.
84
+ - Herramientas de desarrollo: `vitest` y `@vitest/coverage-v8` 4 → 5 (ahora requieren `vite` como dependencia explícita), `eslint`, `typescript-eslint`, `prettier`, `lint-staged` y `tsx`.
85
+ - Se mantienen `typescript` 6, porque `typescript-eslint` todavía no soporta TypeScript 7, y `@types/node` 22, para no usar APIs que no existen en Node 22, la versión mínima soportada.
86
+
11
87
  ## [1.2.0] - 2026-10-02
12
88
 
13
89
  Esta versión revisa el payload que ARCLI envía a ARCA contra el manual de WSFEv1 y corrige los casos en que ARCA rechazaba el comprobante. Además completa el soporte de Factura de Crédito Electrónica (FCE) y suma alícuotas, importes exentos y no gravados, y período asociado.
@@ -73,6 +149,8 @@ Primera versión publicada en npm.
73
149
  - `llms.txt`: referencia condensada para que un agente de IA con acceso a terminal ejecute el CLI.
74
150
  - Publicación con npm Trusted Publishers (OIDC).
75
151
 
76
- [Sin publicar]: https://github.com/LcsGrz/arcli/compare/v1.2.0...HEAD
152
+ [Sin publicar]: https://github.com/LcsGrz/arcli/compare/v1.4.0...HEAD
153
+ [1.4.0]: https://github.com/LcsGrz/arcli/compare/v1.3.0...v1.4.0
154
+ [1.3.0]: https://github.com/LcsGrz/arcli/compare/v1.2.0...v1.3.0
77
155
  [1.2.0]: https://github.com/LcsGrz/arcli/compare/v1.1.0...v1.2.0
78
156
  [1.1.0]: https://github.com/LcsGrz/arcli/releases/tag/v1.1.0
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  [![npm version](https://img.shields.io/npm/v/arcli.svg)](https://www.npmjs.com/package/arcli)
4
4
  [![CI](https://github.com/LcsGrz/arcli/actions/workflows/ci.yml/badge.svg)](https://github.com/LcsGrz/arcli/actions/workflows/ci.yml)
5
5
  [![license: MIT](https://img.shields.io/npm/l/arcli.svg)](LICENSE)
6
- [![node >=20](https://img.shields.io/node/v/arcli.svg)](package.json)
6
+ [![node >=22.22.1](https://img.shields.io/node/v/arcli.svg)](package.json)
7
7
 
8
8
  ```text
9
9
  d8888 8888888b. .d8888b. 888 8888888
@@ -24,7 +24,7 @@ Emití o previsualizá comprobantes ARCA desde tu terminal, con un flujo claro,
24
24
  - previsualización segura antes de emitir
25
25
  - entrada por flags o JSON
26
26
  - salida humana, JSON o respuesta bruta
27
- - prompts interactivos cuando el flujo lo requiere
27
+ - modo interactivo: `arcli` sin argumentos abre un asistente paso a paso que muestra el comando equivalente
28
28
  - integración real con ARCA
29
29
  - Factura de Crédito Electrónica (FCE) completa: CBU, transferencia, anulación y consulta del régimen del receptor
30
30
  - alícuotas de IVA, importes exentos y no gravados, moneda extranjera y período asociado
@@ -47,7 +47,7 @@ arcli fc -m 15000 --cs --consumidor-final --ir-cf
47
47
 
48
48
  ### 1. Instalar
49
49
 
50
- Requiere Node.js 20 o superior.
50
+ Requiere Node.js 22.22.1 o superior.
51
51
 
52
52
  ```bash
53
53
  npm install -g arcli
@@ -132,6 +132,7 @@ arcli fa -m 15000 --cs --cuit 20168598204 --ir-ri \
132
132
  - [Modelo mental](docs/mental-model.md)
133
133
  - [Glosario](docs/glossary.md)
134
134
  - [Referencia del CLI](docs/cli-reference.md)
135
+ - [Modo interactivo](docs/modo-interactivo.md)
135
136
  - [Patrones de uso](docs/usage-patterns.md)
136
137
  - [Configuración](docs/configuration.md)
137
138
  - [Cómo obtener los certificados de ARCA](docs/obtencion-certificados.md)
@@ -0,0 +1,22 @@
1
+ import { type BatchItemError } from '../../modules/billing/billing.batch';
2
+ interface BatchPlan {
3
+ readonly inputIndexes: readonly number[];
4
+ readonly invalidItems: readonly BatchItemError[];
5
+ readonly total: number;
6
+ }
7
+ /**
8
+ * En un lote, valida todos los comprobantes antes de emitir el primero. `validate` tira si el item es
9
+ * invalido (lectura del JSON o reglas de negocio). Si alguno falla, no se emite ninguno y se informan todos.
10
+ */
11
+ export declare function validateBatchBeforeEmitting<T>(plan: BatchPlan, inputs: readonly T[], validate: (input: T) => void): void;
12
+ /**
13
+ * Emite los items en orden. Si uno falla a mitad del lote, entrega lo ya procesado a `onPartialResults`
14
+ * antes de cortar: si no se mostrara, alguien volveria a correr el lote y duplicaria comprobantes.
15
+ */
16
+ export declare function emitBatch<T, R>(options: {
17
+ readonly emit: (input: T, position: number) => Promise<R>;
18
+ readonly inputs: readonly T[];
19
+ readonly onPartialResults: (results: R[]) => void;
20
+ readonly plan: BatchPlan;
21
+ }): Promise<R[]>;
22
+ export {};
@@ -0,0 +1,51 @@
1
+ import { BatchEmissionError, BatchValidationError, describeBatchItemError, } from '../../modules/billing/billing.batch.js';
2
+ /**
3
+ * En un lote, valida todos los comprobantes antes de emitir el primero. `validate` tira si el item es
4
+ * invalido (lectura del JSON o reglas de negocio). Si alguno falla, no se emite ninguno y se informan todos.
5
+ */
6
+ export function validateBatchBeforeEmitting(plan, inputs, validate) {
7
+ if (plan.total === 1) {
8
+ return;
9
+ }
10
+ const errors = [...plan.invalidItems];
11
+ inputs.forEach((input, position) => {
12
+ try {
13
+ validate(input);
14
+ }
15
+ catch (error) {
16
+ errors.push({ index: plan.inputIndexes[position] ?? position + 1, message: describeBatchItemError(error) });
17
+ }
18
+ });
19
+ if (errors.length > 0) {
20
+ throw new BatchValidationError([...errors].sort((left, right) => left.index - right.index), plan.total);
21
+ }
22
+ }
23
+ /**
24
+ * Emite los items en orden. Si uno falla a mitad del lote, entrega lo ya procesado a `onPartialResults`
25
+ * antes de cortar: si no se mostrara, alguien volveria a correr el lote y duplicaria comprobantes.
26
+ */
27
+ export async function emitBatch(options) {
28
+ const { emit, inputs, onPartialResults, plan } = options;
29
+ const results = [];
30
+ for (const [position, input] of inputs.entries()) {
31
+ try {
32
+ results.push(await emit(input, position));
33
+ }
34
+ catch (error) {
35
+ if (plan.total === 1) {
36
+ throw error;
37
+ }
38
+ if (results.length > 0) {
39
+ onPartialResults(results);
40
+ }
41
+ throw new BatchEmissionError({
42
+ cause: error,
43
+ emitted: results.length,
44
+ failedIndex: plan.inputIndexes[position] ?? position + 1,
45
+ total: plan.total,
46
+ });
47
+ }
48
+ }
49
+ return results;
50
+ }
51
+ //# sourceMappingURL=billing.command.batch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"billing.command.batch.js","sourceRoot":"","sources":["../../../src/cli/commands/billing.command.batch.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAElB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,qCAAqC,CAAC;AAQ7C;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CACzC,IAAe,EACf,MAAoB,EACpB,QAA4B;IAE5B,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAqB,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;IAExD,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;QACjC,IAAI,CAAC;YACH,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,OAAO,EAAE,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC9G,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,oBAAoB,CAC5B,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,EAC3D,IAAI,CAAC,KAAK,CACX,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAO,OAKrC;IACC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IACzD,MAAM,OAAO,GAAQ,EAAE,CAAC;IAExB,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;QACjD,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;gBACrB,MAAM,KAAK,CAAC;YACd,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAC5B,CAAC;YAED,MAAM,IAAI,kBAAkB,CAAC;gBAC3B,KAAK,EAAE,KAAK;gBACZ,OAAO,EAAE,OAAO,CAAC,MAAM;gBACvB,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC;gBACxD,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -2,7 +2,7 @@ import { Option } from 'commander';
2
2
  export function registerBillingOptions(command) {
3
3
  command
4
4
  .option('-m, --monto <number>', 'importe total del comprobante', parseFloat)
5
- .option('--alicuota <tasa>', 'alicuota de IVA para A y B: 0, 2.5, 5, 10.5, 21 o 27 (por defecto 21)')
5
+ .option('--alicuota <tasa>', 'alicuota de IVA para A y B: general (21), reducida (10.5), incrementada (27), cero (0), 5 o 2.5. Repetible como TASA:MONTO para varias alicuotas', (value, previous) => [...(previous ?? []), value])
6
6
  .option('--exento <number>', 'parte exenta del monto total (A y B)', parseFloat)
7
7
  // No puede llamarse --no-gravado: commander interpreta --no-* como negacion de un flag booleano.
8
8
  .option('--nogravado <number>', 'parte no gravada del monto total (A y B)', parseFloat)
@@ -1 +1 @@
1
- {"version":3,"file":"billing.command.options.js","sourceRoot":"","sources":["../../../src/cli/commands/billing.command.options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"billing.command.options.js","sourceRoot":"","sources":["../../../src/cli/commands/billing.command.options.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { Command } from 'commander';
2
+ import { type BatchItemError } from '../../modules/billing/billing.batch';
2
3
  import { type BillingCommandInput } from '../../modules/billing/billing.schemas';
3
4
  import type { VoucherShortcut } from '../../modules/billing/billing.types';
4
5
  export { registerBillingOptions } from './billing.command.options';
@@ -13,8 +14,14 @@ export interface BillingCommandDefaults {
13
14
  readonly defaultIvaCondition?: BillingCommandInput['ivaCondition'];
14
15
  }
15
16
  export interface BillingCommandPlan {
17
+ /** Posicion en el lote (desde 1) de cada item de `inputs`. */
18
+ readonly inputIndexes: number[];
16
19
  readonly inputs: BillingCommandInput[];
20
+ /** Items del lote que no se pudieron leer; el comando no emite nada si hay alguno. */
21
+ readonly invalidItems: BatchItemError[];
17
22
  readonly modeSource: 'default' | 'file' | 'flags';
23
+ /** Cantidad de items del lote (1 si no hay lote). */
24
+ readonly total: number;
18
25
  }
19
26
  export declare function parseBillingCommandPlan(command: Command, shortcut: VoucherShortcut, defaults?: BillingCommandDefaults): BillingCommandPlan;
20
27
  export declare function parseBillingCommandInputs(command: Command, shortcut: VoucherShortcut, defaults?: BillingCommandDefaults): BillingCommandInput[];
@@ -1,5 +1,6 @@
1
1
  import { InputValidationError } from '../../lib/errors/app-error.js';
2
2
  import { readJsonFile } from '../../lib/files/read-json-file.js';
3
+ import { BatchValidationError, describeBatchItemError } from '../../modules/billing/billing.batch.js';
3
4
  import { isForeignCurrency } from '../../modules/billing/billing.currency.js';
4
5
  import { billingCommandSchema } from '../../modules/billing/billing.schemas.js';
5
6
  import { getVoucherKindByShortcut } from '../../modules/billing/voucher-kind-map.js';
@@ -11,6 +12,36 @@ function pickString(...values) {
11
12
  function pickNumber(...values) {
12
13
  return values.find((value) => typeof value === 'number');
13
14
  }
15
+ function parseAmountText(raw) {
16
+ const value = raw.trim();
17
+ // "552,50" -> 552.5; con punto se toma como decimal, igual que --monto.
18
+ return Number(value.includes(',') && !value.includes('.') ? value.replace(',', '.') : value);
19
+ }
20
+ /**
21
+ * `--alicuota` acepta una tasa sola ("reducida", "10.5") o, repetido, pares TASA:MONTO con el importe
22
+ * de cada alicuota IVA incluido. No se pueden mezclar las dos formas.
23
+ */
24
+ function parseIvaRateFlags(values) {
25
+ if (!values || values.length === 0) {
26
+ return {};
27
+ }
28
+ const withAmount = values.filter((value) => value.includes(':'));
29
+ if (withAmount.length === 0) {
30
+ if (values.length > 1) {
31
+ throw new InputValidationError('Para varias alicuotas use --alicuota TASA:MONTO en cada una, por ejemplo --alicuota general:1210 --alicuota reducida:552.50.');
32
+ }
33
+ return { ivaRate: values[0] };
34
+ }
35
+ if (withAmount.length !== values.length) {
36
+ throw new InputValidationError('No mezcle --alicuota TASA con --alicuota TASA:MONTO: use una sola forma.');
37
+ }
38
+ return {
39
+ ivaRateAmounts: values.map((value) => {
40
+ const separator = value.indexOf(':');
41
+ return { amount: parseAmountText(value.slice(separator + 1)), rate: value.slice(0, separator) };
42
+ }),
43
+ };
44
+ }
14
45
  function parseBillingCommandInputFromSource(command, shortcut, fileInput, defaults = {}) {
15
46
  const commandOptions = command.optsWithGlobals();
16
47
  const emitirSource = command.getOptionValueSource('emitir');
@@ -104,6 +135,18 @@ function parseBillingCommandInputFromSource(command, shortcut, fileInput, defaul
104
135
  const periodFrom = pickString(commandOptions.periodoDesde, commandOptions.pd);
105
136
  const periodTo = pickString(commandOptions.periodoHasta, commandOptions.ph);
106
137
  const associatedPeriod = periodFrom || periodTo ? { desde: periodFrom, hasta: periodTo } : fileInput?.periodoAsociado;
138
+ const flagRates = parseIvaRateFlags(commandOptions.alicuota);
139
+ const fileRateAmounts = fileInput?.alicuotas?.map((item) => ({ amount: item.monto, rate: item.tasa }));
140
+ const ivaRateAmounts = flagRates.ivaRateAmounts ?? fileRateAmounts;
141
+ const exemptAmount = pickNumber(commandOptions.exento, fileInput?.importeExento);
142
+ const untaxedAmount = pickNumber(commandOptions.nogravado, fileInput?.importeNoGravado);
143
+ // Con varias alicuotas el monto total se puede omitir: es la suma de cada una mas exento y no gravado.
144
+ const totalAmount = pickNumber(commandOptions.monto, fileInput?.montoTotal) ??
145
+ (ivaRateAmounts
146
+ ? ivaRateAmounts.reduce((sum, item) => sum + (typeof item.amount === 'number' ? item.amount : 0), 0) +
147
+ (exemptAmount ?? 0) +
148
+ (untaxedAmount ?? 0)
149
+ : undefined);
107
150
  return {
108
151
  ...billingCommandSchema.parse({
109
152
  associatedPeriod,
@@ -120,10 +163,11 @@ function parseBillingCommandInputFromSource(command, shortcut, fileInput, defaul
120
163
  dueDay: pickNumber(commandOptions.dia, fileInput?.dia),
121
164
  emit: shouldEmit,
122
165
  exchangeRate,
123
- exemptAmount: pickNumber(commandOptions.exento, fileInput?.importeExento),
124
- ivaRate: pickString(commandOptions.alicuota) ??
125
- fileInput?.alicuotaIva ??
126
- (usesIvaRateDefault ? defaults.defaultIvaRate : undefined),
166
+ exemptAmount,
167
+ ivaRate: ivaRateAmounts
168
+ ? undefined
169
+ : (flagRates.ivaRate ?? fileInput?.alicuotaIva ?? (usesIvaRateDefault ? defaults.defaultIvaRate : undefined)),
170
+ ivaRateAmounts,
127
171
  ivaCondition: resolvedIvaCondition,
128
172
  paymentDueDate: pickString(commandOptions.vencimiento, commandOptions.vto, fileInput?.vencimientoPago),
129
173
  pointOfSale: pickNumber(commandOptions.puntoVenta, commandOptions.pv, fileInput?.puntoVenta),
@@ -131,9 +175,9 @@ function parseBillingCommandInputFromSource(command, shortcut, fileInput, defaul
131
175
  serviceEndDate: pickString(commandOptions.servicioHasta, commandOptions.sh, fileInput?.servicioHasta),
132
176
  serviceStartDate: pickString(commandOptions.servicioDesde, commandOptions.sd, fileInput?.servicioDesde),
133
177
  shortcut,
134
- totalAmount: pickNumber(commandOptions.monto, fileInput?.montoTotal),
178
+ totalAmount: totalAmount === undefined ? undefined : Math.round(totalAmount * 100) / 100,
135
179
  transferMode: pickString(commandOptions.transferencia, fileInput?.transferencia),
136
- untaxedAmount: pickNumber(commandOptions.nogravado, fileInput?.importeNoGravado),
180
+ untaxedAmount,
137
181
  }),
138
182
  __modeSource: modeSource,
139
183
  };
@@ -146,23 +190,50 @@ export function parseBillingCommandPlan(command, shortcut, defaults = {}) {
146
190
  if (fileInputs.length === 0) {
147
191
  const { __modeSource, ...input } = parseBillingCommandInputFromSource(command, shortcut, undefined, defaults);
148
192
  return {
193
+ inputIndexes: [1],
149
194
  inputs: [input],
195
+ invalidItems: [],
150
196
  modeSource: __modeSource,
197
+ total: 1,
151
198
  };
152
199
  }
153
- const inputs = fileInputs.map((fileInput) => parseBillingCommandInputFromSource(command, shortcut, fileInput, defaults));
154
- const modeSource = inputs.some((input) => input.__modeSource === 'flags')
200
+ // Un solo comprobante falla como siempre. En un lote se leen todos y se juntan los errores,
201
+ // para informarlos de una vez en lugar de cortar en el primero.
202
+ if (fileInputs.length === 1) {
203
+ const { __modeSource, ...input } = parseBillingCommandInputFromSource(command, shortcut, fileInputs[0], defaults);
204
+ return { inputIndexes: [1], inputs: [input], invalidItems: [], modeSource: __modeSource, total: 1 };
205
+ }
206
+ const parsed = [];
207
+ const inputIndexes = [];
208
+ const invalidItems = [];
209
+ fileInputs.forEach((fileInput, position) => {
210
+ try {
211
+ parsed.push(parseBillingCommandInputFromSource(command, shortcut, fileInput, defaults));
212
+ inputIndexes.push(position + 1);
213
+ }
214
+ catch (error) {
215
+ invalidItems.push({ index: position + 1, message: describeBatchItemError(error) });
216
+ }
217
+ });
218
+ const modeSource = parsed.some((input) => input.__modeSource === 'flags')
155
219
  ? 'flags'
156
- : inputs.some((input) => input.__modeSource === 'file')
220
+ : parsed.some((input) => input.__modeSource === 'file')
157
221
  ? 'file'
158
222
  : 'default';
159
223
  return {
160
- inputs: inputs.map(({ __modeSource: _modeSource, ...input }) => input),
224
+ inputIndexes,
225
+ inputs: parsed.map(({ __modeSource: _modeSource, ...input }) => input),
226
+ invalidItems,
161
227
  modeSource,
228
+ total: fileInputs.length,
162
229
  };
163
230
  }
164
231
  export function parseBillingCommandInputs(command, shortcut, defaults = {}) {
165
- return parseBillingCommandPlan(command, shortcut, defaults).inputs;
232
+ const plan = parseBillingCommandPlan(command, shortcut, defaults);
233
+ if (plan.invalidItems.length > 0) {
234
+ throw new BatchValidationError(plan.invalidItems, plan.total);
235
+ }
236
+ return plan.inputs;
166
237
  }
167
238
  export function parseBillingCommandInput(command, shortcut, defaults = {}) {
168
239
  return parseBillingCommandInputs(command, shortcut, defaults)[0];
@@ -1 +1 @@
1
- {"version":3,"file":"billing.command.parser.js","sourceRoot":"","sources":["../../../src/cli/commands/billing.command.parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"billing.command.parser.js","sourceRoot":"","sources":["../../../src/cli/commands/billing.command.parser.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,11 @@
1
- import ora from 'ora';
2
1
  import { BillingService } from '../../modules/billing/billing.service.js';
3
2
  import { getVoucherKindByShortcut } from '../../modules/billing/voucher-kind-map.js';
4
3
  import { ArcaBillingGateway } from '../../services/arca/arca-billing.gateway.js';
5
4
  import { ArcaClientFactory } from '../../services/arca/arca-client.factory.js';
6
5
  import { ArcaContextResolver } from '../../services/arca/arca-context.resolver.js';
7
6
  import { ArcaFceObligationGateway } from '../../services/arca/arca-fce-obligation.gateway.js';
7
+ import { startSpinner } from '../spinner.js';
8
+ import { emitBatch, validateBatchBeforeEmitting } from './billing.command.batch.js';
8
9
  import { runInteractiveBillingPreview } from './billing.command.interactive-preview.js';
9
10
  import { writeBillingCommandResults } from './billing.command.output.js';
10
11
  import { parseBillingCommandPlan, registerBillingOptions } from './billing.command.parser.js';
@@ -54,6 +55,7 @@ export async function executeBillingCommand(command, shortcut) {
54
55
  for (const input of plan.inputs) {
55
56
  plannedInputs.push(await service.resolveExchangeRate(input, gateway));
56
57
  }
58
+ validateBatchBeforeEmitting(plan, plannedInputs, (input) => service.buildVoucherPayload(input, runtime));
57
59
  const warnings = runtime.config.verificarFce
58
60
  ? await resolveFceWarnings(plannedInputs, service, new ArcaFceObligationGateway(arca))
59
61
  : [];
@@ -70,26 +72,27 @@ export async function executeBillingCommand(command, shortcut) {
70
72
  return;
71
73
  }
72
74
  const { inputs, previewShown } = preview;
73
- spinner = !runtime.outputJson && process.stdout.isTTY ? ora('Procesando comprobante...').start() : null;
75
+ spinner = runtime.outputJson ? null : startSpinner('Procesando comprobante...');
74
76
  if (spinner) {
75
77
  spinner.text = inputs.length > 1 ? `Procesando ${inputs.length} comprobantes...` : 'Procesando comprobante...';
76
78
  }
77
- const results = [];
78
- for (const [index, input] of inputs.entries()) {
79
- results.push(await service.execute({
80
- gateway,
81
- input,
82
- runtime,
83
- warnings: warnings[index],
84
- }));
85
- }
86
- spinner?.stop();
87
- writeBillingCommandResults(results, {
79
+ const outputOptions = {
88
80
  environment: runtime.environment,
89
81
  outputJson: runtime.outputJson,
90
82
  previewShown,
91
83
  raw: useRaw,
84
+ };
85
+ const results = await emitBatch({
86
+ emit: (input, position) => service.execute({ gateway, input, runtime, warnings: warnings[position] }),
87
+ inputs,
88
+ onPartialResults: (partial) => {
89
+ spinner?.stop();
90
+ writeBillingCommandResults(partial, outputOptions);
91
+ },
92
+ plan,
92
93
  });
94
+ spinner?.stop();
95
+ writeBillingCommandResults(results, outputOptions);
93
96
  }
94
97
  catch (error) {
95
98
  spinner?.stop();
@@ -1 +1 @@
1
- {"version":3,"file":"billing.command.shared.js","sourceRoot":"","sources":["../../../src/cli/commands/billing.command.shared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"billing.command.shared.js","sourceRoot":"","sources":["../../../src/cli/commands/billing.command.shared.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,7 @@
1
1
  import { Command } from 'commander';
2
+ import { type ConfigDoctorRuntimeCheck } from '../../modules/config/config-doctor';
3
+ export declare function buildRuntimeCheck(options: {
4
+ produccion?: boolean;
5
+ testing?: boolean;
6
+ }): ConfigDoctorRuntimeCheck;
2
7
  export declare function registerConfigCommand(program: Command): void;
@@ -1,9 +1,9 @@
1
- import ora from 'ora';
2
1
  import { ConfigService } from '../../modules/config/config.service.js';
3
2
  import { buildConfigDoctorReport } from '../../modules/config/config-doctor.js';
4
3
  import { ArcaContextResolver } from '../../services/arca/arca-context.resolver.js';
5
4
  import { formatConfig, formatConfigAsText, formatConfigDoctor, formatConfigDoctorAsText, formatConfigPath, writeTerminalJson, writeTerminalOutput, } from '../../ui/index.js';
6
5
  import { configureSpanishHelp, createConfigHelp } from '../help.js';
6
+ import { startSpinner } from '../spinner.js';
7
7
  function createConfigService() {
8
8
  const service = new ConfigService();
9
9
  service.ensureInitialized();
@@ -16,7 +16,7 @@ function printConfigResult(textValue, jsonValue, useJson = false) {
16
16
  }
17
17
  writeTerminalOutput(textValue);
18
18
  }
19
- function buildRuntimeCheck(options) {
19
+ export function buildRuntimeCheck(options) {
20
20
  try {
21
21
  return {
22
22
  validation: new ArcaContextResolver({
@@ -58,7 +58,7 @@ export function registerConfigCommand(program) {
58
58
  .option('--produccion', 'revisar para produccion')
59
59
  .action((options) => {
60
60
  const service = createConfigService();
61
- const spinner = !options.json && process.stdout.isTTY ? ora('Generando revision...').start() : null;
61
+ const spinner = options.json ? null : startSpinner('Generando revision...');
62
62
  try {
63
63
  const report = buildConfigDoctorReport(service.getConfig(), buildRuntimeCheck(options));
64
64
  spinner?.stop();
@@ -1 +1 @@
1
- {"version":3,"file":"config.command.js","sourceRoot":"","sources":["../../../src/cli/commands/config.command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.command.js","sourceRoot":"","sources":["../../../src/cli/commands/config.command.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- import ora from 'ora';
2
1
  import { formatDateAsArcaDate, parseArgentineDateInputAsArcaDate } from '../../lib/dates/arca-date.js';
3
2
  import { InputValidationError } from '../../lib/errors/app-error.js';
4
3
  import { formatFceObligationAsJson, formatFceObligationAsText } from '../../modules/fce/fce-obligation.presenter.js';
@@ -7,6 +6,7 @@ import { ArcaContextResolver } from '../../services/arca/arca-context.resolver.j
7
6
  import { ArcaFceObligationGateway } from '../../services/arca/arca-fce-obligation.gateway.js';
8
7
  import { writeTerminalJson, writeTerminalOutput } from '../../ui/index.js';
9
8
  import { configureSpanishHelp, createFceObligationHelp } from '../help.js';
9
+ import { startSpinner } from '../spinner.js';
10
10
  import { getGlobalOptions, registerGlobalOptions } from './billing.command.shared.js';
11
11
  function parseCuit(value) {
12
12
  const normalizedValue = value.trim();
@@ -30,7 +30,7 @@ export function registerFceObligationCommand(program) {
30
30
  ? parseArgentineDateInputAsArcaDate(options.fecha)
31
31
  : formatDateAsArcaDate(new Date());
32
32
  const runtime = new ArcaContextResolver({ options: getGlobalOptions(self) }).resolve();
33
- const spinner = !runtime.outputJson && process.stdout.isTTY ? ora('Consultando ARCA...').start() : null;
33
+ const spinner = runtime.outputJson ? null : startSpinner('Consultando ARCA...');
34
34
  try {
35
35
  const gateway = new ArcaFceObligationGateway(new ArcaClientFactory().create(runtime));
36
36
  const obligation = await gateway.getObligation(cuit, issueDate);