arcli 1.2.0 → 1.3.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 (125) hide show
  1. package/CHANGELOG.md +49 -1
  2. package/README.md +4 -3
  3. package/dist/cli/commands/billing.command.shared.js +2 -2
  4. package/dist/cli/commands/billing.command.shared.js.map +1 -1
  5. package/dist/cli/commands/config.command.d.ts +5 -0
  6. package/dist/cli/commands/config.command.js +3 -3
  7. package/dist/cli/commands/config.command.js.map +1 -1
  8. package/dist/cli/commands/fce-obligation.command.js +2 -2
  9. package/dist/cli/commands/fce-obligation.command.js.map +1 -1
  10. package/dist/cli/commands/interactive.command.d.ts +3 -0
  11. package/dist/cli/commands/interactive.command.js +22 -0
  12. package/dist/cli/commands/interactive.command.js.map +1 -0
  13. package/dist/cli/commands/storybook.command.js +3 -2
  14. package/dist/cli/commands/storybook.command.js.map +1 -1
  15. package/dist/cli/help.js +1 -0
  16. package/dist/cli/help.js.map +1 -1
  17. package/dist/cli/index.js +3 -1
  18. package/dist/cli/index.js.map +1 -1
  19. package/dist/cli/interactive/history.flow.d.ts +2 -0
  20. package/dist/cli/interactive/history.flow.js +31 -0
  21. package/dist/cli/interactive/history.flow.js.map +1 -0
  22. package/dist/cli/interactive/interactive-mode.d.ts +3 -0
  23. package/dist/cli/interactive/interactive-mode.js +92 -0
  24. package/dist/cli/interactive/interactive-mode.js.map +1 -0
  25. package/dist/cli/interactive/invoice.flow.d.ts +2 -0
  26. package/dist/cli/interactive/invoice.flow.js +54 -0
  27. package/dist/cli/interactive/invoice.flow.js.map +1 -0
  28. package/dist/cli/interactive/note.flow.d.ts +2 -0
  29. package/dist/cli/interactive/note.flow.js +99 -0
  30. package/dist/cli/interactive/note.flow.js.map +1 -0
  31. package/dist/cli/interactive/prompts.d.ts +13 -0
  32. package/dist/cli/interactive/prompts.js +24 -0
  33. package/dist/cli/interactive/prompts.js.map +1 -0
  34. package/dist/cli/interactive/session.d.ts +22 -0
  35. package/dist/cli/interactive/session.js +86 -0
  36. package/dist/cli/interactive/session.js.map +1 -0
  37. package/dist/cli/interactive/validators.d.ts +5 -0
  38. package/dist/cli/interactive/validators.js +17 -0
  39. package/dist/cli/interactive/validators.js.map +1 -0
  40. package/dist/cli/interactive/voucher-format.d.ts +4 -0
  41. package/dist/cli/interactive/voucher-format.js +28 -0
  42. package/dist/cli/interactive/voucher-format.js.map +1 -0
  43. package/dist/cli/program.js +2 -0
  44. package/dist/cli/program.js.map +1 -1
  45. package/dist/cli/spinner.d.ts +8 -0
  46. package/dist/cli/spinner.js +14 -0
  47. package/dist/cli/spinner.js.map +1 -0
  48. package/dist/cli/version.d.ts +1 -1
  49. package/dist/cli/version.js +1 -1
  50. package/dist/modules/billing/billing.display.js +4 -4
  51. package/dist/modules/billing/billing.display.js.map +1 -1
  52. package/dist/modules/billing/billing.iva-receptor.d.ts +1 -0
  53. package/dist/modules/billing/billing.iva-receptor.js +3 -0
  54. package/dist/modules/billing/billing.iva-receptor.js.map +1 -1
  55. package/dist/modules/billing/billing.schemas.d.ts +4 -4
  56. package/dist/modules/billing/billing.text.js +10 -6
  57. package/dist/modules/billing/billing.text.js.map +1 -1
  58. package/dist/modules/config/config.presenter.js +2 -2
  59. package/dist/modules/config/config.presenter.js.map +1 -1
  60. package/dist/modules/config/config.schemas.d.ts +2 -2
  61. package/dist/modules/examples/examples.js +2 -13
  62. package/dist/modules/examples/examples.js.map +1 -1
  63. package/dist/modules/fce/fce-obligation.presenter.js +1 -1
  64. package/dist/modules/fce/fce-obligation.presenter.js.map +1 -1
  65. package/dist/modules/interactive/amount-input.d.ts +6 -0
  66. package/dist/modules/interactive/amount-input.js +29 -0
  67. package/dist/modules/interactive/amount-input.js.map +1 -0
  68. package/dist/modules/interactive/choices.d.ts +13 -0
  69. package/dist/modules/interactive/choices.js +56 -0
  70. package/dist/modules/interactive/choices.js.map +1 -0
  71. package/dist/modules/interactive/equivalent-command.d.ts +8 -0
  72. package/dist/modules/interactive/equivalent-command.js +85 -0
  73. package/dist/modules/interactive/equivalent-command.js.map +1 -0
  74. package/dist/modules/interactive/voucher-history.d.ts +25 -0
  75. package/dist/modules/interactive/voucher-history.js +42 -0
  76. package/dist/modules/interactive/voucher-history.js.map +1 -0
  77. package/dist/modules/storybook/showcase.d.ts +1 -1
  78. package/dist/modules/storybook/showcase.js +50 -6
  79. package/dist/modules/storybook/showcase.js.map +1 -1
  80. package/dist/modules/update-check/update-check.presenter.js +1 -1
  81. package/dist/modules/update-check/update-check.presenter.js.map +1 -1
  82. package/dist/services/arca/arca-voucher-history.gateway.d.ts +8 -0
  83. package/dist/services/arca/arca-voucher-history.gateway.js +28 -0
  84. package/dist/services/arca/arca-voucher-history.gateway.js.map +1 -0
  85. package/dist/ui/components/contentPanel.d.ts +2 -2
  86. package/dist/ui/components/contentPanel.js +2 -1
  87. package/dist/ui/components/contentPanel.js.map +1 -1
  88. package/dist/ui/components/errorPanel.js +3 -3
  89. package/dist/ui/components/errorPanel.js.map +1 -1
  90. package/dist/ui/components/index.d.ts +3 -0
  91. package/dist/ui/components/index.js +3 -0
  92. package/dist/ui/components/index.js.map +1 -1
  93. package/dist/ui/components/keyValuePanel.d.ts +2 -2
  94. package/dist/ui/components/keyValuePanel.js +2 -1
  95. package/dist/ui/components/keyValuePanel.js.map +1 -1
  96. package/dist/ui/components/rawPanel.js +1 -1
  97. package/dist/ui/components/rawPanel.js.map +1 -1
  98. package/dist/ui/components/sectionHeading.d.ts +3 -0
  99. package/dist/ui/components/sectionHeading.js +13 -0
  100. package/dist/ui/components/sectionHeading.js.map +1 -0
  101. package/dist/ui/components/statusBar.d.ts +6 -0
  102. package/dist/ui/components/statusBar.js +24 -0
  103. package/dist/ui/components/statusBar.js.map +1 -0
  104. package/dist/ui/components/statusPanel.d.ts +2 -2
  105. package/dist/ui/components/statusPanel.js +2 -1
  106. package/dist/ui/components/statusPanel.js.map +1 -1
  107. package/dist/ui/components/testingBanner.d.ts +2 -0
  108. package/dist/ui/components/testingBanner.js +6 -0
  109. package/dist/ui/components/testingBanner.js.map +1 -0
  110. package/dist/ui/primitives/renderLogo.js +5 -0
  111. package/dist/ui/primitives/renderLogo.js.map +1 -1
  112. package/dist/ui/primitives/renderPanel.d.ts +3 -1
  113. package/dist/ui/primitives/renderPanel.js +68 -21
  114. package/dist/ui/primitives/renderPanel.js.map +1 -1
  115. package/dist/ui/primitives/terminalWidth.d.ts +4 -0
  116. package/dist/ui/primitives/terminalWidth.js +11 -0
  117. package/dist/ui/primitives/terminalWidth.js.map +1 -0
  118. package/dist/ui/primitives/text.d.ts +5 -0
  119. package/dist/ui/primitives/text.js +91 -29
  120. package/dist/ui/primitives/text.js.map +1 -1
  121. package/dist/ui/theme/theme.d.ts +45 -4
  122. package/dist/ui/theme/theme.js +183 -5
  123. package/dist/ui/theme/theme.js.map +1 -1
  124. package/llms.txt +8 -0
  125. package/package.json +15 -13
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invoice.flow.js","sourceRoot":"","sources":["../../../src/cli/interactive/invoice.flow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { type InteractiveSession } from './session';
2
+ export declare function runNoteFlow(session: InteractiveSession): Promise<void>;
@@ -0,0 +1,99 @@
1
+ import { formatArcaDateAsArgentineDate } from '../../lib/dates/arca-date.js';
2
+ import { formatMoneyLabel } from '../../modules/billing/billing.labels.js';
3
+ import { billingCommandSchema } from '../../modules/billing/billing.schemas.js';
4
+ import { parseAmountInput } from '../../modules/interactive/amount-input.js';
5
+ import { invoiceKindChoices, ivaConditionChoices, ivaRateChoices, noteKindChoices, } from '../../modules/interactive/choices.js';
6
+ import { inferIvaRate, listRecentVouchers, resolveDocumentType, } from '../../modules/interactive/voucher-history.js';
7
+ import { noticePanel, writeTerminalOutput } from '../../ui/index.js';
8
+ import { startSpinner } from '../spinner.js';
9
+ import { askText, chooseOne, confirm } from './prompts.js';
10
+ import { previewAndEmit, requirePointOfSale } from './session.js';
11
+ import { validateAmount } from './validators.js';
12
+ import { formatVoucherSummary } from './voucher-format.js';
13
+ const CONCEPTS_BY_CODE = {
14
+ 1: 'productos',
15
+ 2: 'servicios',
16
+ 3: 'productos-servicios',
17
+ };
18
+ async function askNoteAmount(kind, invoice) {
19
+ if (kind === 'debito') {
20
+ return parseAmountInput(await askText('Monto de la nota de debito:', { validate: validateAmount }));
21
+ }
22
+ const scope = await chooseOne('¿Total o parcial?', [
23
+ { name: `Anular el total (${formatMoneyLabel(invoice.total)})`, value: 'total' },
24
+ { name: 'Parcial (ingresar monto)', value: 'parcial' },
25
+ ]);
26
+ if (scope === 'total') {
27
+ return invoice.total;
28
+ }
29
+ const answer = await askText('Monto de la nota de credito:', {
30
+ validate: (value) => {
31
+ const valid = validateAmount(value);
32
+ if (valid !== true) {
33
+ return valid;
34
+ }
35
+ return (parseAmountInput(value) ?? 0) <= invoice.total
36
+ ? true
37
+ : `No puede superar el total de la factura (${formatMoneyLabel(invoice.total)}).`;
38
+ },
39
+ });
40
+ return parseAmountInput(answer);
41
+ }
42
+ export async function runNoteFlow(session) {
43
+ const pointOfSale = requirePointOfSale(session);
44
+ if (!pointOfSale) {
45
+ return;
46
+ }
47
+ const kind = await chooseOne('¿Que nota queres emitir?', [
48
+ { name: 'Nota de credito (descuento, devolucion o anulacion)', value: 'credito' },
49
+ { name: 'Nota de debito (cargo adicional)', value: 'debito' },
50
+ ]);
51
+ const invoiceKind = await chooseOne('¿Sobre que tipo de factura?', invoiceKindChoices());
52
+ const spinner = startSpinner('Buscando las ultimas facturas en ARCA...');
53
+ const invoices = await listRecentVouchers(session.historyGateway, pointOfSale, invoiceKind.arcaType).finally(() => spinner?.stop());
54
+ if (invoices.length === 0) {
55
+ writeTerminalOutput(noticePanel(`No hay ${invoiceKind.displayName} emitidas en el punto de venta ${pointOfSale}.`, 'warning'));
56
+ return;
57
+ }
58
+ const invoice = await chooseOne(`¿Sobre que ${invoiceKind.displayName}?`, invoices.map((item) => ({
59
+ description: item.cae ? `CAE ${item.cae}` : undefined,
60
+ name: formatVoucherSummary(pointOfSale, item),
61
+ value: item,
62
+ })));
63
+ const documentType = resolveDocumentType(invoice.documentTypeCode);
64
+ if (!documentType) {
65
+ writeTerminalOutput(noticePanel('La factura tiene un tipo de documento que el asistente no soporta. Usa los flags del CLI.', 'warning'));
66
+ return;
67
+ }
68
+ const noteKind = noteKindChoices(kind, invoiceKind);
69
+ const totalAmount = await askNoteAmount(kind, invoice);
70
+ const ivaCondition = documentType === 'consumidor-final'
71
+ ? 'consumidor-final'
72
+ : await chooseOne('Condicion frente al IVA del receptor:', ivaConditionChoices(invoiceKind.letter));
73
+ const inferredRate = invoiceKind.letter === 'c' ? undefined : inferIvaRate(invoice.netAmount, invoice.ivaAmount);
74
+ const ivaRate = invoiceKind.letter === 'c'
75
+ ? undefined
76
+ : (inferredRate ?? (await chooseOne('Alicuota de IVA de la factura:', ivaRateChoices())));
77
+ const cancellation = noteKind.isElectronicCredit
78
+ ? await confirm('¿El comprador rechazo la factura?', 'Si, es una nota de anulacion', 'No')
79
+ : false;
80
+ const input = billingCommandSchema.parse({
81
+ associatedVoucher: {
82
+ cuit: String(session.runtime.context.cuit),
83
+ fecha: formatArcaDateAsArgentineDate(invoice.date),
84
+ numero: invoice.number,
85
+ puntoVenta: pointOfSale,
86
+ shortcut: invoiceKind.shortcut,
87
+ },
88
+ cancellation,
89
+ concept: CONCEPTS_BY_CODE[invoice.concept ?? 2] ?? 'servicios',
90
+ documentNumber: documentType === 'consumidor-final' ? undefined : invoice.documentNumber,
91
+ documentType,
92
+ ivaCondition,
93
+ ivaRate: ivaRate === '21' && !session.runtime.config.alicuotaPorDefecto ? undefined : ivaRate,
94
+ shortcut: noteKind.shortcut,
95
+ totalAmount,
96
+ });
97
+ await previewAndEmit(session, input);
98
+ }
99
+ //# sourceMappingURL=note.flow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"note.flow.js","sourceRoot":"","sources":["../../../src/cli/interactive/note.flow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export interface Choice<T> {
2
+ readonly description?: string;
3
+ readonly name: string;
4
+ readonly value: T;
5
+ }
6
+ export declare function chooseOne<T>(message: string, choices: ReadonlyArray<Choice<T>>, defaultValue?: T): Promise<T>;
7
+ export declare function askText(message: string, options?: {
8
+ readonly defaultValue?: string;
9
+ readonly validate?: (value: string) => string | true;
10
+ }): Promise<string>;
11
+ export declare function confirm(message: string, yesLabel: string, noLabel?: string): Promise<boolean>;
12
+ /** Ctrl+C dentro de un prompt de @inquirer. */
13
+ export declare function isPromptCancellation(error: unknown): boolean;
@@ -0,0 +1,24 @@
1
+ import input from '@inquirer/input';
2
+ import select from '@inquirer/select';
3
+ export async function chooseOne(message, choices, defaultValue) {
4
+ return select({ choices: [...choices], default: defaultValue, loop: false, message, pageSize: 12 });
5
+ }
6
+ export async function askText(message, options = {}) {
7
+ const answer = await input({
8
+ default: options.defaultValue,
9
+ message,
10
+ validate: options.validate,
11
+ });
12
+ return answer.trim();
13
+ }
14
+ export async function confirm(message, yesLabel, noLabel = 'Cancelar') {
15
+ return chooseOne(message, [
16
+ { name: yesLabel, value: true },
17
+ { name: noLabel, value: false },
18
+ ]);
19
+ }
20
+ /** Ctrl+C dentro de un prompt de @inquirer. */
21
+ export function isPromptCancellation(error) {
22
+ return error instanceof Error && error.name === 'ExitPromptError';
23
+ }
24
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/cli/interactive/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,iBAAiB,CAAC;AACpC,OAAO,MAAM,MAAM,kBAAkB,CAAC;AAQtC,MAAM,CAAC,KAAK,UAAU,SAAS,CAAI,OAAe,EAAE,OAAiC,EAAE,YAAgB;IACrG,OAAO,MAAM,CAAI,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AACzG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,OAAe,EACf,UAAoG,EAAE;IAEtG,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC;QACzB,OAAO,EAAE,OAAO,CAAC,YAAY;QAC7B,OAAO;QACP,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC3B,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAe,EAAE,QAAgB,EAAE,OAAO,GAAG,UAAU;IACnF,OAAO,SAAS,CAAC,OAAO,EAAE;QACxB,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE;QAC/B,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;KAChC,CAAC,CAAC;AACL,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,OAAO,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,CAAC;AACpE,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { Arca } from '@arcasdk/core';
2
+ import type { BillingCommandInput } from '../../modules/billing/billing.schemas';
3
+ import { BillingService } from '../../modules/billing/billing.service';
4
+ import type { BillingGateway } from '../../modules/billing/billing.types.internal';
5
+ import type { VoucherHistoryGateway } from '../../modules/interactive/voucher-history';
6
+ import { type ResolvedArcaRuntime } from '../../services/arca/arca-context.resolver';
7
+ import type { GlobalCliOptions } from '../types';
8
+ export interface InteractiveSession {
9
+ readonly arca: Arca;
10
+ readonly billingGateway: BillingGateway;
11
+ readonly historyGateway: VoucherHistoryGateway;
12
+ readonly runtime: ResolvedArcaRuntime;
13
+ readonly service: BillingService;
14
+ }
15
+ /** Resuelve config y credenciales; si falta algo, el error explica que configurar. */
16
+ export declare function createInteractiveSession(options: GlobalCliOptions): InteractiveSession;
17
+ export declare function requirePointOfSale(session: InteractiveSession): number | undefined;
18
+ /**
19
+ * Paso final comun a todos los flujos: vista previa, comando equivalente, confirmacion y emision.
20
+ * Usa BillingService igual que los comandos con flags, asi que valida y emite exactamente lo mismo.
21
+ */
22
+ export declare function previewAndEmit(session: InteractiveSession, rawInput: BillingCommandInput): Promise<void>;
@@ -0,0 +1,86 @@
1
+ import { BillingService } from '../../modules/billing/billing.service.js';
2
+ import { buildEquivalentCommand } from '../../modules/interactive/equivalent-command.js';
3
+ import { ArcaBillingGateway } from '../../services/arca/arca-billing.gateway.js';
4
+ import { ArcaClientFactory } from '../../services/arca/arca-client.factory.js';
5
+ import { ArcaContextResolver } from '../../services/arca/arca-context.resolver.js';
6
+ import { ArcaFceObligationGateway } from '../../services/arca/arca-fce-obligation.gateway.js';
7
+ import { ArcaVoucherHistoryGateway } from '../../services/arca/arca-voucher-history.gateway.js';
8
+ import { colorize, noticePanel, renderPanel, writeTerminalOutput } from '../../ui/index.js';
9
+ import { formatBillingOutputs } from '../commands/billing.command.output.js';
10
+ import { startSpinner } from '../spinner.js';
11
+ import { confirm } from './prompts.js';
12
+ const PREVIEW_GATEWAY = {
13
+ createNextVoucher: async () => {
14
+ throw new Error('La vista previa no emite comprobantes.');
15
+ },
16
+ getQuotation: async () => {
17
+ throw new Error('La vista previa no consulta cotizaciones.');
18
+ },
19
+ };
20
+ /** Resuelve config y credenciales; si falta algo, el error explica que configurar. */
21
+ export function createInteractiveSession(options) {
22
+ const runtime = new ArcaContextResolver({ options }).resolve();
23
+ const arca = new ArcaClientFactory().create(runtime);
24
+ return {
25
+ arca,
26
+ billingGateway: new ArcaBillingGateway(arca),
27
+ historyGateway: new ArcaVoucherHistoryGateway(arca),
28
+ runtime,
29
+ service: new BillingService(),
30
+ };
31
+ }
32
+ export function requirePointOfSale(session) {
33
+ if (!session.runtime.pointOfSale) {
34
+ writeTerminalOutput(noticePanel('Falta el punto de venta. Configuralo con "arcli config establecer puntoVenta <numero>".', 'warning'));
35
+ }
36
+ return session.runtime.pointOfSale;
37
+ }
38
+ function formatEquivalentCommand(command) {
39
+ return renderPanel({
40
+ borderType: 'command',
41
+ content: [colorize('Esto equivale a:', 'muted'), '', colorize(command, 'info')],
42
+ contentAlign: 'left',
43
+ width: 'wide',
44
+ });
45
+ }
46
+ /**
47
+ * Paso final comun a todos los flujos: vista previa, comando equivalente, confirmacion y emision.
48
+ * Usa BillingService igual que los comandos con flags, asi que valida y emite exactamente lo mismo.
49
+ */
50
+ export async function previewAndEmit(session, rawInput) {
51
+ const { runtime, service } = session;
52
+ const input = { ...rawInput, dryRun: true, emit: false };
53
+ const warnings = runtime.config.verificarFce
54
+ ? await service.resolveFceWarnings(input, new ArcaFceObligationGateway(session.arca))
55
+ : [];
56
+ const preview = await service.execute({ gateway: PREVIEW_GATEWAY, input, runtime, warnings });
57
+ writeTerminalOutput(formatBillingOutputs([preview], { environment: runtime.environment, raw: false }));
58
+ writeTerminalOutput(formatEquivalentCommand(buildEquivalentCommand(input, { environment: runtime.environment })));
59
+ const label = preview.voucherKind.displayName;
60
+ const environmentLabel = runtime.environment === 'produccion' ? 'PRODUCCION' : 'testing';
61
+ if (!(await confirm(`¿Emitimos la ${label} en ${environmentLabel}?`, 'Emitir ahora'))) {
62
+ writeTerminalOutput(noticePanel('No se emitio nada.', 'muted'));
63
+ return;
64
+ }
65
+ if (runtime.environment === 'produccion' &&
66
+ !(await confirm('Vas a emitir un comprobante real en PRODUCCION. ¿Confirmas?', 'Si, emitir en produccion'))) {
67
+ writeTerminalOutput(noticePanel('No se emitio nada.', 'muted'));
68
+ return;
69
+ }
70
+ const spinner = startSpinner(`Emitiendo ${label} en ARCA...`);
71
+ try {
72
+ const result = await service.execute({
73
+ gateway: session.billingGateway,
74
+ input: { ...input, dryRun: false, emit: true },
75
+ runtime,
76
+ warnings,
77
+ });
78
+ spinner?.stop();
79
+ writeTerminalOutput(formatBillingOutputs([result], { environment: runtime.environment, previewShown: true, raw: false }));
80
+ }
81
+ catch (error) {
82
+ spinner?.stop();
83
+ throw error;
84
+ }
85
+ }
86
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/cli/interactive/session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare function validateAmount(value: string): string | true;
2
+ export declare function validateCuit(value: string): string | true;
3
+ export declare function validateDni(value: string): string | true;
4
+ export declare function validateCbu(value: string): string | true;
5
+ export declare function normalizeDocumentNumber(value: string): number;
@@ -0,0 +1,17 @@
1
+ import { parseAmountInput } from '../../modules/interactive/amount-input.js';
2
+ export function validateAmount(value) {
3
+ return parseAmountInput(value) ? true : 'Ingresa un monto mayor a 0, por ejemplo 150000 o 1500,50.';
4
+ }
5
+ export function validateCuit(value) {
6
+ return /^\d{11}$/.test(value.replace(/-/g, '')) ? true : 'El CUIT tiene 11 digitos.';
7
+ }
8
+ export function validateDni(value) {
9
+ return /^\d{7,8}$/.test(value.replace(/\./g, '')) ? true : 'El DNI tiene 7 u 8 digitos.';
10
+ }
11
+ export function validateCbu(value) {
12
+ return /^\d{22}$/.test(value) ? true : 'El CBU tiene 22 digitos.';
13
+ }
14
+ export function normalizeDocumentNumber(value) {
15
+ return Number(value.replace(/[-.]/g, ''));
16
+ }
17
+ //# sourceMappingURL=validators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../src/cli/interactive/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAE1E,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,2DAA2D,CAAC;AACtG,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,2BAA2B,CAAC;AACvF,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,6BAA6B,CAAC;AAC3F,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,0BAA0B,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACnD,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { IssuedVoucher } from '../../modules/interactive/voucher-history';
2
+ export declare function formatVoucherNumber(pointOfSale: number, number: number): string;
3
+ export declare function formatReceiver(voucher: IssuedVoucher): string;
4
+ export declare function formatVoucherSummary(pointOfSale: number, voucher: IssuedVoucher): string;
@@ -0,0 +1,28 @@
1
+ import { formatArcaDateAsArgentineDate } from '../../lib/dates/arca-date.js';
2
+ import { formatMoneyLabel } from '../../modules/billing/billing.labels.js';
3
+ export function formatVoucherNumber(pointOfSale, number) {
4
+ return `${String(pointOfSale).padStart(5, '0')}-${String(number).padStart(8, '0')}`;
5
+ }
6
+ export function formatReceiver(voucher) {
7
+ switch (voucher.documentTypeCode) {
8
+ case 80:
9
+ return `CUIT ${voucher.documentNumber}`;
10
+ case 86:
11
+ return `CUIL ${voucher.documentNumber}`;
12
+ case 96:
13
+ return `DNI ${voucher.documentNumber}`;
14
+ case 99:
15
+ return 'Consumidor final';
16
+ default:
17
+ return `Doc ${voucher.documentTypeCode} ${voucher.documentNumber}`;
18
+ }
19
+ }
20
+ export function formatVoucherSummary(pointOfSale, voucher) {
21
+ return [
22
+ `N° ${formatVoucherNumber(pointOfSale, voucher.number)}`,
23
+ formatArcaDateAsArgentineDate(voucher.date),
24
+ formatReceiver(voucher).padEnd(20),
25
+ formatMoneyLabel(voucher.total),
26
+ ].join(' · ');
27
+ }
28
+ //# sourceMappingURL=voucher-format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voucher-format.js","sourceRoot":"","sources":["../../../src/cli/interactive/voucher-format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAGxE,MAAM,UAAU,mBAAmB,CAAC,WAAmB,EAAE,MAAc;IACrE,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAsB;IACnD,QAAQ,OAAO,CAAC,gBAAgB,EAAE,CAAC;QACjC,KAAK,EAAE;YACL,OAAO,QAAQ,OAAO,CAAC,cAAc,EAAE,CAAC;QAC1C,KAAK,EAAE;YACL,OAAO,QAAQ,OAAO,CAAC,cAAc,EAAE,CAAC;QAC1C,KAAK,EAAE;YACL,OAAO,OAAO,OAAO,CAAC,cAAc,EAAE,CAAC;QACzC,KAAK,EAAE;YACL,OAAO,kBAAkB,CAAC;QAC5B;YACE,OAAO,OAAO,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IACvE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,WAAmB,EAAE,OAAsB;IAC9E,OAAO;QACL,MAAM,mBAAmB,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE;QACxD,6BAA6B,CAAC,OAAO,CAAC,IAAI,CAAC;QAC3C,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC;KAChC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAClB,CAAC"}
@@ -5,6 +5,7 @@ import { registerBillingShortcutCommands } from './commands/billing-shortcuts.co
5
5
  import { registerConfigCommand } from './commands/config.command.js';
6
6
  import { registerExamplesCommand } from './commands/examples.command.js';
7
7
  import { registerFceObligationCommand } from './commands/fce-obligation.command.js';
8
+ import { registerInteractiveCommand } from './commands/interactive.command.js';
8
9
  import { registerStorybookCommand } from './commands/storybook.command.js';
9
10
  import { configureSpanishHelp, createProgramHeader, createProgramHelp } from './help.js';
10
11
  import { CLI_VERSION } from './version.js';
@@ -22,6 +23,7 @@ export function createProgram() {
22
23
  registerConfigCommand(program);
23
24
  registerExamplesCommand(program);
24
25
  registerFceObligationCommand(program);
26
+ registerInteractiveCommand(program);
25
27
  registerStorybookCommand(program);
26
28
  program.addHelpText('beforeAll', ({ command }) => (command === program ? createProgramHeader() : ''));
27
29
  program.addHelpText('afterAll', ({ command }) => (command === program ? createProgramHelp() : ''));
@@ -1 +1 @@
1
- {"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/cli/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AAClF,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AACvF,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,MAAM,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,OAAO,CAAC;SACb,WAAW,CACV,6HAA6H,CAC9H;SACA,OAAO,CAAC,WAAW,CAAC;SACpB,kBAAkB,CAAC,4CAA4C,CAAC,CAAC;IAEpE,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAE/B,+BAA+B,CAAC,OAAO,CAAC,CAAC;IACzC,6BAA6B,CAAC,OAAO,CAAC,CAAC;IACvC,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC/B,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACjC,4BAA4B,CAAC,OAAO,CAAC,CAAC;IACtC,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAElC,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtG,OAAO,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEnG,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/cli/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AAClF,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AACvF,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,MAAM,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,OAAO,CAAC;SACb,WAAW,CACV,6HAA6H,CAC9H;SACA,OAAO,CAAC,WAAW,CAAC;SACpB,kBAAkB,CAAC,4CAA4C,CAAC,CAAC;IAEpE,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAE/B,+BAA+B,CAAC,OAAO,CAAC,CAAC;IACzC,6BAA6B,CAAC,OAAO,CAAC,CAAC;IACvC,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC/B,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACjC,4BAA4B,CAAC,OAAO,CAAC,CAAC;IACtC,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACpC,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAElC,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtG,OAAO,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEnG,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { type Ora } from 'ora';
2
+ /**
3
+ * Spinner compartido por los comandos y el modo interactivo.
4
+ * - `discardStdin: false`: por defecto ora toma stdin para descartar teclas y choca con los prompts de @inquirer.
5
+ * - Sin ancho de terminal conocido no se muestra: con 0 columnas ora calcula infinitas lineas para borrar,
6
+ * escribe sin parar y bloquea el event loop.
7
+ */
8
+ export declare function startSpinner(text: string): Ora | null;
@@ -0,0 +1,14 @@
1
+ import ora from 'ora';
2
+ /**
3
+ * Spinner compartido por los comandos y el modo interactivo.
4
+ * - `discardStdin: false`: por defecto ora toma stdin para descartar teclas y choca con los prompts de @inquirer.
5
+ * - Sin ancho de terminal conocido no se muestra: con 0 columnas ora calcula infinitas lineas para borrar,
6
+ * escribe sin parar y bloquea el event loop.
7
+ */
8
+ export function startSpinner(text) {
9
+ if (!process.stdout.isTTY || !process.stdout.columns) {
10
+ return null;
11
+ }
12
+ return ora({ discardStdin: false, text }).start();
13
+ }
14
+ //# sourceMappingURL=spinner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../src/cli/spinner.ts"],"names":[],"mappings":"AAAA,OAAO,GAAiB,MAAM,KAAK,CAAC;AAEpC;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,GAAG,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;AACpD,CAAC"}
@@ -1 +1 @@
1
- export declare const CLI_VERSION = "1.2.0";
1
+ export declare const CLI_VERSION = "1.3.0";
@@ -1,2 +1,2 @@
1
- export const CLI_VERSION = '1.2.0';
1
+ export const CLI_VERSION = '1.3.0';
2
2
  //# sourceMappingURL=version.js.map
@@ -1,4 +1,4 @@
1
- import { keyValuePanel, noticePanel, renderKeyValueRows, renderTable, resolveKeyValueLabelWidth, statusPanel, toneText, } from '../../ui/index.js';
1
+ import { keyValuePanel, renderKeyValueRows, renderTable, resolveKeyValueLabelWidth, statusPanel, testingBanner, toneText, } from '../../ui/index.js';
2
2
  import { resolveIvaRateLabel } from './billing.amounts.js';
3
3
  import { formatConceptLabel, formatCurrencyLabel, formatDateLabel, formatDecimalLabel, formatDocumentTypeLabel, formatIvaConditionLabel, formatMoneyLabel, formatNumericLabel, formatTaxIdLabel, } from './billing.labels.js';
4
4
  import { getVoucherKindByArcaType } from './voucher-kind-map.js';
@@ -6,7 +6,7 @@ export function formatEnvironmentBanner(environment) {
6
6
  if (environment !== 'testing') {
7
7
  return [];
8
8
  }
9
- return [noticePanel('Estas utilizando el entorno de TESTING', 'warning')];
9
+ return [testingBanner()];
10
10
  }
11
11
  export function formatStatusBadge(result) {
12
12
  switch (result.response.status) {
@@ -111,7 +111,7 @@ export function formatPayloadTable(result) {
111
111
  export function formatPayloadPreview(result) {
112
112
  const payloadTable = formatPayloadTable(result);
113
113
  const footer = result.dryRun ? toneText('SIN EMITIR', 'warning') : undefined;
114
- return keyValuePanel(result.voucherKind.displayName, [payloadTable], footer, 'compact');
114
+ return keyValuePanel(result.voucherKind.displayName, [payloadTable], footer, 'compact', undefined, 'ticket');
115
115
  }
116
116
  export function formatResultPanel(result, status) {
117
117
  const summaryRows = [
@@ -132,6 +132,6 @@ export function formatResultPanel(result, status) {
132
132
  ...renderKeyValueRows(countRows, { labelWidth }),
133
133
  ];
134
134
  const footer = toneText(status.label, status.tone);
135
- return statusPanel(result.voucherKind.displayName, rows, footer, 'compact', status.tone);
135
+ return statusPanel(result.voucherKind.displayName, rows, footer, 'compact', status.tone, 'ticket');
136
136
  }
137
137
  //# sourceMappingURL=billing.display.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"billing.display.js","sourceRoot":"","sources":["../../../src/modules/billing/billing.display.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"billing.display.js","sourceRoot":"","sources":["../../../src/modules/billing/billing.display.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import type { BillingCommandInput, BillingIvaCondition } from './billing.schemas
2
2
  import type { VoucherKindDefinition, VoucherLetter } from './billing.types';
3
3
  /** RG 5700/2025: desde $10.000.000 hay que identificar al consumidor final. */
4
4
  export declare const CONSUMER_IDENTIFICATION_THRESHOLD = 10000000;
5
+ export declare function listAllowedIvaConditions(letter: VoucherLetter): readonly BillingIvaCondition[];
5
6
  export declare function isIvaConditionAllowed(letter: VoucherLetter, ivaCondition: BillingIvaCondition): boolean;
6
7
  export declare function validateIvaConditionForVoucher(ivaCondition: BillingIvaCondition, voucherKind: VoucherKindDefinition): void;
7
8
  export declare function validateConsumerIdentification(input: Pick<BillingCommandInput, 'documentType' | 'totalAmount'>, exchangeRate: number, voucherKind: VoucherKindDefinition): void;
@@ -36,6 +36,9 @@ const IVA_CONDITIONS_BY_LETTER = {
36
36
  };
37
37
  /** RG 5700/2025: desde $10.000.000 hay que identificar al consumidor final. */
38
38
  export const CONSUMER_IDENTIFICATION_THRESHOLD = 10_000_000;
39
+ export function listAllowedIvaConditions(letter) {
40
+ return IVA_CONDITIONS_BY_LETTER[letter];
41
+ }
39
42
  export function isIvaConditionAllowed(letter, ivaCondition) {
40
43
  return IVA_CONDITIONS_BY_LETTER[letter].includes(ivaCondition);
41
44
  }
@@ -1 +1 @@
1
- {"version":3,"file":"billing.iva-receptor.js","sourceRoot":"","sources":["../../../src/modules/billing/billing.iva-receptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAIvD;;;GAGG;AACH,MAAM,wBAAwB,GAA0D;IACtF,CAAC,EAAE;QACD,uBAAuB;QACvB,yBAAyB;QACzB,uBAAuB;QACvB,gDAAgD;KACjD;IACD,CAAC,EAAE;QACD,eAAe;QACf,kBAAkB;QAClB,wBAAwB;QACxB,wBAAwB;QACxB,sBAAsB;QACtB,cAAc;QACd,kBAAkB;KACnB;IACD,CAAC,EAAE;QACD,uBAAuB;QACvB,yBAAyB;QACzB,uBAAuB;QACvB,gDAAgD;QAChD,eAAe;QACf,kBAAkB;QAClB,wBAAwB;QACxB,wBAAwB;QACxB,sBAAsB;QACtB,cAAc;QACd,kBAAkB;KACnB;CACF,CAAC;AAEF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,iCAAiC,GAAG,UAAU,CAAC;AAE5D,MAAM,UAAU,qBAAqB,CAAC,MAAqB,EAAE,YAAiC;IAC5F,OAAO,wBAAwB,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,YAAiC,EACjC,WAAkC;IAElC,IAAI,qBAAqB,CAAC,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC;QAC5D,OAAO;IACT,CAAC;IAED,MAAM,eAAe,GAAI,CAAC,GAAG,EAAE,GAAG,CAAW,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,qBAAqB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IAC5G,MAAM,UAAU,GAAG,eAAe,CAAC,CAAC,CAAC,6BAA6B,eAAe,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAExG,MAAM,IAAI,oBAAoB,CAC5B,MAAM,kBAAkB,CAAC,WAAW,CAAC,4BAA4B,YAAY,KAAK,UAAU,EAAE,CAC/F,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,KAAgE,EAChE,YAAoB,EACpB,WAAkC;IAElC,IAAI,KAAK,CAAC,YAAY,KAAK,kBAAkB,EAAE,CAAC;QAC9C,OAAO;IACT,CAAC;IAED,IAAI,KAAK,CAAC,WAAW,GAAG,YAAY,IAAI,iCAAiC,EAAE,CAAC;QAC1E,MAAM,IAAI,oBAAoB,CAC5B,MAAM,kBAAkB,CAAC,WAAW,CAAC,6FAA6F,CACnI,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"billing.iva-receptor.js","sourceRoot":"","sources":["../../../src/modules/billing/billing.iva-receptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAIvD;;;GAGG;AACH,MAAM,wBAAwB,GAA0D;IACtF,CAAC,EAAE;QACD,uBAAuB;QACvB,yBAAyB;QACzB,uBAAuB;QACvB,gDAAgD;KACjD;IACD,CAAC,EAAE;QACD,eAAe;QACf,kBAAkB;QAClB,wBAAwB;QACxB,wBAAwB;QACxB,sBAAsB;QACtB,cAAc;QACd,kBAAkB;KACnB;IACD,CAAC,EAAE;QACD,uBAAuB;QACvB,yBAAyB;QACzB,uBAAuB;QACvB,gDAAgD;QAChD,eAAe;QACf,kBAAkB;QAClB,wBAAwB;QACxB,wBAAwB;QACxB,sBAAsB;QACtB,cAAc;QACd,kBAAkB;KACnB;CACF,CAAC;AAEF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,iCAAiC,GAAG,UAAU,CAAC;AAE5D,MAAM,UAAU,wBAAwB,CAAC,MAAqB;IAC5D,OAAO,wBAAwB,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAqB,EAAE,YAAiC;IAC5F,OAAO,wBAAwB,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,YAAiC,EACjC,WAAkC;IAElC,IAAI,qBAAqB,CAAC,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC;QAC5D,OAAO;IACT,CAAC;IAED,MAAM,eAAe,GAAI,CAAC,GAAG,EAAE,GAAG,CAAW,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,qBAAqB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IAC5G,MAAM,UAAU,GAAG,eAAe,CAAC,CAAC,CAAC,6BAA6B,eAAe,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAExG,MAAM,IAAI,oBAAoB,CAC5B,MAAM,kBAAkB,CAAC,WAAW,CAAC,4BAA4B,YAAY,KAAK,UAAU,EAAE,CAC/F,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,KAAgE,EAChE,YAAoB,EACpB,WAAkC;IAElC,IAAI,KAAK,CAAC,YAAY,KAAK,kBAAkB,EAAE,CAAC;QAC9C,OAAO;IACT,CAAC;IAED,IAAI,KAAK,CAAC,WAAW,GAAG,YAAY,IAAI,iCAAiC,EAAE,CAAC;QAC1E,MAAM,IAAI,oBAAoB,CAC5B,MAAM,kBAAkB,CAAC,WAAW,CAAC,6FAA6F,CACnI,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -3,7 +3,7 @@ export declare const billingConceptSchema: z.ZodPreprocess<z.ZodEnum<{
3
3
  productos: "productos";
4
4
  "productos-servicios": "productos-servicios";
5
5
  servicios: "servicios";
6
- }>>;
6
+ }>, unknown>;
7
7
  export declare const billingDocumentTypeSchema: z.ZodEnum<{
8
8
  "consumidor-final": "consumidor-final";
9
9
  cuil: "cuil";
@@ -30,7 +30,7 @@ export declare const billingIvaRateSchema: z.ZodPreprocess<z.ZodEnum<{
30
30
  10.5: "10.5";
31
31
  21: "21";
32
32
  27: "27";
33
- }>>;
33
+ }>, unknown>;
34
34
  export declare const billingCommandSchema: z.ZodObject<{
35
35
  associatedPeriod: z.ZodOptional<z.ZodObject<{
36
36
  desde: z.ZodOptional<z.ZodString>;
@@ -52,7 +52,7 @@ export declare const billingCommandSchema: z.ZodObject<{
52
52
  productos: "productos";
53
53
  "productos-servicios": "productos-servicios";
54
54
  servicios: "servicios";
55
- }>>;
55
+ }>, unknown>;
56
56
  currencyCode: z.ZodDefault<z.ZodString>;
57
57
  documentNumber: z.ZodOptional<z.ZodNumber>;
58
58
  documentType: z.ZodDefault<z.ZodEnum<{
@@ -72,7 +72,7 @@ export declare const billingCommandSchema: z.ZodObject<{
72
72
  10.5: "10.5";
73
73
  21: "21";
74
74
  27: "27";
75
- }>>>;
75
+ }>, unknown>>;
76
76
  dueDay: z.ZodOptional<z.ZodNumber>;
77
77
  ivaCondition: z.ZodEnum<{
78
78
  "consumidor-final": "consumidor-final";
@@ -9,7 +9,9 @@ function formatWarningsPanel(result) {
9
9
  if (warnings.length === 0) {
10
10
  return [];
11
11
  }
12
- return [contentPanel('Avisos', warnings.map((item) => `• ${item}`).join('\n'), 'wide', 'warning')];
12
+ return [
13
+ contentPanel('Avisos', warnings.map((item) => `• ${item}`).join('\n'), 'wide', 'warning', 'left', 'attention'),
14
+ ];
13
15
  }
14
16
  export function formatBillingResultAsText(result, options = {}) {
15
17
  const environmentLines = [
@@ -20,7 +22,9 @@ export function formatBillingResultAsText(result, options = {}) {
20
22
  if (result.dryRun) {
21
23
  return [...environmentLines, formatPayloadPreview(result)].join('\n\n');
22
24
  }
23
- const lines = [contentPanel('Respuesta bruta', renderObject(formatRawBillingResponse(result)), 'wide', 'info')];
25
+ const lines = [
26
+ contentPanel('Respuesta bruta', renderObject(formatRawBillingResponse(result)), 'wide', 'subtle', 'left', 'data'),
27
+ ];
24
28
  if (!options.previewShown) {
25
29
  lines.unshift(formatPayloadPreview(result));
26
30
  }
@@ -35,17 +39,17 @@ export function formatBillingResultAsText(result, options = {}) {
35
39
  }
36
40
  lines.push(formatResultPanel(result, formatStatusBadge(result)));
37
41
  if (result.response.observaciones.length > 0) {
38
- lines.push(contentPanel('Observaciones', formatObservationList(result.response.observaciones), 'wide', 'warning'));
42
+ lines.push(contentPanel('Observaciones', formatObservationList(result.response.observaciones), 'wide', 'warning', 'left', 'attention'));
39
43
  }
40
44
  if (result.response.events.length > 0) {
41
- lines.push(contentPanel('Eventos', renderObject(result.response.events), 'wide', 'info'));
45
+ lines.push(contentPanel('Eventos', renderObject(result.response.events), 'wide', 'subtle', 'left', 'data'));
42
46
  }
43
47
  if (result.response.errors.length > 0) {
44
- lines.push(contentPanel('Errores', renderObject(result.response.errors), 'wide', 'danger'));
48
+ lines.push(contentPanel('Errores', renderObject(result.response.errors), 'wide', 'danger', 'left', 'error'));
45
49
  }
46
50
  const suggestions = result.response.suggestions ?? [];
47
51
  if (suggestions.length > 0) {
48
- lines.push(contentPanel('Sugerencias', suggestions.map((item) => `• ${item}`).join('\n'), 'wide', 'info'));
52
+ lines.push(contentPanel('Sugerencias', suggestions.map((item) => `• ${item}`).join('\n'), 'wide', 'warning', 'left', 'tip'));
49
53
  }
50
54
  return lines.join('\n\n');
51
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"billing.text.js","sourceRoot":"","sources":["../../../src/modules/billing/billing.text.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"billing.text.js","sourceRoot":"","sources":["../../../src/modules/billing/billing.text.ts"],"names":[],"mappings":"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"}