arcli 1.1.0 → 1.2.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 +78 -0
- package/README.md +5 -0
- package/dist/cli/commands/billing.command.interactive-preview.d.ts +1 -0
- package/dist/cli/commands/billing.command.interactive-preview.js +5 -1
- package/dist/cli/commands/billing.command.interactive-preview.js.map +1 -1
- package/dist/cli/commands/billing.command.options.js +17 -1
- package/dist/cli/commands/billing.command.options.js.map +1 -1
- package/dist/cli/commands/billing.command.parser.d.ts +3 -0
- package/dist/cli/commands/billing.command.parser.js +36 -2
- package/dist/cli/commands/billing.command.parser.js.map +1 -1
- package/dist/cli/commands/billing.command.shared.js +24 -3
- package/dist/cli/commands/billing.command.shared.js.map +1 -1
- package/dist/cli/commands/fce-obligation.command.d.ts +2 -0
- package/dist/cli/commands/fce-obligation.command.js +51 -0
- package/dist/cli/commands/fce-obligation.command.js.map +1 -0
- package/dist/cli/help.d.ts +1 -0
- package/dist/cli/help.js +64 -3
- package/dist/cli/help.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/lib/dates/arca-date.d.ts +4 -0
- package/dist/lib/dates/arca-date.js +18 -1
- package/dist/lib/dates/arca-date.js.map +1 -1
- package/dist/modules/billing/billing.amounts.d.ts +12 -2
- package/dist/modules/billing/billing.amounts.js +52 -10
- package/dist/modules/billing/billing.amounts.js.map +1 -1
- package/dist/modules/billing/billing.associated-period.d.ts +8 -0
- package/dist/modules/billing/billing.associated-period.js +40 -0
- package/dist/modules/billing/billing.associated-period.js.map +1 -0
- package/dist/modules/billing/billing.associated-vouchers.d.ts +2 -0
- package/dist/modules/billing/billing.associated-vouchers.js +29 -7
- package/dist/modules/billing/billing.associated-vouchers.js.map +1 -1
- package/dist/modules/billing/billing.currency.d.ts +18 -0
- package/dist/modules/billing/billing.currency.js +53 -0
- package/dist/modules/billing/billing.currency.js.map +1 -0
- package/dist/modules/billing/billing.date-range.d.ts +5 -4
- package/dist/modules/billing/billing.date-range.js +34 -27
- package/dist/modules/billing/billing.date-range.js.map +1 -1
- package/dist/modules/billing/billing.display.js +26 -0
- package/dist/modules/billing/billing.display.js.map +1 -1
- package/dist/modules/billing/billing.fce.d.ts +21 -0
- package/dist/modules/billing/billing.fce.js +59 -0
- package/dist/modules/billing/billing.fce.js.map +1 -0
- package/dist/modules/billing/billing.iva-receptor.d.ts +7 -0
- package/dist/modules/billing/billing.iva-receptor.js +58 -0
- package/dist/modules/billing/billing.iva-receptor.js.map +1 -0
- package/dist/modules/billing/billing.labels.js +1 -1
- package/dist/modules/billing/billing.mappers.js +2 -1
- package/dist/modules/billing/billing.mappers.js.map +1 -1
- package/dist/modules/billing/billing.schemas.d.ts +38 -5
- package/dist/modules/billing/billing.schemas.js +38 -1
- package/dist/modules/billing/billing.schemas.js.map +1 -1
- package/dist/modules/billing/billing.serialize.js +2 -0
- package/dist/modules/billing/billing.serialize.js.map +1 -1
- package/dist/modules/billing/billing.service.d.ts +12 -0
- package/dist/modules/billing/billing.service.js +68 -10
- package/dist/modules/billing/billing.service.js.map +1 -1
- package/dist/modules/billing/billing.text.js +11 -3
- package/dist/modules/billing/billing.text.js.map +1 -1
- package/dist/modules/billing/billing.types.internal.d.ts +2 -0
- package/dist/modules/billing/billing.validation.d.ts +4 -2
- package/dist/modules/billing/billing.validation.js +36 -1
- package/dist/modules/billing/billing.validation.js.map +1 -1
- package/dist/modules/config/config-value-parser.d.ts +1 -1
- package/dist/modules/config/config-value-parser.js +29 -1
- package/dist/modules/config/config-value-parser.js.map +1 -1
- package/dist/modules/config/config.presenter.js +8 -0
- package/dist/modules/config/config.presenter.js.map +1 -1
- package/dist/modules/config/config.schemas.d.ts +26 -3
- package/dist/modules/config/config.schemas.js +19 -0
- package/dist/modules/config/config.schemas.js.map +1 -1
- package/dist/modules/config/config.service.js +4 -0
- package/dist/modules/config/config.service.js.map +1 -1
- package/dist/modules/examples/examples.d.ts +1 -1
- package/dist/modules/examples/examples.js +60 -25
- package/dist/modules/examples/examples.js.map +1 -1
- package/dist/modules/fce/fce-obligation.d.ts +20 -0
- package/dist/modules/fce/fce-obligation.js +33 -0
- package/dist/modules/fce/fce-obligation.js.map +1 -0
- package/dist/modules/fce/fce-obligation.presenter.d.ts +9 -0
- package/dist/modules/fce/fce-obligation.presenter.js +32 -0
- package/dist/modules/fce/fce-obligation.presenter.js.map +1 -0
- package/dist/services/arca/arca-billing.gateway.d.ts +1 -0
- package/dist/services/arca/arca-billing.gateway.js +12 -0
- package/dist/services/arca/arca-billing.gateway.js.map +1 -1
- package/dist/services/arca/arca-fce-obligation.gateway.d.ts +7 -0
- package/dist/services/arca/arca-fce-obligation.gateway.js +36 -0
- package/dist/services/arca/arca-fce-obligation.gateway.js.map +1 -0
- package/dist/ui/presenters/errors.zod-presenter.js +22 -1
- package/dist/ui/presenters/errors.zod-presenter.js.map +1 -1
- package/llms.txt +9 -5
- package/package.json +3 -2
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { INextVoucher } from '@arcasdk/core/lib/domain/types/voucher.types';
|
|
2
2
|
import type { ResolvedArcaRuntime } from '../../services/arca/arca-context.resolver';
|
|
3
|
+
import { type FceObligationGateway } from '../fce/fce-obligation';
|
|
3
4
|
import type { BillingCommandInput } from './billing.schemas';
|
|
4
5
|
import type { VoucherKindDefinition } from './billing.types';
|
|
5
6
|
import type { BillingExecutionResult, BillingGateway } from './billing.types.internal';
|
|
@@ -7,9 +8,20 @@ export interface BillingExecutionOptions {
|
|
|
7
8
|
readonly gateway: BillingGateway;
|
|
8
9
|
readonly input: BillingCommandInput;
|
|
9
10
|
readonly runtime: ResolvedArcaRuntime;
|
|
11
|
+
readonly warnings?: readonly string[];
|
|
10
12
|
}
|
|
11
13
|
export declare class BillingService {
|
|
14
|
+
/**
|
|
15
|
+
* Completa la cotizacion oficial cuando el comprobante se cancela en la misma moneda extranjera.
|
|
16
|
+
* Se resuelve antes de la vista previa para que el preview muestre el valor que se va a enviar.
|
|
17
|
+
*/
|
|
18
|
+
resolveExchangeRate(input: BillingCommandInput, gateway: BillingGateway): Promise<BillingCommandInput>;
|
|
12
19
|
execute(options: BillingExecutionOptions): Promise<BillingExecutionResult>;
|
|
20
|
+
/**
|
|
21
|
+
* Avisa si el comprobante elegido no coincide con el regimen FCE del receptor.
|
|
22
|
+
* Es informativo: si ARCA no responde, devuelve el motivo como aviso y no frena la emision.
|
|
23
|
+
*/
|
|
24
|
+
resolveFceWarnings(input: BillingCommandInput, gateway: FceObligationGateway): Promise<string[]>;
|
|
13
25
|
buildVoucherPayload(input: BillingCommandInput, runtime: ResolvedArcaRuntime, voucherKind?: VoucherKindDefinition): INextVoucher;
|
|
14
26
|
private requireVoucherKind;
|
|
15
27
|
}
|
|
@@ -1,13 +1,31 @@
|
|
|
1
|
+
import { formatDateAsArcaDate, parseArgentineDateInputAsArcaDate } from '../../lib/dates/arca-date.js';
|
|
1
2
|
import { InputValidationError } from '../../lib/errors/app-error.js';
|
|
3
|
+
import { evaluateFceObligation, shouldCheckFceObligation } from '../fce/fce-obligation.js';
|
|
2
4
|
import { resolveTaxAmounts } from './billing.amounts.js';
|
|
5
|
+
import { resolveAssociatedPeriod } from './billing.associated-period.js';
|
|
3
6
|
import { resolveAssociatedVouchers } from './billing.associated-vouchers.js';
|
|
4
|
-
import {
|
|
7
|
+
import { isForeignCurrency, needsOfficialExchangeRate, resolveBillingCurrencyFields } from './billing.currency.js';
|
|
5
8
|
import { resolveBillingDateRange } from './billing.date-range.js';
|
|
9
|
+
import { resolveElectronicCreditOptionals } from './billing.fce.js';
|
|
10
|
+
import { validateConsumerIdentification, validateIvaConditionForVoucher } from './billing.iva-receptor.js';
|
|
6
11
|
import { resolveBillingConceptCode, resolveBillingCurrencyCode, resolveBillingDocumentTypeCode, resolveBillingIvaConditionCode, } from './billing.mappers.js';
|
|
7
12
|
import { validateDocumentIdentity } from './billing.validation.js';
|
|
8
13
|
import { createDryRunResponse, mapBillingResponse } from './billing-response.js';
|
|
9
14
|
import { getVoucherKindByShortcut } from './voucher-kind-map.js';
|
|
10
15
|
export class BillingService {
|
|
16
|
+
/**
|
|
17
|
+
* Completa la cotizacion oficial cuando el comprobante se cancela en la misma moneda extranjera.
|
|
18
|
+
* Se resuelve antes de la vista previa para que el preview muestre el valor que se va a enviar.
|
|
19
|
+
*/
|
|
20
|
+
async resolveExchangeRate(input, gateway) {
|
|
21
|
+
if (!needsOfficialExchangeRate(input)) {
|
|
22
|
+
return input;
|
|
23
|
+
}
|
|
24
|
+
return {
|
|
25
|
+
...input,
|
|
26
|
+
exchangeRate: await gateway.getQuotation(resolveBillingCurrencyCode(input.currencyCode)),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
11
29
|
async execute(options) {
|
|
12
30
|
const voucherKind = this.requireVoucherKind(options.input.shortcut);
|
|
13
31
|
const payload = this.buildVoucherPayload(options.input, options.runtime, voucherKind);
|
|
@@ -18,6 +36,7 @@ export class BillingService {
|
|
|
18
36
|
payload,
|
|
19
37
|
response: createDryRunResponse(),
|
|
20
38
|
voucherKind,
|
|
39
|
+
warnings: options.warnings ?? [],
|
|
21
40
|
};
|
|
22
41
|
}
|
|
23
42
|
const response = await options.gateway.createNextVoucher(payload);
|
|
@@ -27,24 +46,52 @@ export class BillingService {
|
|
|
27
46
|
payload,
|
|
28
47
|
response: mapBillingResponse(response),
|
|
29
48
|
voucherKind,
|
|
49
|
+
warnings: options.warnings ?? [],
|
|
30
50
|
};
|
|
31
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* Avisa si el comprobante elegido no coincide con el regimen FCE del receptor.
|
|
54
|
+
* Es informativo: si ARCA no responde, devuelve el motivo como aviso y no frena la emision.
|
|
55
|
+
*/
|
|
56
|
+
async resolveFceWarnings(input, gateway) {
|
|
57
|
+
const voucherKind = this.requireVoucherKind(input.shortcut);
|
|
58
|
+
if (!shouldCheckFceObligation(input, voucherKind)) {
|
|
59
|
+
return [];
|
|
60
|
+
}
|
|
61
|
+
const issueDate = input.billingDate
|
|
62
|
+
? parseArgentineDateInputAsArcaDate(input.billingDate)
|
|
63
|
+
: formatDateAsArcaDate(new Date());
|
|
64
|
+
const amountInPesos = input.totalAmount * (isForeignCurrency(input) ? (input.exchangeRate ?? 1) : 1);
|
|
65
|
+
try {
|
|
66
|
+
const obligation = await gateway.getObligation(input.documentNumber, issueDate);
|
|
67
|
+
return evaluateFceObligation(obligation, voucherKind, amountInPesos);
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
const reason = error instanceof Error ? error.message : 'error desconocido';
|
|
71
|
+
return [`No se pudo verificar el regimen FCE del receptor: ${reason}`];
|
|
72
|
+
}
|
|
73
|
+
}
|
|
32
74
|
buildVoucherPayload(input, runtime, voucherKind = this.requireVoucherKind(input.shortcut)) {
|
|
33
75
|
const pointOfSale = input.pointOfSale ?? runtime.pointOfSale;
|
|
34
76
|
if (!pointOfSale) {
|
|
35
77
|
throw new InputValidationError('Falta el punto de venta. Use --punto-venta o --pv, o configurelo con "arcli config establecer puntoVenta <valor>".');
|
|
36
78
|
}
|
|
37
|
-
const dateRange = resolveBillingDateRange(input);
|
|
79
|
+
const dateRange = resolveBillingDateRange(input, voucherKind);
|
|
38
80
|
const concept = resolveBillingConceptCode(input.concept);
|
|
39
81
|
const documentType = resolveBillingDocumentTypeCode(input.documentType);
|
|
40
82
|
const ivaCondition = resolveBillingIvaConditionCode(input.ivaCondition);
|
|
41
83
|
const associatedVouchers = resolveAssociatedVouchers({
|
|
84
|
+
billingDate: dateRange.billingDate,
|
|
85
|
+
emitterCuit: runtime.context.cuit,
|
|
42
86
|
input,
|
|
43
87
|
requireVoucherKind: (shortcut) => this.requireVoucherKind(shortcut),
|
|
44
88
|
voucherKind,
|
|
45
89
|
});
|
|
46
|
-
const
|
|
90
|
+
const currencyFields = resolveBillingCurrencyFields(input, dateRange.billingDate, formatDateAsArcaDate(new Date()));
|
|
91
|
+
const taxAmounts = resolveTaxAmounts(input, voucherKind);
|
|
47
92
|
validateDocumentIdentity(input, voucherKind);
|
|
93
|
+
validateIvaConditionForVoucher(input.ivaCondition, voucherKind);
|
|
94
|
+
validateConsumerIdentification(input, currencyFields.MonCotiz, voucherKind);
|
|
48
95
|
const payload = {
|
|
49
96
|
CantReg: 1,
|
|
50
97
|
CbteFch: dateRange.billingDate,
|
|
@@ -52,19 +99,22 @@ export class BillingService {
|
|
|
52
99
|
Concepto: concept,
|
|
53
100
|
CondicionIVAReceptorId: ivaCondition,
|
|
54
101
|
DocTipo: documentType,
|
|
55
|
-
FchServDesde:
|
|
56
|
-
FchServHasta:
|
|
57
|
-
FchVtoPago:
|
|
102
|
+
FchServDesde: dateRange.serviceStartDate,
|
|
103
|
+
FchServHasta: dateRange.serviceEndDate,
|
|
104
|
+
FchVtoPago: dateRange.paymentDueDate,
|
|
58
105
|
ImpIVA: taxAmounts.ivaAmount,
|
|
59
106
|
ImpNeto: taxAmounts.netAmount,
|
|
60
|
-
ImpOpEx:
|
|
61
|
-
ImpTotConc:
|
|
107
|
+
ImpOpEx: taxAmounts.exemptAmount,
|
|
108
|
+
ImpTotConc: taxAmounts.untaxedAmount,
|
|
62
109
|
ImpTotal: input.totalAmount,
|
|
63
110
|
ImpTrib: 0,
|
|
64
|
-
MonCotiz:
|
|
65
|
-
MonId:
|
|
111
|
+
MonCotiz: currencyFields.MonCotiz,
|
|
112
|
+
MonId: currencyFields.MonId,
|
|
66
113
|
PtoVta: pointOfSale,
|
|
67
114
|
};
|
|
115
|
+
if (currencyFields.CanMisMonExt) {
|
|
116
|
+
payload.CanMisMonExt = currencyFields.CanMisMonExt;
|
|
117
|
+
}
|
|
68
118
|
if (taxAmounts.iva) {
|
|
69
119
|
payload.Iva = taxAmounts.iva;
|
|
70
120
|
}
|
|
@@ -74,6 +124,14 @@ export class BillingService {
|
|
|
74
124
|
if (associatedVouchers) {
|
|
75
125
|
payload.CbtesAsoc = associatedVouchers;
|
|
76
126
|
}
|
|
127
|
+
const associatedPeriod = resolveAssociatedPeriod(input, voucherKind, dateRange.billingDate);
|
|
128
|
+
if (associatedPeriod) {
|
|
129
|
+
payload.PeriodoAsoc = associatedPeriod;
|
|
130
|
+
}
|
|
131
|
+
const optionals = resolveElectronicCreditOptionals(input, voucherKind);
|
|
132
|
+
if (optionals) {
|
|
133
|
+
payload.Opcionales = optionals;
|
|
134
|
+
}
|
|
77
135
|
// El SDK tipa DocNro como obligatorio, pero el CLI permite omitirlo cuando el usuario no lo informa.
|
|
78
136
|
return payload;
|
|
79
137
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billing.service.js","sourceRoot":"","sources":["../../../src/modules/billing/billing.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"billing.service.js","sourceRoot":"","sources":["../../../src/modules/billing/billing.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,10 +4,18 @@ import { formatRawBillingResponse } from './billing.serialize.js';
|
|
|
4
4
|
function formatObservationList(observaciones) {
|
|
5
5
|
return observaciones.map((item, index) => `${index + 1}. ${item}`).join('\n');
|
|
6
6
|
}
|
|
7
|
+
function formatWarningsPanel(result) {
|
|
8
|
+
const warnings = result.warnings ?? [];
|
|
9
|
+
if (warnings.length === 0) {
|
|
10
|
+
return [];
|
|
11
|
+
}
|
|
12
|
+
return [contentPanel('Avisos', warnings.map((item) => `• ${item}`).join('\n'), 'wide', 'warning')];
|
|
13
|
+
}
|
|
7
14
|
export function formatBillingResultAsText(result, options = {}) {
|
|
8
|
-
const environmentLines =
|
|
9
|
-
? []
|
|
10
|
-
|
|
15
|
+
const environmentLines = [
|
|
16
|
+
...(options.previewShown ? [] : formatEnvironmentBanner(options.environment ?? result.environment)),
|
|
17
|
+
...(options.previewShown ? [] : formatWarningsPanel(result)),
|
|
18
|
+
];
|
|
11
19
|
if (options.raw) {
|
|
12
20
|
if (result.dryRun) {
|
|
13
21
|
return [...environmentLines, formatPayloadPreview(result)].join('\n\n');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billing.text.js","sourceRoot":"","sources":["../../../src/modules/billing/billing.text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAEtD,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACxH,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAS/D,SAAS,qBAAqB,CAAC,aAAgC;IAC7D,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAA8B,EAAE,UAA8B,EAAE;IACxG,MAAM,gBAAgB,GAAG,OAAO,CAAC,YAAY
|
|
1
|
+
{"version":3,"file":"billing.text.js","sourceRoot":"","sources":["../../../src/modules/billing/billing.text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAEtD,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACxH,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAS/D,SAAS,qBAAqB,CAAC,aAAgC;IAC7D,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,mBAAmB,CAAC,MAA8B;IACzD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;IAEvC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AACrG,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAA8B,EAAE,UAA8B,EAAE;IACxG,MAAM,gBAAgB,GAAG;QACvB,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uBAAuB,CAAC,OAAO,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC;QACnG,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;KAC7D,CAAC;IAEF,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,gBAAgB,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,KAAK,GAAG,CAAC,YAAY,CAAC,iBAAiB,EAAE,YAAY,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QAEhH,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YAC1B,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9C,CAAC;QAED,OAAO,CAAC,GAAG,gBAAgB,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,gBAAgB,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,GAAG,gBAAgB,CAAC,CAAC;IAEpC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAEjE,IAAI,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,qBAAqB,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IACrH,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5F,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC9F,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAC;IAEtD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7G,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC"}
|
|
@@ -3,6 +3,7 @@ import type { INextVoucher } from '@arcasdk/core/lib/domain/types/voucher.types'
|
|
|
3
3
|
import type { VoucherKindDefinition } from './billing.types';
|
|
4
4
|
export interface BillingGateway {
|
|
5
5
|
createNextVoucher(payload: INextVoucher): Promise<CreateVoucherResultDto>;
|
|
6
|
+
getQuotation(currencyCode: string): Promise<number>;
|
|
6
7
|
}
|
|
7
8
|
export interface BillingResponseSummary {
|
|
8
9
|
readonly cae: string | null;
|
|
@@ -22,4 +23,5 @@ export interface BillingExecutionResult {
|
|
|
22
23
|
readonly payload: INextVoucher;
|
|
23
24
|
readonly response: BillingResponseSummary;
|
|
24
25
|
readonly voucherKind: VoucherKindDefinition;
|
|
26
|
+
readonly warnings?: readonly string[];
|
|
25
27
|
}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import type { BillingCommandInput } from './billing.schemas';
|
|
1
|
+
import type { BillingCommandInput, BillingConcept } from './billing.schemas';
|
|
2
2
|
import type { VoucherKindDefinition } from './billing.types';
|
|
3
3
|
export declare function ensureDateOrder(serviceStartDate: string, serviceEndDate: string): void;
|
|
4
|
-
export declare function validateConceptDateInputs(input: BillingCommandInput): void;
|
|
4
|
+
export declare function validateConceptDateInputs(input: BillingCommandInput, voucherKind: VoucherKindDefinition): void;
|
|
5
5
|
export declare function validateDocumentIdentity(input: BillingCommandInput, voucherKind: VoucherKindDefinition): void;
|
|
6
|
+
export declare function validateBillingDateWindow(billingDate: string, today: string, concept: BillingConcept, voucherKind: VoucherKindDefinition): void;
|
|
7
|
+
export declare function validatePaymentDueDate(paymentDueDate: string, minimumPaymentDueDate: string): void;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { diffArcaDatesInDays, formatArcaDateAsArgentineDate } from '../../lib/dates/arca-date.js';
|
|
1
2
|
import { InputValidationError } from '../../lib/errors/app-error.js';
|
|
2
3
|
import { formatDocumentFlag, formatVoucherLabel } from './billing.mappers.js';
|
|
3
4
|
export function ensureDateOrder(serviceStartDate, serviceEndDate) {
|
|
@@ -5,9 +6,17 @@ export function ensureDateOrder(serviceStartDate, serviceEndDate) {
|
|
|
5
6
|
throw new InputValidationError('La fecha de inicio de servicio no puede ser posterior a la fecha de fin.');
|
|
6
7
|
}
|
|
7
8
|
}
|
|
8
|
-
export function validateConceptDateInputs(input) {
|
|
9
|
+
export function validateConceptDateInputs(input, voucherKind) {
|
|
9
10
|
const hasAnyServiceDate = Boolean(input.serviceStartDate || input.serviceEndDate);
|
|
10
11
|
const hasPartialServiceDate = Boolean(input.serviceStartDate) !== Boolean(input.serviceEndDate);
|
|
12
|
+
if (input.paymentDueDate) {
|
|
13
|
+
if (voucherKind.isElectronicCredit && voucherKind.family !== 'factura-credito-electronica') {
|
|
14
|
+
throw new InputValidationError(`La ${formatVoucherLabel(voucherKind)} no lleva vencimiento de pago. Quite --vencimiento.`);
|
|
15
|
+
}
|
|
16
|
+
if (!voucherKind.isElectronicCredit && input.concept === 'productos') {
|
|
17
|
+
throw new InputValidationError('El concepto "productos" no usa --vencimiento.');
|
|
18
|
+
}
|
|
19
|
+
}
|
|
11
20
|
if (input.concept === 'productos') {
|
|
12
21
|
if (hasAnyServiceDate) {
|
|
13
22
|
throw new InputValidationError('El concepto "productos" no usa fechas de servicio. Quite --servicio-desde y --servicio-hasta.');
|
|
@@ -42,4 +51,30 @@ export function validateDocumentIdentity(input, voucherKind) {
|
|
|
42
51
|
throw new InputValidationError(`--dni debe tener 7 u 8 digitos en ${formatVoucherLabel(voucherKind)}.`);
|
|
43
52
|
}
|
|
44
53
|
}
|
|
54
|
+
/** Ventana de CbteFch respecto de hoy segun ARCA (errores 10016 y 10152). */
|
|
55
|
+
function resolveBillingDateWindow(concept, voucherKind) {
|
|
56
|
+
if (voucherKind.isElectronicCredit) {
|
|
57
|
+
return { maxDaysAfter: 1, maxDaysBefore: 5, sameMonthWhenFuture: true };
|
|
58
|
+
}
|
|
59
|
+
if (concept === 'productos') {
|
|
60
|
+
return { maxDaysAfter: 5, maxDaysBefore: 5, sameMonthWhenFuture: true };
|
|
61
|
+
}
|
|
62
|
+
return { maxDaysAfter: 10, maxDaysBefore: 10, sameMonthWhenFuture: false };
|
|
63
|
+
}
|
|
64
|
+
export function validateBillingDateWindow(billingDate, today, concept, voucherKind) {
|
|
65
|
+
const window = resolveBillingDateWindow(concept, voucherKind);
|
|
66
|
+
const offset = diffArcaDatesInDays(today, billingDate);
|
|
67
|
+
const label = formatArcaDateAsArgentineDate(billingDate);
|
|
68
|
+
if (offset < -window.maxDaysBefore || offset > window.maxDaysAfter) {
|
|
69
|
+
throw new InputValidationError(`La fecha ${label} esta fuera de rango para la ${formatVoucherLabel(voucherKind)}: ARCA acepta hasta ${window.maxDaysBefore} dias antes y ${window.maxDaysAfter} despues de hoy.`);
|
|
70
|
+
}
|
|
71
|
+
if (window.sameMonthWhenFuture && offset > 0 && billingDate.slice(0, 6) !== today.slice(0, 6)) {
|
|
72
|
+
throw new InputValidationError(`La fecha ${label} es futura y cae en otro mes. Para la ${formatVoucherLabel(voucherKind)} ARCA solo acepta fechas futuras dentro del mes actual.`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
export function validatePaymentDueDate(paymentDueDate, minimumPaymentDueDate) {
|
|
76
|
+
if (paymentDueDate < minimumPaymentDueDate) {
|
|
77
|
+
throw new InputValidationError(`El vencimiento de pago (${formatArcaDateAsArgentineDate(paymentDueDate)}) no puede ser anterior al ${formatArcaDateAsArgentineDate(minimumPaymentDueDate)}.`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
45
80
|
//# sourceMappingURL=billing.validation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billing.validation.js","sourceRoot":"","sources":["../../../src/modules/billing/billing.validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAI3E,MAAM,UAAU,eAAe,CAAC,gBAAwB,EAAE,cAAsB;IAC9E,IAAI,gBAAgB,GAAG,cAAc,EAAE,CAAC;QACtC,MAAM,IAAI,oBAAoB,CAAC,0EAA0E,CAAC,CAAC;IAC7G,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAA0B;
|
|
1
|
+
{"version":3,"file":"billing.validation.js","sourceRoot":"","sources":["../../../src/modules/billing/billing.validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export type CanonicalConfigKey = 'cert.produccion' | 'cert.testing' | 'conceptoPorDefecto' | 'cotizacionPorDefecto' | 'cuit' | 'entornoPorDefecto' | 'ivaReceptorPorDefecto' | 'key.produccion' | 'key.testing' | 'monedaPorDefecto' | 'output.emitirPorDefecto' | 'output.jsonPorDefecto' | 'output.brutoPorDefecto' | 'puntoVentaPorDefecto' | 'ticketPath';
|
|
1
|
+
export type CanonicalConfigKey = 'alicuotaPorDefecto' | 'aliasCbu' | 'cbu' | 'cert.produccion' | 'cert.testing' | 'conceptoPorDefecto' | 'cotizacionPorDefecto' | 'cuit' | 'entornoPorDefecto' | 'ivaReceptorPorDefecto' | 'key.produccion' | 'key.testing' | 'monedaPorDefecto' | 'output.emitirPorDefecto' | 'output.jsonPorDefecto' | 'output.brutoPorDefecto' | 'puntoVentaPorDefecto' | 'ticketPath' | 'verificarFce';
|
|
2
2
|
export declare function parseConfigValue(key: CanonicalConfigKey, value: string): boolean | number | string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { readPemFile } from '../../lib/security/pem.js';
|
|
2
|
-
import { arcliDefaultConceptSchema, arcliDefaultIvaConditionSchema, arcliEnvironmentSchema } from './config.schemas.js';
|
|
2
|
+
import { arcliDefaultConceptSchema, arcliDefaultIvaConditionSchema, arcliDefaultIvaRateSchema, arcliEnvironmentSchema, } from './config.schemas.js';
|
|
3
3
|
function parseBoolean(value) {
|
|
4
4
|
const normalizedValue = value.trim().toLowerCase();
|
|
5
5
|
if (normalizedValue === 'true' || normalizedValue === '1' || normalizedValue === 'si' || normalizedValue === 'sí') {
|
|
@@ -17,6 +17,27 @@ function parseNonEmptyString(value) {
|
|
|
17
17
|
}
|
|
18
18
|
return normalizedValue;
|
|
19
19
|
}
|
|
20
|
+
function parseIvaRate(value) {
|
|
21
|
+
const result = arcliDefaultIvaRateSchema.safeParse(value);
|
|
22
|
+
if (!result.success) {
|
|
23
|
+
throw new Error(`La alicuota "${value}" no es valida. Use 0, 2.5, 5, 10.5, 21 o 27.`);
|
|
24
|
+
}
|
|
25
|
+
return result.data;
|
|
26
|
+
}
|
|
27
|
+
function parseCbu(value) {
|
|
28
|
+
const normalizedValue = value.trim();
|
|
29
|
+
if (!/^\d{22}$/.test(normalizedValue)) {
|
|
30
|
+
throw new Error(`El CBU "${value}" no es valido: debe tener 22 digitos.`);
|
|
31
|
+
}
|
|
32
|
+
return normalizedValue;
|
|
33
|
+
}
|
|
34
|
+
function parseCbuAlias(value) {
|
|
35
|
+
const normalizedValue = value.trim();
|
|
36
|
+
if (!/^[A-Za-z0-9.-]{6,20}$/.test(normalizedValue)) {
|
|
37
|
+
throw new Error(`El alias "${value}" no es valido: debe tener entre 6 y 20 letras, numeros, puntos o guiones.`);
|
|
38
|
+
}
|
|
39
|
+
return normalizedValue;
|
|
40
|
+
}
|
|
20
41
|
function parsePositiveInteger(value) {
|
|
21
42
|
const parsedValue = Number.parseInt(value.trim(), 10);
|
|
22
43
|
if (!Number.isInteger(parsedValue) || parsedValue <= 0) {
|
|
@@ -38,6 +59,12 @@ function parsePemPath(value, label) {
|
|
|
38
59
|
}
|
|
39
60
|
export function parseConfigValue(key, value) {
|
|
40
61
|
switch (key) {
|
|
62
|
+
case 'alicuotaPorDefecto':
|
|
63
|
+
return parseIvaRate(value);
|
|
64
|
+
case 'aliasCbu':
|
|
65
|
+
return parseCbuAlias(value);
|
|
66
|
+
case 'cbu':
|
|
67
|
+
return parseCbu(value);
|
|
41
68
|
case 'conceptoPorDefecto':
|
|
42
69
|
return arcliDefaultConceptSchema.parse(value.trim().toLowerCase());
|
|
43
70
|
case 'cotizacionPorDefecto':
|
|
@@ -50,6 +77,7 @@ export function parseConfigValue(key, value) {
|
|
|
50
77
|
return arcliDefaultIvaConditionSchema.parse(value.trim().toLowerCase());
|
|
51
78
|
case 'monedaPorDefecto':
|
|
52
79
|
return value.trim().toUpperCase();
|
|
80
|
+
case 'verificarFce':
|
|
53
81
|
case 'output.emitirPorDefecto':
|
|
54
82
|
case 'output.jsonPorDefecto':
|
|
55
83
|
case 'output.brutoPorDefecto':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-value-parser.js","sourceRoot":"","sources":["../../../src/modules/config/config-value-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,
|
|
1
|
+
{"version":3,"file":"config-value-parser.js","sourceRoot":"","sources":["../../../src/modules/config/config-value-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,9 @@ import { maskPath } from '../../lib/paths/mask-path.js';
|
|
|
2
2
|
import { keyValuePanel, renderKeyValueRows, resolveKeyValueLabelWidth, statusPanel, toneText } from '../../ui/index.js';
|
|
3
3
|
function toPublicSnapshot(config, effectiveTicketPath) {
|
|
4
4
|
return {
|
|
5
|
+
alicuota: config.alicuotaPorDefecto,
|
|
6
|
+
aliasCbu: config.aliasCbu,
|
|
7
|
+
cbu: config.cbu,
|
|
5
8
|
cert: {
|
|
6
9
|
produccion: config.cert.produccion ? maskPath(config.cert.produccion) : undefined,
|
|
7
10
|
testing: config.cert.testing ? maskPath(config.cert.testing) : undefined,
|
|
@@ -21,6 +24,7 @@ function toPublicSnapshot(config, effectiveTicketPath) {
|
|
|
21
24
|
puntoVenta: config.puntoVentaPorDefecto,
|
|
22
25
|
bruto: config.output.brutoPorDefecto,
|
|
23
26
|
ticketPath: maskPath(effectiveTicketPath),
|
|
27
|
+
verificarFce: config.verificarFce,
|
|
24
28
|
};
|
|
25
29
|
}
|
|
26
30
|
export function formatConfig(config, effectiveTicketPath) {
|
|
@@ -33,8 +37,12 @@ export function formatConfigAsText(config, effectiveTicketPath) {
|
|
|
33
37
|
const safeConfig = toPublicSnapshot(config, effectiveTicketPath);
|
|
34
38
|
const rows = [
|
|
35
39
|
['CUIT', safeConfig.cuit ?? 'no configurado'],
|
|
40
|
+
['CBU (FCE)', safeConfig.cbu ?? 'no configurado'],
|
|
41
|
+
['Alias CBU (FCE)', safeConfig.aliasCbu ?? 'no configurado'],
|
|
42
|
+
['Verificar regimen FCE', safeConfig.verificarFce ? 'si' : 'no'],
|
|
36
43
|
['Concepto', safeConfig.concepto ?? 'no configurado'],
|
|
37
44
|
['IVA receptor', safeConfig.ivaReceptor ?? 'no configurado'],
|
|
45
|
+
['Alicuota IVA (A y B)', safeConfig.alicuota ? `${safeConfig.alicuota}%` : '21% (por defecto)'],
|
|
38
46
|
['Moneda', safeConfig.moneda ?? 'PES'],
|
|
39
47
|
['Cotizacion', safeConfig.cotizacion ?? 1],
|
|
40
48
|
['Entorno', safeConfig.entorno],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.presenter.js","sourceRoot":"","sources":["../../../src/modules/config/config.presenter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"config.presenter.js","sourceRoot":"","sources":["../../../src/modules/config/config.presenter.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,8 +9,8 @@ export declare const arcliDefaultConceptSchema: z.ZodEnum<{
|
|
|
9
9
|
servicios: "servicios";
|
|
10
10
|
}>;
|
|
11
11
|
export declare const arcliDefaultIvaConditionSchema: z.ZodEnum<{
|
|
12
|
-
"cliente-del-exterior": "cliente-del-exterior";
|
|
13
12
|
"consumidor-final": "consumidor-final";
|
|
13
|
+
"cliente-del-exterior": "cliente-del-exterior";
|
|
14
14
|
"iva-liberado": "iva-liberado";
|
|
15
15
|
"iva-no-alcanzado": "iva-no-alcanzado";
|
|
16
16
|
"monotributista-social": "monotributista-social";
|
|
@@ -22,20 +22,38 @@ export declare const arcliDefaultIvaConditionSchema: z.ZodEnum<{
|
|
|
22
22
|
"sujeto-no-categorizado": "sujeto-no-categorizado";
|
|
23
23
|
}>;
|
|
24
24
|
export declare const arcliDefaultCurrencySchema: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
|
|
25
|
+
export declare const arcliDefaultIvaRateSchema: z.ZodPreprocess<z.ZodEnum<{
|
|
26
|
+
0: "0";
|
|
27
|
+
5: "5";
|
|
28
|
+
2.5: "2.5";
|
|
29
|
+
10.5: "10.5";
|
|
30
|
+
21: "21";
|
|
31
|
+
27: "27";
|
|
32
|
+
}>>;
|
|
25
33
|
export declare const arcliConfigSchema: z.ZodObject<{
|
|
34
|
+
alicuotaPorDefecto: z.ZodOptional<z.ZodPreprocess<z.ZodEnum<{
|
|
35
|
+
0: "0";
|
|
36
|
+
5: "5";
|
|
37
|
+
2.5: "2.5";
|
|
38
|
+
10.5: "10.5";
|
|
39
|
+
21: "21";
|
|
40
|
+
27: "27";
|
|
41
|
+
}>>>;
|
|
26
42
|
cert: z.ZodDefault<z.ZodObject<{
|
|
27
43
|
produccion: z.ZodOptional<z.ZodString>;
|
|
28
44
|
testing: z.ZodOptional<z.ZodString>;
|
|
29
45
|
}, z.core.$strip>>;
|
|
30
46
|
cuit: z.ZodOptional<z.ZodString>;
|
|
47
|
+
cbu: z.ZodOptional<z.ZodString>;
|
|
48
|
+
aliasCbu: z.ZodOptional<z.ZodString>;
|
|
31
49
|
conceptoPorDefecto: z.ZodOptional<z.ZodEnum<{
|
|
32
50
|
productos: "productos";
|
|
33
51
|
"productos-servicios": "productos-servicios";
|
|
34
52
|
servicios: "servicios";
|
|
35
53
|
}>>;
|
|
36
54
|
ivaReceptorPorDefecto: z.ZodOptional<z.ZodEnum<{
|
|
37
|
-
"cliente-del-exterior": "cliente-del-exterior";
|
|
38
55
|
"consumidor-final": "consumidor-final";
|
|
56
|
+
"cliente-del-exterior": "cliente-del-exterior";
|
|
39
57
|
"iva-liberado": "iva-liberado";
|
|
40
58
|
"iva-no-alcanzado": "iva-no-alcanzado";
|
|
41
59
|
"monotributista-social": "monotributista-social";
|
|
@@ -63,13 +81,19 @@ export declare const arcliConfigSchema: z.ZodObject<{
|
|
|
63
81
|
}, z.core.$strip>>;
|
|
64
82
|
puntoVentaPorDefecto: z.ZodOptional<z.ZodNumber>;
|
|
65
83
|
ticketPath: z.ZodOptional<z.ZodString>;
|
|
84
|
+
verificarFce: z.ZodOptional<z.ZodBoolean>;
|
|
66
85
|
}, z.core.$strip>;
|
|
67
86
|
export type ArcliConfig = z.infer<typeof arcliConfigSchema>;
|
|
68
87
|
export type ArcliEnvironment = z.infer<typeof arcliEnvironmentSchema>;
|
|
69
88
|
export declare const CONFIG_DEFAULTS: ArcliConfig;
|
|
70
89
|
export declare const configPublicKeySchema: z.ZodEnum<{
|
|
71
90
|
cuit: "cuit";
|
|
91
|
+
puntoVenta: "puntoVenta";
|
|
92
|
+
cbu: "cbu";
|
|
93
|
+
aliasCbu: "aliasCbu";
|
|
72
94
|
ticketPath: "ticketPath";
|
|
95
|
+
verificarFce: "verificarFce";
|
|
96
|
+
alicuota: "alicuota";
|
|
73
97
|
"cert.produccion": "cert.produccion";
|
|
74
98
|
"cert.testing": "cert.testing";
|
|
75
99
|
concepto: "concepto";
|
|
@@ -82,6 +106,5 @@ export declare const configPublicKeySchema: z.ZodEnum<{
|
|
|
82
106
|
"key.testing": "key.testing";
|
|
83
107
|
moneda: "moneda";
|
|
84
108
|
bruto: "bruto";
|
|
85
|
-
puntoVenta: "puntoVenta";
|
|
86
109
|
}>;
|
|
87
110
|
export type ConfigPublicKey = z.infer<typeof configPublicKeySchema>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { billingIvaRateSchema } from '../billing/billing.schemas.js';
|
|
2
3
|
export const arcliEnvironmentSchema = z.enum(['testing', 'produccion']);
|
|
3
4
|
export const arcliDefaultConceptSchema = z.enum(['productos', 'productos-servicios', 'servicios']);
|
|
4
5
|
export const arcliDefaultIvaConditionSchema = z.enum([
|
|
@@ -19,7 +20,10 @@ export const arcliDefaultCurrencySchema = z
|
|
|
19
20
|
.trim()
|
|
20
21
|
.length(3)
|
|
21
22
|
.transform((value) => value.toUpperCase());
|
|
23
|
+
// Misma normalizacion que --alicuota ("10,5", "10.5%").
|
|
24
|
+
export const arcliDefaultIvaRateSchema = billingIvaRateSchema;
|
|
22
25
|
export const arcliConfigSchema = z.object({
|
|
26
|
+
alicuotaPorDefecto: arcliDefaultIvaRateSchema.optional(),
|
|
23
27
|
cert: z
|
|
24
28
|
.object({
|
|
25
29
|
produccion: z.string().trim().min(1).optional(),
|
|
@@ -31,6 +35,16 @@ export const arcliConfigSchema = z.object({
|
|
|
31
35
|
.trim()
|
|
32
36
|
.regex(/^\d{11}$/, 'El CUIT debe tener 11 digitos')
|
|
33
37
|
.optional(),
|
|
38
|
+
cbu: z
|
|
39
|
+
.string()
|
|
40
|
+
.trim()
|
|
41
|
+
.regex(/^\d{22}$/, 'El CBU debe tener 22 digitos')
|
|
42
|
+
.optional(),
|
|
43
|
+
aliasCbu: z
|
|
44
|
+
.string()
|
|
45
|
+
.trim()
|
|
46
|
+
.regex(/^[A-Za-z0-9.-]{6,20}$/, 'El alias debe tener entre 6 y 20 caracteres (letras, numeros, punto o guion)')
|
|
47
|
+
.optional(),
|
|
34
48
|
conceptoPorDefecto: arcliDefaultConceptSchema.optional(),
|
|
35
49
|
ivaReceptorPorDefecto: arcliDefaultIvaConditionSchema.optional(),
|
|
36
50
|
monedaPorDefecto: arcliDefaultCurrencySchema.optional(),
|
|
@@ -51,6 +65,7 @@ export const arcliConfigSchema = z.object({
|
|
|
51
65
|
.default({ emitirPorDefecto: false, jsonPorDefecto: false, brutoPorDefecto: false }),
|
|
52
66
|
puntoVentaPorDefecto: z.number().int().positive().optional(),
|
|
53
67
|
ticketPath: z.string().trim().min(1).optional(),
|
|
68
|
+
verificarFce: z.boolean().optional(),
|
|
54
69
|
});
|
|
55
70
|
export const CONFIG_DEFAULTS = {
|
|
56
71
|
cert: {},
|
|
@@ -65,6 +80,9 @@ export const CONFIG_DEFAULTS = {
|
|
|
65
80
|
},
|
|
66
81
|
};
|
|
67
82
|
export const configPublicKeySchema = z.enum([
|
|
83
|
+
'alicuota',
|
|
84
|
+
'aliasCbu',
|
|
85
|
+
'cbu',
|
|
68
86
|
'cert.produccion',
|
|
69
87
|
'cert.testing',
|
|
70
88
|
'concepto',
|
|
@@ -80,5 +98,6 @@ export const configPublicKeySchema = z.enum([
|
|
|
80
98
|
'bruto',
|
|
81
99
|
'puntoVenta',
|
|
82
100
|
'ticketPath',
|
|
101
|
+
'verificarFce',
|
|
83
102
|
]);
|
|
84
103
|
//# sourceMappingURL=config.schemas.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.schemas.js","sourceRoot":"","sources":["../../../src/modules/config/config.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;AACxE,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,qBAAqB,EAAE,WAAW,CAAC,CAAC,CAAC;AACnG,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC,IAAI,CAAC;IACnD,sBAAsB;IACtB,kBAAkB;IAClB,cAAc;IACd,kBAAkB;IAClB,uBAAuB;IACvB,gDAAgD;IAChD,wBAAwB;IACxB,uBAAuB;IACvB,yBAAyB;IACzB,eAAe;IACf,wBAAwB;CACzB,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC;KACxC,MAAM,EAAE;KACR,IAAI,EAAE;KACN,MAAM,CAAC,CAAC,CAAC;KACT,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;AAE7C,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,CAAC;SACJ,MAAM,CAAC;QACN,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC/C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;KAC7C,CAAC;SACD,OAAO,CAAC,EAAE,CAAC;IACd,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,IAAI,EAAE;SACN,KAAK,CAAC,UAAU,EAAE,+BAA+B,CAAC;SAClD,QAAQ,EAAE;IACb,kBAAkB,EAAE,yBAAyB,CAAC,QAAQ,EAAE;IACxD,qBAAqB,EAAE,8BAA8B,CAAC,QAAQ,EAAE;IAChE,gBAAgB,EAAE,0BAA0B,CAAC,QAAQ,EAAE;IACvD,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACtD,iBAAiB,EAAE,sBAAsB,CAAC,OAAO,CAAC,SAAS,CAAC;IAC5D,GAAG,EAAE,CAAC;SACH,MAAM,CAAC;QACN,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC/C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;KAC7C,CAAC;SACD,OAAO,CAAC,EAAE,CAAC;IACd,MAAM,EAAE,CAAC;SACN,MAAM,CAAC;QACN,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;QAC5C,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;QAC1C,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;KAC5C,CAAC;SACD,OAAO,CAAC,EAAE,gBAAgB,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC;IACtF,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC5D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"config.schemas.js","sourceRoot":"","sources":["../../../src/modules/config/config.schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,9 @@ import { dirname, join } from 'node:path';
|
|
|
3
3
|
import { arcliConfigSchema, CONFIG_DEFAULTS, configPublicKeySchema, } from './config.schemas.js';
|
|
4
4
|
import { parseConfigValue } from './config-value-parser.js';
|
|
5
5
|
const CONFIG_KEY_ALIASES = {
|
|
6
|
+
alicuota: 'alicuotaPorDefecto',
|
|
7
|
+
aliasCbu: 'aliasCbu',
|
|
8
|
+
cbu: 'cbu',
|
|
6
9
|
'cert.produccion': 'cert.produccion',
|
|
7
10
|
'cert.testing': 'cert.testing',
|
|
8
11
|
concepto: 'conceptoPorDefecto',
|
|
@@ -18,6 +21,7 @@ const CONFIG_KEY_ALIASES = {
|
|
|
18
21
|
bruto: 'output.brutoPorDefecto',
|
|
19
22
|
puntoVenta: 'puntoVentaPorDefecto',
|
|
20
23
|
ticketPath: 'ticketPath',
|
|
24
|
+
verificarFce: 'verificarFce',
|
|
21
25
|
};
|
|
22
26
|
export class ConfigService {
|
|
23
27
|
store;
|