arcli 1.8.0 → 2.0.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 +56 -1
- package/README.md +2 -2
- package/dist/cli/commands/billing.command.options.js +17 -15
- package/dist/cli/commands/billing.command.options.js.map +1 -1
- package/dist/cli/commands/billing.command.parser.js +57 -28
- package/dist/cli/commands/billing.command.parser.js.map +1 -1
- package/dist/cli/commands/billing.command.pdf.d.ts +1 -1
- package/dist/cli/commands/billing.command.pdf.js +17 -2
- package/dist/cli/commands/billing.command.pdf.js.map +1 -1
- package/dist/cli/commands/config.command.js +4 -2
- package/dist/cli/commands/config.command.js.map +1 -1
- package/dist/cli/commands/vouchers.command.js +4 -4
- package/dist/cli/commands/vouchers.command.js.map +1 -1
- package/dist/cli/error-output.d.ts +7 -0
- package/dist/cli/error-output.js +26 -0
- package/dist/cli/error-output.js.map +1 -0
- package/dist/cli/help-argv.d.ts +5 -0
- package/dist/cli/help-argv.js +21 -0
- package/dist/cli/help-argv.js.map +1 -0
- package/dist/cli/help.js +3 -2
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/index.js +14 -20
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/interactive/advanced-options.js +2 -2
- package/dist/cli/interactive/advanced-options.js.map +1 -1
- package/dist/cli/interactive/interactive-mode.js +76 -8
- package/dist/cli/interactive/interactive-mode.js.map +1 -1
- package/dist/cli/interactive/invoice-picker.js +3 -2
- package/dist/cli/interactive/invoice-picker.js.map +1 -1
- package/dist/cli/interactive/note.flow.d.ts +2 -0
- package/dist/cli/interactive/note.flow.js +21 -8
- package/dist/cli/interactive/note.flow.js.map +1 -1
- package/dist/cli/interactive/pdf.flow.js +33 -22
- package/dist/cli/interactive/pdf.flow.js.map +1 -1
- package/dist/cli/interactive/prompts.d.ts +3 -1
- package/dist/cli/interactive/prompts.js +8 -4
- package/dist/cli/interactive/prompts.js.map +1 -1
- package/dist/cli/interactive/repeat.flow.js +22 -7
- package/dist/cli/interactive/repeat.flow.js.map +1 -1
- package/dist/cli/interactive/update.flow.d.ts +6 -0
- package/dist/cli/interactive/update.flow.js +26 -0
- package/dist/cli/interactive/update.flow.js.map +1 -0
- package/dist/cli/interactive/validators.js +8 -4
- package/dist/cli/interactive/validators.js.map +1 -1
- package/dist/cli/option-parsers.d.ts +6 -0
- package/dist/cli/option-parsers.js +34 -0
- package/dist/cli/option-parsers.js.map +1 -0
- package/dist/cli/version.d.ts +1 -1
- package/dist/cli/version.js +1 -1
- package/dist/lib/dates/arca-date.d.ts +13 -0
- package/dist/lib/dates/arca-date.js +28 -11
- package/dist/lib/dates/arca-date.js.map +1 -1
- package/dist/lib/errors/app-error.d.ts +3 -0
- package/dist/lib/errors/app-error.js +3 -0
- package/dist/lib/errors/app-error.js.map +1 -1
- package/dist/lib/files/restrict-to-owner.d.ts +7 -0
- package/dist/lib/files/restrict-to-owner.js +19 -0
- package/dist/lib/files/restrict-to-owner.js.map +1 -0
- package/dist/lib/identity/format-cuit.d.ts +2 -0
- package/dist/lib/identity/format-cuit.js +6 -0
- package/dist/lib/identity/format-cuit.js.map +1 -0
- package/dist/lib/numbers/argentine-amount.d.ts +23 -0
- package/dist/lib/numbers/argentine-amount.js +37 -0
- package/dist/lib/numbers/argentine-amount.js.map +1 -0
- package/dist/lib/numbers/strict-integer.d.ts +4 -0
- package/dist/lib/numbers/strict-integer.js +10 -0
- package/dist/lib/numbers/strict-integer.js.map +1 -0
- package/dist/lib/security/pem.js +5 -1
- package/dist/lib/security/pem.js.map +1 -1
- package/dist/modules/billing/billing-response.js +3 -2
- package/dist/modules/billing/billing-response.js.map +1 -1
- package/dist/modules/billing/billing.amounts.d.ts +2 -0
- package/dist/modules/billing/billing.amounts.js +6 -3
- package/dist/modules/billing/billing.amounts.js.map +1 -1
- package/dist/modules/billing/billing.associated-vouchers.js +14 -3
- package/dist/modules/billing/billing.associated-vouchers.js.map +1 -1
- package/dist/modules/billing/billing.batch.js +6 -0
- package/dist/modules/billing/billing.batch.js.map +1 -1
- package/dist/modules/billing/billing.date-range.js +14 -9
- package/dist/modules/billing/billing.date-range.js.map +1 -1
- package/dist/modules/billing/billing.display.js +4 -4
- package/dist/modules/billing/billing.display.js.map +1 -1
- package/dist/modules/billing/billing.errors.d.ts +12 -0
- package/dist/modules/billing/billing.errors.js +18 -0
- package/dist/modules/billing/billing.errors.js.map +1 -0
- package/dist/modules/billing/billing.schemas.js +13 -5
- package/dist/modules/billing/billing.schemas.js.map +1 -1
- package/dist/modules/billing/billing.service.js +10 -3
- package/dist/modules/billing/billing.service.js.map +1 -1
- package/dist/modules/billing/billing.validation.js +4 -0
- package/dist/modules/billing/billing.validation.js.map +1 -1
- package/dist/modules/config/config-value-parser.js +12 -10
- package/dist/modules/config/config-value-parser.js.map +1 -1
- package/dist/modules/config/config.schemas.d.ts +2 -2
- package/dist/modules/config/config.service.d.ts +5 -0
- package/dist/modules/config/config.service.js +29 -6
- package/dist/modules/config/config.service.js.map +1 -1
- package/dist/modules/examples/examples.js +5 -1
- package/dist/modules/examples/examples.js.map +1 -1
- package/dist/modules/interactive/amount-input.d.ts +3 -5
- package/dist/modules/interactive/amount-input.js +9 -26
- package/dist/modules/interactive/amount-input.js.map +1 -1
- package/dist/modules/interactive/config-fields.js +2 -1
- package/dist/modules/interactive/config-fields.js.map +1 -1
- package/dist/modules/interactive/equivalent-command.js +6 -8
- package/dist/modules/interactive/equivalent-command.js.map +1 -1
- package/dist/modules/interactive/invoice-copy.d.ts +19 -0
- package/dist/modules/interactive/invoice-copy.js +26 -0
- package/dist/modules/interactive/invoice-copy.js.map +1 -0
- package/dist/modules/interactive/periods.d.ts +2 -2
- package/dist/modules/interactive/periods.js +8 -4
- package/dist/modules/interactive/periods.js.map +1 -1
- package/dist/modules/parameters/health.d.ts +17 -0
- package/dist/modules/parameters/health.js +29 -0
- package/dist/modules/parameters/health.js.map +1 -0
- package/dist/modules/pdf/pdf.errors.d.ts +0 -1
- package/dist/modules/pdf/pdf.errors.js +1 -3
- package/dist/modules/pdf/pdf.errors.js.map +1 -1
- package/dist/modules/storybook/showcase.js +4 -1
- package/dist/modules/storybook/showcase.js.map +1 -1
- package/dist/modules/update-check/changelog.d.ts +23 -0
- package/dist/modules/update-check/changelog.js +99 -0
- package/dist/modules/update-check/changelog.js.map +1 -0
- package/dist/modules/update-check/update-check.presenter.d.ts +4 -0
- package/dist/modules/update-check/update-check.presenter.js +80 -2
- package/dist/modules/update-check/update-check.presenter.js.map +1 -1
- package/dist/modules/update-check/update-check.service.d.ts +3 -0
- package/dist/modules/update-check/update-check.service.js +2 -2
- package/dist/modules/update-check/update-check.service.js.map +1 -1
- package/dist/modules/vouchers/voucher-history.presenter.d.ts +3 -3
- package/dist/modules/vouchers/voucher-history.presenter.js +27 -7
- package/dist/modules/vouchers/voucher-history.presenter.js.map +1 -1
- package/dist/services/arca/arca-context.resolver.js +5 -0
- package/dist/services/arca/arca-context.resolver.js.map +1 -1
- package/dist/services/clipboard/clipboard.d.ts +2 -0
- package/dist/services/clipboard/clipboard.js +17 -0
- package/dist/services/clipboard/clipboard.js.map +1 -0
- package/dist/services/pdf/escape-html.d.ts +6 -0
- package/dist/services/pdf/escape-html.js +25 -0
- package/dist/services/pdf/escape-html.js.map +1 -0
- package/dist/services/pdf/pdf-exporter.js +2 -1
- package/dist/services/pdf/pdf-exporter.js.map +1 -1
- package/dist/ui/components/statusBar.d.ts +15 -4
- package/dist/ui/components/statusBar.js +16 -11
- package/dist/ui/components/statusBar.js.map +1 -1
- package/dist/ui/presenters/errors.presenter.js +5 -4
- package/dist/ui/presenters/errors.presenter.js.map +1 -1
- package/dist/ui/primitives/renderLogo.d.ts +2 -1
- package/dist/ui/primitives/renderLogo.js +21 -4
- package/dist/ui/primitives/renderLogo.js.map +1 -1
- package/dist/ui/primitives/renderPanel.d.ts +2 -0
- package/dist/ui/primitives/renderPanel.js +15 -5
- package/dist/ui/primitives/renderPanel.js.map +1 -1
- package/dist/ui/stream/terminal-stream.d.ts +6 -0
- package/dist/ui/stream/terminal-stream.js +15 -1
- package/dist/ui/stream/terminal-stream.js.map +1 -1
- package/dist/ui/theme/theme.d.ts +3 -3
- package/dist/ui/theme/theme.js +14 -3
- package/dist/ui/theme/theme.js.map +1 -1
- package/llms.txt +10 -8
- package/package.json +1 -1
|
@@ -2,9 +2,10 @@ import { ConfigService } from '../../modules/config/config.service.js';
|
|
|
2
2
|
import { parseConfigValue } from '../../modules/config/config-value-parser.js';
|
|
3
3
|
import { canHavePdf, resolvePdfDecision } from '../../modules/pdf/pdf-decision.js';
|
|
4
4
|
import { listMissingIssuerKeys } from '../../modules/pdf/pdf-issuer.js';
|
|
5
|
+
import { noticePanel, writeTerminalOutput } from '../../ui/index.js';
|
|
5
6
|
import { writePdfOutcomes } from '../commands/billing.command.output.js';
|
|
6
7
|
import { attachPdfs } from '../commands/billing.command.pdf.js';
|
|
7
|
-
import { askText, confirm } from './prompts.js';
|
|
8
|
+
import { askText, confirm, isPromptCancellation } from './prompts.js';
|
|
8
9
|
const ISSUER_QUESTIONS = {
|
|
9
10
|
cuit: 'CUIT del emisor',
|
|
10
11
|
'emisor.domicilio': 'Domicilio comercial del emisor',
|
|
@@ -63,27 +64,37 @@ export async function offerPdf(config, input, result) {
|
|
|
63
64
|
if (decision === 'omitir') {
|
|
64
65
|
return;
|
|
65
66
|
}
|
|
66
|
-
|
|
67
|
-
|
|
67
|
+
// Ya se emitio: un Ctrl+C aca no puede terminar en "No se emitio nada".
|
|
68
|
+
try {
|
|
69
|
+
if (decision === 'preguntar' &&
|
|
70
|
+
!(await confirm('¿Generamos el PDF del comprobante?', 'Si, generar el PDF', 'No'))) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
const description = await askText('Descripcion del comprobante (Enter para "Segun detalle")');
|
|
74
|
+
const receiverName = await askText('Nombre o razon social del receptor (Enter para omitir)');
|
|
75
|
+
const receiverAddress = await askText('Domicilio del receptor (Enter para omitir)');
|
|
76
|
+
const completedConfig = await completeIssuer(config);
|
|
77
|
+
const withPdf = await attachPdfs({
|
|
78
|
+
config: completedConfig,
|
|
79
|
+
inputs: [
|
|
80
|
+
{
|
|
81
|
+
...input,
|
|
82
|
+
pdf: true,
|
|
83
|
+
pdfDescription: description || undefined,
|
|
84
|
+
receiverAddress: receiverAddress || undefined,
|
|
85
|
+
receiverName: receiverName || undefined,
|
|
86
|
+
},
|
|
87
|
+
],
|
|
88
|
+
interactive: true,
|
|
89
|
+
results: [result],
|
|
90
|
+
});
|
|
91
|
+
writePdfOutcomes([result], withPdf);
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
if (!isPromptCancellation(error)) {
|
|
95
|
+
throw error;
|
|
96
|
+
}
|
|
97
|
+
writeTerminalOutput(noticePanel('El comprobante ya quedo emitido; no se genero el PDF.', 'muted'));
|
|
68
98
|
}
|
|
69
|
-
const description = await askText('Descripcion del comprobante (Enter para "Segun detalle")');
|
|
70
|
-
const receiverName = await askText('Nombre o razon social del receptor (Enter para omitir)');
|
|
71
|
-
const receiverAddress = await askText('Domicilio del receptor (Enter para omitir)');
|
|
72
|
-
const completedConfig = await completeIssuer(config);
|
|
73
|
-
const withPdf = await attachPdfs({
|
|
74
|
-
config: completedConfig,
|
|
75
|
-
inputs: [
|
|
76
|
-
{
|
|
77
|
-
...input,
|
|
78
|
-
pdf: true,
|
|
79
|
-
pdfDescription: description || undefined,
|
|
80
|
-
receiverAddress: receiverAddress || undefined,
|
|
81
|
-
receiverName: receiverName || undefined,
|
|
82
|
-
},
|
|
83
|
-
],
|
|
84
|
-
interactive: true,
|
|
85
|
-
results: [result],
|
|
86
|
-
});
|
|
87
|
-
writePdfOutcomes([result], withPdf);
|
|
88
99
|
}
|
|
89
100
|
//# sourceMappingURL=pdf.flow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdf.flow.js","sourceRoot":"","sources":["../../../src/cli/interactive/pdf.flow.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"pdf.flow.js","sourceRoot":"","sources":["../../../src/cli/interactive/pdf.flow.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,9 +9,11 @@ export interface Choice<T> {
|
|
|
9
9
|
}
|
|
10
10
|
/**
|
|
11
11
|
* Una lista simple. Con `escapeValue`, Esc la cierra devolviendo ese valor (por ejemplo, "volver", "no" o
|
|
12
|
-
* "salir") y la ayuda de teclas lo muestra con `escapeLabel`; sin el, Esc no hace nada.
|
|
12
|
+
* "salir") y la ayuda de teclas lo muestra con `escapeLabel`; sin el, Esc no hace nada. Con `compactTop`, una
|
|
13
|
+
* sola linea en blanco arriba en lugar de dos.
|
|
13
14
|
*/
|
|
14
15
|
export declare function chooseOne<T>(message: string, choices: ReadonlyArray<Choice<T> | Separator>, defaultValue?: T, options?: {
|
|
16
|
+
readonly compactTop?: boolean;
|
|
15
17
|
readonly escapeLabel?: string;
|
|
16
18
|
readonly escapeValue?: T;
|
|
17
19
|
}): Promise<T>;
|
|
@@ -24,6 +24,8 @@ function keysHelpTip(extra) {
|
|
|
24
24
|
* @inquirer la redibuja con el prefijo "done", sin esas lineas, y las respuestas quedan juntas.
|
|
25
25
|
*/
|
|
26
26
|
const PROMPT_PREFIX = { idle: `\n\n${styleText('blue', '?')}` };
|
|
27
|
+
/** Una sola linea arriba: para una pregunta que ya tiene una linea en blanco fija antes, como el menu bajo la barra. */
|
|
28
|
+
const COMPACT_PROMPT_PREFIX = { idle: `\n${styleText('blue', '?')}` };
|
|
27
29
|
/**
|
|
28
30
|
* En las listas, mientras la pregunta esta activa, una linea en blanco entre la pregunta y las opciones, y otra
|
|
29
31
|
* entre la descripcion de la opcion marcada y la ayuda de teclas.
|
|
@@ -40,10 +42,12 @@ const STEP_THEME = { prefix: PROMPT_PREFIX, style: listStyle([['esc', 'volver']]
|
|
|
40
42
|
const TEXT_THEME = { prefix: PROMPT_PREFIX };
|
|
41
43
|
/**
|
|
42
44
|
* Una lista simple. Con `escapeValue`, Esc la cierra devolviendo ese valor (por ejemplo, "volver", "no" o
|
|
43
|
-
* "salir") y la ayuda de teclas lo muestra con `escapeLabel`; sin el, Esc no hace nada.
|
|
45
|
+
* "salir") y la ayuda de teclas lo muestra con `escapeLabel`; sin el, Esc no hace nada. Con `compactTop`, una
|
|
46
|
+
* sola linea en blanco arriba en lugar de dos.
|
|
44
47
|
*/
|
|
45
48
|
export async function chooseOne(message, choices, defaultValue, options = {}) {
|
|
46
|
-
const { escapeLabel = 'volver', escapeValue } = options;
|
|
49
|
+
const { compactTop = false, escapeLabel = 'volver', escapeValue } = options;
|
|
50
|
+
const prefix = compactTop ? COMPACT_PROMPT_PREFIX : PROMPT_PREFIX;
|
|
47
51
|
const config = {
|
|
48
52
|
choices: [...choices],
|
|
49
53
|
default: defaultValue,
|
|
@@ -51,8 +55,8 @@ export async function chooseOne(message, choices, defaultValue, options = {}) {
|
|
|
51
55
|
message,
|
|
52
56
|
pageSize: 12,
|
|
53
57
|
theme: escapeValue === undefined
|
|
54
|
-
? MENU_THEME
|
|
55
|
-
: { prefix
|
|
58
|
+
? { ...MENU_THEME, prefix }
|
|
59
|
+
: { prefix, style: listStyle([['esc', escapeLabel]]) },
|
|
56
60
|
};
|
|
57
61
|
if (escapeValue === undefined) {
|
|
58
62
|
return select(config);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/cli/interactive/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,oBAAoB,CAAC;AAC1C,OAAO,KAAK,MAAM,iBAAiB,CAAC;AACpC,OAAO,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,IAAI,EAAa,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAYpC,mDAAmD;AACnD,MAAM,iBAAiB,GAA4B;IACjD,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,CAAC,GAAG,EAAE,UAAU,CAAC;IAC7B,cAAc,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;IACrC,aAAa,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC;IAC9B,UAAU,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC;IAC3B,UAAU,EAAE,CAAC,GAAG,EAAE,WAAW,CAAC;CAC/B,CAAC;AAEF,SAAS,WAAW,CAAC,KAAyB;IAC5C,OAAO,CAAC,IAAI,EAAE,EAAE,CACd,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,GAAG,IAAI,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC;SAC/F,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;SAC/E,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AACrC,CAAC;AAED;;;GAGG;AACH,MAAM,aAAa,GAAG,EAAE,IAAI,EAAE,OAAO,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/cli/interactive/prompts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { formatMoneyLabel } from '../../modules/billing/billing.labels.js';
|
|
2
2
|
import { parseAmountInput } from '../../modules/interactive/amount-input.js';
|
|
3
3
|
import { invoiceKindChoices, ivaConditionChoices } from '../../modules/interactive/choices.js';
|
|
4
|
+
import { copyInvoiceAmounts } from '../../modules/interactive/invoice-copy.js';
|
|
4
5
|
import { currentMonthPeriod, previousMonthPeriod } from '../../modules/interactive/periods.js';
|
|
5
6
|
import { BACK, runWizard } from '../../modules/interactive/wizard.js';
|
|
6
|
-
import {
|
|
7
|
+
import { resolveDocumentType } from '../../modules/vouchers/voucher-history.js';
|
|
7
8
|
import { noticePanel, writeTerminalOutput } from '../../ui/index.js';
|
|
8
9
|
import { askAdvancedOptions } from './advanced-options.js';
|
|
9
10
|
import { buildInvoiceInput } from './invoice.flow.js';
|
|
@@ -48,11 +49,17 @@ export function repeatSteps(session, pointOfSale, today = new Date()) {
|
|
|
48
49
|
writeTerminalOutput(noticePanel('La factura tiene un tipo de documento que el asistente no soporta. Usa los flags del CLI.', 'warning'));
|
|
49
50
|
return BACK;
|
|
50
51
|
}
|
|
52
|
+
const copy = copyInvoiceAmounts(original, voucherKind.letter);
|
|
53
|
+
if (copy.limitation) {
|
|
54
|
+
writeTerminalOutput(noticePanel(`${copy.limitation} Revisa la alicuota y el monto antes de emitir.`, 'warning'));
|
|
55
|
+
}
|
|
51
56
|
return {
|
|
52
57
|
advanced: {
|
|
53
58
|
currencyCode: 'ARS',
|
|
54
|
-
|
|
59
|
+
exemptAmount: copy.exemptAmount,
|
|
60
|
+
ivaRate: copy.ivaRate,
|
|
55
61
|
sameCurrency: false,
|
|
62
|
+
untaxedAmount: copy.untaxedAmount,
|
|
56
63
|
},
|
|
57
64
|
concept: CONCEPTS_BY_CODE[original.concept ?? 2] ?? 'servicios',
|
|
58
65
|
documentNumber: documentType === 'consumidor-final' ? undefined : original.documentNumber,
|
|
@@ -76,10 +83,14 @@ export function repeatSteps(session, pointOfSale, today = new Date()) {
|
|
|
76
83
|
name: 'monto',
|
|
77
84
|
run: async (state) => {
|
|
78
85
|
const original = state.original;
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
86
|
+
// Si no se puede reproducir (varias alicuotas, tributos), "mismo monto" no daria la misma factura.
|
|
87
|
+
const reproducible = !copyInvoiceAmounts(original, state.voucherKind?.letter ?? 'c').limitation;
|
|
88
|
+
const scope = reproducible
|
|
89
|
+
? await chooseStep('¿Mismo monto?', [
|
|
90
|
+
{ name: `Si, ${formatMoneyLabel(original.total)}`, value: 'mismo' },
|
|
91
|
+
{ name: 'No, ingresar otro monto', value: 'otro' },
|
|
92
|
+
])
|
|
93
|
+
: 'otro';
|
|
83
94
|
if (scope === BACK || scope === 'mismo') {
|
|
84
95
|
return scope === BACK ? BACK : { totalAmount: original.total };
|
|
85
96
|
}
|
|
@@ -136,7 +147,11 @@ export function repeatSteps(session, pointOfSale, today = new Date()) {
|
|
|
136
147
|
const advanced = await askAdvancedOptions(state.advanced, {
|
|
137
148
|
concept: state.concept ?? 'servicios',
|
|
138
149
|
defaultIvaRate: state.advanced.ivaRate ?? config.alicuotaPorDefecto ?? '21',
|
|
139
|
-
|
|
150
|
+
// Sin alicuota deducida de la factura, que la elija en lugar de caer en la de la config.
|
|
151
|
+
preselected: [
|
|
152
|
+
...(foreign ? ['divisas'] : []),
|
|
153
|
+
...(!state.advanced.ivaRate && state.voucherKind?.letter !== 'c' ? ['alicuota'] : []),
|
|
154
|
+
],
|
|
140
155
|
voucherKind: state.voucherKind,
|
|
141
156
|
});
|
|
142
157
|
return advanced === BACK ? BACK : { advanced };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repeat.flow.js","sourceRoot":"","sources":["../../../src/cli/interactive/repeat.flow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAGxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAC5F,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAsB,MAAM,mCAAmC,CAAC;AAChH,OAAO,EAAE,IAAI,EAAE,SAAS,EAAmB,MAAM,kCAAkC,CAAC;AACpF,OAAO,
|
|
1
|
+
{"version":3,"file":"repeat.flow.js","sourceRoot":"","sources":["../../../src/cli/interactive/repeat.flow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { UpdateCheckResult } from '../../modules/update-check/update-check.service';
|
|
2
|
+
/**
|
|
3
|
+
* Muestra la version nueva y sus novedades. Con "Cerrar para actualizar" copia el comando al portapapeles y
|
|
4
|
+
* devuelve `true` para que el modo interactivo termine: arcli no se puede reemplazar a si mismo mientras corre.
|
|
5
|
+
*/
|
|
6
|
+
export declare function runUpdateFlow(update: UpdateCheckResult): Promise<boolean>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { BACK } from '../../modules/interactive/wizard.js';
|
|
2
|
+
import { extractChangelog, fetchChangelog } from '../../modules/update-check/changelog.js';
|
|
3
|
+
import { renderUpdateDetails, UPDATE_COMMAND } from '../../modules/update-check/update-check.presenter.js';
|
|
4
|
+
import { copyToClipboard } from '../../services/clipboard/clipboard.js';
|
|
5
|
+
import { noticePanel, writeTerminalOutput } from '../../ui/index.js';
|
|
6
|
+
import { startSpinner } from '../spinner.js';
|
|
7
|
+
import { chooseStep } from './prompts.js';
|
|
8
|
+
/**
|
|
9
|
+
* Muestra la version nueva y sus novedades. Con "Cerrar para actualizar" copia el comando al portapapeles y
|
|
10
|
+
* devuelve `true` para que el modo interactivo termine: arcli no se puede reemplazar a si mismo mientras corre.
|
|
11
|
+
*/
|
|
12
|
+
export async function runUpdateFlow(update) {
|
|
13
|
+
const spinner = startSpinner('Buscando las novedades...');
|
|
14
|
+
const markdown = await fetchChangelog(update.latestVersion);
|
|
15
|
+
spinner?.stop();
|
|
16
|
+
writeTerminalOutput(renderUpdateDetails(update, markdown === undefined ? undefined : extractChangelog(markdown, update.currentVersion, update.latestVersion)));
|
|
17
|
+
// "← Volver" (o Esc) lo agrega chooseStep, igual que en el resto de los menus.
|
|
18
|
+
if ((await chooseStep('¿Actualizamos?', [{ name: 'Cerrar para actualizar', value: 'cerrar' }])) === BACK) {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
writeTerminalOutput(copyToClipboard(UPDATE_COMMAND)
|
|
22
|
+
? noticePanel(`Comando copiado. Pegalo en la terminal y apreta Enter:\n${UPDATE_COMMAND}`, 'success')
|
|
23
|
+
: noticePanel(`No se pudo copiar el comando. Ejecutalo en la terminal:\n${UPDATE_COMMAND}`, 'warning'));
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=update.flow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.flow.js","sourceRoot":"","sources":["../../../src/cli/interactive/update.flow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kCAAkC,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACxF,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,mDAAmD,CAAC;AAExG,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAyB;IAC3D,MAAM,OAAO,GAAG,YAAY,CAAC,2BAA2B,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAE5D,OAAO,EAAE,IAAI,EAAE,CAAC;IAChB,mBAAmB,CACjB,mBAAmB,CACjB,MAAM,EACN,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,aAAa,CAAC,CAC7G,CACF,CAAC;IAEF,+EAA+E;IAC/E,IAAI,CAAC,MAAM,UAAU,CAAC,gBAAgB,EAAE,CAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACzG,OAAO,KAAK,CAAC;IACf,CAAC;IAED,mBAAmB,CACjB,eAAe,CAAC,cAAc,CAAC;QAC7B,CAAC,CAAC,WAAW,CAAC,2DAA2D,cAAc,EAAE,EAAE,SAAS,CAAC;QACrG,CAAC,CAAC,WAAW,CAAC,4DAA4D,cAAc,EAAE,EAAE,SAAS,CAAC,CACzG,CAAC;IAEF,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { parseArgentineDateInputAsArcaDate } from '../../lib/dates/arca-date.js';
|
|
2
|
-
import {
|
|
2
|
+
import { EXCHANGE_RATE_DECIMALS, parseArgentineAmount } from '../../lib/numbers/argentine-amount.js';
|
|
3
3
|
export function validateAmount(value) {
|
|
4
|
-
|
|
4
|
+
const result = parseArgentineAmount(value);
|
|
5
|
+
return result.ok ? true : `Monto invalido: ${result.reason}. Por ejemplo 150000, 150.000 o 1.500,50.`;
|
|
5
6
|
}
|
|
6
7
|
export function validateCuit(value) {
|
|
7
8
|
return /^\d{11}$/.test(value.replace(/-/g, '')) ? true : 'El CUIT tiene 11 digitos.';
|
|
@@ -29,7 +30,10 @@ export function validateOptionalAmount(value) {
|
|
|
29
30
|
return value.trim() === '' ? true : validateAmount(value);
|
|
30
31
|
}
|
|
31
32
|
export function validateExchangeRate(value) {
|
|
32
|
-
const
|
|
33
|
-
|
|
33
|
+
const result = parseArgentineAmount(value, { maxDecimals: EXCHANGE_RATE_DECIMALS });
|
|
34
|
+
if (!result.ok) {
|
|
35
|
+
return `Cotizacion invalida: ${result.reason}. Por ejemplo 1200 o 1.185,50.`;
|
|
36
|
+
}
|
|
37
|
+
return result.value !== 1 ? true : 'Ingresa la cotizacion acordada, por ejemplo 1200 o 1.185,50.';
|
|
34
38
|
}
|
|
35
39
|
//# sourceMappingURL=validators.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../src/cli/interactive/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../src/cli/interactive/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAElG,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAE3C,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,MAAM,CAAC,MAAM,2CAA2C,CAAC;AACxG,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,2BAA2B,CAAC;AACvF,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,6BAA6B,CAAC;AAC3F,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,0BAA0B,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACnD,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,IAAI,CAAC;QACH,iCAAiC,CAAC,KAAK,CAAC,CAAC;QAEzC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,sEAAsE,CAAC;IAChF,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,sBAAsB,CAAC,KAAa;IAClD,OAAO,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,sBAAsB,EAAE,CAAC,CAAC;IAEpF,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,OAAO,wBAAwB,MAAM,CAAC,MAAM,gCAAgC,CAAC;IAC/E,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,8DAA8D,CAAC;AACpG,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** Montos como en Argentina: punto para miles y coma para decimales. */
|
|
2
|
+
export declare function amountOption(flag: string, maxDecimals?: number): (value: string) => number;
|
|
3
|
+
/** Entero solo con digitos: `--pv 3a` es un error, no un 3. */
|
|
4
|
+
export declare function integerOption(flag: string): (value: string) => number;
|
|
5
|
+
/** CUIT, CUIL o DNI: acepta guiones y puntos (`20-11111111-2`). */
|
|
6
|
+
export declare function documentNumberOption(flag: string): (value: string) => number;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { InputValidationError } from '../lib/errors/app-error.js';
|
|
2
|
+
import { parseArgentineAmount } from '../lib/numbers/argentine-amount.js';
|
|
3
|
+
import { parseDocumentNumber, parseStrictInteger } from '../lib/numbers/strict-integer.js';
|
|
4
|
+
/** Montos como en Argentina: punto para miles y coma para decimales. */
|
|
5
|
+
export function amountOption(flag, maxDecimals) {
|
|
6
|
+
return (value) => {
|
|
7
|
+
const result = parseArgentineAmount(value, { maxDecimals });
|
|
8
|
+
if (!result.ok) {
|
|
9
|
+
throw new InputValidationError(`${flag} "${value}" no es valido: ${result.reason}.`);
|
|
10
|
+
}
|
|
11
|
+
return result.value;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
/** Entero solo con digitos: `--pv 3a` es un error, no un 3. */
|
|
15
|
+
export function integerOption(flag) {
|
|
16
|
+
return (value) => {
|
|
17
|
+
const parsed = parseStrictInteger(value);
|
|
18
|
+
if (parsed === undefined) {
|
|
19
|
+
throw new InputValidationError(`${flag} "${value}" no es valido: tiene que ser un numero entero.`);
|
|
20
|
+
}
|
|
21
|
+
return parsed;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
/** CUIT, CUIL o DNI: acepta guiones y puntos (`20-11111111-2`). */
|
|
25
|
+
export function documentNumberOption(flag) {
|
|
26
|
+
return (value) => {
|
|
27
|
+
const parsed = parseDocumentNumber(value);
|
|
28
|
+
if (parsed === undefined) {
|
|
29
|
+
throw new InputValidationError(`${flag} "${value}" no es valido: use solo numeros, con o sin guiones.`);
|
|
30
|
+
}
|
|
31
|
+
return parsed;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=option-parsers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"option-parsers.js","sourceRoot":"","sources":["../../src/cli/option-parsers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAExF,wEAAwE;AACxE,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,WAAoB;IAC7D,OAAO,CAAC,KAAK,EAAE,EAAE;QACf,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;QAE5D,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,oBAAoB,CAAC,GAAG,IAAI,KAAK,KAAK,mBAAmB,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QACvF,CAAC;QAED,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC,CAAC;AACJ,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,CAAC,KAAK,EAAE,EAAE;QACf,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAEzC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,oBAAoB,CAAC,GAAG,IAAI,KAAK,KAAK,iDAAiD,CAAC,CAAC;QACrG,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,OAAO,CAAC,KAAK,EAAE,EAAE;QACf,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAE1C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,oBAAoB,CAAC,GAAG,IAAI,KAAK,KAAK,sDAAsD,CAAC,CAAC;QAC1G,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/cli/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const CLI_VERSION = "
|
|
1
|
+
export declare const CLI_VERSION = "2.0.0";
|
package/dist/cli/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const CLI_VERSION = '
|
|
1
|
+
export const CLI_VERSION = '2.0.0';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
|
@@ -1,3 +1,16 @@
|
|
|
1
|
+
export interface CalendarDate {
|
|
2
|
+
readonly day: number;
|
|
3
|
+
/** 1 a 12. */
|
|
4
|
+
readonly month: number;
|
|
5
|
+
readonly year: number;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Dia calendario en Argentina de un instante. ARCA trabaja con la fecha argentina: en un servidor con TZ=UTC,
|
|
9
|
+
* despues de las 21 hs la fecha local ya es la del dia siguiente.
|
|
10
|
+
*/
|
|
11
|
+
export declare function toArgentineCalendarDate(value: Date): CalendarDate;
|
|
12
|
+
export declare function calendarDateToArcaDate(value: CalendarDate): string;
|
|
13
|
+
/** Fecha ARCA (yyyymmdd) del dia en Argentina en ese instante. */
|
|
1
14
|
export declare function formatDateAsArcaDate(value: Date): string;
|
|
2
15
|
/** Dias entre dos fechas ARCA (yyyymmdd): positivo si `to` es posterior a `from`. */
|
|
3
16
|
export declare function diffArcaDatesInDays(from: string, to: string): number;
|
|
@@ -1,11 +1,25 @@
|
|
|
1
1
|
import { InputValidationError } from '../errors/app-error.js';
|
|
2
2
|
const ARGENTINE_DATE_FORMAT_HINT = 'Use D, DD, D-MM, D/MM, D-MM-YY, D/MM/YY, D-MM-YYYY o D/MM/YYYY.';
|
|
3
|
-
|
|
3
|
+
const ARGENTINE_DATE_PARTS = new Intl.DateTimeFormat('en-CA', {
|
|
4
|
+
day: '2-digit',
|
|
5
|
+
month: '2-digit',
|
|
6
|
+
timeZone: 'America/Argentina/Buenos_Aires',
|
|
7
|
+
year: 'numeric',
|
|
8
|
+
});
|
|
9
|
+
/**
|
|
10
|
+
* Dia calendario en Argentina de un instante. ARCA trabaja con la fecha argentina: en un servidor con TZ=UTC,
|
|
11
|
+
* despues de las 21 hs la fecha local ya es la del dia siguiente.
|
|
12
|
+
*/
|
|
13
|
+
export function toArgentineCalendarDate(value) {
|
|
14
|
+
const parts = Object.fromEntries(ARGENTINE_DATE_PARTS.formatToParts(value).map((part) => [part.type, part.value]));
|
|
15
|
+
return { day: Number(parts.day), month: Number(parts.month), year: Number(parts.year) };
|
|
16
|
+
}
|
|
17
|
+
export function calendarDateToArcaDate(value) {
|
|
18
|
+
return `${value.year}${String(value.month).padStart(2, '0')}${String(value.day).padStart(2, '0')}`;
|
|
19
|
+
}
|
|
20
|
+
/** Fecha ARCA (yyyymmdd) del dia en Argentina en ese instante. */
|
|
4
21
|
export function formatDateAsArcaDate(value) {
|
|
5
|
-
|
|
6
|
-
const month = String(value.getMonth() + 1).padStart(2, '0');
|
|
7
|
-
const day = String(value.getDate()).padStart(2, '0');
|
|
8
|
-
return `${year}${month}${day}`;
|
|
22
|
+
return calendarDateToArcaDate(toArgentineCalendarDate(value));
|
|
9
23
|
}
|
|
10
24
|
function arcaDateToUtcTime(value) {
|
|
11
25
|
return Date.UTC(Number(value.slice(0, 4)), Number(value.slice(4, 6)) - 1, Number(value.slice(6, 8)));
|
|
@@ -27,18 +41,21 @@ export function parseArgentineDateInputAsArcaDate(value, referenceDate = new Dat
|
|
|
27
41
|
throw new InputValidationError(`La fecha "${value}" no es valida. ${ARGENTINE_DATE_FORMAT_HINT}`);
|
|
28
42
|
}
|
|
29
43
|
const [, rawDay, , rawMonth, explicitYear] = dateMatch;
|
|
44
|
+
const today = toArgentineCalendarDate(referenceDate);
|
|
30
45
|
const day = rawDay.padStart(2, '0');
|
|
31
|
-
const month = (rawMonth ?? String(
|
|
32
|
-
const year = resolveYear(explicitYear,
|
|
33
|
-
const date = new Date(Number(year), Number(month) - 1, Number(day));
|
|
34
|
-
if (date.
|
|
46
|
+
const month = (rawMonth ?? String(today.month)).padStart(2, '0');
|
|
47
|
+
const year = resolveYear(explicitYear, today);
|
|
48
|
+
const date = new Date(Date.UTC(Number(year), Number(month) - 1, Number(day)));
|
|
49
|
+
if (date.getUTCFullYear() !== Number(year) ||
|
|
50
|
+
date.getUTCMonth() !== Number(month) - 1 ||
|
|
51
|
+
date.getUTCDate() !== Number(day)) {
|
|
35
52
|
throw new InputValidationError(`La fecha "${value}" no es valida.`);
|
|
36
53
|
}
|
|
37
54
|
return `${year}${month}${day}`;
|
|
38
55
|
}
|
|
39
|
-
function resolveYear(explicitYear,
|
|
56
|
+
function resolveYear(explicitYear, today) {
|
|
40
57
|
if (!explicitYear) {
|
|
41
|
-
return String(
|
|
58
|
+
return String(today.year);
|
|
42
59
|
}
|
|
43
60
|
return explicitYear.length === 2 ? `20${explicitYear}` : explicitYear;
|
|
44
61
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arca-date.js","sourceRoot":"","sources":["../../../src/lib/dates/arca-date.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,MAAM,0BAA0B,GAAG,iEAAiE,CAAC;
|
|
1
|
+
{"version":3,"file":"arca-date.js","sourceRoot":"","sources":["../../../src/lib/dates/arca-date.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
export declare class AppError extends Error {
|
|
2
2
|
readonly code: string;
|
|
3
3
|
readonly details?: Record<string, unknown>;
|
|
4
|
+
/** Que hacer ahora; sale como "Sugerencia" en texto y `sugerencia` en JSON. */
|
|
5
|
+
readonly suggestion?: string;
|
|
4
6
|
constructor(message: string, options: {
|
|
5
7
|
code: string;
|
|
6
8
|
details?: Record<string, unknown>;
|
|
9
|
+
suggestion?: string;
|
|
7
10
|
});
|
|
8
11
|
}
|
|
9
12
|
export declare class ConfigurationError extends AppError {
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
export class AppError extends Error {
|
|
2
2
|
code;
|
|
3
3
|
details;
|
|
4
|
+
/** Que hacer ahora; sale como "Sugerencia" en texto y `sugerencia` en JSON. */
|
|
5
|
+
suggestion;
|
|
4
6
|
constructor(message, options) {
|
|
5
7
|
super(message);
|
|
6
8
|
this.name = 'AppError';
|
|
7
9
|
this.code = options.code;
|
|
8
10
|
this.details = options.details;
|
|
11
|
+
this.suggestion = options.suggestion;
|
|
9
12
|
}
|
|
10
13
|
}
|
|
11
14
|
export class ConfigurationError extends AppError {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-error.js","sourceRoot":"","sources":["../../../src/lib/errors/app-error.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,QAAS,SAAQ,KAAK;IACjB,IAAI,CAAS;IACb,OAAO,CAA2B;
|
|
1
|
+
{"version":3,"file":"app-error.js","sourceRoot":"","sources":["../../../src/lib/errors/app-error.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,QAAS,SAAQ,KAAK;IACjB,IAAI,CAAS;IACb,OAAO,CAA2B;IAClD,+EAA+E;IAC/D,UAAU,CAAU;IAEpC,YACE,OAAe,EACf,OAAiF;QAEjF,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IACvC,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,QAAQ;IAC9C,YAAmB,OAAe,EAAE,OAAiC;QACnE,KAAK,CAAC,OAAO,EAAE;YACb,IAAI,EAAE,qBAAqB;YAC3B,OAAO;SACR,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,MAAM,OAAO,oBAAqB,SAAQ,QAAQ;IAChD,YAAmB,OAAe,EAAE,OAAiC;QACnE,KAAK,CAAC,OAAO,EAAE;YACb,IAAI,EAAE,wBAAwB;YAC9B,OAAO;SACR,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Permisos solo para el dueno en archivos y carpetas nuevos: tickets de ARCA, config y PDFs. */
|
|
2
|
+
export declare const OWNER_ONLY_UMASK = 63;
|
|
3
|
+
/**
|
|
4
|
+
* Deja una carpeta existente en 0700. Alcanza para proteger lo de adentro (por ejemplo tickets viejos en 0644):
|
|
5
|
+
* sin permiso de la carpeta, nadie mas llega a los archivos. Si no es nuestra o el sistema no lo soporta, sigue.
|
|
6
|
+
*/
|
|
7
|
+
export declare function restrictFolderToOwner(path: string): void;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { chmodSync, existsSync } from 'node:fs';
|
|
2
|
+
/** Permisos solo para el dueno en archivos y carpetas nuevos: tickets de ARCA, config y PDFs. */
|
|
3
|
+
export const OWNER_ONLY_UMASK = 0o077;
|
|
4
|
+
/**
|
|
5
|
+
* Deja una carpeta existente en 0700. Alcanza para proteger lo de adentro (por ejemplo tickets viejos en 0644):
|
|
6
|
+
* sin permiso de la carpeta, nadie mas llega a los archivos. Si no es nuestra o el sistema no lo soporta, sigue.
|
|
7
|
+
*/
|
|
8
|
+
export function restrictFolderToOwner(path) {
|
|
9
|
+
if (process.platform === 'win32' || !existsSync(path)) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
try {
|
|
13
|
+
chmodSync(path, 0o700);
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
// Carpeta de otro usuario o sistema de archivos sin permisos POSIX: no es motivo para frenar el comando.
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=restrict-to-owner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restrict-to-owner.js","sourceRoot":"","sources":["../../../src/lib/files/restrict-to-owner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEhD,iGAAiG;AACjG,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAEtC;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,yGAAyG;IAC3G,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** CUIT o CUIL con guiones, como lo muestra ARCA: `20409509763` → `20-40950976-3`. Si no tiene 11 digitos, sin cambios. */
|
|
2
|
+
export function formatCuit(value) {
|
|
3
|
+
const digits = String(value);
|
|
4
|
+
return /^\d{11}$/.test(digits) ? `${digits.slice(0, 2)}-${digits.slice(2, 10)}-${digits.slice(10)}` : digits;
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=format-cuit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-cuit.js","sourceRoot":"","sources":["../../../src/lib/identity/format-cuit.ts"],"names":[],"mappings":"AAAA,2HAA2H;AAC3H,MAAM,UAAU,UAAU,CAAC,KAAsB;IAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAE7B,OAAO,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AAC/G,CAAC"}
|