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.
Files changed (60) hide show
  1. package/CHANGELOG.md +23 -1
  2. package/README.md +9 -16
  3. package/dist/cli/commands/vouchers.command.js +4 -3
  4. package/dist/cli/commands/vouchers.command.js.map +1 -1
  5. package/dist/cli/help.js +1 -1
  6. package/dist/cli/interactive/config.flow.d.ts +1 -1
  7. package/dist/cli/interactive/config.flow.js +53 -18
  8. package/dist/cli/interactive/config.flow.js.map +1 -1
  9. package/dist/cli/interactive/history.flow.d.ts +4 -0
  10. package/dist/cli/interactive/history.flow.js +22 -8
  11. package/dist/cli/interactive/history.flow.js.map +1 -1
  12. package/dist/cli/interactive/interactive-mode.js +24 -10
  13. package/dist/cli/interactive/interactive-mode.js.map +1 -1
  14. package/dist/cli/interactive/invoice-picker.d.ts +25 -0
  15. package/dist/cli/interactive/invoice-picker.js +152 -0
  16. package/dist/cli/interactive/invoice-picker.js.map +1 -0
  17. package/dist/cli/interactive/note.flow.d.ts +6 -2
  18. package/dist/cli/interactive/note.flow.js +19 -30
  19. package/dist/cli/interactive/note.flow.js.map +1 -1
  20. package/dist/cli/interactive/prompts.d.ts +34 -5
  21. package/dist/cli/interactive/prompts.js +181 -19
  22. package/dist/cli/interactive/prompts.js.map +1 -1
  23. package/dist/cli/interactive/repeat.flow.js +5 -11
  24. package/dist/cli/interactive/repeat.flow.js.map +1 -1
  25. package/dist/cli/interactive/status.flow.d.ts +3 -0
  26. package/dist/cli/interactive/status.flow.js +29 -0
  27. package/dist/cli/interactive/status.flow.js.map +1 -0
  28. package/dist/cli/version.d.ts +1 -1
  29. package/dist/cli/version.js +1 -1
  30. package/dist/modules/config/config-value-parser.d.ts +1 -1
  31. package/dist/modules/config/config-value-parser.js +10 -0
  32. package/dist/modules/config/config-value-parser.js.map +1 -1
  33. package/dist/modules/config/config.presenter.d.ts +4 -0
  34. package/dist/modules/config/config.presenter.js +57 -37
  35. package/dist/modules/config/config.presenter.js.map +1 -1
  36. package/dist/modules/config/config.schemas.d.ts +2 -0
  37. package/dist/modules/config/config.schemas.js +4 -0
  38. package/dist/modules/config/config.schemas.js.map +1 -1
  39. package/dist/modules/config/config.sections.d.ts +14 -0
  40. package/dist/modules/config/config.sections.js +61 -0
  41. package/dist/modules/config/config.sections.js.map +1 -0
  42. package/dist/modules/config/config.service.js +1 -0
  43. package/dist/modules/config/config.service.js.map +1 -1
  44. package/dist/modules/interactive/config-fields.d.ts +1 -3
  45. package/dist/modules/interactive/config-fields.js +36 -42
  46. package/dist/modules/interactive/config-fields.js.map +1 -1
  47. package/dist/modules/vouchers/voucher-history.d.ts +9 -4
  48. package/dist/modules/vouchers/voucher-history.js +8 -3
  49. package/dist/modules/vouchers/voucher-history.js.map +1 -1
  50. package/dist/modules/vouchers/voucher-history.presenter.d.ts +9 -2
  51. package/dist/modules/vouchers/voucher-history.presenter.js +32 -14
  52. package/dist/modules/vouchers/voucher-history.presenter.js.map +1 -1
  53. package/dist/ui/components/statusBar.d.ts +2 -0
  54. package/dist/ui/components/statusBar.js +5 -1
  55. package/dist/ui/components/statusBar.js.map +1 -1
  56. package/llms.txt +2 -2
  57. package/package.json +1 -1
  58. package/dist/cli/interactive/lookup.flow.d.ts +0 -5
  59. package/dist/cli/interactive/lookup.flow.js +0 -72
  60. 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
- export const CONFIG_GROUP_LABELS = {
6
- credenciales: 'Credenciales',
7
- defaults: 'Valores por defecto',
8
- emisor: 'Datos del emisor (PDF)',
9
- pdf: 'PDF',
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
- { group: 'defaults', hint: '22 digitos', key: 'cbu', label: 'CBU (FCE)', read: (c) => c.cbu },
77
- { group: 'defaults', key: 'aliasCbu', label: 'Alias del CBU (FCE)', read: (c) => c.aliasCbu },
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
- { group: 'pdf', key: 'pdfCarpeta', label: 'Carpeta de PDFs', path: true, read: (c) => c.pdfCarpeta },
93
- { group: 'pdf', key: 'pdfNavegador', label: 'Navegador para PDFs', path: true, read: (c) => c.pdfNavegador },
94
- { group: 'emisor', key: 'emisor.razonSocial', label: 'Razon social', read: (c) => c.emisor.razonSocial },
95
- { group: 'emisor', key: 'emisor.domicilio', label: 'Domicilio comercial', read: (c) => c.emisor.domicilio },
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
- { group: 'emisor', key: 'emisor.iibb', label: 'Ingresos Brutos', read: (c) => c.emisor.iibb },
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
- { group: 'emisor', key: 'emisor.logo', label: 'Logo (PNG o JPG)', path: true, read: (c) => c.emisor.logo },
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":"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"}
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
- export declare const RECENT_VOUCHERS_LIMIT = 10;
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
- /** Ultimos comprobantes emitidos, del mas nuevo al mas viejo. */
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
- }): Promise<IssuedVoucher[]>;
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
- export const RECENT_VOUCHERS_LIMIT = 10;
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 lastNumber = await gateway.getLastNumber(pointOfSale, voucherType);
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;AAED,iEAAiE;AACjE,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAA8B,EAC9B,WAAmB,EACnB,WAAmB,EACnB,UAAsE,EAAE;IAExE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,qBAAqB,CAAC;IACrD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACzE,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC;IACtG,MAAM,QAAQ,GAAqC,EAAE,CAAC;IAEtD,iFAAiF;IACjF,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,WAAW,EAAE,CAAC;QACjE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,WAAW,CAAC,CAAC;QAExD,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrH,CAAC;IAED,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAA4B,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AAClF,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
- /** Una linea por comprobante, para listas y para elegir una factura en el modo interactivo. */
18
- export declare function formatVoucherSummary(pointOfSale: number, voucher: IssuedVoucher): string;
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
- /** Una linea por comprobante, para listas y para elegir una factura en el modo interactivo. */
20
- export function formatVoucherSummary(pointOfSale, voucher) {
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
- `N° ${formatVoucherNumber(pointOfSale, voucher.number)}`,
26
+ formatVoucherNumber(pointOfSale, voucher.number),
23
27
  formatArcaDateAsArgentineDate(voucher.date),
24
28
  formatReceiver(voucher).padEnd(20),
25
- formatMoneyLabel(voucher.total),
26
- ].join(' · ');
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 { environment, pointOfSale, voucherKind, vouchers } = report;
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
- const rows = vouchers.map((voucher) => [
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":"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"}
1
+ {"version":3,"file":"voucher-history.presenter.js","sourceRoot":"","sources":["../../../src/modules/vouchers/voucher-history.presenter.ts"],"names":[],"mappings":"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"}
@@ -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 = fitToTerminal(UI_THEME.widths.wide.min);
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,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtD,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"}
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, por defecto 10), del más nuevo al más viejo. `tipo` es el atajo (`fb`, `nca`…).
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,6 +1,6 @@
1
1
  {
2
2
  "name": "arcli",
3
- "version": "1.7.1",
3
+ "version": "1.8.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",
@@ -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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"}