arcli 1.5.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/CHANGELOG.md +35 -1
  2. package/README.md +39 -9
  3. package/dist/cli/commands/parameters.command.d.ts +2 -0
  4. package/dist/cli/commands/parameters.command.js +88 -0
  5. package/dist/cli/commands/parameters.command.js.map +1 -0
  6. package/dist/cli/help.js +4 -4
  7. package/dist/cli/help.js.map +1 -1
  8. package/dist/cli/interactive/advanced-options.d.ts +10 -3
  9. package/dist/cli/interactive/advanced-options.js +85 -45
  10. package/dist/cli/interactive/advanced-options.js.map +1 -1
  11. package/dist/cli/interactive/config.flow.d.ts +5 -0
  12. package/dist/cli/interactive/config.flow.js +211 -0
  13. package/dist/cli/interactive/config.flow.js.map +1 -0
  14. package/dist/cli/interactive/interactive-mode.js +38 -9
  15. package/dist/cli/interactive/interactive-mode.js.map +1 -1
  16. package/dist/cli/interactive/invoice.flow.d.ts +0 -2
  17. package/dist/cli/interactive/invoice.flow.js +5 -22
  18. package/dist/cli/interactive/invoice.flow.js.map +1 -1
  19. package/dist/cli/interactive/lookup.flow.d.ts +5 -0
  20. package/dist/cli/interactive/lookup.flow.js +72 -0
  21. package/dist/cli/interactive/lookup.flow.js.map +1 -0
  22. package/dist/cli/interactive/prompts.d.ts +5 -0
  23. package/dist/cli/interactive/prompts.js +14 -0
  24. package/dist/cli/interactive/prompts.js.map +1 -1
  25. package/dist/cli/interactive/repeat.flow.d.ts +13 -0
  26. package/dist/cli/interactive/repeat.flow.js +166 -0
  27. package/dist/cli/interactive/repeat.flow.js.map +1 -0
  28. package/dist/cli/program.js +2 -0
  29. package/dist/cli/program.js.map +1 -1
  30. package/dist/cli/version.d.ts +1 -1
  31. package/dist/cli/version.js +1 -1
  32. package/dist/lib/links.d.ts +2 -0
  33. package/dist/lib/links.js +3 -0
  34. package/dist/lib/links.js.map +1 -0
  35. package/dist/modules/config/config-doctor.js +2 -1
  36. package/dist/modules/config/config-doctor.js.map +1 -1
  37. package/dist/modules/config/config.service.d.ts +3 -1
  38. package/dist/modules/config/config.service.js +4 -0
  39. package/dist/modules/config/config.service.js.map +1 -1
  40. package/dist/modules/interactive/config-fields.d.ts +22 -0
  41. package/dist/modules/interactive/config-fields.js +133 -0
  42. package/dist/modules/interactive/config-fields.js.map +1 -0
  43. package/dist/modules/interactive/periods.d.ts +7 -0
  44. package/dist/modules/interactive/periods.js +13 -0
  45. package/dist/modules/interactive/periods.js.map +1 -0
  46. package/dist/modules/parameters/parameters.d.ts +50 -0
  47. package/dist/modules/parameters/parameters.js +34 -0
  48. package/dist/modules/parameters/parameters.js.map +1 -0
  49. package/dist/modules/parameters/parameters.presenter.d.ts +12 -0
  50. package/dist/modules/parameters/parameters.presenter.js +103 -0
  51. package/dist/modules/parameters/parameters.presenter.js.map +1 -0
  52. package/dist/modules/parameters/status.d.ts +31 -0
  53. package/dist/modules/parameters/status.js +35 -0
  54. package/dist/modules/parameters/status.js.map +1 -0
  55. package/dist/modules/pdf/pdf-data.mapper.js +9 -2
  56. package/dist/modules/pdf/pdf-data.mapper.js.map +1 -1
  57. package/dist/services/arca/arca-parameters.gateway.d.ts +10 -0
  58. package/dist/services/arca/arca-parameters.gateway.js +71 -0
  59. package/dist/services/arca/arca-parameters.gateway.js.map +1 -0
  60. package/llms.txt +2 -0
  61. package/package.json +2 -1
@@ -0,0 +1,103 @@
1
+ import { formatArcaDateAsArgentineDate } from '../../lib/dates/arca-date.js';
2
+ import { keyValuePanel, noticePanel, renderKeyValueRows, resolveKeyValueLabelWidth } from '../../ui/index.js';
3
+ import { PARAMETER_TABLE_NAMES, PARAMETER_TABLES, } from './parameters.js';
4
+ export function formatParameterTablesAsText() {
5
+ const rows = PARAMETER_TABLE_NAMES.map((name) => [name, PARAMETER_TABLES[name]]);
6
+ const allRows = [...rows, ['cotizacion <moneda>', 'Cotizacion oficial de ARCA, por ejemplo USD']];
7
+ return keyValuePanel('Tablas de ARCA', renderKeyValueRows(allRows, { labelWidth: resolveKeyValueLabelWidth('standard', allRows, [30, 70]) }), 'Uso: arcli parametros <tabla>', 'standard', undefined, 'sheet');
8
+ }
9
+ export function formatParameterTablesAsJson() {
10
+ return JSON.stringify({
11
+ tablas: [
12
+ ...PARAMETER_TABLE_NAMES.map((name) => ({ descripcion: PARAMETER_TABLES[name], tabla: name })),
13
+ { descripcion: 'Cotizacion oficial de ARCA', tabla: 'cotizacion' },
14
+ ],
15
+ }, null, 2);
16
+ }
17
+ export function formatParameterEntriesAsText(table, entries, environment) {
18
+ if (entries.length === 0) {
19
+ const reason = table === 'puntos-venta' && environment === 'testing'
20
+ ? 'En testing ARCA no informa puntos de venta: cualquier numero sirve para probar.'
21
+ : `ARCA no devolvio valores para ${PARAMETER_TABLES[table].toLowerCase()}.`;
22
+ return noticePanel(reason, 'muted');
23
+ }
24
+ const idWidth = Math.max(...entries.map((entry) => entry.id.length));
25
+ const rows = entries.map((entry) => [entry.id.padStart(idWidth), entry.description, entry.detail ? `(${entry.detail})` : ''].filter(Boolean).join(' '));
26
+ return keyValuePanel(`${PARAMETER_TABLES[table]} · ${environment}`, rows, undefined, 'wide', undefined, 'listing');
27
+ }
28
+ export function formatParameterEntriesAsJson(table, entries, environment) {
29
+ return JSON.stringify({
30
+ entorno: environment,
31
+ tabla: table,
32
+ valores: entries.map((entry) => ({
33
+ descripcion: entry.description,
34
+ detalle: entry.detail ?? null,
35
+ id: entry.id,
36
+ vigenteHasta: entry.validTo ?? null,
37
+ })),
38
+ }, null, 2);
39
+ }
40
+ export function formatQuotationAsText(quotation, environment) {
41
+ const rows = [
42
+ ['Moneda', quotation.currency],
43
+ ['Cotizacion', new Intl.NumberFormat('es-AR', { maximumFractionDigits: 6 }).format(quotation.rate)],
44
+ ['Fecha', quotation.date ? formatArcaDateAsArgentineDate(quotation.date) : 'N/D'],
45
+ ];
46
+ return keyValuePanel(`Cotizacion oficial · ${environment}`, renderKeyValueRows(rows, { labelWidth: resolveKeyValueLabelWidth('standard', rows, [30, 70]) }), undefined, 'standard', undefined, 'sheet');
47
+ }
48
+ export function formatQuotationAsJson(quotation, environment) {
49
+ return JSON.stringify({ cotizacion: quotation.rate, entorno: environment, fecha: quotation.date ?? null, moneda: quotation.currency }, null, 2);
50
+ }
51
+ function describePointOfSale(check, number) {
52
+ switch (check.kind) {
53
+ case 'habilitado':
54
+ return `${number} habilitado (${check.point.emissionType})`;
55
+ case 'bloqueado':
56
+ return `${number} bloqueado en ARCA`;
57
+ case 'de-baja':
58
+ return `${number} dado de baja`;
59
+ case 'no-encontrado':
60
+ return `${number} no existe en ARCA para este CUIT`;
61
+ case 'sin-datos':
62
+ return `${number} (en testing ARCA no informa puntos de venta)`;
63
+ case 'sin-configurar':
64
+ return 'no configurado';
65
+ }
66
+ }
67
+ export function formatStatusAsText(report) {
68
+ const rows = [
69
+ ['Entorno', report.environment],
70
+ ['Servidor de aplicacion', report.servers.app],
71
+ ['Base de datos', report.servers.db],
72
+ ['Autenticacion', report.servers.auth],
73
+ ['Tiempo de respuesta', `${report.latencyMs} ms`],
74
+ ['Punto de venta', describePointOfSale(report.pointOfSale, report.pointOfSaleNumber)],
75
+ ];
76
+ const footer = report.ready
77
+ ? 'ARCA responde: se puede emitir'
78
+ : report.pointOfSale.kind === 'sin-configurar'
79
+ ? 'Configure el punto de venta: arcli config establecer puntoVenta <numero>'
80
+ : report.pointOfSale.kind === 'habilitado' || report.pointOfSale.kind === 'sin-datos'
81
+ ? 'ARCA tiene problemas: espere unos minutos y reintente'
82
+ : 'Revise el punto de venta: arcli parametros puntos-venta';
83
+ return keyValuePanel('Estado de ARCA', renderKeyValueRows(rows, { labelWidth: resolveKeyValueLabelWidth('standard', rows, [30, 70]) }), footer, 'standard', report.ready ? 'success' : 'warning', 'sheet');
84
+ }
85
+ export function formatStatusAsJson(report) {
86
+ const point = 'point' in report.pointOfSale ? report.pointOfSale.point : undefined;
87
+ return JSON.stringify({
88
+ entorno: report.environment,
89
+ latenciaMs: report.latencyMs,
90
+ listo: report.ready,
91
+ puntoVenta: {
92
+ estado: report.pointOfSale.kind,
93
+ numero: report.pointOfSaleNumber ?? null,
94
+ tipoEmision: point?.emissionType ?? null,
95
+ },
96
+ servidores: {
97
+ aplicacion: report.servers.app,
98
+ autenticacion: report.servers.auth,
99
+ baseDeDatos: report.servers.db,
100
+ },
101
+ }, null, 2);
102
+ }
103
+ //# sourceMappingURL=parameters.presenter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parameters.presenter.js","sourceRoot":"","sources":["../../../src/modules/parameters/parameters.presenter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { ParametersGateway, SalesPoint, ServerStatus } from './parameters';
2
+ export type PointOfSaleCheck = {
3
+ readonly kind: 'habilitado';
4
+ readonly point: SalesPoint;
5
+ } | {
6
+ readonly kind: 'bloqueado' | 'de-baja';
7
+ readonly point: SalesPoint;
8
+ } | {
9
+ readonly kind: 'no-encontrado';
10
+ }
11
+ /** En testing ARCA no informa puntos de venta (error 602): no se puede verificar. */
12
+ | {
13
+ readonly kind: 'sin-datos';
14
+ } | {
15
+ readonly kind: 'sin-configurar';
16
+ };
17
+ export interface StatusReport {
18
+ readonly environment: 'produccion' | 'testing';
19
+ readonly latencyMs: number;
20
+ readonly pointOfSale: PointOfSaleCheck;
21
+ readonly pointOfSaleNumber?: number;
22
+ readonly servers: ServerStatus;
23
+ /** Se puede emitir: servidores OK y punto de venta habilitado (o no verificable en testing). */
24
+ readonly ready: boolean;
25
+ }
26
+ export declare function buildStatusReport(options: {
27
+ readonly environment: 'produccion' | 'testing';
28
+ readonly gateway: ParametersGateway;
29
+ readonly now?: () => number;
30
+ readonly pointOfSale?: number;
31
+ }): Promise<StatusReport>;
@@ -0,0 +1,35 @@
1
+ const SERVER_OK = 'OK';
2
+ function checkPointOfSale(points, number) {
3
+ if (!number) {
4
+ return { kind: 'sin-configurar' };
5
+ }
6
+ if (points.length === 0) {
7
+ return { kind: 'sin-datos' };
8
+ }
9
+ const point = points.find((candidate) => candidate.number === number);
10
+ if (!point) {
11
+ return { kind: 'no-encontrado' };
12
+ }
13
+ if (point.blocked) {
14
+ return { kind: 'bloqueado', point };
15
+ }
16
+ return point.closedOn ? { kind: 'de-baja', point } : { kind: 'habilitado', point };
17
+ }
18
+ export async function buildStatusReport(options) {
19
+ const now = options.now ?? Date.now;
20
+ const start = now();
21
+ const servers = await options.gateway.getServerStatus();
22
+ const latencyMs = now() - start;
23
+ const points = await options.gateway.getSalesPoints();
24
+ const pointOfSale = checkPointOfSale(points, options.pointOfSale);
25
+ const serversOk = [servers.app, servers.db, servers.auth].every((value) => value === SERVER_OK);
26
+ return {
27
+ environment: options.environment,
28
+ latencyMs,
29
+ pointOfSale,
30
+ pointOfSaleNumber: options.pointOfSale,
31
+ ready: serversOk && (pointOfSale.kind === 'habilitado' || pointOfSale.kind === 'sin-datos'),
32
+ servers,
33
+ };
34
+ }
35
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/modules/parameters/status.ts"],"names":[],"mappings":"AAoBA,MAAM,SAAS,GAAG,IAAI,CAAC;AAEvB,SAAS,gBAAgB,CAAC,MAA6B,EAAE,MAA0B;IACjF,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;IACpC,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IAC/B,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;IAEtE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;IACnC,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IACtC,CAAC;IAED,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;AACrF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAKvC;IACC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IACpC,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC;IACpB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;IACxD,MAAM,SAAS,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC;IAChC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;IACtD,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAClE,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IAEhG,OAAO;QACL,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,SAAS;QACT,WAAW;QACX,iBAAiB,EAAE,OAAO,CAAC,WAAW;QACtC,KAAK,EAAE,SAAS,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,YAAY,IAAI,WAAW,CAAC,IAAI,KAAK,WAAW,CAAC;QAC3F,OAAO;KACR,CAAC;AACJ,CAAC"}
@@ -47,7 +47,9 @@ function buildItems(result, description) {
47
47
  if (voucherKind.letter === 'c') {
48
48
  return [line(payload.ImpTotal)];
49
49
  }
50
- const items = (payload.Iva ?? []).map((entry) => line(entry.BaseImp, resolveIvaRateNumber(entry.Id)));
50
+ // La B no discrimina IVA: cada renglon va con el IVA incluido, como lo ve el cliente.
51
+ const includesIva = voucherKind.letter === 'b';
52
+ const items = (payload.Iva ?? []).map((entry) => includesIva ? line(round(entry.BaseImp + entry.Importe)) : line(entry.BaseImp, resolveIvaRateNumber(entry.Id)));
51
53
  if (payload.ImpOpEx > 0) {
52
54
  items.push(line(payload.ImpOpEx, undefined, ' (exento)'));
53
55
  }
@@ -96,7 +98,12 @@ export function mapBillingResultToPdfData(result, issuer, extras = {}) {
96
98
  fechaVtoPago: payload.FchVtoPago,
97
99
  importeExento: payload.ImpOpEx || undefined,
98
100
  importeIva: voucherKind.letter === 'c' ? 0 : payload.ImpIVA,
99
- importeNetoGravado: voucherKind.letter === 'c' ? payload.ImpTotal : payload.ImpNeto,
101
+ // La plantilla muestra este importe como "Subtotal" en la B y como neto gravado en la A.
102
+ importeNetoGravado: voucherKind.letter === 'c'
103
+ ? payload.ImpTotal
104
+ : voucherKind.letter === 'b'
105
+ ? round(payload.ImpTotal - payload.ImpTrib)
106
+ : payload.ImpNeto,
100
107
  importeNetoNoGravado: payload.ImpTotConc || undefined,
101
108
  importeTotal: round(payload.ImpTotal),
102
109
  items: buildItems(result, extras.descripcion?.trim() || DEFAULT_ITEM_DESCRIPTION),
@@ -1 +1 @@
1
- {"version":3,"file":"pdf-data.mapper.js","sourceRoot":"","sources":["../../../src/modules/pdf/pdf-data.mapper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pdf-data.mapper.js","sourceRoot":"","sources":["../../../src/modules/pdf/pdf-data.mapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { Arca } from '@arcasdk/core';
2
+ import type { ParameterEntry, ParametersGateway, ParameterTable, Quotation, SalesPoint, ServerStatus } from '../../modules/parameters/parameters';
3
+ export declare class ArcaParametersGateway implements ParametersGateway {
4
+ private readonly arca;
5
+ constructor(arca: Arca);
6
+ getServerStatus(): Promise<ServerStatus>;
7
+ getSalesPoints(): Promise<SalesPoint[]>;
8
+ getQuotation(currency: string): Promise<Quotation>;
9
+ listTable(table: Exclude<ParameterTable, 'puntos-venta'>): Promise<ParameterEntry[]>;
10
+ }
@@ -0,0 +1,71 @@
1
+ import { AppError } from '../../lib/errors/app-error.js';
2
+ import { resolveBillingCurrencyCode } from '../../modules/billing/billing.mappers.js';
3
+ // "Sin Resultados": ARCA no tiene datos para informar (por ejemplo, puntos de venta en testing).
4
+ const NO_RESULTS_CODE = 602;
5
+ function readRows(result, key, operation) {
6
+ const errors = result.errors?.err ?? [];
7
+ if (errors.some((error) => error.code !== NO_RESULTS_CODE)) {
8
+ throw new AppError(`ARCA devolvio un error al consultar ${operation}: ${errors.map((e) => e.msg).join('; ')}`, {
9
+ code: 'ARCA_PARAMETERS_ERROR',
10
+ details: { errores: errors },
11
+ });
12
+ }
13
+ return result.resultGet?.[key] ?? [];
14
+ }
15
+ function toEntry(row) {
16
+ return {
17
+ description: row.desc,
18
+ detail: row.cmp_Clase,
19
+ id: String(row.id),
20
+ // ARCA informa "NULL" cuando el valor no vence.
21
+ validTo: row.fchHasta && /^\d{8}$/.test(row.fchHasta) ? row.fchHasta : undefined,
22
+ };
23
+ }
24
+ export class ArcaParametersGateway {
25
+ arca;
26
+ constructor(arca) {
27
+ this.arca = arca;
28
+ }
29
+ async getServerStatus() {
30
+ const status = await this.arca.electronicBillingService.getServerStatus();
31
+ return { app: status.appServer, auth: status.authServer, db: status.dbServer };
32
+ }
33
+ async getSalesPoints() {
34
+ const result = (await this.arca.electronicBillingService.getSalesPoints());
35
+ const rows = readRows(result, 'ptoVenta', 'los puntos de venta');
36
+ return rows.map((row) => ({
37
+ blocked: row.bloqueado === 'S',
38
+ closedOn: row.fechaBaja && /^\d{8}$/.test(row.fechaBaja) ? row.fechaBaja : undefined,
39
+ emissionType: row.emisionTipo,
40
+ number: row.nro,
41
+ }));
42
+ }
43
+ async getQuotation(currency) {
44
+ const code = resolveBillingCurrencyCode(currency);
45
+ const result = await this.arca.electronicBillingService.getQuotation(code);
46
+ const rate = result.resultGet?.monCotiz;
47
+ if (typeof rate !== 'number' || rate <= 0) {
48
+ throw new AppError(`ARCA no devolvio una cotizacion para ${currency}.`, {
49
+ code: 'ARCA_QUOTATION_ERROR',
50
+ details: { errors: result.errors },
51
+ });
52
+ }
53
+ return { currency: code, date: result.resultGet?.fchCotiz, rate };
54
+ }
55
+ async listTable(table) {
56
+ const service = this.arca.electronicBillingService;
57
+ const sources = {
58
+ alicuotas: async () => [await service.getAliquotTypes(), 'ivaTipo'],
59
+ comprobantes: async () => [await service.getVoucherTypes(), 'cbteTipo'],
60
+ conceptos: async () => [await service.getConceptTypes(), 'conceptoTipo'],
61
+ documentos: async () => [await service.getDocumentTypes(), 'docTipo'],
62
+ 'iva-receptor': async () => [await service.getIvaReceptorTypes(), 'condicionIvaReceptor'],
63
+ monedas: async () => [await service.getCurrencyTypes(), 'moneda'],
64
+ opcionales: async () => [await service.getOptionalTypes(), 'opcionalTipo'],
65
+ tributos: async () => [await service.getTaxTypes(), 'tributoTipo'],
66
+ };
67
+ const [result, key] = await sources[table]();
68
+ return readRows(result, key, table).map(toEntry);
69
+ }
70
+ }
71
+ //# sourceMappingURL=arca-parameters.gateway.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arca-parameters.gateway.js","sourceRoot":"","sources":["../../../src/services/arca/arca-parameters.gateway.ts"],"names":[],"mappings":"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"}
package/llms.txt CHANGED
@@ -174,6 +174,8 @@ testing van a `testing/`), `pdfNavegador` (ruta a Chrome/Chromium/Edge), `emisor
174
174
  - `arcli ultimos <tipo> [--cantidad N] [--pv N] [--json]`: últimos comprobantes emitidos (de 1 a 50, por defecto 10), del más nuevo al más viejo. `tipo` es el atajo (`fb`, `nca`…).
175
175
  - `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.
176
176
  - `arcli pdf [estado|instalar|desinstalar] [--json]`: plugin que genera los PDFs. `arcli pdf instalar` lo descarga sin preguntar (sirve en scripts).
177
+ - `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"`).
178
+ - `arcli parametros [tabla] [--json]`: tablas de ARCA vigentes: `puntos-venta`, `comprobantes`, `documentos`, `alicuotas`, `iva-receptor`, `monedas`, `conceptos`, `opcionales`, `tributos`. `arcli parametros cotizacion USD` da la cotización oficial (`{moneda, cotizacion, fecha}`).
177
179
  - `arcli ejemplos`: comandos listos para copiar por cada tipo de comprobante.
178
180
  - `arcli storybook [escena]`: demos visuales de la UI (sin llamar a ARCA).
179
181
  - `arcli <cualquier comando> ayuda` o `--ayuda`: ayuda contextual con ejemplos (nota: el flag
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arcli",
3
- "version": "1.5.0",
3
+ "version": "1.7.0",
4
4
  "description": "CLI para previsualizar y emitir comprobantes ARCA desde terminal, con validaciones claras y salida lista para automatizar",
5
5
  "keywords": [
6
6
  "arca",
@@ -72,6 +72,7 @@
72
72
  },
73
73
  "dependencies": {
74
74
  "@arcasdk/core": "2.0.2",
75
+ "@inquirer/checkbox": "5.2.6",
75
76
  "@inquirer/input": "5.1.6",
76
77
  "@inquirer/select": "5.2.5",
77
78
  "big.js": "7.0.1",