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.
- package/CHANGELOG.md +49 -1
- package/README.md +4 -3
- package/dist/cli/commands/billing.command.shared.js +2 -2
- package/dist/cli/commands/billing.command.shared.js.map +1 -1
- package/dist/cli/commands/config.command.d.ts +5 -0
- package/dist/cli/commands/config.command.js +3 -3
- package/dist/cli/commands/config.command.js.map +1 -1
- package/dist/cli/commands/fce-obligation.command.js +2 -2
- package/dist/cli/commands/fce-obligation.command.js.map +1 -1
- package/dist/cli/commands/interactive.command.d.ts +3 -0
- package/dist/cli/commands/interactive.command.js +22 -0
- package/dist/cli/commands/interactive.command.js.map +1 -0
- package/dist/cli/commands/storybook.command.js +3 -2
- package/dist/cli/commands/storybook.command.js.map +1 -1
- package/dist/cli/help.js +1 -0
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/index.js +3 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/interactive/history.flow.d.ts +2 -0
- package/dist/cli/interactive/history.flow.js +31 -0
- package/dist/cli/interactive/history.flow.js.map +1 -0
- package/dist/cli/interactive/interactive-mode.d.ts +3 -0
- package/dist/cli/interactive/interactive-mode.js +92 -0
- package/dist/cli/interactive/interactive-mode.js.map +1 -0
- package/dist/cli/interactive/invoice.flow.d.ts +2 -0
- package/dist/cli/interactive/invoice.flow.js +54 -0
- package/dist/cli/interactive/invoice.flow.js.map +1 -0
- package/dist/cli/interactive/note.flow.d.ts +2 -0
- package/dist/cli/interactive/note.flow.js +99 -0
- package/dist/cli/interactive/note.flow.js.map +1 -0
- package/dist/cli/interactive/prompts.d.ts +13 -0
- package/dist/cli/interactive/prompts.js +24 -0
- package/dist/cli/interactive/prompts.js.map +1 -0
- package/dist/cli/interactive/session.d.ts +22 -0
- package/dist/cli/interactive/session.js +86 -0
- package/dist/cli/interactive/session.js.map +1 -0
- package/dist/cli/interactive/validators.d.ts +5 -0
- package/dist/cli/interactive/validators.js +17 -0
- package/dist/cli/interactive/validators.js.map +1 -0
- package/dist/cli/interactive/voucher-format.d.ts +4 -0
- package/dist/cli/interactive/voucher-format.js +28 -0
- package/dist/cli/interactive/voucher-format.js.map +1 -0
- package/dist/cli/program.js +2 -0
- package/dist/cli/program.js.map +1 -1
- package/dist/cli/spinner.d.ts +8 -0
- package/dist/cli/spinner.js +14 -0
- package/dist/cli/spinner.js.map +1 -0
- package/dist/cli/version.d.ts +1 -1
- package/dist/cli/version.js +1 -1
- package/dist/modules/billing/billing.display.js +4 -4
- package/dist/modules/billing/billing.display.js.map +1 -1
- package/dist/modules/billing/billing.iva-receptor.d.ts +1 -0
- package/dist/modules/billing/billing.iva-receptor.js +3 -0
- package/dist/modules/billing/billing.iva-receptor.js.map +1 -1
- package/dist/modules/billing/billing.schemas.d.ts +4 -4
- package/dist/modules/billing/billing.text.js +10 -6
- package/dist/modules/billing/billing.text.js.map +1 -1
- package/dist/modules/config/config.presenter.js +2 -2
- package/dist/modules/config/config.presenter.js.map +1 -1
- package/dist/modules/config/config.schemas.d.ts +2 -2
- package/dist/modules/examples/examples.js +2 -13
- package/dist/modules/examples/examples.js.map +1 -1
- package/dist/modules/fce/fce-obligation.presenter.js +1 -1
- package/dist/modules/fce/fce-obligation.presenter.js.map +1 -1
- package/dist/modules/interactive/amount-input.d.ts +6 -0
- package/dist/modules/interactive/amount-input.js +29 -0
- package/dist/modules/interactive/amount-input.js.map +1 -0
- package/dist/modules/interactive/choices.d.ts +13 -0
- package/dist/modules/interactive/choices.js +56 -0
- package/dist/modules/interactive/choices.js.map +1 -0
- package/dist/modules/interactive/equivalent-command.d.ts +8 -0
- package/dist/modules/interactive/equivalent-command.js +85 -0
- package/dist/modules/interactive/equivalent-command.js.map +1 -0
- package/dist/modules/interactive/voucher-history.d.ts +25 -0
- package/dist/modules/interactive/voucher-history.js +42 -0
- package/dist/modules/interactive/voucher-history.js.map +1 -0
- package/dist/modules/storybook/showcase.d.ts +1 -1
- package/dist/modules/storybook/showcase.js +50 -6
- package/dist/modules/storybook/showcase.js.map +1 -1
- package/dist/modules/update-check/update-check.presenter.js +1 -1
- package/dist/modules/update-check/update-check.presenter.js.map +1 -1
- package/dist/services/arca/arca-voucher-history.gateway.d.ts +8 -0
- package/dist/services/arca/arca-voucher-history.gateway.js +28 -0
- package/dist/services/arca/arca-voucher-history.gateway.js.map +1 -0
- package/dist/ui/components/contentPanel.d.ts +2 -2
- package/dist/ui/components/contentPanel.js +2 -1
- package/dist/ui/components/contentPanel.js.map +1 -1
- package/dist/ui/components/errorPanel.js +3 -3
- package/dist/ui/components/errorPanel.js.map +1 -1
- package/dist/ui/components/index.d.ts +3 -0
- package/dist/ui/components/index.js +3 -0
- package/dist/ui/components/index.js.map +1 -1
- package/dist/ui/components/keyValuePanel.d.ts +2 -2
- package/dist/ui/components/keyValuePanel.js +2 -1
- package/dist/ui/components/keyValuePanel.js.map +1 -1
- package/dist/ui/components/rawPanel.js +1 -1
- package/dist/ui/components/rawPanel.js.map +1 -1
- package/dist/ui/components/sectionHeading.d.ts +3 -0
- package/dist/ui/components/sectionHeading.js +13 -0
- package/dist/ui/components/sectionHeading.js.map +1 -0
- package/dist/ui/components/statusBar.d.ts +6 -0
- package/dist/ui/components/statusBar.js +24 -0
- package/dist/ui/components/statusBar.js.map +1 -0
- package/dist/ui/components/statusPanel.d.ts +2 -2
- package/dist/ui/components/statusPanel.js +2 -1
- package/dist/ui/components/statusPanel.js.map +1 -1
- package/dist/ui/components/testingBanner.d.ts +2 -0
- package/dist/ui/components/testingBanner.js +6 -0
- package/dist/ui/components/testingBanner.js.map +1 -0
- package/dist/ui/primitives/renderLogo.js +5 -0
- package/dist/ui/primitives/renderLogo.js.map +1 -1
- package/dist/ui/primitives/renderPanel.d.ts +3 -1
- package/dist/ui/primitives/renderPanel.js +68 -21
- package/dist/ui/primitives/renderPanel.js.map +1 -1
- package/dist/ui/primitives/terminalWidth.d.ts +4 -0
- package/dist/ui/primitives/terminalWidth.js +11 -0
- package/dist/ui/primitives/terminalWidth.js.map +1 -0
- package/dist/ui/primitives/text.d.ts +5 -0
- package/dist/ui/primitives/text.js +91 -29
- package/dist/ui/primitives/text.js.map +1 -1
- package/dist/ui/theme/theme.d.ts +45 -4
- package/dist/ui/theme/theme.js +183 -5
- package/dist/ui/theme/theme.js.map +1 -1
- package/llms.txt +8 -0
- 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,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"}
|
package/dist/cli/program.js
CHANGED
|
@@ -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() : ''));
|
package/dist/cli/program.js.map
CHANGED
|
@@ -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"}
|
package/dist/cli/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const CLI_VERSION = "1.
|
|
1
|
+
export declare const CLI_VERSION = "1.3.0";
|
package/dist/cli/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const CLI_VERSION = '1.
|
|
1
|
+
export const CLI_VERSION = '1.3.0';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { keyValuePanel,
|
|
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 [
|
|
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":"AAAA,OAAO,EACL,aAAa,EACb,
|
|
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 [
|
|
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 = [
|
|
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', '
|
|
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', '
|
|
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":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAEtD,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACxH,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAS/D,SAAS,qBAAqB,CAAC,aAAgC;IAC7D,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,mBAAmB,CAAC,MAA8B;IACzD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;IAEvC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,
|
|
1
|
+
{"version":3,"file":"billing.text.js","sourceRoot":"","sources":["../../../src/modules/billing/billing.text.ts"],"names":[],"mappings":"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"}
|