arcli 1.7.1 → 1.8.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 +23 -1
- package/README.md +9 -16
- package/dist/cli/commands/vouchers.command.js +4 -3
- package/dist/cli/commands/vouchers.command.js.map +1 -1
- package/dist/cli/help.js +1 -1
- package/dist/cli/interactive/config.flow.d.ts +1 -1
- package/dist/cli/interactive/config.flow.js +53 -18
- package/dist/cli/interactive/config.flow.js.map +1 -1
- package/dist/cli/interactive/history.flow.d.ts +4 -0
- package/dist/cli/interactive/history.flow.js +22 -8
- package/dist/cli/interactive/history.flow.js.map +1 -1
- package/dist/cli/interactive/interactive-mode.js +24 -10
- package/dist/cli/interactive/interactive-mode.js.map +1 -1
- package/dist/cli/interactive/invoice-picker.d.ts +25 -0
- package/dist/cli/interactive/invoice-picker.js +152 -0
- package/dist/cli/interactive/invoice-picker.js.map +1 -0
- package/dist/cli/interactive/note.flow.d.ts +6 -2
- package/dist/cli/interactive/note.flow.js +19 -30
- package/dist/cli/interactive/note.flow.js.map +1 -1
- package/dist/cli/interactive/prompts.d.ts +34 -5
- package/dist/cli/interactive/prompts.js +181 -19
- package/dist/cli/interactive/prompts.js.map +1 -1
- package/dist/cli/interactive/repeat.flow.js +5 -11
- package/dist/cli/interactive/repeat.flow.js.map +1 -1
- package/dist/cli/interactive/status.flow.d.ts +3 -0
- package/dist/cli/interactive/status.flow.js +29 -0
- package/dist/cli/interactive/status.flow.js.map +1 -0
- package/dist/cli/version.d.ts +1 -1
- package/dist/cli/version.js +1 -1
- package/dist/modules/config/config-value-parser.d.ts +1 -1
- package/dist/modules/config/config-value-parser.js +10 -0
- package/dist/modules/config/config-value-parser.js.map +1 -1
- package/dist/modules/config/config.presenter.d.ts +4 -0
- package/dist/modules/config/config.presenter.js +57 -37
- package/dist/modules/config/config.presenter.js.map +1 -1
- package/dist/modules/config/config.schemas.d.ts +2 -0
- package/dist/modules/config/config.schemas.js +4 -0
- package/dist/modules/config/config.schemas.js.map +1 -1
- package/dist/modules/config/config.sections.d.ts +14 -0
- package/dist/modules/config/config.sections.js +61 -0
- package/dist/modules/config/config.sections.js.map +1 -0
- package/dist/modules/config/config.service.js +1 -0
- package/dist/modules/config/config.service.js.map +1 -1
- package/dist/modules/interactive/config-fields.d.ts +1 -3
- package/dist/modules/interactive/config-fields.js +36 -42
- package/dist/modules/interactive/config-fields.js.map +1 -1
- package/dist/modules/vouchers/voucher-history.d.ts +9 -4
- package/dist/modules/vouchers/voucher-history.js +8 -3
- package/dist/modules/vouchers/voucher-history.js.map +1 -1
- package/dist/modules/vouchers/voucher-history.presenter.d.ts +9 -2
- package/dist/modules/vouchers/voucher-history.presenter.js +32 -14
- package/dist/modules/vouchers/voucher-history.presenter.js.map +1 -1
- package/dist/ui/components/statusBar.d.ts +2 -0
- package/dist/ui/components/statusBar.js +5 -1
- package/dist/ui/components/statusBar.js.map +1 -1
- package/llms.txt +2 -2
- package/package.json +1 -1
- package/dist/cli/interactive/lookup.flow.d.ts +0 -5
- package/dist/cli/interactive/lookup.flow.js +0 -72
- package/dist/cli/interactive/lookup.flow.js.map +0 -1
|
@@ -1,115 +1,109 @@
|
|
|
1
1
|
import { formatArcaDateAsArgentineDate } from '../../lib/dates/arca-date.js';
|
|
2
2
|
import { maskPath } from '../../lib/paths/mask-path.js';
|
|
3
3
|
import { arcliDefaultConceptSchema, arcliDefaultIvaConditionSchema, arcliEnvironmentSchema, arcliPdfModeSchema, } from '../config/config.schemas.js';
|
|
4
|
+
import { CONFIG_LABELS } from '../config/config.sections.js';
|
|
5
|
+
import { MAX_RECENT_VOUCHERS, RECENT_VOUCHERS_LIMIT } from '../vouchers/voucher-history.js';
|
|
4
6
|
const date = (value) => (value ? formatArcaDateAsArgentineDate(value) : undefined);
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
}
|
|
11
|
-
export const CONFIG_FIELDS = [
|
|
12
|
-
{ group: 'credenciales', key: 'cuit', label: 'CUIT del emisor', read: (c) => c.cuit, hint: '11 digitos' },
|
|
7
|
+
/**
|
|
8
|
+
* Datos editables desde el asistente. El orden y las secciones salen de CONFIG_SECTIONS; emitir, json y bruto
|
|
9
|
+
* no estan porque solo cambian el CLI con flags, no el asistente.
|
|
10
|
+
*/
|
|
11
|
+
const FIELD_DEFINITIONS = [
|
|
12
|
+
{ key: 'cuit', read: (c) => c.cuit, hint: '11 digitos' },
|
|
13
13
|
{
|
|
14
14
|
choices: arcliEnvironmentSchema.options,
|
|
15
|
-
group: 'credenciales',
|
|
16
15
|
key: 'entorno',
|
|
17
|
-
label: 'Entorno',
|
|
18
16
|
read: (c) => c.entornoPorDefecto,
|
|
19
17
|
},
|
|
20
18
|
{
|
|
21
|
-
group: 'credenciales',
|
|
22
19
|
key: 'cert.testing',
|
|
23
|
-
label: 'Certificado de testing',
|
|
24
20
|
path: true,
|
|
25
21
|
read: (c) => c.cert.testing,
|
|
26
22
|
},
|
|
27
23
|
{
|
|
28
|
-
group: 'credenciales',
|
|
29
24
|
key: 'key.testing',
|
|
30
|
-
label: 'Clave privada de testing',
|
|
31
25
|
path: true,
|
|
32
26
|
read: (c) => c.key.testing,
|
|
33
27
|
},
|
|
34
28
|
{
|
|
35
|
-
group: 'credenciales',
|
|
36
29
|
key: 'cert.produccion',
|
|
37
|
-
label: 'Certificado de produccion',
|
|
38
30
|
path: true,
|
|
39
31
|
read: (c) => c.cert.produccion,
|
|
40
32
|
},
|
|
41
33
|
{
|
|
42
|
-
group: 'credenciales',
|
|
43
34
|
key: 'key.produccion',
|
|
44
|
-
label: 'Clave privada de produccion',
|
|
45
35
|
path: true,
|
|
46
36
|
read: (c) => c.key.produccion,
|
|
47
37
|
},
|
|
48
38
|
{
|
|
49
|
-
group: 'defaults',
|
|
50
39
|
hint: 'numero',
|
|
51
40
|
key: 'puntoVenta',
|
|
52
|
-
label: 'Punto de venta',
|
|
53
41
|
read: (c) => c.puntoVentaPorDefecto?.toString(),
|
|
54
42
|
},
|
|
55
43
|
{
|
|
56
44
|
choices: arcliDefaultConceptSchema.options,
|
|
57
|
-
group: 'defaults',
|
|
58
45
|
key: 'concepto',
|
|
59
|
-
label: 'Concepto',
|
|
60
46
|
read: (c) => c.conceptoPorDefecto,
|
|
61
47
|
},
|
|
62
48
|
{
|
|
63
49
|
choices: arcliDefaultIvaConditionSchema.options,
|
|
64
|
-
group: 'defaults',
|
|
65
50
|
key: 'ivaReceptor',
|
|
66
|
-
label: 'IVA del receptor',
|
|
67
51
|
read: (c) => c.ivaReceptorPorDefecto,
|
|
68
52
|
},
|
|
69
53
|
{
|
|
70
54
|
choices: ['general', 'reducida', 'incrementada', 'cero', '5', '2.5'],
|
|
71
|
-
group: 'defaults',
|
|
72
55
|
key: 'alicuota',
|
|
73
|
-
label: 'Alicuota de IVA (A y B)',
|
|
74
56
|
read: (c) => c.alicuotaPorDefecto,
|
|
75
57
|
},
|
|
76
|
-
{
|
|
77
|
-
|
|
58
|
+
{
|
|
59
|
+
hint: `1 a ${MAX_RECENT_VOUCHERS}, por defecto ${RECENT_VOUCHERS_LIMIT}`,
|
|
60
|
+
key: 'comprobantesPorLista',
|
|
61
|
+
read: (c) => c.comprobantesPorLista?.toString(),
|
|
62
|
+
},
|
|
63
|
+
{ hint: '22 digitos', key: 'cbu', read: (c) => c.cbu },
|
|
64
|
+
{ key: 'aliasCbu', read: (c) => c.aliasCbu },
|
|
78
65
|
{
|
|
79
66
|
choices: ['si', 'no'],
|
|
80
|
-
group: 'defaults',
|
|
81
67
|
key: 'verificarFce',
|
|
82
|
-
label: 'Verificar regimen FCE del receptor',
|
|
83
68
|
read: (c) => (c.verificarFce === undefined ? undefined : c.verificarFce ? 'si' : 'no'),
|
|
84
69
|
},
|
|
85
70
|
{
|
|
86
71
|
choices: arcliPdfModeSchema.options,
|
|
87
|
-
group: 'pdf',
|
|
88
72
|
key: 'pdf',
|
|
89
|
-
label: 'Cuando generar el PDF',
|
|
90
73
|
read: (c) => c.pdf,
|
|
91
74
|
},
|
|
92
|
-
{
|
|
93
|
-
{
|
|
94
|
-
{
|
|
95
|
-
{
|
|
75
|
+
{ key: 'pdfCarpeta', path: true, read: (c) => c.pdfCarpeta },
|
|
76
|
+
{ key: 'pdfNavegador', path: true, read: (c) => c.pdfNavegador },
|
|
77
|
+
{ key: 'emisor.razonSocial', read: (c) => c.emisor.razonSocial },
|
|
78
|
+
{ key: 'emisor.domicilio', read: (c) => c.emisor.domicilio },
|
|
96
79
|
{
|
|
97
|
-
group: 'emisor',
|
|
98
80
|
hint: 'D/MM/YYYY',
|
|
99
81
|
key: 'emisor.inicioActividades',
|
|
100
|
-
label: 'Inicio de actividades',
|
|
101
82
|
read: (c) => date(c.emisor.inicioActividades),
|
|
102
83
|
},
|
|
103
|
-
{
|
|
84
|
+
{ key: 'emisor.iibb', read: (c) => c.emisor.iibb },
|
|
104
85
|
{
|
|
105
86
|
choices: arcliDefaultIvaConditionSchema.options,
|
|
106
|
-
group: 'emisor',
|
|
107
87
|
key: 'emisor.condicionIva',
|
|
108
|
-
label: 'Condicion de IVA',
|
|
109
88
|
read: (c) => c.emisor.condicionIva,
|
|
110
89
|
},
|
|
111
|
-
{
|
|
90
|
+
{ key: 'emisor.logo', path: true, read: (c) => c.emisor.logo },
|
|
91
|
+
{
|
|
92
|
+
hint: 'codigo de moneda, por ejemplo PES o USD',
|
|
93
|
+
key: 'moneda',
|
|
94
|
+
read: (c) => c.monedaPorDefecto,
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
hint: 'solo para moneda extranjera',
|
|
98
|
+
key: 'cotizacion',
|
|
99
|
+
read: (c) => c.cotizacionPorDefecto?.toString(),
|
|
100
|
+
},
|
|
101
|
+
{ key: 'ticketPath', path: true, read: (c) => c.ticketPath },
|
|
112
102
|
];
|
|
103
|
+
export const CONFIG_FIELDS = FIELD_DEFINITIONS.map((field) => ({
|
|
104
|
+
...field,
|
|
105
|
+
label: CONFIG_LABELS[field.key],
|
|
106
|
+
}));
|
|
113
107
|
export function getConfigField(key) {
|
|
114
108
|
const field = CONFIG_FIELDS.find((candidate) => candidate.key === key);
|
|
115
109
|
if (!field) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-fields.js","sourceRoot":"","sources":["../../../src/modules/interactive/config-fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAEL,yBAAyB,EACzB,8BAA8B,EAC9B,sBAAsB,EACtB,kBAAkB,GAEnB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"config-fields.js","sourceRoot":"","sources":["../../../src/modules/interactive/config-fields.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,13 +22,18 @@ export interface VoucherHistoryGateway {
|
|
|
22
22
|
getLastNumber(pointOfSale: number, voucherType: number): Promise<number>;
|
|
23
23
|
getVoucher(number: number, pointOfSale: number, voucherType: number): Promise<IssuedVoucher | undefined>;
|
|
24
24
|
}
|
|
25
|
-
|
|
25
|
+
/** Cuantos comprobantes listar si no se pide otra cantidad; se cambia con `config.comprobantesPorLista`. */
|
|
26
|
+
export declare const RECENT_VOUCHERS_LIMIT = 15;
|
|
26
27
|
export declare const MAX_RECENT_VOUCHERS = 50;
|
|
27
28
|
export declare function resolveDocumentType(code: number): BillingDocumentType | undefined;
|
|
28
29
|
/** ARCA no devuelve la alicuota de la factura; se deduce de IVA / neto cuando coincide con una tasa conocida. */
|
|
29
30
|
export declare function inferIvaRate(netAmount: number, ivaAmount: number): BillingIvaRate | undefined;
|
|
30
|
-
|
|
31
|
-
export declare function listRecentVouchers(gateway: VoucherHistoryGateway, pointOfSale: number, voucherType: number, options?: {
|
|
31
|
+
interface ListVouchersOptions {
|
|
32
32
|
readonly concurrency?: number;
|
|
33
33
|
readonly limit?: number;
|
|
34
|
-
}
|
|
34
|
+
}
|
|
35
|
+
/** Ultimos comprobantes emitidos, del mas nuevo al mas viejo. */
|
|
36
|
+
export declare function listRecentVouchers(gateway: VoucherHistoryGateway, pointOfSale: number, voucherType: number, options?: ListVouchersOptions): Promise<IssuedVoucher[]>;
|
|
37
|
+
/** Comprobantes desde `fromNumber` hacia atras (incluido), para paginar sin volver a pedir el ultimo numero. */
|
|
38
|
+
export declare function listVouchersFrom(gateway: VoucherHistoryGateway, pointOfSale: number, voucherType: number, fromNumber: number, options?: ListVouchersOptions): Promise<IssuedVoucher[]>;
|
|
39
|
+
export {};
|
|
@@ -12,7 +12,8 @@ const IVA_RATES = [
|
|
|
12
12
|
['21', 0.21],
|
|
13
13
|
['27', 0.27],
|
|
14
14
|
];
|
|
15
|
-
|
|
15
|
+
/** Cuantos comprobantes listar si no se pide otra cantidad; se cambia con `config.comprobantesPorLista`. */
|
|
16
|
+
export const RECENT_VOUCHERS_LIMIT = 15;
|
|
16
17
|
export const MAX_RECENT_VOUCHERS = 50;
|
|
17
18
|
export function resolveDocumentType(code) {
|
|
18
19
|
return DOCUMENT_TYPES_BY_CODE[code];
|
|
@@ -28,10 +29,14 @@ export function inferIvaRate(netAmount, ivaAmount) {
|
|
|
28
29
|
}
|
|
29
30
|
/** Ultimos comprobantes emitidos, del mas nuevo al mas viejo. */
|
|
30
31
|
export async function listRecentVouchers(gateway, pointOfSale, voucherType, options = {}) {
|
|
32
|
+
const lastNumber = await gateway.getLastNumber(pointOfSale, voucherType);
|
|
33
|
+
return listVouchersFrom(gateway, pointOfSale, voucherType, lastNumber, options);
|
|
34
|
+
}
|
|
35
|
+
/** Comprobantes desde `fromNumber` hacia atras (incluido), para paginar sin volver a pedir el ultimo numero. */
|
|
36
|
+
export async function listVouchersFrom(gateway, pointOfSale, voucherType, fromNumber, options = {}) {
|
|
31
37
|
const limit = options.limit ?? RECENT_VOUCHERS_LIMIT;
|
|
32
38
|
const concurrency = options.concurrency ?? 4;
|
|
33
|
-
const
|
|
34
|
-
const numbers = Array.from({ length: Math.min(limit, lastNumber) }, (_, index) => lastNumber - index);
|
|
39
|
+
const numbers = Array.from({ length: Math.max(0, Math.min(limit, fromNumber)) }, (_, index) => fromNumber - index);
|
|
35
40
|
const vouchers = [];
|
|
36
41
|
// Lotes chicos: cada consulta tarda ~0,5 s y no conviene saturar el web service.
|
|
37
42
|
for (let start = 0; start < numbers.length; start += concurrency) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voucher-history.js","sourceRoot":"","sources":["../../../src/modules/vouchers/voucher-history.ts"],"names":[],"mappings":"AA2BA,MAAM,sBAAsB,GAAwC;IAClE,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,kBAAkB;CACvB,CAAC;AAEF,MAAM,SAAS,GAAqD;IAClE,CAAC,GAAG,EAAE,CAAC,CAAC;IACR,CAAC,KAAK,EAAE,KAAK,CAAC;IACd,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,MAAM,EAAE,KAAK,CAAC;IACf,CAAC,IAAI,EAAE,IAAI,CAAC;IACZ,CAAC,IAAI,EAAE,IAAI,CAAC;CACb,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC;AACxC,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAEtC,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,iHAAiH;AACjH,MAAM,UAAU,YAAY,CAAC,SAAiB,EAAE,SAAiB;IAC/D,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;QACnB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,GAAG,SAAS,GAAG,SAAS,CAAC;IACpC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;IAE3E,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;
|
|
1
|
+
{"version":3,"file":"voucher-history.js","sourceRoot":"","sources":["../../../src/modules/vouchers/voucher-history.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,8 +14,15 @@ export interface VoucherDetailReport {
|
|
|
14
14
|
}
|
|
15
15
|
export declare function formatVoucherNumber(pointOfSale: number, number: number): string;
|
|
16
16
|
export declare function formatReceiver(voucher: IssuedVoucher): string;
|
|
17
|
-
/**
|
|
18
|
-
export declare function
|
|
17
|
+
/** Titulo del listado de ultimos comprobantes, tambien usado por el selector del modo interactivo. */
|
|
18
|
+
export declare function formatVoucherListTitle(report: Omit<VoucherListReport, 'vouchers'>): string;
|
|
19
|
+
/** Una fila del listado: numero, fecha, receptor, total y CAE, en columnas alineadas. */
|
|
20
|
+
export declare function formatVoucherListRow(pointOfSale: number, voucher: IssuedVoucher): string;
|
|
21
|
+
/**
|
|
22
|
+
* Filas compactas para elegir un comprobante: cada columna mide lo justo para el dato mas largo de la lista
|
|
23
|
+
* y las separa `separator`.
|
|
24
|
+
*/
|
|
25
|
+
export declare function formatVoucherPickerRows(pointOfSale: number, vouchers: readonly IssuedVoucher[], separator: string): string[];
|
|
19
26
|
export declare function formatVoucherListAsText(report: VoucherListReport): string;
|
|
20
27
|
export declare function formatVoucherListAsJson(report: VoucherListReport): string;
|
|
21
28
|
export declare function formatVoucherDetailAsJson(report: VoucherDetailReport): string;
|
|
@@ -16,28 +16,46 @@ export function formatReceiver(voucher) {
|
|
|
16
16
|
const label = DOCUMENT_LABELS[voucher.documentTypeCode] ?? `Doc ${voucher.documentTypeCode}`;
|
|
17
17
|
return `${label} ${voucher.documentNumber}`;
|
|
18
18
|
}
|
|
19
|
-
/**
|
|
20
|
-
export function
|
|
19
|
+
/** Titulo del listado de ultimos comprobantes, tambien usado por el selector del modo interactivo. */
|
|
20
|
+
export function formatVoucherListTitle(report) {
|
|
21
|
+
return `Ultimas ${report.voucherKind.displayName} · PV ${report.pointOfSale} · ${report.environment}`;
|
|
22
|
+
}
|
|
23
|
+
/** Una fila del listado: numero, fecha, receptor, total y CAE, en columnas alineadas. */
|
|
24
|
+
export function formatVoucherListRow(pointOfSale, voucher) {
|
|
21
25
|
return [
|
|
22
|
-
|
|
26
|
+
formatVoucherNumber(pointOfSale, voucher.number),
|
|
23
27
|
formatArcaDateAsArgentineDate(voucher.date),
|
|
24
28
|
formatReceiver(voucher).padEnd(20),
|
|
25
|
-
formatMoneyLabel(voucher.total),
|
|
26
|
-
|
|
29
|
+
formatMoneyLabel(voucher.total).padStart(16),
|
|
30
|
+
voucher.cae ? `CAE ${voucher.cae}` : '',
|
|
31
|
+
]
|
|
32
|
+
.join(' ')
|
|
33
|
+
.trimEnd();
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Filas compactas para elegir un comprobante: cada columna mide lo justo para el dato mas largo de la lista
|
|
37
|
+
* y las separa `separator`.
|
|
38
|
+
*/
|
|
39
|
+
export function formatVoucherPickerRows(pointOfSale, vouchers, separator) {
|
|
40
|
+
const columns = vouchers.map((voucher) => ({
|
|
41
|
+
cae: voucher.cae ? `CAE ${voucher.cae}` : '',
|
|
42
|
+
date: formatArcaDateAsArgentineDate(voucher.date),
|
|
43
|
+
number: formatVoucherNumber(pointOfSale, voucher.number),
|
|
44
|
+
receiver: formatReceiver(voucher),
|
|
45
|
+
total: formatMoneyLabel(voucher.total),
|
|
46
|
+
}));
|
|
47
|
+
const receiverWidth = Math.max(0, ...columns.map((column) => column.receiver.length));
|
|
48
|
+
const totalWidth = Math.max(0, ...columns.map((column) => column.total.length));
|
|
49
|
+
return columns.map((column) => [column.number, column.date, column.receiver.padEnd(receiverWidth), column.total.padStart(totalWidth), column.cae]
|
|
50
|
+
.filter(Boolean)
|
|
51
|
+
.join(separator));
|
|
27
52
|
}
|
|
28
53
|
export function formatVoucherListAsText(report) {
|
|
29
|
-
const {
|
|
54
|
+
const { pointOfSale, voucherKind, vouchers } = report;
|
|
30
55
|
if (vouchers.length === 0) {
|
|
31
56
|
return noticePanel(`No hay ${voucherKind.displayName} emitidas en el punto de venta ${pointOfSale}.`, 'muted');
|
|
32
57
|
}
|
|
33
|
-
|
|
34
|
-
formatVoucherNumber(pointOfSale, voucher.number),
|
|
35
|
-
formatArcaDateAsArgentineDate(voucher.date),
|
|
36
|
-
formatReceiver(voucher).padEnd(20),
|
|
37
|
-
formatMoneyLabel(voucher.total).padStart(16),
|
|
38
|
-
voucher.cae ? `CAE ${voucher.cae}` : '',
|
|
39
|
-
].join(' '));
|
|
40
|
-
return keyValuePanel(`Ultimas ${voucherKind.displayName} · PV ${pointOfSale} · ${environment}`, rows, undefined, 'wide', undefined, 'listing');
|
|
58
|
+
return keyValuePanel(formatVoucherListTitle(report), vouchers.map((voucher) => formatVoucherListRow(pointOfSale, voucher)), undefined, 'wide', undefined, 'listing');
|
|
41
59
|
}
|
|
42
60
|
function serializeVoucher(voucher) {
|
|
43
61
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voucher-history.presenter.js","sourceRoot":"","sources":["../../../src/modules/vouchers/voucher-history.presenter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AACrG,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAmBtG,MAAM,eAAe,GAA2B;IAC9C,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,KAAK;CACV,CAAC;AAEF,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,IAAI,OAAO,CAAC,gBAAgB,KAAK,EAAE,EAAE,CAAC;QACpC,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,OAAO,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAE7F,OAAO,GAAG,KAAK,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;AAC9C,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"voucher-history.presenter.js","sourceRoot":"","sources":["../../../src/modules/vouchers/voucher-history.presenter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AACrG,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAmBtG,MAAM,eAAe,GAA2B;IAC9C,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,KAAK;CACV,CAAC;AAEF,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,IAAI,OAAO,CAAC,gBAAgB,KAAK,EAAE,EAAE,CAAC;QACpC,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,OAAO,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAE7F,OAAO,GAAG,KAAK,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;AAC9C,CAAC;AAED,sGAAsG;AACtG,MAAM,UAAU,sBAAsB,CAAC,MAA2C;IAChF,OAAO,WAAW,MAAM,CAAC,WAAW,CAAC,WAAW,SAAS,MAAM,CAAC,WAAW,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;AACxG,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,oBAAoB,CAAC,WAAmB,EAAE,OAAsB;IAC9E,OAAO;QACL,mBAAmB,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC;QAChD,6BAA6B,CAAC,OAAO,CAAC,IAAI,CAAC;QAC3C,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE;KACxC;SACE,IAAI,CAAC,IAAI,CAAC;SACV,OAAO,EAAE,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,WAAmB,EACnB,QAAkC,EAClC,SAAiB;IAEjB,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACzC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE;QAC5C,IAAI,EAAE,6BAA6B,CAAC,OAAO,CAAC,IAAI,CAAC;QACjD,MAAM,EAAE,mBAAmB,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC;QACxD,QAAQ,EAAE,cAAc,CAAC,OAAO,CAAC;QACjC,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC;KACvC,CAAC,CAAC,CAAC;IACJ,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACtF,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAEhF,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAC5B,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC;SAC/G,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,SAAS,CAAC,CACnB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAAyB;IAC/D,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAEtD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,WAAW,CAAC,UAAU,WAAW,CAAC,WAAW,kCAAkC,WAAW,GAAG,EAAE,OAAO,CAAC,CAAC;IACjH,CAAC;IAED,OAAO,aAAa,CAClB,sBAAsB,CAAC,MAAM,CAAC,EAC9B,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,oBAAoB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,EACrE,SAAS,EACT,MAAM,EACN,SAAS,EACT,SAAS,CACV,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAsB;IAC9C,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,IAAI;QACxB,cAAc,EAAE,OAAO,CAAC,aAAa,IAAI,IAAI;QAC7C,QAAQ,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI;QACjC,UAAU,EAAE,OAAO,CAAC,YAAY,IAAI,IAAI;QACxC,KAAK,EAAE,OAAO,CAAC,IAAI;QACnB,QAAQ,EAAE;YACR,MAAM,EAAE,OAAO,CAAC,YAAY,IAAI,CAAC;YACjC,GAAG,EAAE,OAAO,CAAC,SAAS;YACtB,IAAI,EAAE,OAAO,CAAC,SAAS;YACvB,SAAS,EAAE,OAAO,CAAC,aAAa,IAAI,CAAC;YACrC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,QAAQ,EAAE,OAAO,CAAC,WAAW,IAAI,CAAC;SACnC;QACD,MAAM,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI;QAChC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,eAAe,EAAE,OAAO,CAAC,cAAc;QACvC,SAAS,EAAE,OAAO,CAAC,MAAM,IAAI,IAAI;QACjC,aAAa,EAAE,OAAO,CAAC,gBAAgB;KACxC,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,WAAkC;IAC9D,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC;AAC/G,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAAyB;IAC/D,OAAO,IAAI,CAAC,SAAS,CACnB;QACE,GAAG,oBAAoB,CAAC,MAAM,CAAC,WAAW,CAAC;QAC3C,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC;QACnD,OAAO,EAAE,MAAM,CAAC,WAAW;QAC3B,UAAU,EAAE,MAAM,CAAC,WAAW;KAC/B,EACD,IAAI,EACJ,CAAC,CACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAA2B;IACnE,OAAO,IAAI,CAAC,SAAS,CACnB;QACE,GAAG,oBAAoB,CAAC,MAAM,CAAC,WAAW,CAAC;QAC3C,GAAG,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC;QACnC,OAAO,EAAE,MAAM,CAAC,WAAW;QAC3B,UAAU,EAAE,MAAM,CAAC,WAAW;KAC/B,EACD,IAAI,EACJ,CAAC,CACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAA2B;IACnE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IACrD,MAAM,IAAI,GAAqC;QAC7C,CAAC,QAAQ,EAAE,mBAAmB,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5D,CAAC,OAAO,EAAE,6BAA6B,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACtD,CAAC,UAAU,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC,UAAU,EAAE,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACjD,CAAC,QAAQ,EAAE,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;KAClD,CAAC;IAEF,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;QACnD,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,CAAC,IAAI,CACP,CAAC,cAAc,EAAE,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EACrD,CAAC,aAAa,EAAE,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CACrD,CAAC;IAEF,IAAI,OAAO,CAAC,YAAY;QAAE,IAAI,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAChG,IAAI,OAAO,CAAC,aAAa;QAAE,IAAI,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACtG,IAAI,OAAO,CAAC,WAAW;QAAE,IAAI,CAAC,IAAI,CAAC,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAEhG,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC;IAE7F,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,6BAA6B,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACvF,CAAC;IAED,OAAO,aAAa,CAClB,WAAW,CAAC,WAAW,EACvB,kBAAkB,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,yBAAyB,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,EACpF,OAAO,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EACtF,SAAS,EACT,OAAO,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAC7C,QAAQ,CACT,CAAC;AACJ,CAAC"}
|
|
@@ -3,4 +3,6 @@ import { type UiTextColor } from '../primitives/text';
|
|
|
3
3
|
* Barra de una linea con el contexto de la sesion, como la barra de estado de un editor:
|
|
4
4
|
* `━━ TITULO ━━━━━━━━━━━━ estado ━━`. No es una caja: no compite con los paneles de contenido.
|
|
5
5
|
*/
|
|
6
|
+
/** Ancho de la barra de estado: el preset `wide`, o menos si la terminal es mas angosta. */
|
|
7
|
+
export declare function statusBarWidth(): number;
|
|
6
8
|
export declare function statusBar(title: string, status: string, statusColor?: UiTextColor): string;
|
|
@@ -6,9 +6,13 @@ import { UI_THEME } from '../theme/theme.js';
|
|
|
6
6
|
* Barra de una linea con el contexto de la sesion, como la barra de estado de un editor:
|
|
7
7
|
* `━━ TITULO ━━━━━━━━━━━━ estado ━━`. No es una caja: no compite con los paneles de contenido.
|
|
8
8
|
*/
|
|
9
|
+
/** Ancho de la barra de estado: el preset `wide`, o menos si la terminal es mas angosta. */
|
|
10
|
+
export function statusBarWidth() {
|
|
11
|
+
return fitToTerminal(UI_THEME.widths.wide.min);
|
|
12
|
+
}
|
|
9
13
|
export function statusBar(title, status, statusColor = 'info') {
|
|
10
14
|
const fill = usesAsciiBorders() ? '=' : '━';
|
|
11
|
-
const width =
|
|
15
|
+
const width = statusBarWidth();
|
|
12
16
|
const left = ` ${bold(title.toUpperCase())} `;
|
|
13
17
|
const right = ` ${colorize(status, statusColor)} `;
|
|
14
18
|
const used = 2 + stripAnsi(left).length + stripAnsi(right).length + 2;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statusBar.js","sourceRoot":"","sources":["../../../src/ui/components/statusBar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAoB,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,KAAa,EAAE,MAAc,EAAE,cAA2B,MAAM;IACxF,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAC5C,MAAM,KAAK,GAAG,
|
|
1
|
+
{"version":3,"file":"statusBar.js","sourceRoot":"","sources":["../../../src/ui/components/statusBar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAoB,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C;;;GAGG;AACH,4FAA4F;AAC5F,MAAM,UAAU,cAAc;IAC5B,OAAO,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAa,EAAE,MAAc,EAAE,cAA2B,MAAM;IACxF,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAC5C,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC;IAC/B,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC;IAC9C,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC;IACnD,MAAM,IAAI,GAAG,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACtE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC;IAEzC,OAAO;QACL,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;QACjC,IAAI;QACJ,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QACtC,KAAK;QACL,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;KAClC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACb,CAAC"}
|
package/llms.txt
CHANGED
|
@@ -157,7 +157,7 @@ arcli config establecer <clave> <valor>
|
|
|
157
157
|
arcli config eliminar <clave>
|
|
158
158
|
```
|
|
159
159
|
|
|
160
|
-
Claves válidas: `cuit`, `cbu`, `aliasCbu` (solo facturas FCE), `verificarFce`, `alicuota`, `puntoVenta`, `concepto`, `ivaReceptor`, `moneda`, `cotizacion`,
|
|
160
|
+
Claves válidas: `cuit`, `cbu`, `aliasCbu` (solo facturas FCE), `verificarFce`, `alicuota`, `puntoVenta`, `comprobantesPorLista` (1 a 50, por defecto 15), `concepto`, `ivaReceptor`, `moneda`, `cotizacion`,
|
|
161
161
|
`entorno` (`testing`/`produccion`), `emitir`, `json`, `bruto` (booleanos: `true/false`,
|
|
162
162
|
`si/no`, `1/0`), `cert.testing`, `cert.produccion`, `key.testing`, `key.produccion`
|
|
163
163
|
(rutas a archivos PEM, se validan al guardar), `ticketPath` (carpeta donde se cachea el
|
|
@@ -170,7 +170,7 @@ testing van a `testing/`), `pdfNavegador` (ruta a Chrome/Chromium/Edge), `emisor
|
|
|
170
170
|
|
|
171
171
|
## Otros comandos
|
|
172
172
|
|
|
173
|
-
- `arcli ultimos <tipo> [--cantidad N] [--pv N] [--json]`: últimos comprobantes emitidos (de 1 a 50
|
|
173
|
+
- `arcli ultimos <tipo> [--cantidad N] [--pv N] [--json]`: últimos comprobantes emitidos (de 1 a 50; por defecto `config.comprobantesPorLista` o 15), del más nuevo al más viejo. `tipo` es el atajo (`fb`, `nca`…).
|
|
174
174
|
- `arcli consultar <tipo> <numero> [--pv N] [--json]`: detalle de un comprobante emitido (CAE, vencimiento, importes, receptor). Si no existe, el error es `VOUCHER_NOT_FOUND`. Sirve para verificar después de emitir.
|
|
175
175
|
- `arcli pdf [estado|instalar|desinstalar] [--json]`: plugin que genera los PDFs. `arcli pdf instalar` lo descarga sin preguntar (sirve en scripts).
|
|
176
176
|
- `arcli estado [--json]`: si ARCA responde (servidores app/db/auth, latencia) y si el punto de venta configurado está habilitado. `listo: true` = se puede emitir. En testing ARCA no informa puntos de venta (`puntoVenta.estado: "sin-datos"`).
|
package/package.json
CHANGED
|
@@ -1,5 +0,0 @@
|
|
|
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>;
|
|
@@ -1,72 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lookup.flow.js","sourceRoot":"","sources":["../../../src/cli/interactive/lookup.flow.ts"],"names":[],"mappings":"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"}
|