arcli 1.3.0 → 1.5.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 (151) hide show
  1. package/CHANGELOG.md +48 -1
  2. package/README.md +3 -1
  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 +7 -1
  7. package/dist/cli/commands/billing.command.options.js.map +1 -1
  8. package/dist/cli/commands/billing.command.output.d.ts +2 -0
  9. package/dist/cli/commands/billing.command.output.js +15 -1
  10. package/dist/cli/commands/billing.command.output.js.map +1 -1
  11. package/dist/cli/commands/billing.command.parser.d.ts +7 -0
  12. package/dist/cli/commands/billing.command.parser.js +96 -11
  13. package/dist/cli/commands/billing.command.parser.js.map +1 -1
  14. package/dist/cli/commands/billing.command.pdf.d.ts +24 -0
  15. package/dist/cli/commands/billing.command.pdf.js +130 -0
  16. package/dist/cli/commands/billing.command.pdf.js.map +1 -0
  17. package/dist/cli/commands/billing.command.shared.js +28 -12
  18. package/dist/cli/commands/billing.command.shared.js.map +1 -1
  19. package/dist/cli/commands/config.command.js +6 -6
  20. package/dist/cli/commands/config.command.js.map +1 -1
  21. package/dist/cli/commands/pdf.command.d.ts +2 -0
  22. package/dist/cli/commands/pdf.command.js +78 -0
  23. package/dist/cli/commands/pdf.command.js.map +1 -0
  24. package/dist/cli/commands/vouchers.command.d.ts +2 -0
  25. package/dist/cli/commands/vouchers.command.js +96 -0
  26. package/dist/cli/commands/vouchers.command.js.map +1 -0
  27. package/dist/cli/help.d.ts +1 -0
  28. package/dist/cli/help.js +23 -1
  29. package/dist/cli/help.js.map +1 -1
  30. package/dist/cli/interactive/advanced-options.d.ts +14 -0
  31. package/dist/cli/interactive/advanced-options.js +126 -0
  32. package/dist/cli/interactive/advanced-options.js.map +1 -0
  33. package/dist/cli/interactive/history.flow.js +10 -19
  34. package/dist/cli/interactive/history.flow.js.map +1 -1
  35. package/dist/cli/interactive/interactive-mode.js +2 -1
  36. package/dist/cli/interactive/interactive-mode.js.map +1 -1
  37. package/dist/cli/interactive/invoice.flow.d.ts +20 -0
  38. package/dist/cli/interactive/invoice.flow.js +120 -42
  39. package/dist/cli/interactive/invoice.flow.js.map +1 -1
  40. package/dist/cli/interactive/note.flow.d.ts +24 -0
  41. package/dist/cli/interactive/note.flow.js +205 -68
  42. package/dist/cli/interactive/note.flow.js.map +1 -1
  43. package/dist/cli/interactive/pdf.flow.d.ts +5 -0
  44. package/dist/cli/interactive/pdf.flow.js +89 -0
  45. package/dist/cli/interactive/pdf.flow.js.map +1 -0
  46. package/dist/cli/interactive/prompts.d.ts +8 -0
  47. package/dist/cli/interactive/prompts.js +22 -0
  48. package/dist/cli/interactive/prompts.js.map +1 -1
  49. package/dist/cli/interactive/session.d.ts +1 -1
  50. package/dist/cli/interactive/session.js +5 -1
  51. package/dist/cli/interactive/session.js.map +1 -1
  52. package/dist/cli/interactive/validators.d.ts +4 -0
  53. package/dist/cli/interactive/validators.js +18 -0
  54. package/dist/cli/interactive/validators.js.map +1 -1
  55. package/dist/cli/program.js +4 -0
  56. package/dist/cli/program.js.map +1 -1
  57. package/dist/cli/version.d.ts +1 -1
  58. package/dist/cli/version.js +1 -1
  59. package/dist/modules/billing/billing.amounts.d.ts +1 -1
  60. package/dist/modules/billing/billing.amounts.js +34 -13
  61. package/dist/modules/billing/billing.amounts.js.map +1 -1
  62. package/dist/modules/billing/billing.batch.d.ts +23 -0
  63. package/dist/modules/billing/billing.batch.js +43 -0
  64. package/dist/modules/billing/billing.batch.js.map +1 -0
  65. package/dist/modules/billing/billing.display.js +12 -3
  66. package/dist/modules/billing/billing.display.js.map +1 -1
  67. package/dist/modules/billing/billing.schemas.d.ts +35 -0
  68. package/dist/modules/billing/billing.schemas.js +32 -6
  69. package/dist/modules/billing/billing.schemas.js.map +1 -1
  70. package/dist/modules/billing/billing.serialize.js +13 -0
  71. package/dist/modules/billing/billing.serialize.js.map +1 -1
  72. package/dist/modules/billing/billing.types.internal.d.ts +3 -0
  73. package/dist/modules/config/config-doctor.js +13 -0
  74. package/dist/modules/config/config-doctor.js.map +1 -1
  75. package/dist/modules/config/config-value-parser.d.ts +1 -1
  76. package/dist/modules/config/config-value-parser.js +43 -2
  77. package/dist/modules/config/config-value-parser.js.map +1 -1
  78. package/dist/modules/config/config.presenter.d.ts +6 -2
  79. package/dist/modules/config/config.presenter.js +25 -6
  80. package/dist/modules/config/config.presenter.js.map +1 -1
  81. package/dist/modules/config/config.schemas.d.ts +42 -0
  82. package/dist/modules/config/config.schemas.js +29 -0
  83. package/dist/modules/config/config.schemas.js.map +1 -1
  84. package/dist/modules/config/config.service.d.ts +8 -0
  85. package/dist/modules/config/config.service.js +21 -0
  86. package/dist/modules/config/config.service.js.map +1 -1
  87. package/dist/modules/examples/examples.js +1 -0
  88. package/dist/modules/examples/examples.js.map +1 -1
  89. package/dist/modules/interactive/equivalent-command.js +13 -0
  90. package/dist/modules/interactive/equivalent-command.js.map +1 -1
  91. package/dist/modules/interactive/wizard.d.ts +16 -0
  92. package/dist/modules/interactive/wizard.js +33 -0
  93. package/dist/modules/interactive/wizard.js.map +1 -0
  94. package/dist/modules/pdf/pdf-data.mapper.d.ts +4 -0
  95. package/dist/modules/pdf/pdf-data.mapper.js +117 -0
  96. package/dist/modules/pdf/pdf-data.mapper.js.map +1 -0
  97. package/dist/modules/pdf/pdf-decision.d.ts +14 -0
  98. package/dist/modules/pdf/pdf-decision.js +19 -0
  99. package/dist/modules/pdf/pdf-decision.js.map +1 -0
  100. package/dist/modules/pdf/pdf-file-name.d.ts +3 -0
  101. package/dist/modules/pdf/pdf-file-name.js +7 -0
  102. package/dist/modules/pdf/pdf-file-name.js.map +1 -0
  103. package/dist/modules/pdf/pdf-issuer.d.ts +8 -0
  104. package/dist/modules/pdf/pdf-issuer.js +43 -0
  105. package/dist/modules/pdf/pdf-issuer.js.map +1 -0
  106. package/dist/modules/pdf/pdf.errors.d.ts +10 -0
  107. package/dist/modules/pdf/pdf.errors.js +11 -0
  108. package/dist/modules/pdf/pdf.errors.js.map +1 -0
  109. package/dist/modules/pdf/pdf.types.d.ts +91 -0
  110. package/dist/modules/pdf/pdf.types.js +2 -0
  111. package/dist/modules/pdf/pdf.types.js.map +1 -0
  112. package/dist/modules/storybook/showcase.js +6 -2
  113. package/dist/modules/storybook/showcase.js.map +1 -1
  114. package/dist/modules/{interactive → vouchers}/voucher-history.d.ts +9 -0
  115. package/dist/modules/{interactive → vouchers}/voucher-history.js +1 -0
  116. package/dist/modules/vouchers/voucher-history.js.map +1 -0
  117. package/dist/modules/vouchers/voucher-history.presenter.d.ts +22 -0
  118. package/dist/modules/vouchers/voucher-history.presenter.js +108 -0
  119. package/dist/modules/vouchers/voucher-history.presenter.js.map +1 -0
  120. package/dist/services/arca/arca-voucher-history.gateway.d.ts +1 -1
  121. package/dist/services/arca/arca-voucher-history.gateway.js +9 -1
  122. package/dist/services/arca/arca-voucher-history.gateway.js.map +1 -1
  123. package/dist/services/pdf/pdf-browser.d.ts +5 -0
  124. package/dist/services/pdf/pdf-browser.js +54 -0
  125. package/dist/services/pdf/pdf-browser.js.map +1 -0
  126. package/dist/services/pdf/pdf-exporter.d.ts +19 -0
  127. package/dist/services/pdf/pdf-exporter.js +47 -0
  128. package/dist/services/pdf/pdf-exporter.js.map +1 -0
  129. package/dist/services/pdf/pdf-plugin.d.ts +50 -0
  130. package/dist/services/pdf/pdf-plugin.js +143 -0
  131. package/dist/services/pdf/pdf-plugin.js.map +1 -0
  132. package/dist/ui/presenters/errors.presenter.js +22 -1
  133. package/dist/ui/presenters/errors.presenter.js.map +1 -1
  134. package/dist/ui/presenters/errors.zod-presenter.d.ts +2 -0
  135. package/dist/ui/presenters/errors.zod-presenter.js +4 -0
  136. package/dist/ui/presenters/errors.zod-presenter.js.map +1 -1
  137. package/dist/ui/presenters/index.d.ts +2 -0
  138. package/dist/ui/presenters/index.js +2 -0
  139. package/dist/ui/presenters/index.js.map +1 -1
  140. package/dist/ui/presenters/pdf.presenter.d.ts +13 -0
  141. package/dist/ui/presenters/pdf.presenter.js +46 -0
  142. package/dist/ui/presenters/pdf.presenter.js.map +1 -0
  143. package/dist/ui/primitives/text.d.ts +5 -0
  144. package/dist/ui/primitives/text.js +10 -1
  145. package/dist/ui/primitives/text.js.map +1 -1
  146. package/llms.txt +25 -5
  147. package/package.json +1 -1
  148. package/dist/cli/interactive/voucher-format.d.ts +0 -4
  149. package/dist/cli/interactive/voucher-format.js +0 -28
  150. package/dist/cli/interactive/voucher-format.js.map +0 -1
  151. package/dist/modules/interactive/voucher-history.js.map +0 -1
@@ -0,0 +1,126 @@
1
+ import { parseAmountInput } from '../../modules/interactive/amount-input.js';
2
+ import { BACK } from '../../modules/interactive/wizard.js';
3
+ import { askTextStep, chooseStep } from './prompts.js';
4
+ import { validateDate, validateExchangeRate, validateOptionalAmount } from './validators.js';
5
+ function describeCurrency(options) {
6
+ if (!options.currencyCode || options.currencyCode === 'PES' || options.currencyCode === 'ARS') {
7
+ return 'pesos';
8
+ }
9
+ return options.sameCurrency ? 'dolares, cotizacion oficial de ARCA' : `dolares, cotizacion ${options.exchangeRate}`;
10
+ }
11
+ function describeAmounts(options) {
12
+ const parts = [
13
+ options.exemptAmount ? `exento ${options.exemptAmount}` : undefined,
14
+ options.untaxedAmount ? `no gravado ${options.untaxedAmount}` : undefined,
15
+ ].filter(Boolean);
16
+ return parts.length > 0 ? parts.join(', ') : 'sin exento ni no gravado';
17
+ }
18
+ async function askCurrency(current) {
19
+ const currency = await chooseStep('Moneda del comprobante:', [
20
+ { name: 'Pesos', value: 'PES' },
21
+ { name: 'Dolares (USD)', value: 'USD' },
22
+ ]);
23
+ if (currency === BACK) {
24
+ return BACK;
25
+ }
26
+ if (currency === 'PES') {
27
+ return { ...current, currencyCode: 'ARS', exchangeRate: undefined, sameCurrency: false };
28
+ }
29
+ const payment = await chooseStep('¿Como te pagan?', [
30
+ { description: 'Ingresas la cotizacion acordada', name: 'En pesos', value: 'pesos' },
31
+ { description: 'Se usa la cotizacion oficial de ARCA', name: 'En dolares', value: 'dolares' },
32
+ ]);
33
+ if (payment === BACK) {
34
+ return BACK;
35
+ }
36
+ if (payment === 'dolares') {
37
+ return { ...current, currencyCode: 'USD', exchangeRate: undefined, sameCurrency: true };
38
+ }
39
+ const rate = await askTextStep('Cotizacion del dolar:', { validate: validateExchangeRate });
40
+ return rate === BACK
41
+ ? BACK
42
+ : { ...current, currencyCode: 'USD', exchangeRate: parseAmountInput(rate), sameCurrency: false };
43
+ }
44
+ async function askExemptAmounts(current) {
45
+ const exempt = await askTextStep('Parte exenta del monto total (vacio si no hay):', {
46
+ validate: validateOptionalAmount,
47
+ });
48
+ if (exempt === BACK) {
49
+ return BACK;
50
+ }
51
+ const untaxed = await askTextStep('Parte no gravada del monto total (vacio si no hay):', {
52
+ validate: validateOptionalAmount,
53
+ });
54
+ if (untaxed === BACK) {
55
+ return BACK;
56
+ }
57
+ return { ...current, exemptAmount: parseAmountInput(exempt), untaxedAmount: parseAmountInput(untaxed) };
58
+ }
59
+ async function askServicePeriod(current) {
60
+ const start = await askTextStep('Servicio desde:', { validate: validateDate });
61
+ if (start === BACK) {
62
+ return BACK;
63
+ }
64
+ const end = await askTextStep('Servicio hasta:', { validate: validateDate });
65
+ return end === BACK ? BACK : { ...current, serviceEndDate: end, serviceStartDate: start };
66
+ }
67
+ async function askPaymentDueDate(current) {
68
+ const due = await askTextStep('Vencimiento del pago:', { validate: validateDate });
69
+ return due === BACK ? BACK : { ...current, paymentDueDate: due };
70
+ }
71
+ /**
72
+ * Menu de opciones avanzadas antes de la vista previa. Cada opcion se puede cambiar varias veces;
73
+ * "Volver" en el menu vuelve al paso anterior del flujo, y "Volver" dentro de una opcion vuelve al menu.
74
+ */
75
+ export async function askAdvancedOptions(initial, context) {
76
+ const usesService = context.concept !== 'productos';
77
+ const usesPaymentDue = usesService || context.voucherKind.family === 'factura-credito-electronica';
78
+ const allowsExempt = context.voucherKind.letter !== 'c';
79
+ let options = initial;
80
+ for (;;) {
81
+ const choice = await chooseStep('¿Agregamos algo mas?', [
82
+ { name: 'No, ver la vista previa', value: 'listo' },
83
+ { description: describeCurrency(options), name: 'Moneda extranjera', value: 'divisas' },
84
+ ...(allowsExempt
85
+ ? [{ description: describeAmounts(options), name: 'Importe exento o no gravado', value: 'exento' }]
86
+ : []),
87
+ ...(usesService
88
+ ? [
89
+ {
90
+ description: options.serviceStartDate
91
+ ? `${options.serviceStartDate} al ${options.serviceEndDate}`
92
+ : 'hoy',
93
+ name: 'Periodo del servicio',
94
+ value: 'servicio',
95
+ },
96
+ ]
97
+ : []),
98
+ ...(usesPaymentDue
99
+ ? [
100
+ {
101
+ description: options.paymentDueDate ?? 'por defecto',
102
+ name: 'Vencimiento del pago',
103
+ value: 'vencimiento',
104
+ },
105
+ ]
106
+ : []),
107
+ ]);
108
+ if (choice === BACK) {
109
+ return BACK;
110
+ }
111
+ if (choice === 'listo') {
112
+ return options;
113
+ }
114
+ const ask = {
115
+ divisas: askCurrency,
116
+ exento: askExemptAmounts,
117
+ servicio: askServicePeriod,
118
+ vencimiento: askPaymentDueDate,
119
+ }[choice];
120
+ const updated = await ask(options);
121
+ if (updated !== BACK) {
122
+ options = updated;
123
+ }
124
+ }
125
+ }
126
+ //# sourceMappingURL=advanced-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advanced-options.js","sourceRoot":"","sources":["../../../src/cli/interactive/advanced-options.ts"],"names":[],"mappings":"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"}
@@ -1,31 +1,22 @@
1
- import { formatArcaDateAsArgentineDate } from '../../lib/dates/arca-date.js';
2
- import { formatMoneyLabel } from '../../modules/billing/billing.labels.js';
3
1
  import { invoiceKindChoices } from '../../modules/interactive/choices.js';
4
- import { listRecentVouchers } from '../../modules/interactive/voucher-history.js';
5
- import { keyValuePanel, noticePanel, writeTerminalOutput } from '../../ui/index.js';
2
+ import { BACK } from '../../modules/interactive/wizard.js';
3
+ import { listRecentVouchers } from '../../modules/vouchers/voucher-history.js';
4
+ import { formatVoucherListAsText } from '../../modules/vouchers/voucher-history.presenter.js';
5
+ import { writeTerminalOutput } from '../../ui/index.js';
6
6
  import { startSpinner } from '../spinner.js';
7
- import { chooseOne } from './prompts.js';
7
+ import { chooseStep } from './prompts.js';
8
8
  import { requirePointOfSale } from './session.js';
9
- import { formatReceiver, formatVoucherNumber } from './voucher-format.js';
10
9
  export async function runHistoryFlow(session) {
11
10
  const pointOfSale = requirePointOfSale(session);
12
11
  if (!pointOfSale) {
13
12
  return;
14
13
  }
15
- const voucherKind = await chooseOne('¿Que comprobantes queres ver?', invoiceKindChoices());
16
- const spinner = startSpinner('Consultando ARCA...');
17
- const vouchers = await listRecentVouchers(session.historyGateway, pointOfSale, voucherKind.arcaType).finally(() => spinner?.stop());
18
- if (vouchers.length === 0) {
19
- writeTerminalOutput(noticePanel(`No hay ${voucherKind.displayName} emitidas en el punto de venta ${pointOfSale}.`, 'muted'));
14
+ const voucherKind = await chooseStep('¿Que comprobantes queres ver?', invoiceKindChoices());
15
+ if (voucherKind === BACK) {
20
16
  return;
21
17
  }
22
- const rows = vouchers.map((voucher) => [
23
- formatVoucherNumber(pointOfSale, voucher.number),
24
- formatArcaDateAsArgentineDate(voucher.date),
25
- formatReceiver(voucher).padEnd(20),
26
- formatMoneyLabel(voucher.total).padStart(16),
27
- voucher.cae ? `CAE ${voucher.cae}` : '',
28
- ].join(' '));
29
- writeTerminalOutput(keyValuePanel(`Ultimas ${voucherKind.displayName} · PV ${pointOfSale} · ${session.runtime.environment}`, rows, undefined, 'wide', undefined, 'listing'));
18
+ const spinner = startSpinner('Consultando ARCA...');
19
+ const vouchers = await listRecentVouchers(session.historyGateway, pointOfSale, voucherKind.arcaType).finally(() => spinner?.stop());
20
+ writeTerminalOutput(formatVoucherListAsText({ environment: session.runtime.environment, pointOfSale, voucherKind, vouchers }));
30
21
  }
31
22
  //# sourceMappingURL=history.flow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"history.flow.js","sourceRoot":"","sources":["../../../src/cli/interactive/history.flow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAA2B,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvE,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAA2B;IAC9D,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAEhD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO;IACT,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,+BAA+B,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC3F,MAAM,OAAO,GAAG,YAAY,CAAC,qBAAqB,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,cAAc,EAAE,WAAW,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAChH,OAAO,EAAE,IAAI,EAAE,CAChB,CAAC;IAEF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,mBAAmB,CACjB,WAAW,CAAC,UAAU,WAAW,CAAC,WAAW,kCAAkC,WAAW,GAAG,EAAE,OAAO,CAAC,CACxG,CAAC;QAEF,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CACpC;QACE,mBAAmB,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC;QAChD,6BAA6B,CAAC,OAAO,CAAC,IAAI,CAAC;QAC3C,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE;KACxC,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IAEF,mBAAmB,CACjB,aAAa,CACX,WAAW,WAAW,CAAC,WAAW,SAAS,WAAW,MAAM,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,EACzF,IAAI,EACJ,SAAS,EACT,MAAM,EACN,SAAS,EACT,SAAS,CACV,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"history.flow.js","sourceRoot":"","sources":["../../../src/cli/interactive/history.flow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,IAAI,EAAE,MAAM,kCAAkC,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,uBAAuB,EAAE,MAAM,kDAAkD,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAA2B,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAExE,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAA2B;IAC9D,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAEhD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO;IACT,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,+BAA+B,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAE5F,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QACzB,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAAG,YAAY,CAAC,qBAAqB,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,cAAc,EAAE,WAAW,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAChH,OAAO,EAAE,IAAI,EAAE,CAChB,CAAC;IAEF,mBAAmB,CACjB,uBAAuB,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAC1G,CAAC;AACJ,CAAC"}
@@ -54,7 +54,8 @@ function formatHeader(options) {
54
54
  }
55
55
  /** Asistente paso a paso encima del CLI. Ctrl+C cancela el flujo actual; en el menu, sale. */
56
56
  export async function runInteractiveMode(options = {}) {
57
- writeTerminalOutput([renderLogo().trimEnd(), formatHeader(options)].join('\n'));
57
+ // Mismo aire debajo del logo que arriba: tres lineas en blanco.
58
+ writeTerminalOutput([renderLogo().trimEnd(), '', '', '', formatHeader(options)].join('\n'));
58
59
  for (;;) {
59
60
  let option;
60
61
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"interactive-mode.js","sourceRoot":"","sources":["../../../src/cli/interactive/interactive-mode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interactive-mode.js","sourceRoot":"","sources":["../../../src/cli/interactive/interactive-mode.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,22 @@
1
+ import { type BillingCommandInput } from '../../modules/billing/billing.schemas';
2
+ import type { VoucherKindDefinition } from '../../modules/billing/billing.types';
3
+ import { type WizardStep } from '../../modules/interactive/wizard';
4
+ import { type AdvancedOptions } from './advanced-options';
1
5
  import { type InteractiveSession } from './session';
6
+ export interface InvoiceState {
7
+ readonly advanced: AdvancedOptions;
8
+ readonly cbu?: string;
9
+ readonly concept?: BillingCommandInput['concept'];
10
+ readonly documentNumber?: number;
11
+ readonly documentType?: BillingCommandInput['documentType'];
12
+ readonly ivaCondition?: BillingCommandInput['ivaCondition'];
13
+ readonly ivaRate?: BillingCommandInput['ivaRate'];
14
+ readonly totalAmount?: number;
15
+ readonly transferMode?: BillingCommandInput['transferMode'];
16
+ readonly voucherKind?: VoucherKindDefinition;
17
+ }
18
+ /** Pasos del flujo de factura; cada uno se puede deshacer con "Volver". */
19
+ export declare function invoiceSteps(session: InteractiveSession): Array<WizardStep<InvoiceState>>;
20
+ /** Arma la entrada del CLI con lo que respondio el usuario. */
21
+ export declare function buildInvoiceInput(state: InvoiceState, session: InteractiveSession): BillingCommandInput;
2
22
  export declare function runInvoiceFlow(session: InteractiveSession): Promise<void>;
@@ -1,54 +1,132 @@
1
- import { billingCommandSchema, } from '../../modules/billing/billing.schemas.js';
1
+ import { billingCommandSchema } from '../../modules/billing/billing.schemas.js';
2
2
  import { parseAmountInput } from '../../modules/interactive/amount-input.js';
3
3
  import { conceptChoices, invoiceKindChoices, ivaConditionChoices, ivaRateChoices, receiverChoices, } from '../../modules/interactive/choices.js';
4
- import { askText, chooseOne } from './prompts.js';
4
+ import { BACK, runWizard } from '../../modules/interactive/wizard.js';
5
+ import { askAdvancedOptions } from './advanced-options.js';
6
+ import { askTextStep, chooseStep } from './prompts.js';
5
7
  import { previewAndEmit } from './session.js';
6
8
  import { normalizeDocumentNumber, validateAmount, validateCbu, validateCuit, validateDni } from './validators.js';
7
- async function askDocumentNumber(documentType) {
8
- if (documentType === 'cuit') {
9
- return normalizeDocumentNumber(await askText('CUIT del receptor:', { validate: validateCuit }));
10
- }
11
- if (documentType === 'dni') {
12
- return normalizeDocumentNumber(await askText('DNI del receptor:', { validate: validateDni }));
13
- }
14
- return undefined;
15
- }
16
- async function askFceInvoiceData(session, voucherKind) {
17
- if (voucherKind.family !== 'factura-credito-electronica') {
18
- return {};
19
- }
20
- const cbu = session.runtime.config.cbu ?? (await askText('CBU del emisor (22 digitos):', { validate: validateCbu }));
21
- const transferMode = await chooseOne('Modalidad de transferencia:', [
22
- { description: 'La opcion habitual', name: 'Sistema de circulacion abierta (SCA)', value: 'sca' },
23
- { name: 'Agente de deposito colectivo (ADC)', value: 'adc' },
24
- ]);
25
- return { cbu, transferMode };
9
+ const isFceInvoice = (state) => state.voucherKind?.family === 'factura-credito-electronica';
10
+ /** Pasos del flujo de factura; cada uno se puede deshacer con "Volver". */
11
+ export function invoiceSteps(session) {
12
+ const { config } = session.runtime;
13
+ return [
14
+ {
15
+ name: 'comprobante',
16
+ run: async () => {
17
+ const voucherKind = await chooseStep('¿Que comprobante queres emitir?', invoiceKindChoices());
18
+ return voucherKind === BACK ? BACK : { voucherKind };
19
+ },
20
+ },
21
+ {
22
+ name: 'receptor',
23
+ run: async (state) => {
24
+ const documentType = await chooseStep('¿A quien le facturas?', receiverChoices(state.voucherKind?.letter ?? 'c'));
25
+ return documentType === BACK
26
+ ? BACK
27
+ : {
28
+ documentNumber: undefined,
29
+ documentType,
30
+ ivaCondition: documentType === 'consumidor-final' ? 'consumidor-final' : undefined,
31
+ };
32
+ },
33
+ },
34
+ {
35
+ name: 'documento',
36
+ run: async (state) => {
37
+ const isCuit = state.documentType === 'cuit';
38
+ const answer = await askTextStep(isCuit ? 'CUIT del receptor:' : 'DNI del receptor:', {
39
+ validate: isCuit ? validateCuit : validateDni,
40
+ });
41
+ return answer === BACK ? BACK : { documentNumber: normalizeDocumentNumber(answer) };
42
+ },
43
+ skip: (state) => state.documentType === 'consumidor-final',
44
+ },
45
+ {
46
+ name: 'iva-receptor',
47
+ run: async (state) => {
48
+ const ivaCondition = await chooseStep('Condicion frente al IVA del receptor:', ivaConditionChoices(state.voucherKind?.letter ?? 'c'), config.ivaReceptorPorDefecto);
49
+ return ivaCondition === BACK ? BACK : { ivaCondition };
50
+ },
51
+ skip: (state) => state.documentType === 'consumidor-final',
52
+ },
53
+ {
54
+ name: 'concepto',
55
+ run: async () => {
56
+ const concept = await chooseStep('¿Que estas facturando?', conceptChoices(), config.conceptoPorDefecto);
57
+ return concept === BACK ? BACK : { concept };
58
+ },
59
+ },
60
+ {
61
+ name: 'monto',
62
+ run: async () => {
63
+ const answer = await askTextStep('Monto total:', { validate: validateAmount });
64
+ return answer === BACK ? BACK : { totalAmount: parseAmountInput(answer) };
65
+ },
66
+ },
67
+ {
68
+ name: 'alicuota',
69
+ run: async () => {
70
+ const ivaRate = await chooseStep('Alicuota de IVA:', ivaRateChoices(), config.alicuotaPorDefecto ?? '21');
71
+ return ivaRate === BACK ? BACK : { ivaRate };
72
+ },
73
+ skip: (state) => state.voucherKind?.letter === 'c',
74
+ },
75
+ {
76
+ name: 'cbu',
77
+ run: async () => {
78
+ const cbu = await askTextStep('CBU del emisor (22 digitos):', { validate: validateCbu });
79
+ return cbu === BACK ? BACK : { cbu };
80
+ },
81
+ skip: (state) => !isFceInvoice(state) || Boolean(config.cbu),
82
+ },
83
+ {
84
+ name: 'transferencia',
85
+ run: async () => {
86
+ const transferMode = await chooseStep('Modalidad de transferencia:', [
87
+ { description: 'La opcion habitual', name: 'Sistema de circulacion abierta (SCA)', value: 'sca' },
88
+ { name: 'Agente de deposito colectivo (ADC)', value: 'adc' },
89
+ ]);
90
+ return transferMode === BACK ? BACK : { transferMode };
91
+ },
92
+ skip: (state) => !isFceInvoice(state),
93
+ },
94
+ {
95
+ name: 'avanzadas',
96
+ run: async (state) => {
97
+ const advanced = await askAdvancedOptions(state.advanced, {
98
+ concept: state.concept ?? 'servicios',
99
+ voucherKind: state.voucherKind,
100
+ });
101
+ return advanced === BACK ? BACK : { advanced };
102
+ },
103
+ },
104
+ ];
26
105
  }
27
- export async function runInvoiceFlow(session) {
106
+ /** Arma la entrada del CLI con lo que respondio el usuario. */
107
+ export function buildInvoiceInput(state, session) {
28
108
  const { config } = session.runtime;
29
- const voucherKind = await chooseOne('¿Que comprobante queres emitir?', invoiceKindChoices());
30
- const documentType = await chooseOne('¿A quien le facturas?', receiverChoices(voucherKind.letter));
31
- const documentNumber = await askDocumentNumber(documentType);
32
- const ivaCondition = documentType === 'consumidor-final'
33
- ? 'consumidor-final'
34
- : await chooseOne('Condicion frente al IVA del receptor:', ivaConditionChoices(voucherKind.letter), config.ivaReceptorPorDefecto);
35
- const concept = await chooseOne('¿Que estas facturando?', conceptChoices(), config.conceptoPorDefecto);
36
- const totalAmount = parseAmountInput(await askText('Monto total:', { validate: validateAmount }));
37
- const ivaRate = voucherKind.letter === 'c'
38
- ? undefined
39
- : await chooseOne('Alicuota de IVA:', ivaRateChoices(), config.alicuotaPorDefecto ?? '21');
40
- const input = billingCommandSchema.parse({
41
- ...(await askFceInvoiceData(session, voucherKind)),
42
- concept,
43
- documentNumber,
44
- documentType,
45
- ivaCondition,
109
+ const voucherKind = state.voucherKind;
110
+ return billingCommandSchema.parse({
111
+ ...state.advanced,
112
+ cbu: isFceInvoice(state) ? (state.cbu ?? config.cbu) : undefined,
113
+ concept: state.concept,
114
+ documentNumber: state.documentNumber,
115
+ documentType: state.documentType,
116
+ ivaCondition: state.ivaCondition,
46
117
  // 21% sin alicuota configurada es el default del CLI. Si hay config, se deja explicito para que el
47
118
  // comando equivalente no tome la de la config.
48
- ivaRate: ivaRate === '21' && !config.alicuotaPorDefecto ? undefined : ivaRate,
119
+ ivaRate: state.ivaRate === '21' && !config.alicuotaPorDefecto ? undefined : state.ivaRate,
49
120
  shortcut: voucherKind.shortcut,
50
- totalAmount,
121
+ totalAmount: state.totalAmount,
122
+ transferMode: isFceInvoice(state) ? state.transferMode : undefined,
51
123
  });
52
- await previewAndEmit(session, input);
124
+ }
125
+ export async function runInvoiceFlow(session) {
126
+ const state = await runWizard(invoiceSteps(session), { advanced: { currencyCode: 'ARS', sameCurrency: false } });
127
+ if (!state) {
128
+ return;
129
+ }
130
+ await previewAndEmit(session, buildInvoiceInput(state, session));
53
131
  }
54
132
  //# sourceMappingURL=invoice.flow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"invoice.flow.js","sourceRoot":"","sources":["../../../src/cli/interactive/invoice.flow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"invoice.flow.js","sourceRoot":"","sources":["../../../src/cli/interactive/invoice.flow.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,26 @@
1
+ import { type BillingCommandInput, type BillingConcept } from '../../modules/billing/billing.schemas';
2
+ import type { VoucherKindDefinition } from '../../modules/billing/billing.types';
3
+ import { type WizardStep } from '../../modules/interactive/wizard';
4
+ import { type IssuedVoucher } from '../../modules/vouchers/voucher-history';
1
5
  import { type InteractiveSession } from './session';
6
+ export interface NoteState {
7
+ readonly cancellation?: boolean;
8
+ readonly concept?: BillingConcept;
9
+ readonly documentNumber?: number;
10
+ readonly documentType?: BillingCommandInput['documentType'];
11
+ readonly invoice?: IssuedVoucher;
12
+ readonly invoiceKind?: VoucherKindDefinition;
13
+ readonly ivaCondition?: BillingCommandInput['ivaCondition'];
14
+ readonly ivaRate?: BillingCommandInput['ivaRate'];
15
+ readonly kind?: 'credito' | 'debito';
16
+ readonly periodFrom?: string;
17
+ readonly periodTo?: string;
18
+ /** Sobre una factura de la lista o sobre un periodo (solo notas comunes). */
19
+ readonly target?: 'factura' | 'periodo';
20
+ readonly totalAmount?: number;
21
+ }
22
+ /** Pasos del flujo de notas; cada uno se puede deshacer con "Volver". */
23
+ export declare function noteSteps(session: InteractiveSession, pointOfSale: number): Array<WizardStep<NoteState>>;
24
+ /** Arma la entrada del CLI con lo que respondio el usuario. */
25
+ export declare function buildNoteInput(state: NoteState, session: InteractiveSession, pointOfSale: number): BillingCommandInput;
2
26
  export declare function runNoteFlow(session: InteractiveSession): Promise<void>;