arcli 1.4.0 → 1.6.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 +32 -1
- package/README.md +3 -1
- package/dist/cli/commands/billing.command.options.js +6 -0
- package/dist/cli/commands/billing.command.options.js.map +1 -1
- package/dist/cli/commands/billing.command.output.d.ts +2 -0
- package/dist/cli/commands/billing.command.output.js +15 -1
- package/dist/cli/commands/billing.command.output.js.map +1 -1
- package/dist/cli/commands/billing.command.parser.js +14 -0
- package/dist/cli/commands/billing.command.parser.js.map +1 -1
- package/dist/cli/commands/billing.command.pdf.d.ts +24 -0
- package/dist/cli/commands/billing.command.pdf.js +130 -0
- package/dist/cli/commands/billing.command.pdf.js.map +1 -0
- package/dist/cli/commands/billing.command.shared.js +14 -1
- package/dist/cli/commands/billing.command.shared.js.map +1 -1
- package/dist/cli/commands/config.command.js +6 -6
- package/dist/cli/commands/config.command.js.map +1 -1
- package/dist/cli/commands/parameters.command.d.ts +2 -0
- package/dist/cli/commands/parameters.command.js +88 -0
- package/dist/cli/commands/parameters.command.js.map +1 -0
- package/dist/cli/commands/pdf.command.d.ts +2 -0
- package/dist/cli/commands/pdf.command.js +78 -0
- package/dist/cli/commands/pdf.command.js.map +1 -0
- package/dist/cli/help.js +3 -0
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/interactive/advanced-options.d.ts +6 -3
- package/dist/cli/interactive/advanced-options.js +85 -45
- package/dist/cli/interactive/advanced-options.js.map +1 -1
- package/dist/cli/interactive/invoice.flow.d.ts +0 -2
- package/dist/cli/interactive/invoice.flow.js +5 -22
- package/dist/cli/interactive/invoice.flow.js.map +1 -1
- package/dist/cli/interactive/pdf.flow.d.ts +5 -0
- package/dist/cli/interactive/pdf.flow.js +89 -0
- package/dist/cli/interactive/pdf.flow.js.map +1 -0
- package/dist/cli/interactive/prompts.d.ts +5 -0
- package/dist/cli/interactive/prompts.js +14 -0
- package/dist/cli/interactive/prompts.js.map +1 -1
- package/dist/cli/interactive/session.js +2 -0
- package/dist/cli/interactive/session.js.map +1 -1
- package/dist/cli/program.js +4 -0
- package/dist/cli/program.js.map +1 -1
- package/dist/cli/version.d.ts +1 -1
- package/dist/cli/version.js +1 -1
- package/dist/modules/billing/billing.schemas.d.ts +4 -0
- package/dist/modules/billing/billing.schemas.js +6 -0
- package/dist/modules/billing/billing.schemas.js.map +1 -1
- package/dist/modules/billing/billing.serialize.js +13 -0
- package/dist/modules/billing/billing.serialize.js.map +1 -1
- package/dist/modules/billing/billing.types.internal.d.ts +3 -0
- package/dist/modules/config/config-doctor.js +13 -0
- package/dist/modules/config/config-doctor.js.map +1 -1
- package/dist/modules/config/config-value-parser.d.ts +1 -1
- package/dist/modules/config/config-value-parser.js +41 -1
- package/dist/modules/config/config-value-parser.js.map +1 -1
- package/dist/modules/config/config.presenter.d.ts +6 -2
- package/dist/modules/config/config.presenter.js +25 -6
- package/dist/modules/config/config.presenter.js.map +1 -1
- package/dist/modules/config/config.schemas.d.ts +42 -0
- package/dist/modules/config/config.schemas.js +29 -0
- package/dist/modules/config/config.schemas.js.map +1 -1
- package/dist/modules/config/config.service.d.ts +8 -0
- package/dist/modules/config/config.service.js +21 -0
- package/dist/modules/config/config.service.js.map +1 -1
- package/dist/modules/examples/examples.js +1 -0
- package/dist/modules/examples/examples.js.map +1 -1
- package/dist/modules/parameters/parameters.d.ts +50 -0
- package/dist/modules/parameters/parameters.js +34 -0
- package/dist/modules/parameters/parameters.js.map +1 -0
- package/dist/modules/parameters/parameters.presenter.d.ts +12 -0
- package/dist/modules/parameters/parameters.presenter.js +103 -0
- package/dist/modules/parameters/parameters.presenter.js.map +1 -0
- package/dist/modules/parameters/status.d.ts +31 -0
- package/dist/modules/parameters/status.js +35 -0
- package/dist/modules/parameters/status.js.map +1 -0
- package/dist/modules/pdf/pdf-data.mapper.d.ts +4 -0
- package/dist/modules/pdf/pdf-data.mapper.js +117 -0
- package/dist/modules/pdf/pdf-data.mapper.js.map +1 -0
- package/dist/modules/pdf/pdf-decision.d.ts +14 -0
- package/dist/modules/pdf/pdf-decision.js +19 -0
- package/dist/modules/pdf/pdf-decision.js.map +1 -0
- package/dist/modules/pdf/pdf-file-name.d.ts +3 -0
- package/dist/modules/pdf/pdf-file-name.js +7 -0
- package/dist/modules/pdf/pdf-file-name.js.map +1 -0
- package/dist/modules/pdf/pdf-issuer.d.ts +8 -0
- package/dist/modules/pdf/pdf-issuer.js +43 -0
- package/dist/modules/pdf/pdf-issuer.js.map +1 -0
- package/dist/modules/pdf/pdf.errors.d.ts +10 -0
- package/dist/modules/pdf/pdf.errors.js +11 -0
- package/dist/modules/pdf/pdf.errors.js.map +1 -0
- package/dist/modules/pdf/pdf.types.d.ts +91 -0
- package/dist/modules/pdf/pdf.types.js +2 -0
- package/dist/modules/pdf/pdf.types.js.map +1 -0
- package/dist/modules/storybook/showcase.js +6 -2
- package/dist/modules/storybook/showcase.js.map +1 -1
- package/dist/services/arca/arca-parameters.gateway.d.ts +10 -0
- package/dist/services/arca/arca-parameters.gateway.js +71 -0
- package/dist/services/arca/arca-parameters.gateway.js.map +1 -0
- package/dist/services/pdf/pdf-browser.d.ts +5 -0
- package/dist/services/pdf/pdf-browser.js +54 -0
- package/dist/services/pdf/pdf-browser.js.map +1 -0
- package/dist/services/pdf/pdf-exporter.d.ts +19 -0
- package/dist/services/pdf/pdf-exporter.js +47 -0
- package/dist/services/pdf/pdf-exporter.js.map +1 -0
- package/dist/services/pdf/pdf-plugin.d.ts +50 -0
- package/dist/services/pdf/pdf-plugin.js +143 -0
- package/dist/services/pdf/pdf-plugin.js.map +1 -0
- package/dist/ui/presenters/errors.presenter.js +11 -0
- package/dist/ui/presenters/errors.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/presenters/pdf.presenter.d.ts +13 -0
- package/dist/ui/presenters/pdf.presenter.js +46 -0
- package/dist/ui/presenters/pdf.presenter.js.map +1 -0
- package/llms.txt +19 -2
- package/package.json +2 -1
|
@@ -11,7 +11,15 @@ export declare class ConfigService {
|
|
|
11
11
|
getConfig(): ArcliConfig;
|
|
12
12
|
getPath(): string;
|
|
13
13
|
getDefaultTicketPath(): string;
|
|
14
|
+
/** Carpeta donde se instala el plugin de PDF, junto a config.json. */
|
|
15
|
+
getPluginsPath(): string;
|
|
14
16
|
resolveTicketPath(config: ArcliConfig): string;
|
|
17
|
+
/** Absoluta por defecto, para que los PDFs no queden repartidos segun desde donde se ejecuta arcli. */
|
|
18
|
+
resolvePdfFolder(config: ArcliConfig): string;
|
|
19
|
+
resolvePaths(config: ArcliConfig): {
|
|
20
|
+
readonly pdfFolder: string;
|
|
21
|
+
readonly ticketPath: string;
|
|
22
|
+
};
|
|
15
23
|
initialize(): ArcliConfig;
|
|
16
24
|
ensureInitialized(): ArcliConfig;
|
|
17
25
|
setValue(rawKey: string, rawValue: string): ArcliConfig;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import Conf from 'conf';
|
|
2
|
+
import { homedir } from 'node:os';
|
|
2
3
|
import { dirname, join } from 'node:path';
|
|
3
4
|
import { arcliConfigSchema, CONFIG_DEFAULTS, configPublicKeySchema, } from './config.schemas.js';
|
|
4
5
|
import { parseConfigValue } from './config-value-parser.js';
|
|
@@ -11,6 +12,12 @@ const CONFIG_KEY_ALIASES = {
|
|
|
11
12
|
concepto: 'conceptoPorDefecto',
|
|
12
13
|
cotizacion: 'cotizacionPorDefecto',
|
|
13
14
|
cuit: 'cuit',
|
|
15
|
+
'emisor.condicionIva': 'emisor.condicionIva',
|
|
16
|
+
'emisor.domicilio': 'emisor.domicilio',
|
|
17
|
+
'emisor.iibb': 'emisor.iibb',
|
|
18
|
+
'emisor.inicioActividades': 'emisor.inicioActividades',
|
|
19
|
+
'emisor.logo': 'emisor.logo',
|
|
20
|
+
'emisor.razonSocial': 'emisor.razonSocial',
|
|
14
21
|
entorno: 'entornoPorDefecto',
|
|
15
22
|
emitir: 'output.emitirPorDefecto',
|
|
16
23
|
ivaReceptor: 'ivaReceptorPorDefecto',
|
|
@@ -19,6 +26,9 @@ const CONFIG_KEY_ALIASES = {
|
|
|
19
26
|
'key.testing': 'key.testing',
|
|
20
27
|
moneda: 'monedaPorDefecto',
|
|
21
28
|
bruto: 'output.brutoPorDefecto',
|
|
29
|
+
pdf: 'pdf',
|
|
30
|
+
pdfCarpeta: 'pdfCarpeta',
|
|
31
|
+
pdfNavegador: 'pdfNavegador',
|
|
22
32
|
puntoVenta: 'puntoVentaPorDefecto',
|
|
23
33
|
ticketPath: 'ticketPath',
|
|
24
34
|
verificarFce: 'verificarFce',
|
|
@@ -47,9 +57,20 @@ export class ConfigService {
|
|
|
47
57
|
getDefaultTicketPath() {
|
|
48
58
|
return join(dirname(this.store.path), 'tickets');
|
|
49
59
|
}
|
|
60
|
+
/** Carpeta donde se instala el plugin de PDF, junto a config.json. */
|
|
61
|
+
getPluginsPath() {
|
|
62
|
+
return join(dirname(this.store.path), 'plugins');
|
|
63
|
+
}
|
|
50
64
|
resolveTicketPath(config) {
|
|
51
65
|
return config.ticketPath ?? this.getDefaultTicketPath();
|
|
52
66
|
}
|
|
67
|
+
/** Absoluta por defecto, para que los PDFs no queden repartidos segun desde donde se ejecuta arcli. */
|
|
68
|
+
resolvePdfFolder(config) {
|
|
69
|
+
return config.pdfCarpeta ?? join(homedir(), 'arcli', 'comprobantes');
|
|
70
|
+
}
|
|
71
|
+
resolvePaths(config) {
|
|
72
|
+
return { pdfFolder: this.resolvePdfFolder(config), ticketPath: this.resolveTicketPath(config) };
|
|
73
|
+
}
|
|
53
74
|
initialize() {
|
|
54
75
|
const config = this.getConfig();
|
|
55
76
|
this.store.store = config;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.service.js","sourceRoot":"","sources":["../../../src/modules/config/config.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.service.js","sourceRoot":"","sources":["../../../src/modules/config/config.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -170,6 +170,7 @@ export function renderExamples(today = new Date()) {
|
|
|
170
170
|
'Todos usan --previsualizar para evitar emisiones reales por error.',
|
|
171
171
|
'Si queres emitir de verdad, reemplaza --previsualizar por --emitir.',
|
|
172
172
|
'Para emitir en produccion necesitas --produccion junto con --emitir.',
|
|
173
|
+
'Para guardar el PDF con el QR, agrega --exportar-pdf al emitir (ver docs/pdf.md).',
|
|
173
174
|
'',
|
|
174
175
|
ISSUER_HINT,
|
|
175
176
|
'',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"examples.js","sourceRoot":"","sources":["../../../src/modules/examples/examples.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"examples.js","sourceRoot":"","sources":["../../../src/modules/examples/examples.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/** Tablas de referencia de ARCA (wsfe) que se pueden consultar con `arcli parametros <tabla>`. */
|
|
2
|
+
export declare const PARAMETER_TABLES: {
|
|
3
|
+
readonly alicuotas: "Alicuotas de IVA";
|
|
4
|
+
readonly comprobantes: "Tipos de comprobante";
|
|
5
|
+
readonly conceptos: "Conceptos";
|
|
6
|
+
readonly documentos: "Tipos de documento";
|
|
7
|
+
readonly 'iva-receptor': "Condiciones de IVA del receptor";
|
|
8
|
+
readonly monedas: "Monedas";
|
|
9
|
+
readonly opcionales: "Datos opcionales";
|
|
10
|
+
readonly 'puntos-venta': "Puntos de venta";
|
|
11
|
+
readonly tributos: "Tributos";
|
|
12
|
+
};
|
|
13
|
+
export type ParameterTable = keyof typeof PARAMETER_TABLES;
|
|
14
|
+
export declare const PARAMETER_TABLE_NAMES: ParameterTable[];
|
|
15
|
+
export interface ParameterEntry {
|
|
16
|
+
/** Dato propio de la tabla: clase de comprobante en iva-receptor, "bloqueado" en puntos de venta. */
|
|
17
|
+
readonly detail?: string;
|
|
18
|
+
readonly description: string;
|
|
19
|
+
readonly id: string;
|
|
20
|
+
/** yyyymmdd; sin definir si no vence. */
|
|
21
|
+
readonly validTo?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface Quotation {
|
|
24
|
+
readonly currency: string;
|
|
25
|
+
/** yyyymmdd */
|
|
26
|
+
readonly date?: string;
|
|
27
|
+
readonly rate: number;
|
|
28
|
+
}
|
|
29
|
+
export interface ServerStatus {
|
|
30
|
+
readonly app: string;
|
|
31
|
+
readonly auth: string;
|
|
32
|
+
readonly db: string;
|
|
33
|
+
}
|
|
34
|
+
export interface SalesPoint {
|
|
35
|
+
readonly blocked: boolean;
|
|
36
|
+
/** yyyymmdd */
|
|
37
|
+
readonly closedOn?: string;
|
|
38
|
+
readonly emissionType: string;
|
|
39
|
+
readonly number: number;
|
|
40
|
+
}
|
|
41
|
+
export interface ParametersGateway {
|
|
42
|
+
getQuotation(currency: string): Promise<Quotation>;
|
|
43
|
+
getSalesPoints(): Promise<SalesPoint[]>;
|
|
44
|
+
getServerStatus(): Promise<ServerStatus>;
|
|
45
|
+
listTable(table: Exclude<ParameterTable, 'puntos-venta'>): Promise<ParameterEntry[]>;
|
|
46
|
+
}
|
|
47
|
+
export declare function resolveParameterTable(value: string): ParameterTable;
|
|
48
|
+
/** ARCA devuelve tambien valores dados de baja: solo quedan los vigentes a `today` (yyyymmdd). */
|
|
49
|
+
export declare function filterCurrentEntries(entries: readonly ParameterEntry[], today: string): ParameterEntry[];
|
|
50
|
+
export declare function salesPointToEntry(point: SalesPoint): ParameterEntry;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { InputValidationError } from '../../lib/errors/app-error.js';
|
|
2
|
+
/** Tablas de referencia de ARCA (wsfe) que se pueden consultar con `arcli parametros <tabla>`. */
|
|
3
|
+
export const PARAMETER_TABLES = {
|
|
4
|
+
alicuotas: 'Alicuotas de IVA',
|
|
5
|
+
comprobantes: 'Tipos de comprobante',
|
|
6
|
+
conceptos: 'Conceptos',
|
|
7
|
+
documentos: 'Tipos de documento',
|
|
8
|
+
'iva-receptor': 'Condiciones de IVA del receptor',
|
|
9
|
+
monedas: 'Monedas',
|
|
10
|
+
opcionales: 'Datos opcionales',
|
|
11
|
+
'puntos-venta': 'Puntos de venta',
|
|
12
|
+
tributos: 'Tributos',
|
|
13
|
+
};
|
|
14
|
+
export const PARAMETER_TABLE_NAMES = Object.keys(PARAMETER_TABLES);
|
|
15
|
+
export function resolveParameterTable(value) {
|
|
16
|
+
const normalized = value.trim().toLowerCase();
|
|
17
|
+
if (normalized in PARAMETER_TABLES) {
|
|
18
|
+
return normalized;
|
|
19
|
+
}
|
|
20
|
+
throw new InputValidationError(`La tabla "${value}" no existe. Use una de estas: ${PARAMETER_TABLE_NAMES.join(', ')}, o "cotizacion <moneda>".`);
|
|
21
|
+
}
|
|
22
|
+
/** ARCA devuelve tambien valores dados de baja: solo quedan los vigentes a `today` (yyyymmdd). */
|
|
23
|
+
export function filterCurrentEntries(entries, today) {
|
|
24
|
+
return entries.filter((entry) => !entry.validTo || entry.validTo >= today);
|
|
25
|
+
}
|
|
26
|
+
export function salesPointToEntry(point) {
|
|
27
|
+
return {
|
|
28
|
+
description: point.emissionType,
|
|
29
|
+
detail: point.blocked ? 'bloqueado' : point.closedOn ? `de baja desde ${point.closedOn}` : 'habilitado',
|
|
30
|
+
id: String(point.number),
|
|
31
|
+
validTo: point.closedOn,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=parameters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parameters.js","sourceRoot":"","sources":["../../../src/modules/parameters/parameters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,kGAAkG;AAClG,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,SAAS,EAAE,kBAAkB;IAC7B,YAAY,EAAE,sBAAsB;IACpC,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,oBAAoB;IAChC,cAAc,EAAE,iCAAiC;IACjD,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,kBAAkB;IAC9B,cAAc,EAAE,iBAAiB;IACjC,QAAQ,EAAE,UAAU;CACZ,CAAC;AAIX,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAqB,CAAC;AAuCvF,MAAM,UAAU,qBAAqB,CAAC,KAAa;IACjD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE9C,IAAI,UAAU,IAAI,gBAAgB,EAAE,CAAC;QACnC,OAAO,UAA4B,CAAC;IACtC,CAAC;IAED,MAAM,IAAI,oBAAoB,CAC5B,aAAa,KAAK,kCAAkC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,4BAA4B,CACjH,CAAC;AACJ,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,oBAAoB,CAAC,OAAkC,EAAE,KAAa;IACpF,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAiB;IACjD,OAAO;QACL,WAAW,EAAE,KAAK,CAAC,YAAY;QAC/B,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,iBAAiB,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,YAAY;QACvG,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;QACxB,OAAO,EAAE,KAAK,CAAC,QAAQ;KACxB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type ParameterEntry, type ParameterTable, type Quotation } from './parameters';
|
|
2
|
+
import type { StatusReport } from './status';
|
|
3
|
+
type Environment = 'produccion' | 'testing';
|
|
4
|
+
export declare function formatParameterTablesAsText(): string;
|
|
5
|
+
export declare function formatParameterTablesAsJson(): string;
|
|
6
|
+
export declare function formatParameterEntriesAsText(table: ParameterTable, entries: readonly ParameterEntry[], environment: Environment): string;
|
|
7
|
+
export declare function formatParameterEntriesAsJson(table: ParameterTable, entries: readonly ParameterEntry[], environment: Environment): string;
|
|
8
|
+
export declare function formatQuotationAsText(quotation: Quotation, environment: Environment): string;
|
|
9
|
+
export declare function formatQuotationAsJson(quotation: Quotation, environment: Environment): string;
|
|
10
|
+
export declare function formatStatusAsText(report: StatusReport): string;
|
|
11
|
+
export declare function formatStatusAsJson(report: StatusReport): string;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { formatArcaDateAsArgentineDate } from '../../lib/dates/arca-date.js';
|
|
2
|
+
import { keyValuePanel, noticePanel, renderKeyValueRows, resolveKeyValueLabelWidth } from '../../ui/index.js';
|
|
3
|
+
import { PARAMETER_TABLE_NAMES, PARAMETER_TABLES, } from './parameters.js';
|
|
4
|
+
export function formatParameterTablesAsText() {
|
|
5
|
+
const rows = PARAMETER_TABLE_NAMES.map((name) => [name, PARAMETER_TABLES[name]]);
|
|
6
|
+
const allRows = [...rows, ['cotizacion <moneda>', 'Cotizacion oficial de ARCA, por ejemplo USD']];
|
|
7
|
+
return keyValuePanel('Tablas de ARCA', renderKeyValueRows(allRows, { labelWidth: resolveKeyValueLabelWidth('standard', allRows, [30, 70]) }), 'Uso: arcli parametros <tabla>', 'standard', undefined, 'sheet');
|
|
8
|
+
}
|
|
9
|
+
export function formatParameterTablesAsJson() {
|
|
10
|
+
return JSON.stringify({
|
|
11
|
+
tablas: [
|
|
12
|
+
...PARAMETER_TABLE_NAMES.map((name) => ({ descripcion: PARAMETER_TABLES[name], tabla: name })),
|
|
13
|
+
{ descripcion: 'Cotizacion oficial de ARCA', tabla: 'cotizacion' },
|
|
14
|
+
],
|
|
15
|
+
}, null, 2);
|
|
16
|
+
}
|
|
17
|
+
export function formatParameterEntriesAsText(table, entries, environment) {
|
|
18
|
+
if (entries.length === 0) {
|
|
19
|
+
const reason = table === 'puntos-venta' && environment === 'testing'
|
|
20
|
+
? 'En testing ARCA no informa puntos de venta: cualquier numero sirve para probar.'
|
|
21
|
+
: `ARCA no devolvio valores para ${PARAMETER_TABLES[table].toLowerCase()}.`;
|
|
22
|
+
return noticePanel(reason, 'muted');
|
|
23
|
+
}
|
|
24
|
+
const idWidth = Math.max(...entries.map((entry) => entry.id.length));
|
|
25
|
+
const rows = entries.map((entry) => [entry.id.padStart(idWidth), entry.description, entry.detail ? `(${entry.detail})` : ''].filter(Boolean).join(' '));
|
|
26
|
+
return keyValuePanel(`${PARAMETER_TABLES[table]} · ${environment}`, rows, undefined, 'wide', undefined, 'listing');
|
|
27
|
+
}
|
|
28
|
+
export function formatParameterEntriesAsJson(table, entries, environment) {
|
|
29
|
+
return JSON.stringify({
|
|
30
|
+
entorno: environment,
|
|
31
|
+
tabla: table,
|
|
32
|
+
valores: entries.map((entry) => ({
|
|
33
|
+
descripcion: entry.description,
|
|
34
|
+
detalle: entry.detail ?? null,
|
|
35
|
+
id: entry.id,
|
|
36
|
+
vigenteHasta: entry.validTo ?? null,
|
|
37
|
+
})),
|
|
38
|
+
}, null, 2);
|
|
39
|
+
}
|
|
40
|
+
export function formatQuotationAsText(quotation, environment) {
|
|
41
|
+
const rows = [
|
|
42
|
+
['Moneda', quotation.currency],
|
|
43
|
+
['Cotizacion', new Intl.NumberFormat('es-AR', { maximumFractionDigits: 6 }).format(quotation.rate)],
|
|
44
|
+
['Fecha', quotation.date ? formatArcaDateAsArgentineDate(quotation.date) : 'N/D'],
|
|
45
|
+
];
|
|
46
|
+
return keyValuePanel(`Cotizacion oficial · ${environment}`, renderKeyValueRows(rows, { labelWidth: resolveKeyValueLabelWidth('standard', rows, [30, 70]) }), undefined, 'standard', undefined, 'sheet');
|
|
47
|
+
}
|
|
48
|
+
export function formatQuotationAsJson(quotation, environment) {
|
|
49
|
+
return JSON.stringify({ cotizacion: quotation.rate, entorno: environment, fecha: quotation.date ?? null, moneda: quotation.currency }, null, 2);
|
|
50
|
+
}
|
|
51
|
+
function describePointOfSale(check, number) {
|
|
52
|
+
switch (check.kind) {
|
|
53
|
+
case 'habilitado':
|
|
54
|
+
return `${number} habilitado (${check.point.emissionType})`;
|
|
55
|
+
case 'bloqueado':
|
|
56
|
+
return `${number} bloqueado en ARCA`;
|
|
57
|
+
case 'de-baja':
|
|
58
|
+
return `${number} dado de baja`;
|
|
59
|
+
case 'no-encontrado':
|
|
60
|
+
return `${number} no existe en ARCA para este CUIT`;
|
|
61
|
+
case 'sin-datos':
|
|
62
|
+
return `${number} (en testing ARCA no informa puntos de venta)`;
|
|
63
|
+
case 'sin-configurar':
|
|
64
|
+
return 'no configurado';
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
export function formatStatusAsText(report) {
|
|
68
|
+
const rows = [
|
|
69
|
+
['Entorno', report.environment],
|
|
70
|
+
['Servidor de aplicacion', report.servers.app],
|
|
71
|
+
['Base de datos', report.servers.db],
|
|
72
|
+
['Autenticacion', report.servers.auth],
|
|
73
|
+
['Tiempo de respuesta', `${report.latencyMs} ms`],
|
|
74
|
+
['Punto de venta', describePointOfSale(report.pointOfSale, report.pointOfSaleNumber)],
|
|
75
|
+
];
|
|
76
|
+
const footer = report.ready
|
|
77
|
+
? 'ARCA responde: se puede emitir'
|
|
78
|
+
: report.pointOfSale.kind === 'sin-configurar'
|
|
79
|
+
? 'Configure el punto de venta: arcli config establecer puntoVenta <numero>'
|
|
80
|
+
: report.pointOfSale.kind === 'habilitado' || report.pointOfSale.kind === 'sin-datos'
|
|
81
|
+
? 'ARCA tiene problemas: espere unos minutos y reintente'
|
|
82
|
+
: 'Revise el punto de venta: arcli parametros puntos-venta';
|
|
83
|
+
return keyValuePanel('Estado de ARCA', renderKeyValueRows(rows, { labelWidth: resolveKeyValueLabelWidth('standard', rows, [30, 70]) }), footer, 'standard', report.ready ? 'success' : 'warning', 'sheet');
|
|
84
|
+
}
|
|
85
|
+
export function formatStatusAsJson(report) {
|
|
86
|
+
const point = 'point' in report.pointOfSale ? report.pointOfSale.point : undefined;
|
|
87
|
+
return JSON.stringify({
|
|
88
|
+
entorno: report.environment,
|
|
89
|
+
latenciaMs: report.latencyMs,
|
|
90
|
+
listo: report.ready,
|
|
91
|
+
puntoVenta: {
|
|
92
|
+
estado: report.pointOfSale.kind,
|
|
93
|
+
numero: report.pointOfSaleNumber ?? null,
|
|
94
|
+
tipoEmision: point?.emissionType ?? null,
|
|
95
|
+
},
|
|
96
|
+
servidores: {
|
|
97
|
+
aplicacion: report.servers.app,
|
|
98
|
+
autenticacion: report.servers.auth,
|
|
99
|
+
baseDeDatos: report.servers.db,
|
|
100
|
+
},
|
|
101
|
+
}, null, 2);
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=parameters.presenter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parameters.presenter.js","sourceRoot":"","sources":["../../../src/modules/parameters/parameters.presenter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAErG,OAAO,EACL,qBAAqB,EACrB,gBAAgB,GAIjB,MAAM,cAAc,CAAC;AAKtB,MAAM,UAAU,2BAA2B;IACzC,MAAM,IAAI,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAU,CAAC,CAAC;IAC1F,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,qBAAqB,EAAE,6CAA6C,CAAU,CAAC,CAAC;IAE3G,OAAO,aAAa,CAClB,gBAAgB,EAChB,kBAAkB,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,yBAAyB,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EACrG,+BAA+B,EAC/B,UAAU,EACV,SAAS,EACT,OAAO,CACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B;IACzC,OAAO,IAAI,CAAC,SAAS,CACnB;QACE,MAAM,EAAE;YACN,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9F,EAAE,WAAW,EAAE,4BAA4B,EAAE,KAAK,EAAE,YAAY,EAAE;SACnE;KACF,EACD,IAAI,EACJ,CAAC,CACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,KAAqB,EACrB,OAAkC,EAClC,WAAwB;IAExB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,MAAM,GACV,KAAK,KAAK,cAAc,IAAI,WAAW,KAAK,SAAS;YACnD,CAAC,CAAC,iFAAiF;YACnF,CAAC,CAAC,iCAAiC,gBAAgB,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC;QAEhF,OAAO,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACrE,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACjC,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACpH,CAAC;IAEF,OAAO,aAAa,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AACrH,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,KAAqB,EACrB,OAAkC,EAClC,WAAwB;IAExB,OAAO,IAAI,CAAC,SAAS,CACnB;QACE,OAAO,EAAE,WAAW;QACpB,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC/B,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,OAAO,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI;YAC7B,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,YAAY,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI;SACpC,CAAC,CAAC;KACJ,EACD,IAAI,EACJ,CAAC,CACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,SAAoB,EAAE,WAAwB;IAClF,MAAM,IAAI,GAAG;QACX,CAAC,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC;QAC9B,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACnG,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,6BAA6B,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;KACzE,CAAC;IAEX,OAAO,aAAa,CAClB,wBAAwB,WAAW,EAAE,EACrC,kBAAkB,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,yBAAyB,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAC/F,SAAS,EACT,UAAU,EACV,SAAS,EACT,OAAO,CACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,SAAoB,EAAE,WAAwB;IAClF,OAAO,IAAI,CAAC,SAAS,CACnB,EAAE,UAAU,EAAE,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,QAAQ,EAAE,EAC/G,IAAI,EACJ,CAAC,CACF,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAuB,EAAE,MAA0B;IAC9E,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,YAAY;YACf,OAAO,GAAG,MAAM,gBAAgB,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC;QAC9D,KAAK,WAAW;YACd,OAAO,GAAG,MAAM,oBAAoB,CAAC;QACvC,KAAK,SAAS;YACZ,OAAO,GAAG,MAAM,eAAe,CAAC;QAClC,KAAK,eAAe;YAClB,OAAO,GAAG,MAAM,mCAAmC,CAAC;QACtD,KAAK,WAAW;YACd,OAAO,GAAG,MAAM,+CAA+C,CAAC;QAClE,KAAK,gBAAgB;YACnB,OAAO,gBAAgB,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAoB;IACrD,MAAM,IAAI,GAAG;QACX,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC;QAC/B,CAAC,wBAAwB,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;QAC9C,CAAC,eAAe,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACpC,CAAC,eAAe,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;QACtC,CAAC,qBAAqB,EAAE,GAAG,MAAM,CAAC,SAAS,KAAK,CAAC;QACjD,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;KAC7E,CAAC;IACX,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK;QACzB,CAAC,CAAC,gCAAgC;QAClC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,gBAAgB;YAC5C,CAAC,CAAC,0EAA0E;YAC5E,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,YAAY,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,WAAW;gBACnF,CAAC,CAAC,uDAAuD;gBACzD,CAAC,CAAC,yDAAyD,CAAC;IAElE,OAAO,aAAa,CAClB,gBAAgB,EAChB,kBAAkB,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,yBAAyB,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAC/F,MAAM,EACN,UAAU,EACV,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EACpC,OAAO,CACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAoB;IACrD,MAAM,KAAK,GAAG,OAAO,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAEnF,OAAO,IAAI,CAAC,SAAS,CACnB;QACE,OAAO,EAAE,MAAM,CAAC,WAAW;QAC3B,UAAU,EAAE,MAAM,CAAC,SAAS;QAC5B,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,UAAU,EAAE;YACV,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI;YAC/B,MAAM,EAAE,MAAM,CAAC,iBAAiB,IAAI,IAAI;YACxC,WAAW,EAAE,KAAK,EAAE,YAAY,IAAI,IAAI;SACzC;QACD,UAAU,EAAE;YACV,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG;YAC9B,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI;YAClC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE;SAC/B;KACF,EACD,IAAI,EACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { ParametersGateway, SalesPoint, ServerStatus } from './parameters';
|
|
2
|
+
export type PointOfSaleCheck = {
|
|
3
|
+
readonly kind: 'habilitado';
|
|
4
|
+
readonly point: SalesPoint;
|
|
5
|
+
} | {
|
|
6
|
+
readonly kind: 'bloqueado' | 'de-baja';
|
|
7
|
+
readonly point: SalesPoint;
|
|
8
|
+
} | {
|
|
9
|
+
readonly kind: 'no-encontrado';
|
|
10
|
+
}
|
|
11
|
+
/** En testing ARCA no informa puntos de venta (error 602): no se puede verificar. */
|
|
12
|
+
| {
|
|
13
|
+
readonly kind: 'sin-datos';
|
|
14
|
+
} | {
|
|
15
|
+
readonly kind: 'sin-configurar';
|
|
16
|
+
};
|
|
17
|
+
export interface StatusReport {
|
|
18
|
+
readonly environment: 'produccion' | 'testing';
|
|
19
|
+
readonly latencyMs: number;
|
|
20
|
+
readonly pointOfSale: PointOfSaleCheck;
|
|
21
|
+
readonly pointOfSaleNumber?: number;
|
|
22
|
+
readonly servers: ServerStatus;
|
|
23
|
+
/** Se puede emitir: servidores OK y punto de venta habilitado (o no verificable en testing). */
|
|
24
|
+
readonly ready: boolean;
|
|
25
|
+
}
|
|
26
|
+
export declare function buildStatusReport(options: {
|
|
27
|
+
readonly environment: 'produccion' | 'testing';
|
|
28
|
+
readonly gateway: ParametersGateway;
|
|
29
|
+
readonly now?: () => number;
|
|
30
|
+
readonly pointOfSale?: number;
|
|
31
|
+
}): Promise<StatusReport>;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
const SERVER_OK = 'OK';
|
|
2
|
+
function checkPointOfSale(points, number) {
|
|
3
|
+
if (!number) {
|
|
4
|
+
return { kind: 'sin-configurar' };
|
|
5
|
+
}
|
|
6
|
+
if (points.length === 0) {
|
|
7
|
+
return { kind: 'sin-datos' };
|
|
8
|
+
}
|
|
9
|
+
const point = points.find((candidate) => candidate.number === number);
|
|
10
|
+
if (!point) {
|
|
11
|
+
return { kind: 'no-encontrado' };
|
|
12
|
+
}
|
|
13
|
+
if (point.blocked) {
|
|
14
|
+
return { kind: 'bloqueado', point };
|
|
15
|
+
}
|
|
16
|
+
return point.closedOn ? { kind: 'de-baja', point } : { kind: 'habilitado', point };
|
|
17
|
+
}
|
|
18
|
+
export async function buildStatusReport(options) {
|
|
19
|
+
const now = options.now ?? Date.now;
|
|
20
|
+
const start = now();
|
|
21
|
+
const servers = await options.gateway.getServerStatus();
|
|
22
|
+
const latencyMs = now() - start;
|
|
23
|
+
const points = await options.gateway.getSalesPoints();
|
|
24
|
+
const pointOfSale = checkPointOfSale(points, options.pointOfSale);
|
|
25
|
+
const serversOk = [servers.app, servers.db, servers.auth].every((value) => value === SERVER_OK);
|
|
26
|
+
return {
|
|
27
|
+
environment: options.environment,
|
|
28
|
+
latencyMs,
|
|
29
|
+
pointOfSale,
|
|
30
|
+
pointOfSaleNumber: options.pointOfSale,
|
|
31
|
+
ready: serversOk && (pointOfSale.kind === 'habilitado' || pointOfSale.kind === 'sin-datos'),
|
|
32
|
+
servers,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/modules/parameters/status.ts"],"names":[],"mappings":"AAoBA,MAAM,SAAS,GAAG,IAAI,CAAC;AAEvB,SAAS,gBAAgB,CAAC,MAA6B,EAAE,MAA0B;IACjF,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;IACpC,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IAC/B,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;IAEtE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;IACnC,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IACtC,CAAC;IAED,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;AACrF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAKvC;IACC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IACpC,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC;IACpB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;IACxD,MAAM,SAAS,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC;IAChC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;IACtD,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAClE,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IAEhG,OAAO;QACL,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,SAAS;QACT,WAAW;QACX,iBAAiB,EAAE,OAAO,CAAC,WAAW;QACtC,KAAK,EAAE,SAAS,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,YAAY,IAAI,WAAW,CAAC,IAAI,KAAK,WAAW,CAAC;QAC3F,OAAO;KACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { BillingExecutionResult } from '../billing/billing.types.internal';
|
|
2
|
+
import type { InvoicePdfData, InvoicePdfIssuer, PdfVoucherExtras } from './pdf.types';
|
|
3
|
+
export declare const DEFAULT_ITEM_DESCRIPTION = "Segun detalle";
|
|
4
|
+
export declare function mapBillingResultToPdfData(result: BillingExecutionResult, issuer: InvoicePdfIssuer, extras?: PdfVoucherExtras): InvoicePdfData;
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { resolveIvaRateLabel } from '../billing/billing.amounts.js';
|
|
2
|
+
import { formatIvaConditionLabel } from '../billing/billing.labels.js';
|
|
3
|
+
import { PdfError } from './pdf.errors.js';
|
|
4
|
+
export const DEFAULT_ITEM_DESCRIPTION = 'Segun detalle';
|
|
5
|
+
// Mismos nombres que usa la plantilla del SDK para calcular el tipo de documento del QR.
|
|
6
|
+
const DOCUMENT_TYPE_NAMES = {
|
|
7
|
+
80: 'CUIT',
|
|
8
|
+
86: 'CUIL',
|
|
9
|
+
96: 'DNI',
|
|
10
|
+
};
|
|
11
|
+
const CURRENCY_CODES = { PES: 'PES', DOL: 'DOL' };
|
|
12
|
+
const EMPTY_TEXT = '- -';
|
|
13
|
+
function round(value) {
|
|
14
|
+
return Math.round(value * 100) / 100;
|
|
15
|
+
}
|
|
16
|
+
function capitalizeWords(value) {
|
|
17
|
+
return value.replace(/(^|\s)(\p{L})/gu, (_, space, letter) => `${space}${letter.toUpperCase()}`);
|
|
18
|
+
}
|
|
19
|
+
/** "10,5%" -> 10.5 */
|
|
20
|
+
function resolveIvaRateNumber(aliquotId) {
|
|
21
|
+
const label = resolveIvaRateLabel(aliquotId);
|
|
22
|
+
return label ? Number(label.replace('%', '').replace(',', '.')) : undefined;
|
|
23
|
+
}
|
|
24
|
+
// La plantilla busca cada alicuota por este texto exacto ("10.5%", con punto).
|
|
25
|
+
function buildIvaEntries(iva) {
|
|
26
|
+
return (iva ?? []).map((entry) => ({
|
|
27
|
+
baseImponible: entry.BaseImp,
|
|
28
|
+
descripcion: `${resolveIvaRateNumber(entry.Id) ?? entry.Id}%`,
|
|
29
|
+
id: entry.Id,
|
|
30
|
+
importe: entry.Importe,
|
|
31
|
+
}));
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* wsfe no guarda items: se arma un renglon por alicuota con la descripcion del usuario, o uno solo con
|
|
35
|
+
* el total cuando no se discrimina IVA (letra C). Exento y no gravado van en renglones aparte.
|
|
36
|
+
*/
|
|
37
|
+
function buildItems(result, description) {
|
|
38
|
+
const { payload, voucherKind } = result;
|
|
39
|
+
const line = (subtotal, alicuotaIva, suffix = '') => ({
|
|
40
|
+
alicuotaIva,
|
|
41
|
+
cantidad: 1,
|
|
42
|
+
descripcion: `${description}${suffix}`,
|
|
43
|
+
precioUnitario: subtotal,
|
|
44
|
+
subtotal,
|
|
45
|
+
unidadMedida: 'unidad',
|
|
46
|
+
});
|
|
47
|
+
if (voucherKind.letter === 'c') {
|
|
48
|
+
return [line(payload.ImpTotal)];
|
|
49
|
+
}
|
|
50
|
+
const items = (payload.Iva ?? []).map((entry) => line(entry.BaseImp, resolveIvaRateNumber(entry.Id)));
|
|
51
|
+
if (payload.ImpOpEx > 0) {
|
|
52
|
+
items.push(line(payload.ImpOpEx, undefined, ' (exento)'));
|
|
53
|
+
}
|
|
54
|
+
if (payload.ImpTotConc > 0) {
|
|
55
|
+
items.push(line(payload.ImpTotConc, undefined, ' (no gravado)'));
|
|
56
|
+
}
|
|
57
|
+
return items.length > 0 ? items : [line(payload.ImpTotal)];
|
|
58
|
+
}
|
|
59
|
+
/** ARCA asigna el numero al emitir: sale de la respuesta, no del payload. */
|
|
60
|
+
function resolveVoucherNumber(result) {
|
|
61
|
+
const number = result.response.raw?.response?.FeDetResp?.FECAEDetResponse?.[0]?.CbteDesde ?? result.payload.CbteDesde;
|
|
62
|
+
if (!number) {
|
|
63
|
+
throw new PdfError('PDF_GENERATION_ERROR', 'La respuesta de ARCA no trae el numero del comprobante.');
|
|
64
|
+
}
|
|
65
|
+
return number;
|
|
66
|
+
}
|
|
67
|
+
export function mapBillingResultToPdfData(result, issuer, extras = {}) {
|
|
68
|
+
const { payload, response, voucherKind } = result;
|
|
69
|
+
if (!response.cae || !response.caeVencimiento) {
|
|
70
|
+
throw new PdfError('PDF_GENERATION_ERROR', 'El comprobante no tiene CAE: no se puede generar el PDF.');
|
|
71
|
+
}
|
|
72
|
+
const number = resolveVoucherNumber(result);
|
|
73
|
+
const isConsumer = payload.DocTipo === 99;
|
|
74
|
+
const isUnidentified = isConsumer && !payload.DocNro;
|
|
75
|
+
const iva = voucherKind.letter === 'c' ? [] : buildIvaEntries(payload.Iva);
|
|
76
|
+
return {
|
|
77
|
+
cae: response.cae,
|
|
78
|
+
caeFechaVencimiento: response.caeVencimiento,
|
|
79
|
+
cbteDesde: number,
|
|
80
|
+
cbteFecha: payload.CbteFch,
|
|
81
|
+
cbteHasta: number,
|
|
82
|
+
cbteLetra: voucherKind.letter.toUpperCase(),
|
|
83
|
+
cbteTipo: voucherKind.arcaType,
|
|
84
|
+
cbtesAsociados: payload.CbtesAsoc?.map((voucher) => ({
|
|
85
|
+
cuit: voucher.Cuit,
|
|
86
|
+
fecha: voucher.CbteFch,
|
|
87
|
+
numero: voucher.Nro,
|
|
88
|
+
puntoVenta: voucher.PtoVta,
|
|
89
|
+
tipo: voucher.Tipo,
|
|
90
|
+
})),
|
|
91
|
+
concepto: payload.Concepto,
|
|
92
|
+
cotizacion: payload.MonCotiz,
|
|
93
|
+
emisor: issuer,
|
|
94
|
+
fechaServicioDesde: payload.FchServDesde,
|
|
95
|
+
fechaServicioHasta: payload.FchServHasta,
|
|
96
|
+
fechaVtoPago: payload.FchVtoPago,
|
|
97
|
+
importeExento: payload.ImpOpEx || undefined,
|
|
98
|
+
importeIva: voucherKind.letter === 'c' ? 0 : payload.ImpIVA,
|
|
99
|
+
importeNetoGravado: voucherKind.letter === 'c' ? payload.ImpTotal : payload.ImpNeto,
|
|
100
|
+
importeNetoNoGravado: payload.ImpTotConc || undefined,
|
|
101
|
+
importeTotal: round(payload.ImpTotal),
|
|
102
|
+
items: buildItems(result, extras.descripcion?.trim() || DEFAULT_ITEM_DESCRIPTION),
|
|
103
|
+
iva: iva.length > 0 ? iva : undefined,
|
|
104
|
+
// La plantilla del SDK solo conoce pesos y dolares; el resto se muestra con su codigo ARCA.
|
|
105
|
+
moneda: CURRENCY_CODES[payload.MonId] ?? payload.MonId,
|
|
106
|
+
puntoVenta: payload.PtoVta,
|
|
107
|
+
receptor: {
|
|
108
|
+
condicionIva: capitalizeWords(formatIvaConditionLabel(payload.CondicionIVAReceptorId)),
|
|
109
|
+
// Consumidor final sin documento: el QR igual sale con tipo 99 y numero 0 (el SDK usa `Number(nro) || 0`).
|
|
110
|
+
documentoNro: isUnidentified ? EMPTY_TEXT : String(payload.DocNro),
|
|
111
|
+
documentoTipo: isUnidentified ? 'Documento' : (DOCUMENT_TYPE_NAMES[payload.DocTipo] ?? String(payload.DocTipo)),
|
|
112
|
+
domicilio: extras.receptorDomicilio?.trim() || undefined,
|
|
113
|
+
razonSocial: extras.receptorNombre?.trim() || (isConsumer ? 'Consumidor Final' : EMPTY_TEXT),
|
|
114
|
+
},
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=pdf-data.mapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdf-data.mapper.js","sourceRoot":"","sources":["../../../src/modules/pdf/pdf-data.mapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { BillingExecutionResult } from '../billing/billing.types.internal';
|
|
2
|
+
import type { ArcliPdfMode } from '../config/config.schemas';
|
|
3
|
+
export type PdfDecision = 'generar' | 'omitir' | 'preguntar';
|
|
4
|
+
export interface PdfDecisionInput {
|
|
5
|
+
/** `true` con --exportar-pdf, `false` con --sin-pdf. */
|
|
6
|
+
readonly flag?: boolean;
|
|
7
|
+
/** Hay alguien para responder: terminal interactiva y sin --json. */
|
|
8
|
+
readonly interactive: boolean;
|
|
9
|
+
readonly mode?: ArcliPdfMode;
|
|
10
|
+
}
|
|
11
|
+
/** El flag gana; sin flag decide la config, y "preguntar" sin nadie que responda no genera. */
|
|
12
|
+
export declare function resolvePdfDecision(input: PdfDecisionInput): PdfDecision;
|
|
13
|
+
/** Sin CAE no hay PDF: ni en vista previa ni en rechazados. Un observado tiene CAE y si lleva. */
|
|
14
|
+
export declare function canHavePdf(result: BillingExecutionResult): boolean;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** El flag gana; sin flag decide la config, y "preguntar" sin nadie que responda no genera. */
|
|
2
|
+
export function resolvePdfDecision(input) {
|
|
3
|
+
if (input.flag !== undefined) {
|
|
4
|
+
return input.flag ? 'generar' : 'omitir';
|
|
5
|
+
}
|
|
6
|
+
switch (input.mode ?? 'preguntar') {
|
|
7
|
+
case 'siempre':
|
|
8
|
+
return 'generar';
|
|
9
|
+
case 'nunca':
|
|
10
|
+
return 'omitir';
|
|
11
|
+
case 'preguntar':
|
|
12
|
+
return input.interactive ? 'preguntar' : 'omitir';
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
/** Sin CAE no hay PDF: ni en vista previa ni en rechazados. Un observado tiene CAE y si lleva. */
|
|
16
|
+
export function canHavePdf(result) {
|
|
17
|
+
return !result.dryRun && result.response.status !== 'rechazado' && Boolean(result.response.cae);
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=pdf-decision.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdf-decision.js","sourceRoot":"","sources":["../../../src/modules/pdf/pdf-decision.ts"],"names":[],"mappings":"AAaA,+FAA+F;AAC/F,MAAM,UAAU,kBAAkB,CAAC,KAAuB;IACxD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC3C,CAAC;IAED,QAAQ,KAAK,CAAC,IAAI,IAAI,WAAW,EAAE,CAAC;QAClC,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,OAAO;YACV,OAAO,QAAQ,CAAC;QAClB,KAAK,WAAW;YACd,OAAO,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;IACtD,CAAC;AACH,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,UAAU,CAAC,MAA8B;IACvD,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAClG,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { VoucherKindDefinition } from '../billing/billing.types';
|
|
2
|
+
/** `factura-c_0003-00000125.pdf`: se lee facil, se ordena bien y no se repite. */
|
|
3
|
+
export declare function buildPdfFileName(voucherKind: VoucherKindDefinition, pointOfSale: number, number: number): string;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** `factura-c_0003-00000125.pdf`: se lee facil, se ordena bien y no se repite. */
|
|
2
|
+
export function buildPdfFileName(voucherKind, pointOfSale, number) {
|
|
3
|
+
const pv = String(pointOfSale).padStart(4, '0');
|
|
4
|
+
const voucherNumber = String(number).padStart(8, '0');
|
|
5
|
+
return `${voucherKind.family}-${voucherKind.letter}_${pv}-${voucherNumber}.pdf`;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=pdf-file-name.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdf-file-name.js","sourceRoot":"","sources":["../../../src/modules/pdf/pdf-file-name.ts"],"names":[],"mappings":"AAEA,kFAAkF;AAClF,MAAM,UAAU,gBAAgB,CAAC,WAAkC,EAAE,WAAmB,EAAE,MAAc;IACtG,MAAM,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAChD,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAEtD,OAAO,GAAG,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,MAAM,IAAI,EAAE,IAAI,aAAa,MAAM,CAAC;AAClF,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { VoucherLetter } from '../billing/billing.types';
|
|
2
|
+
import type { ArcliConfig } from '../config/config.schemas';
|
|
3
|
+
import type { InvoicePdfIssuer } from './pdf.types';
|
|
4
|
+
/** "responsable-inscripto" -> "Responsable Inscripto". */
|
|
5
|
+
export declare function formatIvaConditionName(value: string): string;
|
|
6
|
+
/** Claves obligatorias del emisor que faltan en la config, como se escriben en `arcli config establecer`. */
|
|
7
|
+
export declare function listMissingIssuerKeys(config: Pick<ArcliConfig, 'cuit' | 'emisor'>): string[];
|
|
8
|
+
export declare function resolvePdfIssuer(config: Pick<ArcliConfig, 'cuit' | 'emisor'>, letter: VoucherLetter): InvoicePdfIssuer;
|