arcli 1.6.0 → 1.7.1
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 +35 -1
- package/README.md +48 -112
- package/dist/cli/help.js +2 -4
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/interactive/advanced-options.d.ts +4 -0
- package/dist/cli/interactive/advanced-options.js +1 -1
- package/dist/cli/interactive/advanced-options.js.map +1 -1
- package/dist/cli/interactive/config.flow.d.ts +5 -0
- package/dist/cli/interactive/config.flow.js +211 -0
- package/dist/cli/interactive/config.flow.js.map +1 -0
- package/dist/cli/interactive/interactive-mode.js +38 -9
- package/dist/cli/interactive/interactive-mode.js.map +1 -1
- package/dist/cli/interactive/lookup.flow.d.ts +5 -0
- package/dist/cli/interactive/lookup.flow.js +72 -0
- package/dist/cli/interactive/lookup.flow.js.map +1 -0
- package/dist/cli/interactive/repeat.flow.d.ts +13 -0
- package/dist/cli/interactive/repeat.flow.js +166 -0
- package/dist/cli/interactive/repeat.flow.js.map +1 -0
- package/dist/cli/version.d.ts +1 -1
- package/dist/cli/version.js +1 -1
- package/dist/lib/links.d.ts +2 -0
- package/dist/lib/links.js +3 -0
- package/dist/lib/links.js.map +1 -0
- package/dist/modules/config/config-doctor.js +2 -1
- package/dist/modules/config/config-doctor.js.map +1 -1
- package/dist/modules/config/config.service.d.ts +3 -1
- package/dist/modules/config/config.service.js +4 -0
- package/dist/modules/config/config.service.js.map +1 -1
- package/dist/modules/interactive/config-fields.d.ts +22 -0
- package/dist/modules/interactive/config-fields.js +133 -0
- package/dist/modules/interactive/config-fields.js.map +1 -0
- package/dist/modules/interactive/periods.d.ts +7 -0
- package/dist/modules/interactive/periods.js +13 -0
- package/dist/modules/interactive/periods.js.map +1 -0
- package/dist/modules/pdf/pdf-data.mapper.js +9 -2
- package/dist/modules/pdf/pdf-data.mapper.js.map +1 -1
- package/llms.txt +1 -1
- package/package.json +1 -1
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
import { ConfigService } from '../../modules/config/config.service.js';
|
|
2
|
-
import {
|
|
3
|
-
import { colorize, formatCliError,
|
|
4
|
-
import {
|
|
2
|
+
import { listMissingSetupKeys } from '../../modules/interactive/config-fields.js';
|
|
3
|
+
import { colorize, formatCliError, noticePanel, renderLogo, statusBar, writeTerminalError, writeTerminalOutput, } from '../../ui/index.js';
|
|
4
|
+
import { runConfigMenu, runGuidedSetup } from './config.flow.js';
|
|
5
5
|
import { runHistoryFlow } from './history.flow.js';
|
|
6
6
|
import { runInvoiceFlow } from './invoice.flow.js';
|
|
7
|
+
import { runLookupFlow, runStatusFlow } from './lookup.flow.js';
|
|
7
8
|
import { runNoteFlow } from './note.flow.js';
|
|
8
|
-
import { chooseOne, isPromptCancellation } from './prompts.js';
|
|
9
|
+
import { chooseOne, confirm, isPromptCancellation } from './prompts.js';
|
|
10
|
+
import { runRepeatFlow } from './repeat.flow.js';
|
|
9
11
|
import { createInteractiveSession } from './session.js';
|
|
10
|
-
function
|
|
12
|
+
function listMissingSetup() {
|
|
11
13
|
const service = new ConfigService();
|
|
12
14
|
try {
|
|
13
15
|
service.ensureInitialized();
|
|
14
|
-
|
|
16
|
+
return listMissingSetupKeys(service.getConfig());
|
|
15
17
|
}
|
|
16
18
|
finally {
|
|
17
19
|
service.close();
|
|
@@ -23,13 +25,13 @@ function resolveSession(options) {
|
|
|
23
25
|
}
|
|
24
26
|
catch (error) {
|
|
25
27
|
writeTerminalError(formatCliError(error, false));
|
|
26
|
-
writeTerminalOutput(noticePanel('
|
|
28
|
+
writeTerminalOutput(noticePanel('Revisala desde "Configuracion" en el menu.', 'warning'));
|
|
27
29
|
return undefined;
|
|
28
30
|
}
|
|
29
31
|
}
|
|
30
32
|
async function runOption(option, options) {
|
|
31
33
|
if (option === 'config') {
|
|
32
|
-
|
|
34
|
+
await runConfigMenu(options);
|
|
33
35
|
return;
|
|
34
36
|
}
|
|
35
37
|
const session = resolveSession(options);
|
|
@@ -38,10 +40,16 @@ async function runOption(option, options) {
|
|
|
38
40
|
}
|
|
39
41
|
if (option === 'factura')
|
|
40
42
|
await runInvoiceFlow(session);
|
|
43
|
+
if (option === 'repetir')
|
|
44
|
+
await runRepeatFlow(session);
|
|
41
45
|
if (option === 'nota')
|
|
42
46
|
await runNoteFlow(session);
|
|
43
47
|
if (option === 'historial')
|
|
44
48
|
await runHistoryFlow(session);
|
|
49
|
+
if (option === 'consultar')
|
|
50
|
+
await runLookupFlow(session);
|
|
51
|
+
if (option === 'estado')
|
|
52
|
+
await runStatusFlow(session);
|
|
45
53
|
}
|
|
46
54
|
function formatHeader(options) {
|
|
47
55
|
try {
|
|
@@ -56,14 +64,35 @@ function formatHeader(options) {
|
|
|
56
64
|
export async function runInteractiveMode(options = {}) {
|
|
57
65
|
// Mismo aire debajo del logo que arriba: tres lineas en blanco.
|
|
58
66
|
writeTerminalOutput([renderLogo().trimEnd(), '', '', '', formatHeader(options)].join('\n'));
|
|
67
|
+
// Primera vez: sin CUIT, certificado o punto de venta no se puede hacer nada, asi que se ofrece la guia.
|
|
68
|
+
if (listMissingSetup().length > 0) {
|
|
69
|
+
try {
|
|
70
|
+
if (await confirm('Falta completar la configuracion. ¿La hacemos ahora, paso a paso?', 'Si, configurar', 'Despues')) {
|
|
71
|
+
await runGuidedSetup();
|
|
72
|
+
writeTerminalOutput(formatHeader(options));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
if (!isPromptCancellation(error)) {
|
|
77
|
+
throw error;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
59
81
|
for (;;) {
|
|
60
82
|
let option;
|
|
61
83
|
try {
|
|
62
84
|
option = await chooseOne('¿Que queres hacer?', [
|
|
63
85
|
{ name: 'Emitir factura', value: 'factura' },
|
|
86
|
+
{
|
|
87
|
+
description: 'Copia una de las ultimas, con fechas nuevas',
|
|
88
|
+
name: 'Repetir una factura anterior',
|
|
89
|
+
value: 'repetir',
|
|
90
|
+
},
|
|
64
91
|
{ name: 'Nota de credito o debito sobre una factura', value: 'nota' },
|
|
65
92
|
{ name: 'Ver ultimos comprobantes', value: 'historial' },
|
|
66
|
-
{ name: '
|
|
93
|
+
{ name: 'Consultar un comprobante', value: 'consultar' },
|
|
94
|
+
{ description: 'Servidores, punto de venta y cotizacion del dolar', name: 'Estado de ARCA', value: 'estado' },
|
|
95
|
+
{ description: 'Revisar, configuracion guiada, cambiar un dato y PDF', name: 'Configuracion', value: 'config' },
|
|
67
96
|
{ name: 'Salir', value: 'salir' },
|
|
68
97
|
]);
|
|
69
98
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-mode.js","sourceRoot":"","sources":["../../../src/cli/interactive/interactive-mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"interactive-mode.js","sourceRoot":"","sources":["../../../src/cli/interactive/interactive-mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EACL,QAAQ,EACR,cAAc,EACd,WAAW,EACX,UAAU,EACV,SAAS,EACT,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAA2B,MAAM,WAAW,CAAC;AAI9E,SAAS,gBAAgB;IACvB,MAAM,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;IAEpC,IAAI,CAAC;QACH,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAE5B,OAAO,oBAAoB,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IACnD,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,OAAyB;IAC/C,IAAI,CAAC;QACH,OAAO,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,kBAAkB,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QACjD,mBAAmB,CAAC,WAAW,CAAC,4CAA4C,EAAE,SAAS,CAAC,CAAC,CAAC;QAE1F,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,MAAoC,EAAE,OAAyB;IACtF,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;QAE7B,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAExC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IAED,IAAI,MAAM,KAAK,SAAS;QAAE,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;IACxD,IAAI,MAAM,KAAK,SAAS;QAAE,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;IACvD,IAAI,MAAM,KAAK,MAAM;QAAE,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,MAAM,KAAK,WAAW;QAAE,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;IAC1D,IAAI,MAAM,KAAK,WAAW;QAAE,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;IACzD,IAAI,MAAM,KAAK,QAAQ;QAAE,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,YAAY,CAAC,OAAyB;IAC7C,IAAI,CAAC;QACH,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;QAE/E,OAAO,SAAS,CACd,kBAAkB,EAClB,GAAG,WAAW,SAAS,WAAW,IAAI,gBAAgB,EAAE,EACxD,WAAW,KAAK,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CACpD,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC,kBAAkB,EAAE,kCAAkC,EAAE,SAAS,CAAC,CAAC;IACtF,CAAC;AACH,CAAC;AAED,8FAA8F;AAC9F,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,UAA4B,EAAE;IACrE,gEAAgE;IAChE,mBAAmB,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAE5F,yGAAyG;IACzG,IAAI,gBAAgB,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,IACE,MAAM,OAAO,CAAC,mEAAmE,EAAE,gBAAgB,EAAE,SAAS,CAAC,EAC/G,CAAC;gBACD,MAAM,cAAc,EAAE,CAAC;gBACvB,mBAAmB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjC,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,SAAS,CAAC;QACR,IAAI,MAAkB,CAAC;QAEvB,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,SAAS,CAAa,oBAAoB,EAAE;gBACzD,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,EAAE;gBAC5C;oBACE,WAAW,EAAE,6CAA6C;oBAC1D,IAAI,EAAE,8BAA8B;oBACpC,KAAK,EAAE,SAAS;iBACjB;gBACD,EAAE,IAAI,EAAE,4CAA4C,EAAE,KAAK,EAAE,MAAM,EAAE;gBACrE,EAAE,IAAI,EAAE,0BAA0B,EAAE,KAAK,EAAE,WAAW,EAAE;gBACxD,EAAE,IAAI,EAAE,0BAA0B,EAAE,KAAK,EAAE,WAAW,EAAE;gBACxD,EAAE,WAAW,EAAE,mDAAmD,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE;gBAC7G,EAAE,WAAW,EAAE,sDAAsD,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE;gBAC/G,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;aAClC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChC,MAAM;YACR,CAAC;YAED,MAAM,KAAK,CAAC;QACd,CAAC;QAED,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YACvB,MAAM;QACR,CAAC;QAED,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChC,mBAAmB,CAAC,QAAQ,CAAC,+BAA+B,EAAE,OAAO,CAAC,CAAC,CAAC;YAC1E,CAAC;iBAAM,CAAC;gBACN,kBAAkB,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;IACH,CAAC;IAED,mBAAmB,CAAC,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC,CAAC;AAC/D,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type InteractiveSession } from './session';
|
|
2
|
+
/** Consultar un comprobante por numero, de cualquier tipo. Propone el ultimo emitido. */
|
|
3
|
+
export declare function runLookupFlow(session: InteractiveSession): Promise<void>;
|
|
4
|
+
/** Estado de los servidores de ARCA, del punto de venta y la cotizacion oficial del dolar. */
|
|
5
|
+
export declare function runStatusFlow(session: InteractiveSession): Promise<void>;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { VOUCHER_KIND_MAP, VOUCHER_SHORTCUTS } from '../../modules/billing/voucher-kind-map.js';
|
|
2
|
+
import { BACK } from '../../modules/interactive/wizard.js';
|
|
3
|
+
import { formatQuotationAsText, formatStatusAsText } from '../../modules/parameters/parameters.presenter.js';
|
|
4
|
+
import { buildStatusReport } from '../../modules/parameters/status.js';
|
|
5
|
+
import { formatVoucherDetailAsText, formatVoucherNumber } from '../../modules/vouchers/voucher-history.presenter.js';
|
|
6
|
+
import { ArcaParametersGateway } from '../../services/arca/arca-parameters.gateway.js';
|
|
7
|
+
import { noticePanel, writeTerminalOutput } from '../../ui/index.js';
|
|
8
|
+
import { startSpinner } from '../spinner.js';
|
|
9
|
+
import { askTextStep, chooseStep } from './prompts.js';
|
|
10
|
+
import { requirePointOfSale } from './session.js';
|
|
11
|
+
async function withSpinner(text, run) {
|
|
12
|
+
const spinner = startSpinner(text);
|
|
13
|
+
try {
|
|
14
|
+
return await run();
|
|
15
|
+
}
|
|
16
|
+
finally {
|
|
17
|
+
spinner?.stop();
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/** Consultar un comprobante por numero, de cualquier tipo. Propone el ultimo emitido. */
|
|
21
|
+
export async function runLookupFlow(session) {
|
|
22
|
+
const pointOfSale = requirePointOfSale(session);
|
|
23
|
+
if (!pointOfSale) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const voucherKind = await chooseStep('¿Que tipo de comprobante?', VOUCHER_SHORTCUTS.map((shortcut) => ({
|
|
27
|
+
name: `${VOUCHER_KIND_MAP[shortcut].displayName} (${shortcut})`,
|
|
28
|
+
value: VOUCHER_KIND_MAP[shortcut],
|
|
29
|
+
})));
|
|
30
|
+
if (voucherKind === BACK) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const lastNumber = await withSpinner('Consultando ARCA...', () => session.historyGateway.getLastNumber(pointOfSale, voucherKind.arcaType));
|
|
34
|
+
if (lastNumber === 0) {
|
|
35
|
+
writeTerminalOutput(noticePanel(`No hay ${voucherKind.displayName} emitidas en el punto de venta ${pointOfSale}.`, 'muted'));
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
const answer = await askTextStep(`Numero (el ultimo es ${lastNumber}):`, {
|
|
39
|
+
defaultValue: String(lastNumber),
|
|
40
|
+
validate: (value) => {
|
|
41
|
+
const number = Number(value.trim());
|
|
42
|
+
return Number.isInteger(number) && number > 0 && number <= lastNumber
|
|
43
|
+
? true
|
|
44
|
+
: `Ingrese un numero entre 1 y ${lastNumber}.`;
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
if (answer === BACK) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const number = Number(answer.trim());
|
|
51
|
+
const voucher = await withSpinner('Consultando ARCA...', () => session.historyGateway.getVoucher(number, pointOfSale, voucherKind.arcaType));
|
|
52
|
+
if (!voucher) {
|
|
53
|
+
writeTerminalOutput(noticePanel(`No existe la ${voucherKind.displayName} N° ${formatVoucherNumber(pointOfSale, number)}.`, 'warning'));
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
writeTerminalOutput(formatVoucherDetailAsText({ environment: session.runtime.environment, pointOfSale, voucher, voucherKind }));
|
|
57
|
+
}
|
|
58
|
+
/** Estado de los servidores de ARCA, del punto de venta y la cotizacion oficial del dolar. */
|
|
59
|
+
export async function runStatusFlow(session) {
|
|
60
|
+
const gateway = new ArcaParametersGateway(session.arca);
|
|
61
|
+
const { environment, pointOfSale } = session.runtime;
|
|
62
|
+
const [report, quotation] = await withSpinner('Consultando ARCA...', () => Promise.all([
|
|
63
|
+
buildStatusReport({ environment, gateway, pointOfSale }),
|
|
64
|
+
// La cotizacion es un extra: si falla, el estado se muestra igual.
|
|
65
|
+
gateway.getQuotation('USD').catch(() => undefined),
|
|
66
|
+
]));
|
|
67
|
+
writeTerminalOutput(formatStatusAsText(report));
|
|
68
|
+
if (quotation) {
|
|
69
|
+
writeTerminalOutput(formatQuotationAsText(quotation, environment));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=lookup.flow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lookup.flow.js","sourceRoot":"","sources":["../../../src/cli/interactive/lookup.flow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type WizardStep } from '../../modules/interactive/wizard';
|
|
2
|
+
import { type IssuedVoucher } from '../../modules/vouchers/voucher-history';
|
|
3
|
+
import { type InvoiceState } from './invoice.flow';
|
|
4
|
+
import { type InteractiveSession } from './session';
|
|
5
|
+
export interface RepeatState extends InvoiceState {
|
|
6
|
+
readonly original?: IssuedVoucher;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Repetir una factura: se elige una de las ultimas emitidas y se copian el comprobante, el receptor, el concepto,
|
|
10
|
+
* el monto y la alicuota. Las fechas se actualizan: la factura sale con fecha de hoy y el periodo se elige.
|
|
11
|
+
*/
|
|
12
|
+
export declare function repeatSteps(session: InteractiveSession, pointOfSale: number, today?: Date): Array<WizardStep<RepeatState>>;
|
|
13
|
+
export declare function runRepeatFlow(session: InteractiveSession): Promise<void>;
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { formatMoneyLabel } from '../../modules/billing/billing.labels.js';
|
|
2
|
+
import { parseAmountInput } from '../../modules/interactive/amount-input.js';
|
|
3
|
+
import { invoiceKindChoices, ivaConditionChoices } from '../../modules/interactive/choices.js';
|
|
4
|
+
import { currentMonthPeriod, previousMonthPeriod } from '../../modules/interactive/periods.js';
|
|
5
|
+
import { BACK, runWizard } from '../../modules/interactive/wizard.js';
|
|
6
|
+
import { inferIvaRate, listRecentVouchers, resolveDocumentType, } from '../../modules/vouchers/voucher-history.js';
|
|
7
|
+
import { formatVoucherSummary } from '../../modules/vouchers/voucher-history.presenter.js';
|
|
8
|
+
import { noticePanel, writeTerminalOutput } from '../../ui/index.js';
|
|
9
|
+
import { startSpinner } from '../spinner.js';
|
|
10
|
+
import { askAdvancedOptions } from './advanced-options.js';
|
|
11
|
+
import { buildInvoiceInput } from './invoice.flow.js';
|
|
12
|
+
import { askTextStep, chooseStep } from './prompts.js';
|
|
13
|
+
import { previewAndEmit, requirePointOfSale } from './session.js';
|
|
14
|
+
import { validateAmount, validateCbu, validateDate } from './validators.js';
|
|
15
|
+
const CONCEPTS_BY_CODE = {
|
|
16
|
+
1: 'productos',
|
|
17
|
+
2: 'servicios',
|
|
18
|
+
3: 'productos-servicios',
|
|
19
|
+
};
|
|
20
|
+
const LOCAL_CURRENCIES = new Set(['PES', 'ARS', undefined]);
|
|
21
|
+
function describePeriod(period) {
|
|
22
|
+
return `${period.from} al ${period.to}`;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Repetir una factura: se elige una de las ultimas emitidas y se copian el comprobante, el receptor, el concepto,
|
|
26
|
+
* el monto y la alicuota. Las fechas se actualizan: la factura sale con fecha de hoy y el periodo se elige.
|
|
27
|
+
*/
|
|
28
|
+
export function repeatSteps(session, pointOfSale, today = new Date()) {
|
|
29
|
+
const { config } = session.runtime;
|
|
30
|
+
return [
|
|
31
|
+
{
|
|
32
|
+
name: 'tipo',
|
|
33
|
+
run: async () => {
|
|
34
|
+
const voucherKind = await chooseStep('¿Que tipo de factura queres repetir?', invoiceKindChoices());
|
|
35
|
+
return voucherKind === BACK ? BACK : { voucherKind };
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'factura',
|
|
40
|
+
run: async (state) => {
|
|
41
|
+
const voucherKind = state.voucherKind;
|
|
42
|
+
const spinner = startSpinner('Buscando las ultimas facturas en ARCA...');
|
|
43
|
+
const invoices = await listRecentVouchers(session.historyGateway, pointOfSale, voucherKind.arcaType).finally(() => spinner?.stop());
|
|
44
|
+
if (invoices.length === 0) {
|
|
45
|
+
writeTerminalOutput(noticePanel(`No hay ${voucherKind.displayName} emitidas en el punto de venta ${pointOfSale}.`, 'warning'));
|
|
46
|
+
return BACK;
|
|
47
|
+
}
|
|
48
|
+
const original = await chooseStep('¿Cual repetimos?', invoices.map((item) => ({ name: formatVoucherSummary(pointOfSale, item), value: item })));
|
|
49
|
+
if (original === BACK) {
|
|
50
|
+
return BACK;
|
|
51
|
+
}
|
|
52
|
+
const documentType = resolveDocumentType(original.documentTypeCode);
|
|
53
|
+
if (!documentType) {
|
|
54
|
+
writeTerminalOutput(noticePanel('La factura tiene un tipo de documento que el asistente no soporta. Usa los flags del CLI.', 'warning'));
|
|
55
|
+
return BACK;
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
advanced: {
|
|
59
|
+
currencyCode: 'ARS',
|
|
60
|
+
ivaRate: voucherKind.letter === 'c' ? undefined : inferIvaRate(original.netAmount, original.ivaAmount),
|
|
61
|
+
sameCurrency: false,
|
|
62
|
+
},
|
|
63
|
+
concept: CONCEPTS_BY_CODE[original.concept ?? 2] ?? 'servicios',
|
|
64
|
+
documentNumber: documentType === 'consumidor-final' ? undefined : original.documentNumber,
|
|
65
|
+
documentType,
|
|
66
|
+
ivaCondition: documentType === 'consumidor-final' ? 'consumidor-final' : undefined,
|
|
67
|
+
original,
|
|
68
|
+
totalAmount: original.total,
|
|
69
|
+
};
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
name: 'iva-receptor',
|
|
74
|
+
// ARCA no devuelve la condicion IVA de la factura, asi que se pregunta.
|
|
75
|
+
run: async (state) => {
|
|
76
|
+
const ivaCondition = await chooseStep('Condicion frente al IVA del receptor:', ivaConditionChoices(state.voucherKind?.letter ?? 'c'), config.ivaReceptorPorDefecto);
|
|
77
|
+
return ivaCondition === BACK ? BACK : { ivaCondition };
|
|
78
|
+
},
|
|
79
|
+
skip: (state) => state.documentType === 'consumidor-final',
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
name: 'monto',
|
|
83
|
+
run: async (state) => {
|
|
84
|
+
const original = state.original;
|
|
85
|
+
const scope = await chooseStep('¿Mismo monto?', [
|
|
86
|
+
{ name: `Si, ${formatMoneyLabel(original.total)}`, value: 'mismo' },
|
|
87
|
+
{ name: 'No, ingresar otro monto', value: 'otro' },
|
|
88
|
+
]);
|
|
89
|
+
if (scope === BACK || scope === 'mismo') {
|
|
90
|
+
return scope === BACK ? BACK : { totalAmount: original.total };
|
|
91
|
+
}
|
|
92
|
+
const answer = await askTextStep('Monto total:', { validate: validateAmount });
|
|
93
|
+
return answer === BACK ? BACK : { totalAmount: parseAmountInput(answer) };
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
name: 'periodo',
|
|
98
|
+
run: async (state) => {
|
|
99
|
+
const current = currentMonthPeriod(today);
|
|
100
|
+
const previous = previousMonthPeriod(today);
|
|
101
|
+
const choice = await chooseStep('Periodo del servicio:', [
|
|
102
|
+
{ description: describePeriod(current), name: 'Este mes', value: current },
|
|
103
|
+
{ description: describePeriod(previous), name: 'El mes pasado', value: previous },
|
|
104
|
+
{ description: 'Desde y hasta hoy', name: 'Solo hoy', value: 'hoy' },
|
|
105
|
+
{ name: 'Otro periodo', value: 'otro' },
|
|
106
|
+
]);
|
|
107
|
+
if (choice === BACK) {
|
|
108
|
+
return BACK;
|
|
109
|
+
}
|
|
110
|
+
const advanced = { ...state.advanced };
|
|
111
|
+
if (choice === 'hoy') {
|
|
112
|
+
return { advanced: { ...advanced, serviceEndDate: undefined, serviceStartDate: undefined } };
|
|
113
|
+
}
|
|
114
|
+
if (choice !== 'otro') {
|
|
115
|
+
return { advanced: { ...advanced, serviceEndDate: choice.to, serviceStartDate: choice.from } };
|
|
116
|
+
}
|
|
117
|
+
const from = await askTextStep('Servicio desde:', { validate: validateDate });
|
|
118
|
+
if (from === BACK) {
|
|
119
|
+
return BACK;
|
|
120
|
+
}
|
|
121
|
+
const to = await askTextStep('Servicio hasta:', { validate: validateDate });
|
|
122
|
+
return to === BACK ? BACK : { advanced: { ...advanced, serviceEndDate: to, serviceStartDate: from } };
|
|
123
|
+
},
|
|
124
|
+
skip: (state) => state.concept === 'productos',
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
name: 'cbu',
|
|
128
|
+
run: async () => {
|
|
129
|
+
const cbu = await askTextStep('CBU del emisor (22 digitos):', { validate: validateCbu });
|
|
130
|
+
return cbu === BACK ? BACK : { cbu };
|
|
131
|
+
},
|
|
132
|
+
skip: (state) => state.voucherKind?.family !== 'factura-credito-electronica' || Boolean(config.cbu),
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
name: 'opcionales',
|
|
136
|
+
run: async (state) => {
|
|
137
|
+
// La cotizacion de la factura original ya no sirve: si era en moneda extranjera, arranca marcada.
|
|
138
|
+
const foreign = !LOCAL_CURRENCIES.has(state.original?.currency);
|
|
139
|
+
if (foreign) {
|
|
140
|
+
writeTerminalOutput(noticePanel('La factura original era en moneda extranjera: completa la moneda y la cotizacion.', 'info'));
|
|
141
|
+
}
|
|
142
|
+
const advanced = await askAdvancedOptions(state.advanced, {
|
|
143
|
+
concept: state.concept ?? 'servicios',
|
|
144
|
+
defaultIvaRate: state.advanced.ivaRate ?? config.alicuotaPorDefecto ?? '21',
|
|
145
|
+
preselected: foreign ? ['divisas'] : [],
|
|
146
|
+
voucherKind: state.voucherKind,
|
|
147
|
+
});
|
|
148
|
+
return advanced === BACK ? BACK : { advanced };
|
|
149
|
+
},
|
|
150
|
+
},
|
|
151
|
+
];
|
|
152
|
+
}
|
|
153
|
+
export async function runRepeatFlow(session) {
|
|
154
|
+
const pointOfSale = requirePointOfSale(session);
|
|
155
|
+
if (!pointOfSale) {
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
const state = await runWizard(repeatSteps(session, pointOfSale), {
|
|
159
|
+
advanced: { currencyCode: 'ARS', sameCurrency: false },
|
|
160
|
+
});
|
|
161
|
+
if (!state) {
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
await previewAndEmit(session, buildInvoiceInput(state, session));
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=repeat.flow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repeat.flow.js","sourceRoot":"","sources":["../../../src/cli/interactive/repeat.flow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAGxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAC5F,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAsB,MAAM,mCAAmC,CAAC;AAChH,OAAO,EAAE,IAAI,EAAE,SAAS,EAAmB,MAAM,kCAAkC,CAAC;AACpF,OAAO,EACL,YAAY,EAEZ,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AACxF,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAqB,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAA2B,cAAc,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACxF,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEzE,MAAM,gBAAgB,GAAmC;IACvD,CAAC,EAAE,WAAW;IACd,CAAC,EAAE,WAAW;IACd,CAAC,EAAE,qBAAqB;CACzB,CAAC;AAMF,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;AAE5D,SAAS,cAAc,CAAC,MAAqB;IAC3C,OAAO,GAAG,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,EAAE,EAAE,CAAC;AAC1C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CACzB,OAA2B,EAC3B,WAAmB,EACnB,QAAc,IAAI,IAAI,EAAE;IAExB,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAEnC,OAAO;QACL;YACE,IAAI,EAAE,MAAM;YACZ,GAAG,EAAE,KAAK,IAAI,EAAE;gBACd,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,sCAAsC,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBAEnG,OAAO,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;YACvD,CAAC;SACF;QACD;YACE,IAAI,EAAE,SAAS;YACf,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;gBACnB,MAAM,WAAW,GAAG,KAAK,CAAC,WAAoC,CAAC;gBAC/D,MAAM,OAAO,GAAG,YAAY,CAAC,0CAA0C,CAAC,CAAC;gBACzE,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,cAAc,EAAE,WAAW,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,OAAO,CAC1G,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,CACtB,CAAC;gBAEF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC1B,mBAAmB,CACjB,WAAW,CAAC,UAAU,WAAW,CAAC,WAAW,kCAAkC,WAAW,GAAG,EAAE,SAAS,CAAC,CAC1G,CAAC;oBAEF,OAAO,IAAI,CAAC;gBACd,CAAC;gBAED,MAAM,QAAQ,GAAG,MAAM,UAAU,CAC/B,kBAAkB,EAClB,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,oBAAoB,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CACzF,CAAC;gBAEF,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;oBACtB,OAAO,IAAI,CAAC;gBACd,CAAC;gBAED,MAAM,YAAY,GAAG,mBAAmB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;gBAEpE,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,mBAAmB,CACjB,WAAW,CACT,2FAA2F,EAC3F,SAAS,CACV,CACF,CAAC;oBAEF,OAAO,IAAI,CAAC;gBACd,CAAC;gBAED,OAAO;oBACL,QAAQ,EAAE;wBACR,YAAY,EAAE,KAAK;wBACnB,OAAO,EAAE,WAAW,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC;wBACtG,YAAY,EAAE,KAAK;qBACpB;oBACD,OAAO,EAAE,gBAAgB,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,WAAW;oBAC/D,cAAc,EAAE,YAAY,KAAK,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc;oBACzF,YAAY;oBACZ,YAAY,EAAE,YAAY,KAAK,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS;oBAClF,QAAQ;oBACR,WAAW,EAAE,QAAQ,CAAC,KAAK;iBAC5B,CAAC;YACJ,CAAC;SACF;QACD;YACE,IAAI,EAAE,cAAc;YACpB,wEAAwE;YACxE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;gBACnB,MAAM,YAAY,GAAG,MAAM,UAAU,CACnC,uCAAuC,EACvC,mBAAmB,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,IAAI,GAAG,CAAC,EACrD,MAAM,CAAC,qBAAqB,CAC7B,CAAC;gBAEF,OAAO,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;YACzD,CAAC;YACD,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,KAAK,kBAAkB;SAC3D;QACD;YACE,IAAI,EAAE,OAAO;YACb,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;gBACnB,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAyB,CAAC;gBACjD,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,eAAe,EAAE;oBAC9C,EAAE,IAAI,EAAE,OAAO,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,OAAgB,EAAE;oBAC5E,EAAE,IAAI,EAAE,yBAAyB,EAAE,KAAK,EAAE,MAAe,EAAE;iBAC5D,CAAC,CAAC;gBAEH,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;oBACxC,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACjE,CAAC;gBAED,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC;gBAE/E,OAAO,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5E,CAAC;SACF;QACD;YACE,IAAI,EAAE,SAAS;YACf,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;gBACnB,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAC1C,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;gBAC5C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAiC,uBAAuB,EAAE;oBACvF,EAAE,WAAW,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE;oBAC1E,EAAE,WAAW,EAAE,cAAc,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE;oBACjF,EAAE,WAAW,EAAE,mBAAmB,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,KAAc,EAAE;oBAC7E,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,MAAe,EAAE;iBACjD,CAAC,CAAC;gBAEH,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;oBACpB,OAAO,IAAI,CAAC;gBACd,CAAC;gBAED,MAAM,QAAQ,GAAG,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAEvC,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;oBACrB,OAAO,EAAE,QAAQ,EAAE,EAAE,GAAG,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,EAAE,CAAC;gBAC/F,CAAC;gBAED,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;oBACtB,OAAO,EAAE,QAAQ,EAAE,EAAE,GAAG,QAAQ,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,EAAE,gBAAgB,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;gBACjG,CAAC;gBAED,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;gBAE9E,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;oBAClB,OAAO,IAAI,CAAC;gBACd,CAAC;gBAED,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;gBAE5E,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,GAAG,QAAQ,EAAE,cAAc,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,CAAC;YACxG,CAAC;YACD,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,WAAW;SAC/C;QACD;YACE,IAAI,EAAE,KAAK;YACX,GAAG,EAAE,KAAK,IAAI,EAAE;gBACd,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,8BAA8B,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;gBAEzF,OAAO,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;YACvC,CAAC;YACD,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,KAAK,6BAA6B,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;SACpG;QACD;YACE,IAAI,EAAE,YAAY;YAClB,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;gBACnB,kGAAkG;gBAClG,MAAM,OAAO,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBAEhE,IAAI,OAAO,EAAE,CAAC;oBACZ,mBAAmB,CACjB,WAAW,CAAC,mFAAmF,EAAE,MAAM,CAAC,CACzG,CAAC;gBACJ,CAAC;gBAED,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,QAAQ,EAAE;oBACxD,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,WAAW;oBACrC,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO,IAAI,MAAM,CAAC,kBAAkB,IAAI,IAAI;oBAC3E,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;oBACvC,WAAW,EAAE,KAAK,CAAC,WAAoC;iBACxD,CAAC,CAAC;gBAEH,OAAO,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;YACjD,CAAC;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAA2B;IAC7D,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAEhD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE;QAC/D,QAAQ,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE;KACvD,CAAC,CAAC;IAEH,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;IACT,CAAC;IAED,MAAM,cAAc,CAAC,OAAO,EAAE,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AACnE,CAAC"}
|
package/dist/cli/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const CLI_VERSION = "1.
|
|
1
|
+
export declare const CLI_VERSION = "1.7.1";
|
package/dist/cli/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const CLI_VERSION = '1.
|
|
1
|
+
export const CLI_VERSION = '1.7.1';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"links.js","sourceRoot":"","sources":["../../src/lib/links.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,MAAM,CAAC,MAAM,qBAAqB,GAAG,0EAA0E,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { CERTIFICATE_GUIDE_URL } from '../../lib/links.js';
|
|
1
2
|
import { isCertificateExpiringSoon, readCertificateExpiry } from '../../lib/security/certificate.js';
|
|
2
3
|
import { readPemFile } from '../../lib/security/pem.js';
|
|
3
4
|
import { listMissingIssuerKeys } from '../pdf/pdf-issuer.js';
|
|
@@ -61,7 +62,7 @@ export function buildConfigDoctorReport(config, runtimeCheck) {
|
|
|
61
62
|
label: 'Credenciales testing',
|
|
62
63
|
ok: config.cert.testing && config.key.testing,
|
|
63
64
|
okDetail: 'Certificado y clave de testing configurados.',
|
|
64
|
-
warningDetail:
|
|
65
|
+
warningDetail: `Faltan credenciales de testing. Configure "cert.testing" y "key.testing" con "arcli config establecer". Si todavia no tiene certificado: ${CERTIFICATE_GUIDE_URL}`,
|
|
65
66
|
},
|
|
66
67
|
{
|
|
67
68
|
label: 'Credenciales produccion',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-doctor.js","sourceRoot":"","sources":["../../../src/modules/config/config-doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAClG,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAI1D,MAAM,+BAA+B,GAAG,EAAE,CAAC;AAgB3C,SAAS,2BAA2B,CAClC,KAAa,EACb,QAA4B;IAE5B,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,WAAW,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;QACjD,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAEnE,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,4BAA4B,aAAa,GAAG,EAAE,KAAK,EAAE,CAAC;QAC5F,CAAC;QAED,IAAI,yBAAyB,CAAC,MAAM,EAAE,+BAA+B,CAAC,EAAE,CAAC;YACvE,OAAO;gBACL,QAAQ,EAAE,SAAS;gBACnB,MAAM,EAAE,2BAA2B,MAAM,CAAC,aAAa,UAAU,aAAa,sBAAsB;gBACpG,KAAK;aACN,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,2BAA2B,aAAa,GAAG,EAAE,KAAK,EAAE,CAAC;IACxF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,QAAQ,EAAE,SAAS;YACnB,MAAM,EAAE,wDAAwD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YACxH,KAAK;SACN,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,MAAmB,EACnB,YAAuC;IAEvC,MAAM,MAAM,GAAgD,EAAE,CAAC;IAE/D,MAAM,iBAAiB,GAKlB;QACH;YACE,KAAK,EAAE,MAAM;YACb,EAAE,EAAE,MAAM,CAAC,IAAI;YACf,QAAQ,EAAE,sCAAsC;YAChD,aAAa,EAAE,+DAA+D;SAC/E;QACD;YACE,KAAK,EAAE,gBAAgB;YACvB,EAAE,EAAE,MAAM,CAAC,oBAAoB;YAC/B,QAAQ,EAAE,+BAA+B,MAAM,CAAC,oBAAoB,GAAG;YACvE,aAAa,EAAE,2FAA2F;SAC3G;QACD;YACE,KAAK,EAAE,UAAU;YACjB,EAAE,EAAE,MAAM,CAAC,kBAAkB;YAC7B,QAAQ,EAAE,yBAAyB,MAAM,CAAC,kBAAkB,GAAG;YAC/D,aAAa,EAAE,uFAAuF;SACvG;QACD;YACE,KAAK,EAAE,cAAc;YACrB,EAAE,EAAE,MAAM,CAAC,qBAAqB;YAChC,QAAQ,EAAE,6BAA6B,MAAM,CAAC,qBAAqB,GAAG;YACtE,aAAa,EACX,qGAAqG;SACxG;QACD;YACE,KAAK,EAAE,sBAAsB;YAC7B,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO;YAC7C,QAAQ,EAAE,8CAA8C;YACxD,aAAa,
|
|
1
|
+
{"version":3,"file":"config-doctor.js","sourceRoot":"","sources":["../../../src/modules/config/config-doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import { ArcliConfig } from './config.schemas';
|
|
1
|
+
import { ArcliConfig, ConfigPublicKey } from './config.schemas';
|
|
2
|
+
/** Valida un valor como lo haria `arcli config establecer`, sin guardarlo. Lanza un Error con el motivo. */
|
|
3
|
+
export declare function validateConfigValue(publicKey: ConfigPublicKey, rawValue: string): void;
|
|
2
4
|
export interface ConfigServiceOptions {
|
|
3
5
|
readonly configName?: string;
|
|
4
6
|
readonly cwd?: string;
|
|
@@ -33,6 +33,10 @@ const CONFIG_KEY_ALIASES = {
|
|
|
33
33
|
ticketPath: 'ticketPath',
|
|
34
34
|
verificarFce: 'verificarFce',
|
|
35
35
|
};
|
|
36
|
+
/** Valida un valor como lo haria `arcli config establecer`, sin guardarlo. Lanza un Error con el motivo. */
|
|
37
|
+
export function validateConfigValue(publicKey, rawValue) {
|
|
38
|
+
parseConfigValue(CONFIG_KEY_ALIASES[publicKey], rawValue);
|
|
39
|
+
}
|
|
36
40
|
export class ConfigService {
|
|
37
41
|
store;
|
|
38
42
|
constructor(options = {}) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.service.js","sourceRoot":"","sources":["../../../src/modules/config/config.service.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAEL,iBAAiB,EACjB,eAAe,EAEf,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAA2B,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAElF,MAAM,kBAAkB,GAAgD;IACtE,QAAQ,EAAE,oBAAoB;IAC9B,QAAQ,EAAE,UAAU;IACpB,GAAG,EAAE,KAAK;IACV,iBAAiB,EAAE,iBAAiB;IACpC,cAAc,EAAE,cAAc;IAC9B,QAAQ,EAAE,oBAAoB;IAC9B,UAAU,EAAE,sBAAsB;IAClC,IAAI,EAAE,MAAM;IACZ,qBAAqB,EAAE,qBAAqB;IAC5C,kBAAkB,EAAE,kBAAkB;IACtC,aAAa,EAAE,aAAa;IAC5B,0BAA0B,EAAE,0BAA0B;IACtD,aAAa,EAAE,aAAa;IAC5B,oBAAoB,EAAE,oBAAoB;IAC1C,OAAO,EAAE,mBAAmB;IAC5B,MAAM,EAAE,yBAAyB;IACjC,WAAW,EAAE,uBAAuB;IACpC,IAAI,EAAE,uBAAuB;IAC7B,gBAAgB,EAAE,gBAAgB;IAClC,aAAa,EAAE,aAAa;IAC5B,MAAM,EAAE,kBAAkB;IAC1B,KAAK,EAAE,wBAAwB;IAC/B,GAAG,EAAE,KAAK;IACV,UAAU,EAAE,YAAY;IACxB,YAAY,EAAE,cAAc;IAC5B,UAAU,EAAE,sBAAsB;IAClC,UAAU,EAAE,YAAY;IACxB,YAAY,EAAE,cAAc;CAC7B,CAAC;
|
|
1
|
+
{"version":3,"file":"config.service.js","sourceRoot":"","sources":["../../../src/modules/config/config.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type ArcliConfig, type ConfigPublicKey } from '../config/config.schemas';
|
|
2
|
+
export type ConfigFieldGroup = 'credenciales' | 'defaults' | 'emisor' | 'pdf';
|
|
3
|
+
/** Un dato de la config que se puede cambiar desde el modo interactivo. */
|
|
4
|
+
export interface ConfigField {
|
|
5
|
+
/** Valores posibles para elegir de una lista; sin esto se escribe. */
|
|
6
|
+
readonly choices?: readonly string[];
|
|
7
|
+
readonly group: ConfigFieldGroup;
|
|
8
|
+
readonly hint?: string;
|
|
9
|
+
readonly key: ConfigPublicKey;
|
|
10
|
+
readonly label: string;
|
|
11
|
+
/** Las rutas se muestran enmascaradas, igual que en `arcli config`. */
|
|
12
|
+
readonly path?: boolean;
|
|
13
|
+
readonly read: (config: ArcliConfig) => string | undefined;
|
|
14
|
+
}
|
|
15
|
+
export declare const CONFIG_GROUP_LABELS: Record<ConfigFieldGroup, string>;
|
|
16
|
+
export declare const CONFIG_FIELDS: readonly ConfigField[];
|
|
17
|
+
export declare function getConfigField(key: ConfigPublicKey): ConfigField;
|
|
18
|
+
/** Valor para mostrar al lado del nombre. */
|
|
19
|
+
export declare function describeConfigValue(field: ConfigField, config: ArcliConfig): string;
|
|
20
|
+
/** Lo minimo para emitir: sin esto el modo interactivo no puede crear la sesion con ARCA. */
|
|
21
|
+
export declare const REQUIRED_SETUP_KEYS: readonly ConfigPublicKey[];
|
|
22
|
+
export declare function listMissingSetupKeys(config: ArcliConfig): ConfigPublicKey[];
|