arcli 1.3.0 → 1.4.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 +31 -1
- package/dist/cli/commands/billing.command.batch.d.ts +22 -0
- package/dist/cli/commands/billing.command.batch.js +51 -0
- package/dist/cli/commands/billing.command.batch.js.map +1 -0
- package/dist/cli/commands/billing.command.options.js +1 -1
- package/dist/cli/commands/billing.command.options.js.map +1 -1
- package/dist/cli/commands/billing.command.parser.d.ts +7 -0
- package/dist/cli/commands/billing.command.parser.js +82 -11
- package/dist/cli/commands/billing.command.parser.js.map +1 -1
- package/dist/cli/commands/billing.command.shared.js +14 -11
- package/dist/cli/commands/billing.command.shared.js.map +1 -1
- package/dist/cli/commands/vouchers.command.d.ts +2 -0
- package/dist/cli/commands/vouchers.command.js +96 -0
- package/dist/cli/commands/vouchers.command.js.map +1 -0
- package/dist/cli/help.d.ts +1 -0
- package/dist/cli/help.js +22 -1
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/interactive/advanced-options.d.ts +14 -0
- package/dist/cli/interactive/advanced-options.js +126 -0
- package/dist/cli/interactive/advanced-options.js.map +1 -0
- package/dist/cli/interactive/history.flow.js +10 -19
- package/dist/cli/interactive/history.flow.js.map +1 -1
- package/dist/cli/interactive/interactive-mode.js +2 -1
- package/dist/cli/interactive/interactive-mode.js.map +1 -1
- package/dist/cli/interactive/invoice.flow.d.ts +20 -0
- package/dist/cli/interactive/invoice.flow.js +120 -42
- package/dist/cli/interactive/invoice.flow.js.map +1 -1
- package/dist/cli/interactive/note.flow.d.ts +24 -0
- package/dist/cli/interactive/note.flow.js +205 -68
- package/dist/cli/interactive/note.flow.js.map +1 -1
- package/dist/cli/interactive/prompts.d.ts +8 -0
- package/dist/cli/interactive/prompts.js +22 -0
- package/dist/cli/interactive/prompts.js.map +1 -1
- package/dist/cli/interactive/session.d.ts +1 -1
- package/dist/cli/interactive/session.js +3 -1
- package/dist/cli/interactive/session.js.map +1 -1
- package/dist/cli/interactive/validators.d.ts +4 -0
- package/dist/cli/interactive/validators.js +18 -0
- package/dist/cli/interactive/validators.js.map +1 -1
- package/dist/cli/program.js +2 -0
- package/dist/cli/program.js.map +1 -1
- package/dist/cli/version.d.ts +1 -1
- package/dist/cli/version.js +1 -1
- package/dist/modules/billing/billing.amounts.d.ts +1 -1
- package/dist/modules/billing/billing.amounts.js +34 -13
- package/dist/modules/billing/billing.amounts.js.map +1 -1
- package/dist/modules/billing/billing.batch.d.ts +23 -0
- package/dist/modules/billing/billing.batch.js +43 -0
- package/dist/modules/billing/billing.batch.js.map +1 -0
- package/dist/modules/billing/billing.display.js +12 -3
- package/dist/modules/billing/billing.display.js.map +1 -1
- package/dist/modules/billing/billing.schemas.d.ts +31 -0
- package/dist/modules/billing/billing.schemas.js +26 -6
- package/dist/modules/billing/billing.schemas.js.map +1 -1
- package/dist/modules/config/config-value-parser.js +2 -1
- package/dist/modules/config/config-value-parser.js.map +1 -1
- package/dist/modules/interactive/equivalent-command.js +13 -0
- package/dist/modules/interactive/equivalent-command.js.map +1 -1
- package/dist/modules/interactive/wizard.d.ts +16 -0
- package/dist/modules/interactive/wizard.js +33 -0
- package/dist/modules/interactive/wizard.js.map +1 -0
- package/dist/modules/{interactive → vouchers}/voucher-history.d.ts +9 -0
- package/dist/modules/{interactive → vouchers}/voucher-history.js +1 -0
- package/dist/modules/vouchers/voucher-history.js.map +1 -0
- package/dist/modules/vouchers/voucher-history.presenter.d.ts +22 -0
- package/dist/modules/vouchers/voucher-history.presenter.js +108 -0
- package/dist/modules/vouchers/voucher-history.presenter.js.map +1 -0
- package/dist/services/arca/arca-voucher-history.gateway.d.ts +1 -1
- package/dist/services/arca/arca-voucher-history.gateway.js +9 -1
- package/dist/services/arca/arca-voucher-history.gateway.js.map +1 -1
- package/dist/ui/presenters/errors.presenter.js +11 -1
- package/dist/ui/presenters/errors.presenter.js.map +1 -1
- package/dist/ui/presenters/errors.zod-presenter.d.ts +2 -0
- package/dist/ui/presenters/errors.zod-presenter.js +4 -0
- package/dist/ui/presenters/errors.zod-presenter.js.map +1 -1
- package/dist/ui/presenters/index.d.ts +1 -0
- package/dist/ui/presenters/index.js +1 -0
- package/dist/ui/presenters/index.js.map +1 -1
- package/dist/ui/primitives/text.d.ts +5 -0
- package/dist/ui/primitives/text.js +10 -1
- package/dist/ui/primitives/text.js.map +1 -1
- package/llms.txt +8 -3
- package/package.json +1 -1
- package/dist/cli/interactive/voucher-format.d.ts +0 -4
- package/dist/cli/interactive/voucher-format.js +0 -28
- package/dist/cli/interactive/voucher-format.js.map +0 -1
- package/dist/modules/interactive/voucher-history.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,35 @@ El formato sigue [Keep a Changelog](https://keepachangelog.com/es-ES/1.1.0/) y e
|
|
|
8
8
|
|
|
9
9
|
## [Sin publicar]
|
|
10
10
|
|
|
11
|
+
## [1.4.0] - 2026-10-02
|
|
12
|
+
|
|
13
|
+
Esta versión suma dos comandos para ver lo emitido (`ultimos` y `consultar`), facturas con varias alícuotas de IVA y un modo interactivo más completo. Los lotes ahora se validan enteros antes de emitir. No se rompe ningún comando, flag ni JSON existente: `--alicuota` con un solo número funciona igual que antes.
|
|
14
|
+
|
|
15
|
+
### Agregado
|
|
16
|
+
|
|
17
|
+
- **Modo interactivo:**
|
|
18
|
+
- **Volver al paso anterior** con "← Volver" en las opciones o `<` en los textos.
|
|
19
|
+
- **Opciones avanzadas** antes de la vista previa: moneda extranjera (incluida la cotización oficial si te pagan en dólares), exento y no gravado, período del servicio y vencimiento del pago.
|
|
20
|
+
- Las notas comunes se pueden asociar **a un período** en lugar de a una factura.
|
|
21
|
+
- **Varias alícuotas por comprobante:** repetí `--alicuota TASA:MONTO` con el monto IVA incluido de cada una, por ejemplo `--alicuota general:1210 --alicuota reducida:552.50`. El total se calcula solo y se envía una entrada de IVA por alícuota. En JSON: `alicuotas: [{tasa, monto}]`.
|
|
22
|
+
- **Alias de alícuotas:** `general` (21), `reducida` (10.5), `incrementada` (27) y `cero` (0). Se aceptan igual que el número en `--alicuota`, `alicuotaIva` y `config alicuota`.
|
|
23
|
+
- `arcli ultimos <tipo>`: lista los últimos comprobantes emitidos en ARCA (`--cantidad` de 1 a 50, por defecto 10).
|
|
24
|
+
- `arcli consultar <tipo> <numero>`: muestra el detalle de un comprobante emitido, con CAE, vencimiento, importes y receptor.
|
|
25
|
+
- Los dos tienen `--json` y `--pv`. Antes esto solo se podía ver desde el modo interactivo.
|
|
26
|
+
|
|
27
|
+
### Cambiado
|
|
28
|
+
|
|
29
|
+
- **Lotes (`--cargar` con un array):**
|
|
30
|
+
- Se validan **todos** los comprobantes antes de emitir el primero. Si alguno es inválido, no se emite ninguno y el error `BATCH_VALIDATION_ERROR` los lista a todos con su índice.
|
|
31
|
+
- Antes, las reglas de negocio se validaban mientras se emitía: si el #3 era inválido, el #1 y el #2 ya estaban emitidos y sus resultados no se mostraban.
|
|
32
|
+
- Si la emisión se corta a mitad (red, ARCA), se muestran los comprobantes ya procesados y después el error `BATCH_EMISSION_ERROR`, con el ítem que falló y los que quedaron sin procesar.
|
|
33
|
+
|
|
34
|
+
### Corregido
|
|
35
|
+
|
|
36
|
+
- El comando equivalente del modo interactivo no incluía la moneda extranjera (`--moneda`, `--cm`, `--misma-moneda`).
|
|
37
|
+
- **La salida `--json` traía códigos de color ANSI cuando se redirigía** (`arcli ... --json | jq` fallaba con `parse error`). Ahora solo hay colores si la salida es una terminal real. `FORCE_COLOR=1` los fuerza y `NO_COLOR` los apaga.
|
|
38
|
+
- En el modo interactivo, el logo ahora tiene 3 líneas en blanco abajo, igual que arriba. Antes la barra de estado quedaba pegada.
|
|
39
|
+
|
|
11
40
|
## [1.3.0] - 2026-10-02
|
|
12
41
|
|
|
13
42
|
Esta versión suma el modo interactivo para quien factura de vez en cuando y renueva la salida de la terminal: bordes según el tipo de panel, paneles que se ajustan a ventanas angostas y varios bugs de color corregidos. No se rompe ningún comando, flag ni JSON existente. El único cambio de comportamiento es que `arcli` sin argumentos, en una terminal interactiva, abre el asistente en lugar de la ayuda.
|
|
@@ -120,7 +149,8 @@ Primera versión publicada en npm.
|
|
|
120
149
|
- `llms.txt`: referencia condensada para que un agente de IA con acceso a terminal ejecute el CLI.
|
|
121
150
|
- Publicación con npm Trusted Publishers (OIDC).
|
|
122
151
|
|
|
123
|
-
[Sin publicar]: https://github.com/LcsGrz/arcli/compare/v1.
|
|
152
|
+
[Sin publicar]: https://github.com/LcsGrz/arcli/compare/v1.4.0...HEAD
|
|
153
|
+
[1.4.0]: https://github.com/LcsGrz/arcli/compare/v1.3.0...v1.4.0
|
|
124
154
|
[1.3.0]: https://github.com/LcsGrz/arcli/compare/v1.2.0...v1.3.0
|
|
125
155
|
[1.2.0]: https://github.com/LcsGrz/arcli/compare/v1.1.0...v1.2.0
|
|
126
156
|
[1.1.0]: https://github.com/LcsGrz/arcli/releases/tag/v1.1.0
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type BatchItemError } from '../../modules/billing/billing.batch';
|
|
2
|
+
interface BatchPlan {
|
|
3
|
+
readonly inputIndexes: readonly number[];
|
|
4
|
+
readonly invalidItems: readonly BatchItemError[];
|
|
5
|
+
readonly total: number;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* En un lote, valida todos los comprobantes antes de emitir el primero. `validate` tira si el item es
|
|
9
|
+
* invalido (lectura del JSON o reglas de negocio). Si alguno falla, no se emite ninguno y se informan todos.
|
|
10
|
+
*/
|
|
11
|
+
export declare function validateBatchBeforeEmitting<T>(plan: BatchPlan, inputs: readonly T[], validate: (input: T) => void): void;
|
|
12
|
+
/**
|
|
13
|
+
* Emite los items en orden. Si uno falla a mitad del lote, entrega lo ya procesado a `onPartialResults`
|
|
14
|
+
* antes de cortar: si no se mostrara, alguien volveria a correr el lote y duplicaria comprobantes.
|
|
15
|
+
*/
|
|
16
|
+
export declare function emitBatch<T, R>(options: {
|
|
17
|
+
readonly emit: (input: T, position: number) => Promise<R>;
|
|
18
|
+
readonly inputs: readonly T[];
|
|
19
|
+
readonly onPartialResults: (results: R[]) => void;
|
|
20
|
+
readonly plan: BatchPlan;
|
|
21
|
+
}): Promise<R[]>;
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { BatchEmissionError, BatchValidationError, describeBatchItemError, } from '../../modules/billing/billing.batch.js';
|
|
2
|
+
/**
|
|
3
|
+
* En un lote, valida todos los comprobantes antes de emitir el primero. `validate` tira si el item es
|
|
4
|
+
* invalido (lectura del JSON o reglas de negocio). Si alguno falla, no se emite ninguno y se informan todos.
|
|
5
|
+
*/
|
|
6
|
+
export function validateBatchBeforeEmitting(plan, inputs, validate) {
|
|
7
|
+
if (plan.total === 1) {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
const errors = [...plan.invalidItems];
|
|
11
|
+
inputs.forEach((input, position) => {
|
|
12
|
+
try {
|
|
13
|
+
validate(input);
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
errors.push({ index: plan.inputIndexes[position] ?? position + 1, message: describeBatchItemError(error) });
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
if (errors.length > 0) {
|
|
20
|
+
throw new BatchValidationError([...errors].sort((left, right) => left.index - right.index), plan.total);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Emite los items en orden. Si uno falla a mitad del lote, entrega lo ya procesado a `onPartialResults`
|
|
25
|
+
* antes de cortar: si no se mostrara, alguien volveria a correr el lote y duplicaria comprobantes.
|
|
26
|
+
*/
|
|
27
|
+
export async function emitBatch(options) {
|
|
28
|
+
const { emit, inputs, onPartialResults, plan } = options;
|
|
29
|
+
const results = [];
|
|
30
|
+
for (const [position, input] of inputs.entries()) {
|
|
31
|
+
try {
|
|
32
|
+
results.push(await emit(input, position));
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
if (plan.total === 1) {
|
|
36
|
+
throw error;
|
|
37
|
+
}
|
|
38
|
+
if (results.length > 0) {
|
|
39
|
+
onPartialResults(results);
|
|
40
|
+
}
|
|
41
|
+
throw new BatchEmissionError({
|
|
42
|
+
cause: error,
|
|
43
|
+
emitted: results.length,
|
|
44
|
+
failedIndex: plan.inputIndexes[position] ?? position + 1,
|
|
45
|
+
total: plan.total,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return results;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=billing.command.batch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"billing.command.batch.js","sourceRoot":"","sources":["../../../src/cli/commands/billing.command.batch.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAElB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,qCAAqC,CAAC;AAQ7C;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CACzC,IAAe,EACf,MAAoB,EACpB,QAA4B;IAE5B,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAqB,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;IAExD,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;QACjC,IAAI,CAAC;YACH,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,OAAO,EAAE,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC9G,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,oBAAoB,CAC5B,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,EAC3D,IAAI,CAAC,KAAK,CACX,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAO,OAKrC;IACC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IACzD,MAAM,OAAO,GAAQ,EAAE,CAAC;IAExB,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;QACjD,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;gBACrB,MAAM,KAAK,CAAC;YACd,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAC5B,CAAC;YAED,MAAM,IAAI,kBAAkB,CAAC;gBAC3B,KAAK,EAAE,KAAK;gBACZ,OAAO,EAAE,OAAO,CAAC,MAAM;gBACvB,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC;gBACxD,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -2,7 +2,7 @@ import { Option } from 'commander';
|
|
|
2
2
|
export function registerBillingOptions(command) {
|
|
3
3
|
command
|
|
4
4
|
.option('-m, --monto <number>', 'importe total del comprobante', parseFloat)
|
|
5
|
-
.option('--alicuota <tasa>', 'alicuota de IVA para A y B:
|
|
5
|
+
.option('--alicuota <tasa>', 'alicuota de IVA para A y B: general (21), reducida (10.5), incrementada (27), cero (0), 5 o 2.5. Repetible como TASA:MONTO para varias alicuotas', (value, previous) => [...(previous ?? []), value])
|
|
6
6
|
.option('--exento <number>', 'parte exenta del monto total (A y B)', parseFloat)
|
|
7
7
|
// No puede llamarse --no-gravado: commander interpreta --no-* como negacion de un flag booleano.
|
|
8
8
|
.option('--nogravado <number>', 'parte no gravada del monto total (A y B)', parseFloat)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billing.command.options.js","sourceRoot":"","sources":["../../../src/cli/commands/billing.command.options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,MAAM,EAAE,MAAM,WAAW,CAAC;AAEjD,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,MAAM,CAAC,sBAAsB,EAAE,+BAA+B,EAAE,UAAU,CAAC;SAC3E,MAAM,
|
|
1
|
+
{"version":3,"file":"billing.command.options.js","sourceRoot":"","sources":["../../../src/cli/commands/billing.command.options.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Command } from 'commander';
|
|
2
|
+
import { type BatchItemError } from '../../modules/billing/billing.batch';
|
|
2
3
|
import { type BillingCommandInput } from '../../modules/billing/billing.schemas';
|
|
3
4
|
import type { VoucherShortcut } from '../../modules/billing/billing.types';
|
|
4
5
|
export { registerBillingOptions } from './billing.command.options';
|
|
@@ -13,8 +14,14 @@ export interface BillingCommandDefaults {
|
|
|
13
14
|
readonly defaultIvaCondition?: BillingCommandInput['ivaCondition'];
|
|
14
15
|
}
|
|
15
16
|
export interface BillingCommandPlan {
|
|
17
|
+
/** Posicion en el lote (desde 1) de cada item de `inputs`. */
|
|
18
|
+
readonly inputIndexes: number[];
|
|
16
19
|
readonly inputs: BillingCommandInput[];
|
|
20
|
+
/** Items del lote que no se pudieron leer; el comando no emite nada si hay alguno. */
|
|
21
|
+
readonly invalidItems: BatchItemError[];
|
|
17
22
|
readonly modeSource: 'default' | 'file' | 'flags';
|
|
23
|
+
/** Cantidad de items del lote (1 si no hay lote). */
|
|
24
|
+
readonly total: number;
|
|
18
25
|
}
|
|
19
26
|
export declare function parseBillingCommandPlan(command: Command, shortcut: VoucherShortcut, defaults?: BillingCommandDefaults): BillingCommandPlan;
|
|
20
27
|
export declare function parseBillingCommandInputs(command: Command, shortcut: VoucherShortcut, defaults?: BillingCommandDefaults): BillingCommandInput[];
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { InputValidationError } from '../../lib/errors/app-error.js';
|
|
2
2
|
import { readJsonFile } from '../../lib/files/read-json-file.js';
|
|
3
|
+
import { BatchValidationError, describeBatchItemError } from '../../modules/billing/billing.batch.js';
|
|
3
4
|
import { isForeignCurrency } from '../../modules/billing/billing.currency.js';
|
|
4
5
|
import { billingCommandSchema } from '../../modules/billing/billing.schemas.js';
|
|
5
6
|
import { getVoucherKindByShortcut } from '../../modules/billing/voucher-kind-map.js';
|
|
@@ -11,6 +12,36 @@ function pickString(...values) {
|
|
|
11
12
|
function pickNumber(...values) {
|
|
12
13
|
return values.find((value) => typeof value === 'number');
|
|
13
14
|
}
|
|
15
|
+
function parseAmountText(raw) {
|
|
16
|
+
const value = raw.trim();
|
|
17
|
+
// "552,50" -> 552.5; con punto se toma como decimal, igual que --monto.
|
|
18
|
+
return Number(value.includes(',') && !value.includes('.') ? value.replace(',', '.') : value);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* `--alicuota` acepta una tasa sola ("reducida", "10.5") o, repetido, pares TASA:MONTO con el importe
|
|
22
|
+
* de cada alicuota IVA incluido. No se pueden mezclar las dos formas.
|
|
23
|
+
*/
|
|
24
|
+
function parseIvaRateFlags(values) {
|
|
25
|
+
if (!values || values.length === 0) {
|
|
26
|
+
return {};
|
|
27
|
+
}
|
|
28
|
+
const withAmount = values.filter((value) => value.includes(':'));
|
|
29
|
+
if (withAmount.length === 0) {
|
|
30
|
+
if (values.length > 1) {
|
|
31
|
+
throw new InputValidationError('Para varias alicuotas use --alicuota TASA:MONTO en cada una, por ejemplo --alicuota general:1210 --alicuota reducida:552.50.');
|
|
32
|
+
}
|
|
33
|
+
return { ivaRate: values[0] };
|
|
34
|
+
}
|
|
35
|
+
if (withAmount.length !== values.length) {
|
|
36
|
+
throw new InputValidationError('No mezcle --alicuota TASA con --alicuota TASA:MONTO: use una sola forma.');
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
ivaRateAmounts: values.map((value) => {
|
|
40
|
+
const separator = value.indexOf(':');
|
|
41
|
+
return { amount: parseAmountText(value.slice(separator + 1)), rate: value.slice(0, separator) };
|
|
42
|
+
}),
|
|
43
|
+
};
|
|
44
|
+
}
|
|
14
45
|
function parseBillingCommandInputFromSource(command, shortcut, fileInput, defaults = {}) {
|
|
15
46
|
const commandOptions = command.optsWithGlobals();
|
|
16
47
|
const emitirSource = command.getOptionValueSource('emitir');
|
|
@@ -104,6 +135,18 @@ function parseBillingCommandInputFromSource(command, shortcut, fileInput, defaul
|
|
|
104
135
|
const periodFrom = pickString(commandOptions.periodoDesde, commandOptions.pd);
|
|
105
136
|
const periodTo = pickString(commandOptions.periodoHasta, commandOptions.ph);
|
|
106
137
|
const associatedPeriod = periodFrom || periodTo ? { desde: periodFrom, hasta: periodTo } : fileInput?.periodoAsociado;
|
|
138
|
+
const flagRates = parseIvaRateFlags(commandOptions.alicuota);
|
|
139
|
+
const fileRateAmounts = fileInput?.alicuotas?.map((item) => ({ amount: item.monto, rate: item.tasa }));
|
|
140
|
+
const ivaRateAmounts = flagRates.ivaRateAmounts ?? fileRateAmounts;
|
|
141
|
+
const exemptAmount = pickNumber(commandOptions.exento, fileInput?.importeExento);
|
|
142
|
+
const untaxedAmount = pickNumber(commandOptions.nogravado, fileInput?.importeNoGravado);
|
|
143
|
+
// Con varias alicuotas el monto total se puede omitir: es la suma de cada una mas exento y no gravado.
|
|
144
|
+
const totalAmount = pickNumber(commandOptions.monto, fileInput?.montoTotal) ??
|
|
145
|
+
(ivaRateAmounts
|
|
146
|
+
? ivaRateAmounts.reduce((sum, item) => sum + (typeof item.amount === 'number' ? item.amount : 0), 0) +
|
|
147
|
+
(exemptAmount ?? 0) +
|
|
148
|
+
(untaxedAmount ?? 0)
|
|
149
|
+
: undefined);
|
|
107
150
|
return {
|
|
108
151
|
...billingCommandSchema.parse({
|
|
109
152
|
associatedPeriod,
|
|
@@ -120,10 +163,11 @@ function parseBillingCommandInputFromSource(command, shortcut, fileInput, defaul
|
|
|
120
163
|
dueDay: pickNumber(commandOptions.dia, fileInput?.dia),
|
|
121
164
|
emit: shouldEmit,
|
|
122
165
|
exchangeRate,
|
|
123
|
-
exemptAmount
|
|
124
|
-
ivaRate:
|
|
125
|
-
|
|
126
|
-
(usesIvaRateDefault ? defaults.defaultIvaRate : undefined),
|
|
166
|
+
exemptAmount,
|
|
167
|
+
ivaRate: ivaRateAmounts
|
|
168
|
+
? undefined
|
|
169
|
+
: (flagRates.ivaRate ?? fileInput?.alicuotaIva ?? (usesIvaRateDefault ? defaults.defaultIvaRate : undefined)),
|
|
170
|
+
ivaRateAmounts,
|
|
127
171
|
ivaCondition: resolvedIvaCondition,
|
|
128
172
|
paymentDueDate: pickString(commandOptions.vencimiento, commandOptions.vto, fileInput?.vencimientoPago),
|
|
129
173
|
pointOfSale: pickNumber(commandOptions.puntoVenta, commandOptions.pv, fileInput?.puntoVenta),
|
|
@@ -131,9 +175,9 @@ function parseBillingCommandInputFromSource(command, shortcut, fileInput, defaul
|
|
|
131
175
|
serviceEndDate: pickString(commandOptions.servicioHasta, commandOptions.sh, fileInput?.servicioHasta),
|
|
132
176
|
serviceStartDate: pickString(commandOptions.servicioDesde, commandOptions.sd, fileInput?.servicioDesde),
|
|
133
177
|
shortcut,
|
|
134
|
-
totalAmount:
|
|
178
|
+
totalAmount: totalAmount === undefined ? undefined : Math.round(totalAmount * 100) / 100,
|
|
135
179
|
transferMode: pickString(commandOptions.transferencia, fileInput?.transferencia),
|
|
136
|
-
untaxedAmount
|
|
180
|
+
untaxedAmount,
|
|
137
181
|
}),
|
|
138
182
|
__modeSource: modeSource,
|
|
139
183
|
};
|
|
@@ -146,23 +190,50 @@ export function parseBillingCommandPlan(command, shortcut, defaults = {}) {
|
|
|
146
190
|
if (fileInputs.length === 0) {
|
|
147
191
|
const { __modeSource, ...input } = parseBillingCommandInputFromSource(command, shortcut, undefined, defaults);
|
|
148
192
|
return {
|
|
193
|
+
inputIndexes: [1],
|
|
149
194
|
inputs: [input],
|
|
195
|
+
invalidItems: [],
|
|
150
196
|
modeSource: __modeSource,
|
|
197
|
+
total: 1,
|
|
151
198
|
};
|
|
152
199
|
}
|
|
153
|
-
|
|
154
|
-
|
|
200
|
+
// Un solo comprobante falla como siempre. En un lote se leen todos y se juntan los errores,
|
|
201
|
+
// para informarlos de una vez en lugar de cortar en el primero.
|
|
202
|
+
if (fileInputs.length === 1) {
|
|
203
|
+
const { __modeSource, ...input } = parseBillingCommandInputFromSource(command, shortcut, fileInputs[0], defaults);
|
|
204
|
+
return { inputIndexes: [1], inputs: [input], invalidItems: [], modeSource: __modeSource, total: 1 };
|
|
205
|
+
}
|
|
206
|
+
const parsed = [];
|
|
207
|
+
const inputIndexes = [];
|
|
208
|
+
const invalidItems = [];
|
|
209
|
+
fileInputs.forEach((fileInput, position) => {
|
|
210
|
+
try {
|
|
211
|
+
parsed.push(parseBillingCommandInputFromSource(command, shortcut, fileInput, defaults));
|
|
212
|
+
inputIndexes.push(position + 1);
|
|
213
|
+
}
|
|
214
|
+
catch (error) {
|
|
215
|
+
invalidItems.push({ index: position + 1, message: describeBatchItemError(error) });
|
|
216
|
+
}
|
|
217
|
+
});
|
|
218
|
+
const modeSource = parsed.some((input) => input.__modeSource === 'flags')
|
|
155
219
|
? 'flags'
|
|
156
|
-
:
|
|
220
|
+
: parsed.some((input) => input.__modeSource === 'file')
|
|
157
221
|
? 'file'
|
|
158
222
|
: 'default';
|
|
159
223
|
return {
|
|
160
|
-
|
|
224
|
+
inputIndexes,
|
|
225
|
+
inputs: parsed.map(({ __modeSource: _modeSource, ...input }) => input),
|
|
226
|
+
invalidItems,
|
|
161
227
|
modeSource,
|
|
228
|
+
total: fileInputs.length,
|
|
162
229
|
};
|
|
163
230
|
}
|
|
164
231
|
export function parseBillingCommandInputs(command, shortcut, defaults = {}) {
|
|
165
|
-
|
|
232
|
+
const plan = parseBillingCommandPlan(command, shortcut, defaults);
|
|
233
|
+
if (plan.invalidItems.length > 0) {
|
|
234
|
+
throw new BatchValidationError(plan.invalidItems, plan.total);
|
|
235
|
+
}
|
|
236
|
+
return plan.inputs;
|
|
166
237
|
}
|
|
167
238
|
export function parseBillingCommandInput(command, shortcut, defaults = {}) {
|
|
168
239
|
return parseBillingCommandInputs(command, shortcut, defaults)[0];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billing.command.parser.js","sourceRoot":"","sources":["../../../src/cli/commands/billing.command.parser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"billing.command.parser.js","sourceRoot":"","sources":["../../../src/cli/commands/billing.command.parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ import { ArcaClientFactory } from '../../services/arca/arca-client.factory.js';
|
|
|
5
5
|
import { ArcaContextResolver } from '../../services/arca/arca-context.resolver.js';
|
|
6
6
|
import { ArcaFceObligationGateway } from '../../services/arca/arca-fce-obligation.gateway.js';
|
|
7
7
|
import { startSpinner } from '../spinner.js';
|
|
8
|
+
import { emitBatch, validateBatchBeforeEmitting } from './billing.command.batch.js';
|
|
8
9
|
import { runInteractiveBillingPreview } from './billing.command.interactive-preview.js';
|
|
9
10
|
import { writeBillingCommandResults } from './billing.command.output.js';
|
|
10
11
|
import { parseBillingCommandPlan, registerBillingOptions } from './billing.command.parser.js';
|
|
@@ -54,6 +55,7 @@ export async function executeBillingCommand(command, shortcut) {
|
|
|
54
55
|
for (const input of plan.inputs) {
|
|
55
56
|
plannedInputs.push(await service.resolveExchangeRate(input, gateway));
|
|
56
57
|
}
|
|
58
|
+
validateBatchBeforeEmitting(plan, plannedInputs, (input) => service.buildVoucherPayload(input, runtime));
|
|
57
59
|
const warnings = runtime.config.verificarFce
|
|
58
60
|
? await resolveFceWarnings(plannedInputs, service, new ArcaFceObligationGateway(arca))
|
|
59
61
|
: [];
|
|
@@ -74,22 +76,23 @@ export async function executeBillingCommand(command, shortcut) {
|
|
|
74
76
|
if (spinner) {
|
|
75
77
|
spinner.text = inputs.length > 1 ? `Procesando ${inputs.length} comprobantes...` : 'Procesando comprobante...';
|
|
76
78
|
}
|
|
77
|
-
const
|
|
78
|
-
for (const [index, input] of inputs.entries()) {
|
|
79
|
-
results.push(await service.execute({
|
|
80
|
-
gateway,
|
|
81
|
-
input,
|
|
82
|
-
runtime,
|
|
83
|
-
warnings: warnings[index],
|
|
84
|
-
}));
|
|
85
|
-
}
|
|
86
|
-
spinner?.stop();
|
|
87
|
-
writeBillingCommandResults(results, {
|
|
79
|
+
const outputOptions = {
|
|
88
80
|
environment: runtime.environment,
|
|
89
81
|
outputJson: runtime.outputJson,
|
|
90
82
|
previewShown,
|
|
91
83
|
raw: useRaw,
|
|
84
|
+
};
|
|
85
|
+
const results = await emitBatch({
|
|
86
|
+
emit: (input, position) => service.execute({ gateway, input, runtime, warnings: warnings[position] }),
|
|
87
|
+
inputs,
|
|
88
|
+
onPartialResults: (partial) => {
|
|
89
|
+
spinner?.stop();
|
|
90
|
+
writeBillingCommandResults(partial, outputOptions);
|
|
91
|
+
},
|
|
92
|
+
plan,
|
|
92
93
|
});
|
|
94
|
+
spinner?.stop();
|
|
95
|
+
writeBillingCommandResults(results, outputOptions);
|
|
93
96
|
}
|
|
94
97
|
catch (error) {
|
|
95
98
|
spinner?.stop();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billing.command.shared.js","sourceRoot":"","sources":["../../../src/cli/commands/billing.command.shared.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;
|
|
1
|
+
{"version":3,"file":"billing.command.shared.js","sourceRoot":"","sources":["../../../src/cli/commands/billing.command.shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { AppError, InputValidationError } from '../../lib/errors/app-error.js';
|
|
2
|
+
import { getVoucherKindByShortcut, VOUCHER_SHORTCUTS } from '../../modules/billing/voucher-kind-map.js';
|
|
3
|
+
import { listRecentVouchers, MAX_RECENT_VOUCHERS, RECENT_VOUCHERS_LIMIT } from '../../modules/vouchers/voucher-history.js';
|
|
4
|
+
import { formatVoucherDetailAsJson, formatVoucherDetailAsText, formatVoucherListAsJson, formatVoucherListAsText, formatVoucherNumber, } from '../../modules/vouchers/voucher-history.presenter.js';
|
|
5
|
+
import { ArcaClientFactory } from '../../services/arca/arca-client.factory.js';
|
|
6
|
+
import { ArcaContextResolver } from '../../services/arca/arca-context.resolver.js';
|
|
7
|
+
import { ArcaVoucherHistoryGateway } from '../../services/arca/arca-voucher-history.gateway.js';
|
|
8
|
+
import { writeTerminalJson, writeTerminalOutput } from '../../ui/index.js';
|
|
9
|
+
import { configureSpanishHelp, createVoucherQueryHelp } from '../help.js';
|
|
10
|
+
import { startSpinner } from '../spinner.js';
|
|
11
|
+
import { getGlobalOptions, registerGlobalOptions } from './billing.command.shared.js';
|
|
12
|
+
const parseInteger = (value) => Number.parseInt(value, 10);
|
|
13
|
+
function requireVoucherKind(shortcut) {
|
|
14
|
+
const voucherKind = getVoucherKindByShortcut(shortcut.trim().toLowerCase());
|
|
15
|
+
if (!voucherKind) {
|
|
16
|
+
throw new InputValidationError(`El tipo "${shortcut}" no es valido. Use un atajo: ${VOUCHER_SHORTCUTS.join(', ')}.`);
|
|
17
|
+
}
|
|
18
|
+
return voucherKind;
|
|
19
|
+
}
|
|
20
|
+
function requirePointOfSale(options, runtime) {
|
|
21
|
+
const pointOfSale = options.pv ?? options.puntoVenta ?? runtime.pointOfSale;
|
|
22
|
+
if (!pointOfSale || !Number.isInteger(pointOfSale) || pointOfSale <= 0) {
|
|
23
|
+
throw new InputValidationError('Falta el punto de venta. Use --pv <numero> o configurelo con "arcli config establecer puntoVenta <numero>".');
|
|
24
|
+
}
|
|
25
|
+
return pointOfSale;
|
|
26
|
+
}
|
|
27
|
+
function createContext(command) {
|
|
28
|
+
const runtime = new ArcaContextResolver({ options: getGlobalOptions(command) }).resolve();
|
|
29
|
+
return { gateway: new ArcaVoucherHistoryGateway(new ArcaClientFactory().create(runtime)), runtime };
|
|
30
|
+
}
|
|
31
|
+
function addPointOfSaleOptions(command) {
|
|
32
|
+
return command
|
|
33
|
+
.option('--pv <numero>', 'punto de venta; por defecto el de la config', parseInteger)
|
|
34
|
+
.option('--punto-venta <numero>', 'punto de venta; por defecto el de la config', parseInteger);
|
|
35
|
+
}
|
|
36
|
+
async function withSpinner(runtime, run) {
|
|
37
|
+
const spinner = runtime.outputJson ? null : startSpinner('Consultando ARCA...');
|
|
38
|
+
try {
|
|
39
|
+
return await run();
|
|
40
|
+
}
|
|
41
|
+
finally {
|
|
42
|
+
spinner?.stop();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
export function registerVoucherQueryCommands(program) {
|
|
46
|
+
const recent = addPointOfSaleOptions(program
|
|
47
|
+
.command('ultimos')
|
|
48
|
+
.argument('<tipo>', 'atajo del comprobante, por ejemplo fb, fc o nca')
|
|
49
|
+
.description('listar los ultimos comprobantes emitidos en ARCA')
|
|
50
|
+
.option('--cantidad <numero>', `cuantos comprobantes mostrar (1 a ${MAX_RECENT_VOUCHERS})`, parseInteger)).addHelpText('after', createVoucherQueryHelp());
|
|
51
|
+
registerGlobalOptions(recent);
|
|
52
|
+
configureSpanishHelp(recent);
|
|
53
|
+
recent.action(async (shortcut, options, self) => {
|
|
54
|
+
const voucherKind = requireVoucherKind(shortcut);
|
|
55
|
+
const limit = options.cantidad ?? RECENT_VOUCHERS_LIMIT;
|
|
56
|
+
if (!Number.isInteger(limit) || limit < 1 || limit > MAX_RECENT_VOUCHERS) {
|
|
57
|
+
throw new InputValidationError(`--cantidad tiene que ser un numero entre 1 y ${MAX_RECENT_VOUCHERS}.`);
|
|
58
|
+
}
|
|
59
|
+
const { gateway, runtime } = createContext(self);
|
|
60
|
+
const pointOfSale = requirePointOfSale(options, runtime);
|
|
61
|
+
const vouchers = await withSpinner(runtime, () => listRecentVouchers(gateway, pointOfSale, voucherKind.arcaType, { limit }));
|
|
62
|
+
const report = { environment: runtime.environment, pointOfSale, voucherKind, vouchers };
|
|
63
|
+
if (runtime.outputJson) {
|
|
64
|
+
writeTerminalJson(formatVoucherListAsJson(report));
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
writeTerminalOutput(formatVoucherListAsText(report));
|
|
68
|
+
});
|
|
69
|
+
const detail = addPointOfSaleOptions(program
|
|
70
|
+
.command('consultar')
|
|
71
|
+
.argument('<tipo>', 'atajo del comprobante, por ejemplo fb, fc o nca')
|
|
72
|
+
.argument('<numero>', 'numero del comprobante')
|
|
73
|
+
.description('ver el detalle de un comprobante emitido en ARCA')).addHelpText('after', createVoucherQueryHelp());
|
|
74
|
+
registerGlobalOptions(detail);
|
|
75
|
+
configureSpanishHelp(detail);
|
|
76
|
+
detail.action(async (shortcut, rawNumber, options, self) => {
|
|
77
|
+
const voucherKind = requireVoucherKind(shortcut);
|
|
78
|
+
const number = Number(rawNumber);
|
|
79
|
+
if (!Number.isInteger(number) || number <= 0) {
|
|
80
|
+
throw new InputValidationError(`El numero "${rawNumber}" no es valido: tiene que ser un entero positivo.`);
|
|
81
|
+
}
|
|
82
|
+
const { gateway, runtime } = createContext(self);
|
|
83
|
+
const pointOfSale = requirePointOfSale(options, runtime);
|
|
84
|
+
const voucher = await withSpinner(runtime, () => gateway.getVoucher(number, pointOfSale, voucherKind.arcaType));
|
|
85
|
+
if (!voucher) {
|
|
86
|
+
throw new AppError(`No existe la ${voucherKind.displayName} N° ${formatVoucherNumber(pointOfSale, number)} en ARCA (${runtime.environment}).`, { code: 'VOUCHER_NOT_FOUND' });
|
|
87
|
+
}
|
|
88
|
+
const report = { environment: runtime.environment, pointOfSale, voucher, voucherKind };
|
|
89
|
+
if (runtime.outputJson) {
|
|
90
|
+
writeTerminalJson(formatVoucherDetailAsJson(report));
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
writeTerminalOutput(formatVoucherDetailAsText(report));
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=vouchers.command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vouchers.command.js","sourceRoot":"","sources":["../../../src/cli/commands/vouchers.command.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/help.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export declare function createConfigHelp(): string;
|
|
|
4
4
|
export declare function createStorybookHelp(): string;
|
|
5
5
|
export declare function createExamplesHelp(): string;
|
|
6
6
|
export declare function createFceObligationHelp(): string;
|
|
7
|
+
export declare function createVoucherQueryHelp(): string;
|
|
7
8
|
export declare function createShortcutHelp(shortcut: VoucherShortcut): string;
|
|
8
9
|
export declare function createFamilyHelp(family: VoucherFamily): string;
|
|
9
10
|
export declare function createProgramHelp(): string;
|
package/dist/cli/help.js
CHANGED
|
@@ -26,7 +26,8 @@ const AVAILABLE_GENERAL_OPTIONS = [
|
|
|
26
26
|
' - --cotizacion-moneda <number> | --cm <number> | todas | cotizacion de la moneda elegida; obligatoria en moneda extranjera',
|
|
27
27
|
' - --misma-moneda | todas | el pago se cancela en la moneda extranjera; usa la cotizacion oficial de ARCA',
|
|
28
28
|
' - --cargar <path> | todas | cargar un comprobante o lote desde JSON',
|
|
29
|
-
' - --alicuota <tasa> | letras A y B |
|
|
29
|
+
' - --alicuota <tasa> | letras A y B | general (21), reducida (10.5), incrementada (27), cero (0), 5 o 2.5; por defecto config alicuota o 21',
|
|
30
|
+
' - --alicuota <tasa>:<monto> | letras A y B | repetible para varias alicuotas; el monto lleva IVA incluido y --monto pasa a ser opcional',
|
|
30
31
|
' - --exento <number> | letras A y B | parte exenta del monto total',
|
|
31
32
|
' - --nogravado <number> | letras A y B | parte no gravada del monto total',
|
|
32
33
|
].join('\n');
|
|
@@ -132,6 +133,8 @@ function createProgramCommands() {
|
|
|
132
133
|
' - Ver ejemplos listos para copiar: arcli ejemplos',
|
|
133
134
|
' - Consultar si un receptor esta obligado a FCE: arcli fce-obligado <cuit>',
|
|
134
135
|
' - Asistente paso a paso: arcli (sin argumentos) o arcli interactivo',
|
|
136
|
+
' - Ver los ultimos comprobantes emitidos: arcli ultimos fb',
|
|
137
|
+
' - Ver el detalle de un comprobante: arcli consultar fb 14',
|
|
135
138
|
' - Ver escenas de UI: arcli storybook',
|
|
136
139
|
].join('\n'));
|
|
137
140
|
}
|
|
@@ -467,6 +470,24 @@ export function createFceObligationHelp() {
|
|
|
467
470
|
'',
|
|
468
471
|
].join('\n');
|
|
469
472
|
}
|
|
473
|
+
export function createVoucherQueryHelp() {
|
|
474
|
+
return [
|
|
475
|
+
'',
|
|
476
|
+
section('Ejemplos', [
|
|
477
|
+
' - arcli ultimos fb ultimas 10 facturas B del punto de venta configurado',
|
|
478
|
+
' - arcli ultimos nca --cantidad 25 ultimas 25 notas de credito A',
|
|
479
|
+
' - arcli consultar fb 14 detalle de la factura B numero 14',
|
|
480
|
+
' - arcli consultar fb 14 --json lo mismo, en JSON',
|
|
481
|
+
].join('\n')),
|
|
482
|
+
'',
|
|
483
|
+
section('Detalles', [
|
|
484
|
+
' - El tipo es el atajo del comprobante: fa, fb, fc, nca, ndb, fcea, etc.',
|
|
485
|
+
' - Sin --pv usa el punto de venta de la config.',
|
|
486
|
+
' - Solo consulta: no emite ni modifica nada.',
|
|
487
|
+
].join('\n')),
|
|
488
|
+
'',
|
|
489
|
+
].join('\n');
|
|
490
|
+
}
|
|
470
491
|
export function createShortcutHelp(shortcut) {
|
|
471
492
|
return [
|
|
472
493
|
'',
|