arcli 1.2.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 +79 -1
- package/README.md +4 -3
- 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 +16 -13
- package/dist/cli/commands/billing.command.shared.js.map +1 -1
- package/dist/cli/commands/config.command.d.ts +5 -0
- package/dist/cli/commands/config.command.js +3 -3
- package/dist/cli/commands/config.command.js.map +1 -1
- package/dist/cli/commands/fce-obligation.command.js +2 -2
- package/dist/cli/commands/fce-obligation.command.js.map +1 -1
- package/dist/cli/commands/interactive.command.d.ts +3 -0
- package/dist/cli/commands/interactive.command.js +22 -0
- package/dist/cli/commands/interactive.command.js.map +1 -0
- package/dist/cli/commands/storybook.command.js +3 -2
- package/dist/cli/commands/storybook.command.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 +23 -1
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/index.js +3 -1
- package/dist/cli/index.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.d.ts +2 -0
- package/dist/cli/interactive/history.flow.js +22 -0
- package/dist/cli/interactive/history.flow.js.map +1 -0
- package/dist/cli/interactive/interactive-mode.d.ts +3 -0
- package/dist/cli/interactive/interactive-mode.js +93 -0
- package/dist/cli/interactive/interactive-mode.js.map +1 -0
- package/dist/cli/interactive/invoice.flow.d.ts +22 -0
- package/dist/cli/interactive/invoice.flow.js +132 -0
- package/dist/cli/interactive/invoice.flow.js.map +1 -0
- package/dist/cli/interactive/note.flow.d.ts +26 -0
- package/dist/cli/interactive/note.flow.js +236 -0
- package/dist/cli/interactive/note.flow.js.map +1 -0
- package/dist/cli/interactive/prompts.d.ts +21 -0
- package/dist/cli/interactive/prompts.js +46 -0
- package/dist/cli/interactive/prompts.js.map +1 -0
- package/dist/cli/interactive/session.d.ts +22 -0
- package/dist/cli/interactive/session.js +88 -0
- package/dist/cli/interactive/session.js.map +1 -0
- package/dist/cli/interactive/validators.d.ts +9 -0
- package/dist/cli/interactive/validators.js +35 -0
- package/dist/cli/interactive/validators.js.map +1 -0
- package/dist/cli/program.js +4 -0
- package/dist/cli/program.js.map +1 -1
- package/dist/cli/spinner.d.ts +8 -0
- package/dist/cli/spinner.js +14 -0
- package/dist/cli/spinner.js.map +1 -0
- 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 +16 -7
- package/dist/modules/billing/billing.display.js.map +1 -1
- package/dist/modules/billing/billing.iva-receptor.d.ts +1 -0
- package/dist/modules/billing/billing.iva-receptor.js +3 -0
- package/dist/modules/billing/billing.iva-receptor.js.map +1 -1
- package/dist/modules/billing/billing.schemas.d.ts +35 -4
- package/dist/modules/billing/billing.schemas.js +26 -6
- package/dist/modules/billing/billing.schemas.js.map +1 -1
- package/dist/modules/billing/billing.text.js +10 -6
- package/dist/modules/billing/billing.text.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/config/config.presenter.js +2 -2
- package/dist/modules/config/config.presenter.js.map +1 -1
- package/dist/modules/config/config.schemas.d.ts +2 -2
- package/dist/modules/examples/examples.js +2 -13
- package/dist/modules/examples/examples.js.map +1 -1
- package/dist/modules/fce/fce-obligation.presenter.js +1 -1
- package/dist/modules/fce/fce-obligation.presenter.js.map +1 -1
- package/dist/modules/interactive/amount-input.d.ts +6 -0
- package/dist/modules/interactive/amount-input.js +29 -0
- package/dist/modules/interactive/amount-input.js.map +1 -0
- package/dist/modules/interactive/choices.d.ts +13 -0
- package/dist/modules/interactive/choices.js +56 -0
- package/dist/modules/interactive/choices.js.map +1 -0
- package/dist/modules/interactive/equivalent-command.d.ts +8 -0
- package/dist/modules/interactive/equivalent-command.js +98 -0
- package/dist/modules/interactive/equivalent-command.js.map +1 -0
- 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/storybook/showcase.d.ts +1 -1
- package/dist/modules/storybook/showcase.js +50 -6
- package/dist/modules/storybook/showcase.js.map +1 -1
- package/dist/modules/update-check/update-check.presenter.js +1 -1
- package/dist/modules/update-check/update-check.presenter.js.map +1 -1
- package/dist/modules/vouchers/voucher-history.d.ts +34 -0
- package/dist/modules/vouchers/voucher-history.js +43 -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 +8 -0
- package/dist/services/arca/arca-voucher-history.gateway.js +36 -0
- package/dist/services/arca/arca-voucher-history.gateway.js.map +1 -0
- package/dist/ui/components/contentPanel.d.ts +2 -2
- package/dist/ui/components/contentPanel.js +2 -1
- package/dist/ui/components/contentPanel.js.map +1 -1
- package/dist/ui/components/errorPanel.js +3 -3
- package/dist/ui/components/errorPanel.js.map +1 -1
- package/dist/ui/components/index.d.ts +3 -0
- package/dist/ui/components/index.js +3 -0
- package/dist/ui/components/index.js.map +1 -1
- package/dist/ui/components/keyValuePanel.d.ts +2 -2
- package/dist/ui/components/keyValuePanel.js +2 -1
- package/dist/ui/components/keyValuePanel.js.map +1 -1
- package/dist/ui/components/rawPanel.js +1 -1
- package/dist/ui/components/rawPanel.js.map +1 -1
- package/dist/ui/components/sectionHeading.d.ts +3 -0
- package/dist/ui/components/sectionHeading.js +13 -0
- package/dist/ui/components/sectionHeading.js.map +1 -0
- package/dist/ui/components/statusBar.d.ts +6 -0
- package/dist/ui/components/statusBar.js +24 -0
- package/dist/ui/components/statusBar.js.map +1 -0
- package/dist/ui/components/statusPanel.d.ts +2 -2
- package/dist/ui/components/statusPanel.js +2 -1
- package/dist/ui/components/statusPanel.js.map +1 -1
- package/dist/ui/components/testingBanner.d.ts +2 -0
- package/dist/ui/components/testingBanner.js +6 -0
- package/dist/ui/components/testingBanner.js.map +1 -0
- 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/renderLogo.js +5 -0
- package/dist/ui/primitives/renderLogo.js.map +1 -1
- package/dist/ui/primitives/renderPanel.d.ts +3 -1
- package/dist/ui/primitives/renderPanel.js +68 -21
- package/dist/ui/primitives/renderPanel.js.map +1 -1
- package/dist/ui/primitives/terminalWidth.d.ts +4 -0
- package/dist/ui/primitives/terminalWidth.js +11 -0
- package/dist/ui/primitives/terminalWidth.js.map +1 -0
- package/dist/ui/primitives/text.d.ts +10 -0
- package/dist/ui/primitives/text.js +101 -30
- package/dist/ui/primitives/text.js.map +1 -1
- package/dist/ui/theme/theme.d.ts +45 -4
- package/dist/ui/theme/theme.js +183 -5
- package/dist/ui/theme/theme.js.map +1 -1
- package/llms.txt +15 -2
- package/package.json +15 -13
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare function validateAmount(value: string): string | true;
|
|
2
|
+
export declare function validateCuit(value: string): string | true;
|
|
3
|
+
export declare function validateDni(value: string): string | true;
|
|
4
|
+
export declare function validateCbu(value: string): string | true;
|
|
5
|
+
export declare function normalizeDocumentNumber(value: string): number;
|
|
6
|
+
export declare function validateDate(value: string): string | true;
|
|
7
|
+
/** Monto opcional: vacio es "no", si no tiene que ser un monto valido. */
|
|
8
|
+
export declare function validateOptionalAmount(value: string): string | true;
|
|
9
|
+
export declare function validateExchangeRate(value: string): string | true;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { parseArgentineDateInputAsArcaDate } from '../../lib/dates/arca-date.js';
|
|
2
|
+
import { parseAmountInput } from '../../modules/interactive/amount-input.js';
|
|
3
|
+
export function validateAmount(value) {
|
|
4
|
+
return parseAmountInput(value) ? true : 'Ingresa un monto mayor a 0, por ejemplo 150000 o 1500,50.';
|
|
5
|
+
}
|
|
6
|
+
export function validateCuit(value) {
|
|
7
|
+
return /^\d{11}$/.test(value.replace(/-/g, '')) ? true : 'El CUIT tiene 11 digitos.';
|
|
8
|
+
}
|
|
9
|
+
export function validateDni(value) {
|
|
10
|
+
return /^\d{7,8}$/.test(value.replace(/\./g, '')) ? true : 'El DNI tiene 7 u 8 digitos.';
|
|
11
|
+
}
|
|
12
|
+
export function validateCbu(value) {
|
|
13
|
+
return /^\d{22}$/.test(value) ? true : 'El CBU tiene 22 digitos.';
|
|
14
|
+
}
|
|
15
|
+
export function normalizeDocumentNumber(value) {
|
|
16
|
+
return Number(value.replace(/[-.]/g, ''));
|
|
17
|
+
}
|
|
18
|
+
export function validateDate(value) {
|
|
19
|
+
try {
|
|
20
|
+
parseArgentineDateInputAsArcaDate(value);
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return 'Fecha invalida. Usa D/M/AAAA, D/M o solo el dia (por ejemplo 15/10).';
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/** Monto opcional: vacio es "no", si no tiene que ser un monto valido. */
|
|
28
|
+
export function validateOptionalAmount(value) {
|
|
29
|
+
return value.trim() === '' ? true : validateAmount(value);
|
|
30
|
+
}
|
|
31
|
+
export function validateExchangeRate(value) {
|
|
32
|
+
const rate = parseAmountInput(value);
|
|
33
|
+
return rate && rate !== 1 ? true : 'Ingresa la cotizacion acordada, por ejemplo 1200 o 1185,50.';
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=validators.js.map
|
|
@@ -0,0 +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,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAE1E,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,2DAA2D,CAAC;AACtG,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,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAErC,OAAO,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,6DAA6D,CAAC;AACnG,CAAC"}
|
package/dist/cli/program.js
CHANGED
|
@@ -5,7 +5,9 @@ import { registerBillingShortcutCommands } from './commands/billing-shortcuts.co
|
|
|
5
5
|
import { registerConfigCommand } from './commands/config.command.js';
|
|
6
6
|
import { registerExamplesCommand } from './commands/examples.command.js';
|
|
7
7
|
import { registerFceObligationCommand } from './commands/fce-obligation.command.js';
|
|
8
|
+
import { registerInteractiveCommand } from './commands/interactive.command.js';
|
|
8
9
|
import { registerStorybookCommand } from './commands/storybook.command.js';
|
|
10
|
+
import { registerVoucherQueryCommands } from './commands/vouchers.command.js';
|
|
9
11
|
import { configureSpanishHelp, createProgramHeader, createProgramHelp } from './help.js';
|
|
10
12
|
import { CLI_VERSION } from './version.js';
|
|
11
13
|
export function createProgram() {
|
|
@@ -22,6 +24,8 @@ export function createProgram() {
|
|
|
22
24
|
registerConfigCommand(program);
|
|
23
25
|
registerExamplesCommand(program);
|
|
24
26
|
registerFceObligationCommand(program);
|
|
27
|
+
registerInteractiveCommand(program);
|
|
28
|
+
registerVoucherQueryCommands(program);
|
|
25
29
|
registerStorybookCommand(program);
|
|
26
30
|
program.addHelpText('beforeAll', ({ command }) => (command === program ? createProgramHeader() : ''));
|
|
27
31
|
program.addHelpText('afterAll', ({ command }) => (command === program ? createProgramHelp() : ''));
|
package/dist/cli/program.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/cli/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AAClF,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AACvF,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,MAAM,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,OAAO,CAAC;SACb,WAAW,CACV,6HAA6H,CAC9H;SACA,OAAO,CAAC,WAAW,CAAC;SACpB,kBAAkB,CAAC,4CAA4C,CAAC,CAAC;IAEpE,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAE/B,+BAA+B,CAAC,OAAO,CAAC,CAAC;IACzC,6BAA6B,CAAC,OAAO,CAAC,CAAC;IACvC,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC/B,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACjC,4BAA4B,CAAC,OAAO,CAAC,CAAC;IACtC,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAElC,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtG,OAAO,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEnG,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
1
|
+
{"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/cli/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AAClF,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AACvF,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,MAAM,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,OAAO,CAAC;SACb,WAAW,CACV,6HAA6H,CAC9H;SACA,OAAO,CAAC,WAAW,CAAC;SACpB,kBAAkB,CAAC,4CAA4C,CAAC,CAAC;IAEpE,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAE/B,+BAA+B,CAAC,OAAO,CAAC,CAAC;IACzC,6BAA6B,CAAC,OAAO,CAAC,CAAC;IACvC,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC/B,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACjC,4BAA4B,CAAC,OAAO,CAAC,CAAC;IACtC,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACpC,4BAA4B,CAAC,OAAO,CAAC,CAAC;IACtC,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAElC,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtG,OAAO,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEnG,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type Ora } from 'ora';
|
|
2
|
+
/**
|
|
3
|
+
* Spinner compartido por los comandos y el modo interactivo.
|
|
4
|
+
* - `discardStdin: false`: por defecto ora toma stdin para descartar teclas y choca con los prompts de @inquirer.
|
|
5
|
+
* - Sin ancho de terminal conocido no se muestra: con 0 columnas ora calcula infinitas lineas para borrar,
|
|
6
|
+
* escribe sin parar y bloquea el event loop.
|
|
7
|
+
*/
|
|
8
|
+
export declare function startSpinner(text: string): Ora | null;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import ora from 'ora';
|
|
2
|
+
/**
|
|
3
|
+
* Spinner compartido por los comandos y el modo interactivo.
|
|
4
|
+
* - `discardStdin: false`: por defecto ora toma stdin para descartar teclas y choca con los prompts de @inquirer.
|
|
5
|
+
* - Sin ancho de terminal conocido no se muestra: con 0 columnas ora calcula infinitas lineas para borrar,
|
|
6
|
+
* escribe sin parar y bloquea el event loop.
|
|
7
|
+
*/
|
|
8
|
+
export function startSpinner(text) {
|
|
9
|
+
if (!process.stdout.isTTY || !process.stdout.columns) {
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
return ora({ discardStdin: false, text }).start();
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=spinner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../src/cli/spinner.ts"],"names":[],"mappings":"AAAA,OAAO,GAAiB,MAAM,KAAK,CAAC;AAEpC;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,GAAG,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;AACpD,CAAC"}
|
package/dist/cli/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const CLI_VERSION = "1.
|
|
1
|
+
export declare const CLI_VERSION = "1.4.0";
|
package/dist/cli/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const CLI_VERSION = '1.
|
|
1
|
+
export const CLI_VERSION = '1.4.0';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
|
@@ -9,7 +9,7 @@ export interface TaxAmounts {
|
|
|
9
9
|
readonly netAmount: number;
|
|
10
10
|
readonly untaxedAmount: number;
|
|
11
11
|
}
|
|
12
|
-
type TaxAmountsInput = Pick<BillingCommandInput, 'exemptAmount' | 'ivaRate' | 'totalAmount' | 'untaxedAmount'>;
|
|
12
|
+
type TaxAmountsInput = Pick<BillingCommandInput, 'exemptAmount' | 'ivaRate' | 'ivaRateAmounts' | 'totalAmount' | 'untaxedAmount'>;
|
|
13
13
|
export declare function resolveIvaRateLabel(aliquotId: number): string | undefined;
|
|
14
14
|
/**
|
|
15
15
|
* Reparte el total entre no gravado, exento, neto gravado e IVA.
|
|
@@ -11,13 +11,15 @@ const IVA_RATE_DEFINITIONS = {
|
|
|
11
11
|
'27': { id: 6, rate: '0.27' },
|
|
12
12
|
};
|
|
13
13
|
export const DEFAULT_IVA_RATE = '21';
|
|
14
|
+
// Margen de ARCA para comparar importes (10048): un centavo.
|
|
15
|
+
const AMOUNT_TOLERANCE = 0.01;
|
|
14
16
|
export function resolveIvaRateLabel(aliquotId) {
|
|
15
17
|
const entry = Object.entries(IVA_RATE_DEFINITIONS).find(([, definition]) => definition.id === aliquotId);
|
|
16
18
|
return entry ? `${entry[0].replace('.', ',')}%` : undefined;
|
|
17
19
|
}
|
|
18
20
|
function validateLetterCAmounts(input, voucherKind) {
|
|
19
21
|
const flags = [
|
|
20
|
-
input.ivaRate ? '--alicuota' : undefined,
|
|
22
|
+
input.ivaRate || input.ivaRateAmounts ? '--alicuota' : undefined,
|
|
21
23
|
input.exemptAmount ? '--exento' : undefined,
|
|
22
24
|
input.untaxedAmount ? '--nogravado' : undefined,
|
|
23
25
|
].filter((flag) => Boolean(flag));
|
|
@@ -48,24 +50,43 @@ export function resolveTaxAmounts(input, voucherKind) {
|
|
|
48
50
|
if (taxedTotal.eq(0)) {
|
|
49
51
|
return { exemptAmount, ivaAmount: 0, netAmount: 0, untaxedAmount };
|
|
50
52
|
}
|
|
51
|
-
const
|
|
52
|
-
const
|
|
53
|
-
|
|
53
|
+
const parts = resolveTaxedParts(input, taxedTotal);
|
|
54
|
+
const iva = parts.map(({ amount, rate }) => {
|
|
55
|
+
const definition = IVA_RATE_DEFINITIONS[rate];
|
|
56
|
+
const BaseImp = roundAmount(amount.div(new Big(1).plus(definition.rate)));
|
|
57
|
+
return { BaseImp, Id: definition.id, Importe: roundAmount(amount.minus(BaseImp)) };
|
|
58
|
+
});
|
|
54
59
|
// Con neto mayor a cero el array de IVA es obligatorio, incluso al 0% (10070).
|
|
60
|
+
// La suma de BaseImp tiene que dar ImpNeto (10061).
|
|
55
61
|
return {
|
|
56
62
|
exemptAmount,
|
|
57
|
-
iva
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
Id: definition.id,
|
|
61
|
-
Importe: ivaAmount,
|
|
62
|
-
},
|
|
63
|
-
],
|
|
64
|
-
ivaAmount,
|
|
65
|
-
netAmount,
|
|
63
|
+
iva,
|
|
64
|
+
ivaAmount: roundAmount(iva.reduce((sum, item) => sum.plus(item.Importe), new Big(0))),
|
|
65
|
+
netAmount: roundAmount(iva.reduce((sum, item) => sum.plus(item.BaseImp), new Big(0))),
|
|
66
66
|
untaxedAmount,
|
|
67
67
|
};
|
|
68
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* Importe gravado (IVA incluido) de cada alicuota. Con una sola alicuota es todo lo gravado; con varias,
|
|
71
|
+
* los montos de cada una tienen que sumar lo gravado del total.
|
|
72
|
+
*/
|
|
73
|
+
function resolveTaxedParts(input, taxedTotal) {
|
|
74
|
+
if (!input.ivaRateAmounts?.length) {
|
|
75
|
+
return [{ amount: taxedTotal, rate: input.ivaRate ?? DEFAULT_IVA_RATE }];
|
|
76
|
+
}
|
|
77
|
+
const byRate = new Map();
|
|
78
|
+
for (const { amount, rate } of input.ivaRateAmounts) {
|
|
79
|
+
byRate.set(rate, (byRate.get(rate) ?? new Big(0)).plus(amount));
|
|
80
|
+
}
|
|
81
|
+
const sum = [...byRate.values()].reduce((total, amount) => total.plus(amount), new Big(0));
|
|
82
|
+
if (sum.minus(taxedTotal).abs().gt(AMOUNT_TOLERANCE)) {
|
|
83
|
+
throw new InputValidationError(`La suma de las alicuotas (${formatPlain(sum)}) no coincide con lo gravado del monto total (${formatPlain(taxedTotal)}). Revise --monto, --alicuota, --exento y --nogravado.`);
|
|
84
|
+
}
|
|
85
|
+
return [...byRate.entries()].map(([rate, amount]) => ({ amount, rate }));
|
|
86
|
+
}
|
|
87
|
+
function formatPlain(value) {
|
|
88
|
+
return value.round(2, Big.roundHalfUp).toFixed(2);
|
|
89
|
+
}
|
|
69
90
|
function roundAmount(value) {
|
|
70
91
|
return value.round(2, Big.roundHalfUp).toNumber();
|
|
71
92
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billing.amounts.js","sourceRoot":"","sources":["../../../src/modules/billing/billing.amounts.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,MAAM,QAAQ,CAAC;AAEzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAIvD,6CAA6C;AAC7C,MAAM,oBAAoB,GAA2E;IACnG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE;IACzB,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;IAC/B,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;IAC5B,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;IAChC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;IAC7B,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;CAC9B,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAmB,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"billing.amounts.js","sourceRoot":"","sources":["../../../src/modules/billing/billing.amounts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { AppError } from '../../lib/errors/app-error';
|
|
2
|
+
export interface BatchItemError {
|
|
3
|
+
/** Posicion en el lote, empezando en 1. */
|
|
4
|
+
readonly index: number;
|
|
5
|
+
readonly message: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function describeBatchItemError(error: unknown): string;
|
|
8
|
+
/** Uno o mas comprobantes del lote no pasan la validacion. Se detecta antes de emitir: no se emitio ninguno. */
|
|
9
|
+
export declare class BatchValidationError extends AppError {
|
|
10
|
+
constructor(errors: readonly BatchItemError[], total: number);
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* La emision se corto a mitad del lote (red, ARCA). Los resultados ya emitidos se imprimen antes que este
|
|
14
|
+
* error, para que nadie los vuelva a cargar y los duplique.
|
|
15
|
+
*/
|
|
16
|
+
export declare class BatchEmissionError extends AppError {
|
|
17
|
+
constructor(options: {
|
|
18
|
+
readonly cause: unknown;
|
|
19
|
+
readonly emitted: number;
|
|
20
|
+
readonly failedIndex: number;
|
|
21
|
+
readonly total: number;
|
|
22
|
+
});
|
|
23
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { ZodError } from 'zod';
|
|
2
|
+
import { AppError } from '../../lib/errors/app-error.js';
|
|
3
|
+
import { summarizeZodError } from '../../ui/index.js';
|
|
4
|
+
export function describeBatchItemError(error) {
|
|
5
|
+
if (error instanceof ZodError) {
|
|
6
|
+
return summarizeZodError(error);
|
|
7
|
+
}
|
|
8
|
+
return error instanceof Error ? error.message : String(error);
|
|
9
|
+
}
|
|
10
|
+
/** Uno o mas comprobantes del lote no pasan la validacion. Se detecta antes de emitir: no se emitio ninguno. */
|
|
11
|
+
export class BatchValidationError extends AppError {
|
|
12
|
+
constructor(errors, total) {
|
|
13
|
+
const lines = errors.map((item) => `#${item.index}: ${item.message}`);
|
|
14
|
+
super([`${errors.length} de ${total} comprobantes del lote tienen errores. No se emitio ninguno.`, '', ...lines].join('\n'), {
|
|
15
|
+
code: 'BATCH_VALIDATION_ERROR',
|
|
16
|
+
details: { comprobantes: errors.map((item) => ({ error: item.message, indice: item.index })) },
|
|
17
|
+
});
|
|
18
|
+
this.name = 'BatchValidationError';
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* La emision se corto a mitad del lote (red, ARCA). Los resultados ya emitidos se imprimen antes que este
|
|
23
|
+
* error, para que nadie los vuelva a cargar y los duplique.
|
|
24
|
+
*/
|
|
25
|
+
export class BatchEmissionError extends AppError {
|
|
26
|
+
constructor(options) {
|
|
27
|
+
const pending = Array.from({ length: options.total - options.failedIndex }, (_, offset) => options.failedIndex + 1 + offset);
|
|
28
|
+
super([
|
|
29
|
+
`El lote se interrumpio en el comprobante #${options.failedIndex}: ${describeBatchItemError(options.cause)}`,
|
|
30
|
+
`Procesados: ${options.emitted} de ${options.total}.${pending.length > 0 ? ` Sin procesar: ${pending.map((index) => `#${index}`).join(', ')}.` : ''}`,
|
|
31
|
+
].join('\n'), {
|
|
32
|
+
code: 'BATCH_EMISSION_ERROR',
|
|
33
|
+
details: {
|
|
34
|
+
procesados: options.emitted,
|
|
35
|
+
fallo: options.failedIndex,
|
|
36
|
+
sinProcesar: pending,
|
|
37
|
+
total: options.total,
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
this.name = 'BatchEmissionError';
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=billing.batch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"billing.batch.js","sourceRoot":"","sources":["../../../src/modules/billing/billing.batch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAQ7C,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;QAC9B,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,gHAAgH;AAChH,MAAM,OAAO,oBAAqB,SAAQ,QAAQ;IAChD,YAAmB,MAAiC,EAAE,KAAa;QACjE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAEtE,KAAK,CACH,CAAC,GAAG,MAAM,CAAC,MAAM,OAAO,KAAK,8DAA8D,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAC7G,IAAI,CACL,EACD;YACE,IAAI,EAAE,wBAAwB;YAC9B,OAAO,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE;SAC/F,CACF,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,kBAAmB,SAAQ,QAAQ;IAC9C,YAAmB,OAKlB;QACC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CACxB,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,EAC/C,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,GAAG,MAAM,CAChD,CAAC;QAEF,KAAK,CACH;YACE,6CAA6C,OAAO,CAAC,WAAW,KAAK,sBAAsB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC5G,eAAe,OAAO,CAAC,OAAO,OAAO,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;SACtJ,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ;YACE,IAAI,EAAE,sBAAsB;YAC5B,OAAO,EAAE;gBACP,UAAU,EAAE,OAAO,CAAC,OAAO;gBAC3B,KAAK,EAAE,OAAO,CAAC,WAAW;gBAC1B,WAAW,EAAE,OAAO;gBACpB,KAAK,EAAE,OAAO,CAAC,KAAK;aACrB;SACF,CACF,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { keyValuePanel,
|
|
1
|
+
import { keyValuePanel, renderKeyValueRows, renderTable, resolveKeyValueLabelWidth, statusPanel, testingBanner, toneText, } from '../../ui/index.js';
|
|
2
2
|
import { resolveIvaRateLabel } from './billing.amounts.js';
|
|
3
3
|
import { formatConceptLabel, formatCurrencyLabel, formatDateLabel, formatDecimalLabel, formatDocumentTypeLabel, formatIvaConditionLabel, formatMoneyLabel, formatNumericLabel, formatTaxIdLabel, } from './billing.labels.js';
|
|
4
4
|
import { getVoucherKindByArcaType } from './voucher-kind-map.js';
|
|
@@ -6,7 +6,7 @@ export function formatEnvironmentBanner(environment) {
|
|
|
6
6
|
if (environment !== 'testing') {
|
|
7
7
|
return [];
|
|
8
8
|
}
|
|
9
|
-
return [
|
|
9
|
+
return [testingBanner()];
|
|
10
10
|
}
|
|
11
11
|
export function formatStatusBadge(result) {
|
|
12
12
|
switch (result.response.status) {
|
|
@@ -40,6 +40,17 @@ const FCE_OPTIONAL_LABELS = {
|
|
|
40
40
|
'2101': 'CBU',
|
|
41
41
|
'2102': 'Alias CBU',
|
|
42
42
|
};
|
|
43
|
+
/** Una alicuota: su tasa. Varias: el desglose de neto e IVA de cada una. */
|
|
44
|
+
function formatIvaRows(iva) {
|
|
45
|
+
if (iva.length === 0) {
|
|
46
|
+
return [];
|
|
47
|
+
}
|
|
48
|
+
const label = (aliquotId) => resolveIvaRateLabel(aliquotId) ?? String(aliquotId);
|
|
49
|
+
if (iva.length === 1 && iva[0]) {
|
|
50
|
+
return [['Alicuota IVA', label(iva[0].Id)]];
|
|
51
|
+
}
|
|
52
|
+
return iva.map((item) => [`IVA ${label(item.Id)}`, `${formatMoneyLabel(item.Importe)} sobre ${formatMoneyLabel(item.BaseImp)}`]);
|
|
53
|
+
}
|
|
43
54
|
function formatFriendlyPayloadRows(result) {
|
|
44
55
|
const payload = result.payload;
|
|
45
56
|
const rows = [
|
|
@@ -62,9 +73,7 @@ function formatFriendlyPayloadRows(result) {
|
|
|
62
73
|
['Cotizacion', formatDecimalLabel(payload.MonCotiz)],
|
|
63
74
|
['Importe neto', formatMoneyLabel(payload.ImpNeto)],
|
|
64
75
|
['Importe IVA', formatMoneyLabel(payload.ImpIVA)],
|
|
65
|
-
...(payload.Iva
|
|
66
|
-
? [['Alicuota IVA', resolveIvaRateLabel(payload.Iva[0].Id) ?? String(payload.Iva[0].Id)]]
|
|
67
|
-
: []),
|
|
76
|
+
...formatIvaRows(payload.Iva ?? []),
|
|
68
77
|
['Importe tributos', formatMoneyLabel(payload.ImpTrib)],
|
|
69
78
|
['Importe exento', formatMoneyLabel(payload.ImpOpEx)],
|
|
70
79
|
['Importe no gravado', formatMoneyLabel(payload.ImpTotConc)],
|
|
@@ -111,7 +120,7 @@ export function formatPayloadTable(result) {
|
|
|
111
120
|
export function formatPayloadPreview(result) {
|
|
112
121
|
const payloadTable = formatPayloadTable(result);
|
|
113
122
|
const footer = result.dryRun ? toneText('SIN EMITIR', 'warning') : undefined;
|
|
114
|
-
return keyValuePanel(result.voucherKind.displayName, [payloadTable], footer, 'compact');
|
|
123
|
+
return keyValuePanel(result.voucherKind.displayName, [payloadTable], footer, 'compact', undefined, 'ticket');
|
|
115
124
|
}
|
|
116
125
|
export function formatResultPanel(result, status) {
|
|
117
126
|
const summaryRows = [
|
|
@@ -132,6 +141,6 @@ export function formatResultPanel(result, status) {
|
|
|
132
141
|
...renderKeyValueRows(countRows, { labelWidth }),
|
|
133
142
|
];
|
|
134
143
|
const footer = toneText(status.label, status.tone);
|
|
135
|
-
return statusPanel(result.voucherKind.displayName, rows, footer, 'compact', status.tone);
|
|
144
|
+
return statusPanel(result.voucherKind.displayName, rows, footer, 'compact', status.tone, 'ticket');
|
|
136
145
|
}
|
|
137
146
|
//# sourceMappingURL=billing.display.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billing.display.js","sourceRoot":"","sources":["../../../src/modules/billing/billing.display.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"billing.display.js","sourceRoot":"","sources":["../../../src/modules/billing/billing.display.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import type { BillingCommandInput, BillingIvaCondition } from './billing.schemas
|
|
|
2
2
|
import type { VoucherKindDefinition, VoucherLetter } from './billing.types';
|
|
3
3
|
/** RG 5700/2025: desde $10.000.000 hay que identificar al consumidor final. */
|
|
4
4
|
export declare const CONSUMER_IDENTIFICATION_THRESHOLD = 10000000;
|
|
5
|
+
export declare function listAllowedIvaConditions(letter: VoucherLetter): readonly BillingIvaCondition[];
|
|
5
6
|
export declare function isIvaConditionAllowed(letter: VoucherLetter, ivaCondition: BillingIvaCondition): boolean;
|
|
6
7
|
export declare function validateIvaConditionForVoucher(ivaCondition: BillingIvaCondition, voucherKind: VoucherKindDefinition): void;
|
|
7
8
|
export declare function validateConsumerIdentification(input: Pick<BillingCommandInput, 'documentType' | 'totalAmount'>, exchangeRate: number, voucherKind: VoucherKindDefinition): void;
|
|
@@ -36,6 +36,9 @@ const IVA_CONDITIONS_BY_LETTER = {
|
|
|
36
36
|
};
|
|
37
37
|
/** RG 5700/2025: desde $10.000.000 hay que identificar al consumidor final. */
|
|
38
38
|
export const CONSUMER_IDENTIFICATION_THRESHOLD = 10_000_000;
|
|
39
|
+
export function listAllowedIvaConditions(letter) {
|
|
40
|
+
return IVA_CONDITIONS_BY_LETTER[letter];
|
|
41
|
+
}
|
|
39
42
|
export function isIvaConditionAllowed(letter, ivaCondition) {
|
|
40
43
|
return IVA_CONDITIONS_BY_LETTER[letter].includes(ivaCondition);
|
|
41
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billing.iva-receptor.js","sourceRoot":"","sources":["../../../src/modules/billing/billing.iva-receptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAIvD;;;GAGG;AACH,MAAM,wBAAwB,GAA0D;IACtF,CAAC,EAAE;QACD,uBAAuB;QACvB,yBAAyB;QACzB,uBAAuB;QACvB,gDAAgD;KACjD;IACD,CAAC,EAAE;QACD,eAAe;QACf,kBAAkB;QAClB,wBAAwB;QACxB,wBAAwB;QACxB,sBAAsB;QACtB,cAAc;QACd,kBAAkB;KACnB;IACD,CAAC,EAAE;QACD,uBAAuB;QACvB,yBAAyB;QACzB,uBAAuB;QACvB,gDAAgD;QAChD,eAAe;QACf,kBAAkB;QAClB,wBAAwB;QACxB,wBAAwB;QACxB,sBAAsB;QACtB,cAAc;QACd,kBAAkB;KACnB;CACF,CAAC;AAEF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,iCAAiC,GAAG,UAAU,CAAC;AAE5D,MAAM,UAAU,qBAAqB,CAAC,MAAqB,EAAE,YAAiC;IAC5F,OAAO,wBAAwB,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,YAAiC,EACjC,WAAkC;IAElC,IAAI,qBAAqB,CAAC,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC;QAC5D,OAAO;IACT,CAAC;IAED,MAAM,eAAe,GAAI,CAAC,GAAG,EAAE,GAAG,CAAW,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,qBAAqB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IAC5G,MAAM,UAAU,GAAG,eAAe,CAAC,CAAC,CAAC,6BAA6B,eAAe,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAExG,MAAM,IAAI,oBAAoB,CAC5B,MAAM,kBAAkB,CAAC,WAAW,CAAC,4BAA4B,YAAY,KAAK,UAAU,EAAE,CAC/F,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,KAAgE,EAChE,YAAoB,EACpB,WAAkC;IAElC,IAAI,KAAK,CAAC,YAAY,KAAK,kBAAkB,EAAE,CAAC;QAC9C,OAAO;IACT,CAAC;IAED,IAAI,KAAK,CAAC,WAAW,GAAG,YAAY,IAAI,iCAAiC,EAAE,CAAC;QAC1E,MAAM,IAAI,oBAAoB,CAC5B,MAAM,kBAAkB,CAAC,WAAW,CAAC,6FAA6F,CACnI,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"billing.iva-receptor.js","sourceRoot":"","sources":["../../../src/modules/billing/billing.iva-receptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAIvD;;;GAGG;AACH,MAAM,wBAAwB,GAA0D;IACtF,CAAC,EAAE;QACD,uBAAuB;QACvB,yBAAyB;QACzB,uBAAuB;QACvB,gDAAgD;KACjD;IACD,CAAC,EAAE;QACD,eAAe;QACf,kBAAkB;QAClB,wBAAwB;QACxB,wBAAwB;QACxB,sBAAsB;QACtB,cAAc;QACd,kBAAkB;KACnB;IACD,CAAC,EAAE;QACD,uBAAuB;QACvB,yBAAyB;QACzB,uBAAuB;QACvB,gDAAgD;QAChD,eAAe;QACf,kBAAkB;QAClB,wBAAwB;QACxB,wBAAwB;QACxB,sBAAsB;QACtB,cAAc;QACd,kBAAkB;KACnB;CACF,CAAC;AAEF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,iCAAiC,GAAG,UAAU,CAAC;AAE5D,MAAM,UAAU,wBAAwB,CAAC,MAAqB;IAC5D,OAAO,wBAAwB,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAqB,EAAE,YAAiC;IAC5F,OAAO,wBAAwB,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,YAAiC,EACjC,WAAkC;IAElC,IAAI,qBAAqB,CAAC,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC;QAC5D,OAAO;IACT,CAAC;IAED,MAAM,eAAe,GAAI,CAAC,GAAG,EAAE,GAAG,CAAW,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,qBAAqB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IAC5G,MAAM,UAAU,GAAG,eAAe,CAAC,CAAC,CAAC,6BAA6B,eAAe,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAExG,MAAM,IAAI,oBAAoB,CAC5B,MAAM,kBAAkB,CAAC,WAAW,CAAC,4BAA4B,YAAY,KAAK,UAAU,EAAE,CAC/F,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,KAAgE,EAChE,YAAoB,EACpB,WAAkC;IAElC,IAAI,KAAK,CAAC,YAAY,KAAK,kBAAkB,EAAE,CAAC;QAC9C,OAAO;IACT,CAAC;IAED,IAAI,KAAK,CAAC,WAAW,GAAG,YAAY,IAAI,iCAAiC,EAAE,CAAC;QAC1E,MAAM,IAAI,oBAAoB,CAC5B,MAAM,kBAAkB,CAAC,WAAW,CAAC,6FAA6F,CACnI,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -3,7 +3,7 @@ export declare const billingConceptSchema: z.ZodPreprocess<z.ZodEnum<{
|
|
|
3
3
|
productos: "productos";
|
|
4
4
|
"productos-servicios": "productos-servicios";
|
|
5
5
|
servicios: "servicios";
|
|
6
|
-
}
|
|
6
|
+
}>, unknown>;
|
|
7
7
|
export declare const billingDocumentTypeSchema: z.ZodEnum<{
|
|
8
8
|
"consumidor-final": "consumidor-final";
|
|
9
9
|
cuil: "cuil";
|
|
@@ -23,6 +23,12 @@ export declare const billingIvaConditionSchema: z.ZodEnum<{
|
|
|
23
23
|
"sujeto-exento": "sujeto-exento";
|
|
24
24
|
"sujeto-no-categorizado": "sujeto-no-categorizado";
|
|
25
25
|
}>;
|
|
26
|
+
declare const IVA_RATE_VALUES: readonly ["0", "2.5", "5", "10.5", "21", "27"];
|
|
27
|
+
/** Nombres con que ARCA llama a las alicuotas mas usadas; se aceptan igual que el numero. */
|
|
28
|
+
export declare const IVA_RATE_ALIASES: Readonly<Record<string, (typeof IVA_RATE_VALUES)[number]>>;
|
|
29
|
+
export declare const IVA_RATE_HINT = "general (21), reducida (10.5), incrementada (27), cero (0), 5 o 2.5";
|
|
30
|
+
/** Acepta el alias o el numero: "reducida", "10,5", "10.5" o "10.5%". */
|
|
31
|
+
export declare function normalizeIvaRateInput(value: unknown): unknown;
|
|
26
32
|
export declare const billingIvaRateSchema: z.ZodPreprocess<z.ZodEnum<{
|
|
27
33
|
0: "0";
|
|
28
34
|
5: "5";
|
|
@@ -30,7 +36,19 @@ export declare const billingIvaRateSchema: z.ZodPreprocess<z.ZodEnum<{
|
|
|
30
36
|
10.5: "10.5";
|
|
31
37
|
21: "21";
|
|
32
38
|
27: "27";
|
|
33
|
-
}
|
|
39
|
+
}>, unknown>;
|
|
40
|
+
/** Una alicuota con el importe que le corresponde, IVA incluido (igual que --monto). */
|
|
41
|
+
declare const billingIvaRateAmountSchema: z.ZodObject<{
|
|
42
|
+
amount: z.ZodNumber;
|
|
43
|
+
rate: z.ZodPreprocess<z.ZodEnum<{
|
|
44
|
+
0: "0";
|
|
45
|
+
5: "5";
|
|
46
|
+
2.5: "2.5";
|
|
47
|
+
10.5: "10.5";
|
|
48
|
+
21: "21";
|
|
49
|
+
27: "27";
|
|
50
|
+
}>, unknown>;
|
|
51
|
+
}, z.core.$strip>;
|
|
34
52
|
export declare const billingCommandSchema: z.ZodObject<{
|
|
35
53
|
associatedPeriod: z.ZodOptional<z.ZodObject<{
|
|
36
54
|
desde: z.ZodOptional<z.ZodString>;
|
|
@@ -52,7 +70,7 @@ export declare const billingCommandSchema: z.ZodObject<{
|
|
|
52
70
|
productos: "productos";
|
|
53
71
|
"productos-servicios": "productos-servicios";
|
|
54
72
|
servicios: "servicios";
|
|
55
|
-
}
|
|
73
|
+
}>, unknown>;
|
|
56
74
|
currencyCode: z.ZodDefault<z.ZodString>;
|
|
57
75
|
documentNumber: z.ZodOptional<z.ZodNumber>;
|
|
58
76
|
documentType: z.ZodDefault<z.ZodEnum<{
|
|
@@ -72,7 +90,18 @@ export declare const billingCommandSchema: z.ZodObject<{
|
|
|
72
90
|
10.5: "10.5";
|
|
73
91
|
21: "21";
|
|
74
92
|
27: "27";
|
|
75
|
-
}
|
|
93
|
+
}>, unknown>>;
|
|
94
|
+
ivaRateAmounts: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
95
|
+
amount: z.ZodNumber;
|
|
96
|
+
rate: z.ZodPreprocess<z.ZodEnum<{
|
|
97
|
+
0: "0";
|
|
98
|
+
5: "5";
|
|
99
|
+
2.5: "2.5";
|
|
100
|
+
10.5: "10.5";
|
|
101
|
+
21: "21";
|
|
102
|
+
27: "27";
|
|
103
|
+
}>, unknown>;
|
|
104
|
+
}, z.core.$strip>>>;
|
|
76
105
|
dueDay: z.ZodOptional<z.ZodNumber>;
|
|
77
106
|
ivaCondition: z.ZodEnum<{
|
|
78
107
|
"consumidor-final": "consumidor-final";
|
|
@@ -104,4 +133,6 @@ export type BillingConcept = z.infer<typeof billingConceptSchema>;
|
|
|
104
133
|
export type BillingDocumentType = z.infer<typeof billingDocumentTypeSchema>;
|
|
105
134
|
export type BillingIvaCondition = z.infer<typeof billingIvaConditionSchema>;
|
|
106
135
|
export type BillingIvaRate = z.infer<typeof billingIvaRateSchema>;
|
|
136
|
+
export type BillingIvaRateAmount = z.infer<typeof billingIvaRateAmountSchema>;
|
|
107
137
|
export type BillingCommandInput = z.infer<typeof billingCommandSchema>;
|
|
138
|
+
export {};
|
|
@@ -32,12 +32,31 @@ export const billingIvaConditionSchema = z.enum([
|
|
|
32
32
|
'sujeto-no-categorizado',
|
|
33
33
|
]);
|
|
34
34
|
const IVA_RATE_VALUES = ['0', '2.5', '5', '10.5', '21', '27'];
|
|
35
|
-
|
|
36
|
-
export const
|
|
37
|
-
|
|
38
|
-
:
|
|
39
|
-
|
|
40
|
-
|
|
35
|
+
/** Nombres con que ARCA llama a las alicuotas mas usadas; se aceptan igual que el numero. */
|
|
36
|
+
export const IVA_RATE_ALIASES = {
|
|
37
|
+
cero: '0',
|
|
38
|
+
general: '21',
|
|
39
|
+
incrementada: '27',
|
|
40
|
+
reducida: '10.5',
|
|
41
|
+
};
|
|
42
|
+
export const IVA_RATE_HINT = 'general (21), reducida (10.5), incrementada (27), cero (0), 5 o 2.5';
|
|
43
|
+
/** Acepta el alias o el numero: "reducida", "10,5", "10.5" o "10.5%". */
|
|
44
|
+
export function normalizeIvaRateInput(value) {
|
|
45
|
+
if (typeof value === 'number') {
|
|
46
|
+
return String(value);
|
|
47
|
+
}
|
|
48
|
+
if (typeof value !== 'string') {
|
|
49
|
+
return value;
|
|
50
|
+
}
|
|
51
|
+
const normalized = value.trim().toLowerCase();
|
|
52
|
+
return IVA_RATE_ALIASES[normalized] ?? normalized.replace(',', '.').replace(/%$/, '');
|
|
53
|
+
}
|
|
54
|
+
export const billingIvaRateSchema = z.preprocess(normalizeIvaRateInput, z.enum(IVA_RATE_VALUES, { message: `La alicuota debe ser ${IVA_RATE_HINT}.` }));
|
|
55
|
+
/** Una alicuota con el importe que le corresponde, IVA incluido (igual que --monto). */
|
|
56
|
+
const billingIvaRateAmountSchema = z.object({
|
|
57
|
+
amount: z.number().positive(),
|
|
58
|
+
rate: billingIvaRateSchema,
|
|
59
|
+
});
|
|
41
60
|
const billingAssociatedVoucherSchema = z
|
|
42
61
|
.object({
|
|
43
62
|
cuit: z
|
|
@@ -82,6 +101,7 @@ export const billingCommandSchema = z.object({
|
|
|
82
101
|
exchangeRate: z.number().positive().optional(),
|
|
83
102
|
exemptAmount: z.number().positive().optional(),
|
|
84
103
|
ivaRate: billingIvaRateSchema.optional(),
|
|
104
|
+
ivaRateAmounts: z.array(billingIvaRateAmountSchema).min(1).optional(),
|
|
85
105
|
dueDay: z.number().int().min(1).max(31).optional(),
|
|
86
106
|
ivaCondition: billingIvaConditionSchema,
|
|
87
107
|
paymentDueDate: z.string().trim().optional(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billing.schemas.js","sourceRoot":"","sources":["../../../src/modules/billing/billing.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,uBAAuB,GAAG;IAC9B,CAAC,EAAE,WAAW;IACd,QAAQ,EAAE,WAAW;IACrB,SAAS,EAAE,WAAW;IACtB,EAAE,EAAE,qBAAqB;IACzB,uBAAuB,EAAE,qBAAqB;IAC9C,qBAAqB,EAAE,qBAAqB;IAC5C,CAAC,EAAE,WAAW;IACd,QAAQ,EAAE,WAAW;IACrB,SAAS,EAAE,WAAW;CACd,CAAC;AAEX,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,UAAU,CAC9C,CAAC,KAAK,EAAE,EAAE;IACR,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAEnD,OAAO,uBAAuB,CAAC,eAAuD,CAAC,IAAI,KAAK,CAAC;AACnG,CAAC,EACD,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,qBAAqB,EAAE,WAAW,CAAC,CAAC,CAC1D,CAAC;AACF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,kBAAkB,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7F,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,IAAI,CAAC;IAC9C,sBAAsB;IACtB,kBAAkB;IAClB,cAAc;IACd,kBAAkB;IAClB,uBAAuB;IACvB,gDAAgD;IAChD,wBAAwB;IACxB,uBAAuB;IACvB,yBAAyB;IACzB,eAAe;IACf,wBAAwB;CACzB,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAU,CAAC;AAEvE,
|
|
1
|
+
{"version":3,"file":"billing.schemas.js","sourceRoot":"","sources":["../../../src/modules/billing/billing.schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,9 @@ function formatWarningsPanel(result) {
|
|
|
9
9
|
if (warnings.length === 0) {
|
|
10
10
|
return [];
|
|
11
11
|
}
|
|
12
|
-
return [
|
|
12
|
+
return [
|
|
13
|
+
contentPanel('Avisos', warnings.map((item) => `• ${item}`).join('\n'), 'wide', 'warning', 'left', 'attention'),
|
|
14
|
+
];
|
|
13
15
|
}
|
|
14
16
|
export function formatBillingResultAsText(result, options = {}) {
|
|
15
17
|
const environmentLines = [
|
|
@@ -20,7 +22,9 @@ export function formatBillingResultAsText(result, options = {}) {
|
|
|
20
22
|
if (result.dryRun) {
|
|
21
23
|
return [...environmentLines, formatPayloadPreview(result)].join('\n\n');
|
|
22
24
|
}
|
|
23
|
-
const lines = [
|
|
25
|
+
const lines = [
|
|
26
|
+
contentPanel('Respuesta bruta', renderObject(formatRawBillingResponse(result)), 'wide', 'subtle', 'left', 'data'),
|
|
27
|
+
];
|
|
24
28
|
if (!options.previewShown) {
|
|
25
29
|
lines.unshift(formatPayloadPreview(result));
|
|
26
30
|
}
|
|
@@ -35,17 +39,17 @@ export function formatBillingResultAsText(result, options = {}) {
|
|
|
35
39
|
}
|
|
36
40
|
lines.push(formatResultPanel(result, formatStatusBadge(result)));
|
|
37
41
|
if (result.response.observaciones.length > 0) {
|
|
38
|
-
lines.push(contentPanel('Observaciones', formatObservationList(result.response.observaciones), 'wide', 'warning'));
|
|
42
|
+
lines.push(contentPanel('Observaciones', formatObservationList(result.response.observaciones), 'wide', 'warning', 'left', 'attention'));
|
|
39
43
|
}
|
|
40
44
|
if (result.response.events.length > 0) {
|
|
41
|
-
lines.push(contentPanel('Eventos', renderObject(result.response.events), 'wide', '
|
|
45
|
+
lines.push(contentPanel('Eventos', renderObject(result.response.events), 'wide', 'subtle', 'left', 'data'));
|
|
42
46
|
}
|
|
43
47
|
if (result.response.errors.length > 0) {
|
|
44
|
-
lines.push(contentPanel('Errores', renderObject(result.response.errors), 'wide', 'danger'));
|
|
48
|
+
lines.push(contentPanel('Errores', renderObject(result.response.errors), 'wide', 'danger', 'left', 'error'));
|
|
45
49
|
}
|
|
46
50
|
const suggestions = result.response.suggestions ?? [];
|
|
47
51
|
if (suggestions.length > 0) {
|
|
48
|
-
lines.push(contentPanel('Sugerencias', suggestions.map((item) => `• ${item}`).join('\n'), 'wide', '
|
|
52
|
+
lines.push(contentPanel('Sugerencias', suggestions.map((item) => `• ${item}`).join('\n'), 'wide', 'warning', 'left', 'tip'));
|
|
49
53
|
}
|
|
50
54
|
return lines.join('\n\n');
|
|
51
55
|
}
|