sunat-engine-nest 1.0.5 → 1.0.7
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/README.md +64 -6
- package/dist/index.d.ts +3 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/ose/ose.client.d.ts +24 -0
- package/dist/ose/ose.client.js +101 -0
- package/dist/ose/ose.client.js.map +1 -0
- package/dist/sunat-engine.module.d.ts +8 -0
- package/dist/sunat-engine.module.js +3 -0
- package/dist/sunat-engine.module.js.map +1 -1
- package/dist/sunat-engine.service.d.ts +5 -1
- package/dist/sunat-engine.service.js +33 -53
- package/dist/sunat-engine.service.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -196,18 +196,23 @@ export class InvoicesService {
|
|
|
196
196
|
|
|
197
197
|
## Certificado digital
|
|
198
198
|
|
|
199
|
-
El motor acepta el certificado en
|
|
199
|
+
El motor acepta el certificado en tres formatos:
|
|
200
200
|
|
|
201
201
|
```typescript
|
|
202
|
-
// Formato 1: archivo .p12 en
|
|
202
|
+
// Formato 1: ruta al archivo .p12 o .pem en disco
|
|
203
203
|
const credentials: CompanyCredentials = {
|
|
204
|
-
certPem: '
|
|
204
|
+
certPem: '/ruta/al/certificado.p12',
|
|
205
205
|
};
|
|
206
206
|
|
|
207
|
-
// Formato 2:
|
|
207
|
+
// Formato 2: ruta a cert PEM + ruta a clave privada PEM por separado
|
|
208
208
|
const credentials: CompanyCredentials = {
|
|
209
|
-
certPem: '
|
|
210
|
-
certKey: '
|
|
209
|
+
certPem: '/ruta/al/cert.pem',
|
|
210
|
+
certKey: '/ruta/al/key.pem',
|
|
211
|
+
};
|
|
212
|
+
|
|
213
|
+
// Formato 3: contenido directo en base64 (.p12) o texto PEM
|
|
214
|
+
const credentials: CompanyCredentials = {
|
|
215
|
+
certPem: 'MIIKJAIBAzCCCd4GCSqGSI...', // .p12 en base64
|
|
211
216
|
};
|
|
212
217
|
```
|
|
213
218
|
|
|
@@ -238,6 +243,59 @@ interface EngineResponse {
|
|
|
238
243
|
| `beta` | e-beta.sunat.gob.pe | gre-test.nubefact.com |
|
|
239
244
|
| `produccion` | e-factura.sunat.gob.pe | api-cpe.sunat.gob.pe |
|
|
240
245
|
|
|
246
|
+
## Proveedor: SUNAT directo vs OSE
|
|
247
|
+
|
|
248
|
+
Puedes elegir enviar tus comprobantes **directamente a SUNAT** o a través de un **OSE (Operador de Servicios Electrónicos)** autorizado como Nubefact, EFACT, DigiFlow, Bizlinks, entre otros.
|
|
249
|
+
|
|
250
|
+
```typescript
|
|
251
|
+
// Envío directo a SUNAT (por defecto)
|
|
252
|
+
SunatEngineModule.forRoot({
|
|
253
|
+
provider: 'sunat',
|
|
254
|
+
sunat: { ruc: '...', solUser: '...', solPass: '...', certPem: '...' },
|
|
255
|
+
})
|
|
256
|
+
|
|
257
|
+
// Envío a través de un OSE
|
|
258
|
+
SunatEngineModule.forRoot({
|
|
259
|
+
provider: 'ose',
|
|
260
|
+
sunat: { ruc: '...', certPem: '...' }, // solo se usa para firmar el XML
|
|
261
|
+
ose: {
|
|
262
|
+
url: 'https://api.tuose.com/v1/documents',
|
|
263
|
+
token: 'TU_TOKEN_OSE', // Bearer token
|
|
264
|
+
// o en lugar de token:
|
|
265
|
+
// username: 'usuario',
|
|
266
|
+
// password: 'clave',
|
|
267
|
+
},
|
|
268
|
+
})
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
Con variables de entorno:
|
|
272
|
+
|
|
273
|
+
```typescript
|
|
274
|
+
SunatEngineModule.forRootAsync({
|
|
275
|
+
useFactory: (config: ConfigService) => ({
|
|
276
|
+
provider: config.get('PROVIDER'), // 'sunat' | 'ose'
|
|
277
|
+
sunat: {
|
|
278
|
+
ruc: config.get('SUNAT_RUC'),
|
|
279
|
+
solUser: config.get('SUNAT_SOL_USER'),
|
|
280
|
+
solPass: config.get('SUNAT_SOL_PASS'),
|
|
281
|
+
certPem: config.get('SUNAT_CERT_PEM'),
|
|
282
|
+
},
|
|
283
|
+
ose: {
|
|
284
|
+
url: config.get('OSE_URL'),
|
|
285
|
+
token: config.get('OSE_TOKEN'),
|
|
286
|
+
},
|
|
287
|
+
}),
|
|
288
|
+
})
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
```env
|
|
292
|
+
PROVIDER=ose
|
|
293
|
+
OSE_URL=https://api.tuose.com/v1/documents
|
|
294
|
+
OSE_TOKEN=tu_token_aqui
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
> El `OseClient` es genérico y compatible con cualquier OSE que acepte `{ fileName, contentFile }` (ZIP en base64) vía POST con autenticación Bearer o Basic.
|
|
298
|
+
|
|
241
299
|
## Soporte y actualizaciones
|
|
242
300
|
|
|
243
301
|
SUNAT actualiza continuamente sus esquemas, validaciones y normativas de facturación electrónica. Este paquete recibe mantenimiento activo para mantenerse alineado con cada cambio oficial, garantizando que tu integración siga funcionando sin interrupciones.
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
export { SunatEngineModule, SUNAT_ENGINE_OPTIONS } from './sunat-engine.module';
|
|
2
|
-
export type { SunatEngineOptions, SunatEngineAsyncOptions, SunatEngineGreOptions } from './sunat-engine.module';
|
|
2
|
+
export type { SunatEngineOptions, SunatEngineAsyncOptions, SunatEngineGreOptions, SunatEngineCredentialsOptions, SunatEngineOseOptions } from './sunat-engine.module';
|
|
3
3
|
export { SunatEngineService } from './sunat-engine.service';
|
|
4
4
|
export { XmlSignerService } from './signer/xml-signer.service';
|
|
5
5
|
export { SunatSoapClient } from './soap/sunat-soap.client';
|
|
6
6
|
export type { SoapSendResult, SunatEndpointType } from './soap/sunat-soap.client';
|
|
7
7
|
export { SunatGreClient } from './gre/sunat-gre.client';
|
|
8
|
+
export { OseClient } from './ose/ose.client';
|
|
9
|
+
export type { OseClientOptions } from './ose/ose.client';
|
|
8
10
|
export { CdrParserService } from './cdr/cdr-parser.service';
|
|
9
11
|
export { DocumentPdfService } from './pdf/document-pdf.service';
|
|
10
12
|
export type { PdfFormat } from './pdf/document-pdf.service';
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.buildVoidedXml = exports.buildSummaryXml = exports.buildDespatchXml = exports.buildNoteXml = exports.buildInvoiceXml = exports.DocumentPdfService = exports.CdrParserService = exports.SunatGreClient = exports.SunatSoapClient = exports.XmlSignerService = exports.SunatEngineService = exports.SUNAT_ENGINE_OPTIONS = exports.SunatEngineModule = void 0;
|
|
3
|
+
exports.buildVoidedXml = exports.buildSummaryXml = exports.buildDespatchXml = exports.buildNoteXml = exports.buildInvoiceXml = exports.DocumentPdfService = exports.CdrParserService = exports.OseClient = exports.SunatGreClient = exports.SunatSoapClient = exports.XmlSignerService = exports.SunatEngineService = exports.SUNAT_ENGINE_OPTIONS = exports.SunatEngineModule = void 0;
|
|
4
4
|
var sunat_engine_module_1 = require("./sunat-engine.module");
|
|
5
5
|
Object.defineProperty(exports, "SunatEngineModule", { enumerable: true, get: function () { return sunat_engine_module_1.SunatEngineModule; } });
|
|
6
6
|
Object.defineProperty(exports, "SUNAT_ENGINE_OPTIONS", { enumerable: true, get: function () { return sunat_engine_module_1.SUNAT_ENGINE_OPTIONS; } });
|
|
@@ -12,6 +12,8 @@ var sunat_soap_client_1 = require("./soap/sunat-soap.client");
|
|
|
12
12
|
Object.defineProperty(exports, "SunatSoapClient", { enumerable: true, get: function () { return sunat_soap_client_1.SunatSoapClient; } });
|
|
13
13
|
var sunat_gre_client_1 = require("./gre/sunat-gre.client");
|
|
14
14
|
Object.defineProperty(exports, "SunatGreClient", { enumerable: true, get: function () { return sunat_gre_client_1.SunatGreClient; } });
|
|
15
|
+
var ose_client_1 = require("./ose/ose.client");
|
|
16
|
+
Object.defineProperty(exports, "OseClient", { enumerable: true, get: function () { return ose_client_1.OseClient; } });
|
|
15
17
|
var cdr_parser_service_1 = require("./cdr/cdr-parser.service");
|
|
16
18
|
Object.defineProperty(exports, "CdrParserService", { enumerable: true, get: function () { return cdr_parser_service_1.CdrParserService; } });
|
|
17
19
|
var document_pdf_service_1 = require("./pdf/document-pdf.service");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,6DAAgF;AAAvE,wHAAA,iBAAiB,OAAA;AAAE,2HAAA,oBAAoB,OAAA;AAIhD,+DAA4D;AAAnD,0HAAA,kBAAkB,OAAA;AAG3B,kEAA+D;AAAtD,sHAAA,gBAAgB,OAAA;AACzB,8DAA2D;AAAlD,oHAAA,eAAe,OAAA;AAExB,2DAAwD;AAA/C,kHAAA,cAAc,OAAA;AACvB,+DAA4D;AAAnD,sHAAA,gBAAgB,OAAA;AACzB,mEAAgE;AAAvD,0HAAA,kBAAkB,OAAA;AAI3B,yDAAwD;AAA/C,kHAAA,eAAe,OAAA;AACxB,mDAAkD;AAAzC,4GAAA,YAAY,OAAA;AACrB,2DAA0D;AAAjD,oHAAA,gBAAgB,OAAA;AACzB,yDAAwD;AAA/C,kHAAA,eAAe,OAAA;AACxB,uDAAsD;AAA7C,gHAAA,cAAc,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,6DAAgF;AAAvE,wHAAA,iBAAiB,OAAA;AAAE,2HAAA,oBAAoB,OAAA;AAIhD,+DAA4D;AAAnD,0HAAA,kBAAkB,OAAA;AAG3B,kEAA+D;AAAtD,sHAAA,gBAAgB,OAAA;AACzB,8DAA2D;AAAlD,oHAAA,eAAe,OAAA;AAExB,2DAAwD;AAA/C,kHAAA,cAAc,OAAA;AACvB,+CAA6C;AAApC,uGAAA,SAAS,OAAA;AAElB,+DAA4D;AAAnD,sHAAA,gBAAgB,OAAA;AACzB,mEAAgE;AAAvD,0HAAA,kBAAkB,OAAA;AAI3B,yDAAwD;AAA/C,kHAAA,eAAe,OAAA;AACxB,mDAAkD;AAAzC,4GAAA,YAAY,OAAA;AACrB,2DAA0D;AAAjD,oHAAA,gBAAgB,OAAA;AACzB,yDAAwD;AAA/C,kHAAA,eAAe,OAAA;AACxB,uDAAsD;AAA7C,gHAAA,cAAc,OAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { SoapSendResult } from '../soap/sunat-soap.client';
|
|
2
|
+
export interface OseClientOptions {
|
|
3
|
+
url: string;
|
|
4
|
+
token?: string;
|
|
5
|
+
username?: string;
|
|
6
|
+
password?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare class OseClient {
|
|
9
|
+
private readonly logger;
|
|
10
|
+
sendBill(params: {
|
|
11
|
+
fileName: string;
|
|
12
|
+
xmlSigned: string;
|
|
13
|
+
ose: OseClientOptions;
|
|
14
|
+
}): Promise<SoapSendResult>;
|
|
15
|
+
sendSummary(params: {
|
|
16
|
+
fileName: string;
|
|
17
|
+
xmlSigned: string;
|
|
18
|
+
ose: OseClientOptions;
|
|
19
|
+
}): Promise<SoapSendResult>;
|
|
20
|
+
private parseResponse;
|
|
21
|
+
private buildAuth;
|
|
22
|
+
private handleError;
|
|
23
|
+
private createZip;
|
|
24
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var OseClient_1;
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.OseClient = void 0;
|
|
11
|
+
const common_1 = require("@nestjs/common");
|
|
12
|
+
const axios_1 = require("axios");
|
|
13
|
+
const JSZip = require("jszip");
|
|
14
|
+
let OseClient = OseClient_1 = class OseClient {
|
|
15
|
+
constructor() {
|
|
16
|
+
this.logger = new common_1.Logger(OseClient_1.name);
|
|
17
|
+
}
|
|
18
|
+
async sendBill(params) {
|
|
19
|
+
const contentFile = await this.createZip(params.fileName, params.xmlSigned);
|
|
20
|
+
try {
|
|
21
|
+
const response = await axios_1.default.post(params.ose.url, { fileName: params.fileName.replace(/\.zip$/i, ''), contentFile }, {
|
|
22
|
+
headers: {
|
|
23
|
+
'Content-Type': 'application/json',
|
|
24
|
+
'Authorization': this.buildAuth(params.ose),
|
|
25
|
+
},
|
|
26
|
+
timeout: 60_000,
|
|
27
|
+
});
|
|
28
|
+
return this.parseResponse(response.data);
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
return this.handleError(err);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
async sendSummary(params) {
|
|
35
|
+
const contentFile = await this.createZip(params.fileName, params.xmlSigned);
|
|
36
|
+
try {
|
|
37
|
+
const response = await axios_1.default.post(params.ose.url, { fileName: params.fileName.replace(/\.zip$/i, ''), contentFile }, {
|
|
38
|
+
headers: {
|
|
39
|
+
'Content-Type': 'application/json',
|
|
40
|
+
'Authorization': this.buildAuth(params.ose),
|
|
41
|
+
},
|
|
42
|
+
timeout: 60_000,
|
|
43
|
+
});
|
|
44
|
+
return this.parseResponse(response.data);
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
return this.handleError(err);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
parseResponse(data) {
|
|
51
|
+
if (!data) {
|
|
52
|
+
return { success: false, error: { code: 'EMPTY_RESPONSE', message: 'El OSE no devolvió respuesta' } };
|
|
53
|
+
}
|
|
54
|
+
const cdrZip = data.cdrZip || data.cdr || data.applicationResponse || data.contentFile || undefined;
|
|
55
|
+
const ticket = data.ticket ?? data.numTicket;
|
|
56
|
+
const codeRaw = data.cdrResponse?.code ?? data.code ?? data.codigoRespuesta;
|
|
57
|
+
const code = codeRaw !== undefined ? String(codeRaw) : undefined;
|
|
58
|
+
const description = data.cdrResponse?.description ?? data.description ?? data.descripcion;
|
|
59
|
+
const success = data.success !== undefined ? Boolean(data.success) : code === '0';
|
|
60
|
+
if (!success) {
|
|
61
|
+
return {
|
|
62
|
+
success: false,
|
|
63
|
+
error: {
|
|
64
|
+
code: code ?? 'OSE_ERROR',
|
|
65
|
+
message: description ?? 'Error devuelto por el OSE',
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
return { success: true, cdrZipBase64: cdrZip, ticket };
|
|
70
|
+
}
|
|
71
|
+
buildAuth(ose) {
|
|
72
|
+
if (ose.token)
|
|
73
|
+
return `Bearer ${ose.token}`;
|
|
74
|
+
if (ose.username && ose.password) {
|
|
75
|
+
return `Basic ${Buffer.from(`${ose.username}:${ose.password}`).toString('base64')}`;
|
|
76
|
+
}
|
|
77
|
+
return '';
|
|
78
|
+
}
|
|
79
|
+
handleError(err) {
|
|
80
|
+
const data = err.response?.data;
|
|
81
|
+
if (data) {
|
|
82
|
+
const msg = data.message ?? data.description ?? data.descripcion ?? JSON.stringify(data);
|
|
83
|
+
const code = String(data.code ?? data.codigoRespuesta ?? err.response?.status ?? 'OSE_ERROR');
|
|
84
|
+
return { success: false, error: { code, message: msg } };
|
|
85
|
+
}
|
|
86
|
+
this.logger.error(`Error OSE: ${err.message}`);
|
|
87
|
+
return { success: false, error: { code: 'NETWORK_ERROR', message: err.message } };
|
|
88
|
+
}
|
|
89
|
+
async createZip(fileName, xmlContent) {
|
|
90
|
+
const zip = new JSZip();
|
|
91
|
+
const xmlFileName = fileName.replace(/\.zip$/i, '.xml');
|
|
92
|
+
zip.file(xmlFileName, xmlContent, { compression: 'DEFLATE' });
|
|
93
|
+
const zipBuffer = await zip.generateAsync({ type: 'nodebuffer' });
|
|
94
|
+
return zipBuffer.toString('base64');
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
exports.OseClient = OseClient;
|
|
98
|
+
exports.OseClient = OseClient = OseClient_1 = __decorate([
|
|
99
|
+
(0, common_1.Injectable)()
|
|
100
|
+
], OseClient);
|
|
101
|
+
//# sourceMappingURL=ose.client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ose.client.js","sourceRoot":"","sources":["../../src/ose/ose.client.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,8 +17,16 @@ export interface SunatEngineCredentialsOptions {
|
|
|
17
17
|
certKey?: string;
|
|
18
18
|
endpointMode?: 'beta' | 'produccion';
|
|
19
19
|
}
|
|
20
|
+
export interface SunatEngineOseOptions {
|
|
21
|
+
url: string;
|
|
22
|
+
token?: string;
|
|
23
|
+
username?: string;
|
|
24
|
+
password?: string;
|
|
25
|
+
}
|
|
20
26
|
export interface SunatEngineOptions {
|
|
27
|
+
provider?: 'sunat' | 'ose';
|
|
21
28
|
sunat?: SunatEngineCredentialsOptions;
|
|
29
|
+
ose?: SunatEngineOseOptions;
|
|
22
30
|
gre?: SunatEngineGreOptions;
|
|
23
31
|
}
|
|
24
32
|
export interface SunatEngineAsyncOptions extends Pick<ModuleMetadata, 'imports'> {
|
|
@@ -15,12 +15,14 @@ const sunat_soap_client_1 = require("./soap/sunat-soap.client");
|
|
|
15
15
|
const sunat_gre_client_1 = require("./gre/sunat-gre.client");
|
|
16
16
|
const cdr_parser_service_1 = require("./cdr/cdr-parser.service");
|
|
17
17
|
const document_pdf_service_1 = require("./pdf/document-pdf.service");
|
|
18
|
+
const ose_client_1 = require("./ose/ose.client");
|
|
18
19
|
exports.SUNAT_ENGINE_OPTIONS = 'SUNAT_ENGINE_OPTIONS';
|
|
19
20
|
const ENGINE_PROVIDERS = [
|
|
20
21
|
sunat_engine_service_1.SunatEngineService,
|
|
21
22
|
xml_signer_service_1.XmlSignerService,
|
|
22
23
|
sunat_soap_client_1.SunatSoapClient,
|
|
23
24
|
sunat_gre_client_1.SunatGreClient,
|
|
25
|
+
ose_client_1.OseClient,
|
|
24
26
|
cdr_parser_service_1.CdrParserService,
|
|
25
27
|
document_pdf_service_1.DocumentPdfService,
|
|
26
28
|
];
|
|
@@ -29,6 +31,7 @@ const ENGINE_EXPORTS = [
|
|
|
29
31
|
xml_signer_service_1.XmlSignerService,
|
|
30
32
|
sunat_soap_client_1.SunatSoapClient,
|
|
31
33
|
sunat_gre_client_1.SunatGreClient,
|
|
34
|
+
ose_client_1.OseClient,
|
|
32
35
|
cdr_parser_service_1.CdrParserService,
|
|
33
36
|
document_pdf_service_1.DocumentPdfService,
|
|
34
37
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sunat-engine.module.js","sourceRoot":"","sources":["../src/sunat-engine.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAA+E;AAC/E,iEAA4D;AAC5D,oEAA+D;AAC/D,gEAA2D;AAC3D,6DAAwD;AACxD,iEAA4D;AAC5D,qEAAgE;
|
|
1
|
+
{"version":3,"file":"sunat-engine.module.js","sourceRoot":"","sources":["../src/sunat-engine.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAA+E;AAC/E,iEAA4D;AAC5D,oEAA+D;AAC/D,gEAA2D;AAC3D,6DAAwD;AACxD,iEAA4D;AAC5D,qEAAgE;AAChE,iDAA6C;AA2ChC,QAAA,oBAAoB,GAAG,sBAAsB,CAAC;AAI3D,MAAM,gBAAgB,GAAG;IACvB,yCAAkB;IAClB,qCAAgB;IAChB,mCAAe;IACf,iCAAc;IACd,sBAAS;IACT,qCAAgB;IAChB,yCAAkB;CACnB,CAAC;AAEF,MAAM,cAAc,GAAG;IACrB,yCAAkB;IAClB,qCAAgB;IAChB,mCAAe;IACf,iCAAc;IACd,sBAAS;IACT,qCAAgB;IAChB,yCAAkB;CACnB,CAAC;AAIK,IAAM,iBAAiB,yBAAvB,MAAM,iBAAiB;IAc5B,MAAM,CAAC,OAAO,CAAC,UAA8B,EAAE;QAC7C,OAAO;YACL,MAAM,EAAE,mBAAiB;YACzB,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE;gBACT,EAAE,OAAO,EAAE,4BAAoB,EAAE,QAAQ,EAAE,OAAO,EAAE;gBACpD,GAAG,gBAAgB;aACpB;YACD,OAAO,EAAE,cAAc;SACxB,CAAC;IACJ,CAAC;IAkBD,MAAM,CAAC,YAAY,CAAC,YAAqC;QACvD,OAAO;YACL,MAAM,EAAE,mBAAiB;YACzB,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,YAAY,CAAC,OAAO,IAAI,EAAE;YACnC,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,4BAAoB;oBAC7B,UAAU,EAAE,YAAY,CAAC,UAAU;oBACnC,MAAM,EAAE,YAAY,CAAC,MAAM,IAAI,EAAE;iBAClC;gBACD,GAAG,gBAAgB;aACpB;YACD,OAAO,EAAE,cAAc;SACxB,CAAC;IACJ,CAAC;CACF,CAAA;AA1DY,8CAAiB;4BAAjB,iBAAiB;IAF7B,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,iBAAiB,CA0D7B"}
|
|
@@ -2,16 +2,19 @@ import { CompanyCredentials, EngineResponse, InvoicePayload, NotePayload, Despat
|
|
|
2
2
|
import { XmlSignerService } from './signer/xml-signer.service';
|
|
3
3
|
import { SunatSoapClient } from './soap/sunat-soap.client';
|
|
4
4
|
import { SunatGreClient } from './gre/sunat-gre.client';
|
|
5
|
+
import { OseClient } from './ose/ose.client';
|
|
5
6
|
import { CdrParserService } from './cdr/cdr-parser.service';
|
|
6
7
|
import { SunatEngineOptions } from './sunat-engine.module';
|
|
7
8
|
export declare class SunatEngineService {
|
|
8
9
|
private readonly signer;
|
|
9
10
|
private readonly soap;
|
|
10
11
|
private readonly gre;
|
|
12
|
+
private readonly oseClient;
|
|
11
13
|
private readonly cdrParser;
|
|
12
14
|
private readonly options;
|
|
13
15
|
private readonly logger;
|
|
14
|
-
constructor(signer: XmlSignerService, soap: SunatSoapClient, gre: SunatGreClient, cdrParser: CdrParserService, options: SunatEngineOptions);
|
|
16
|
+
constructor(signer: XmlSignerService, soap: SunatSoapClient, gre: SunatGreClient, oseClient: OseClient, cdrParser: CdrParserService, options: SunatEngineOptions);
|
|
17
|
+
private useOse;
|
|
15
18
|
private resolveCredentials;
|
|
16
19
|
sendInvoice(payload: InvoicePayload, credentials?: Partial<CompanyCredentials>): Promise<EngineResponse>;
|
|
17
20
|
sendNote(payload: NotePayload, credentials?: Partial<CompanyCredentials>): Promise<EngineResponse>;
|
|
@@ -19,5 +22,6 @@ export declare class SunatEngineService {
|
|
|
19
22
|
sendSummary(payload: SummaryPayload, credentials?: Partial<CompanyCredentials>): Promise<EngineResponse>;
|
|
20
23
|
sendVoided(payload: VoidedPayload, credentials?: Partial<CompanyCredentials>): Promise<EngineResponse>;
|
|
21
24
|
getTicketStatus(ticket: string, credentials?: Partial<CompanyCredentials>, endpointType?: 'factura' | 'guia'): Promise<EngineResponse>;
|
|
25
|
+
private resolveFileContent;
|
|
22
26
|
private signDocument;
|
|
23
27
|
}
|
|
@@ -15,6 +15,7 @@ var SunatEngineService_1;
|
|
|
15
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
16
|
exports.SunatEngineService = void 0;
|
|
17
17
|
const common_1 = require("@nestjs/common");
|
|
18
|
+
const fs = require("fs");
|
|
18
19
|
const invoice_builder_1 = require("./xml/invoice.builder");
|
|
19
20
|
const note_builder_1 = require("./xml/note.builder");
|
|
20
21
|
const despatch_builder_1 = require("./xml/despatch.builder");
|
|
@@ -23,17 +24,22 @@ const voided_builder_1 = require("./xml/voided.builder");
|
|
|
23
24
|
const xml_signer_service_1 = require("./signer/xml-signer.service");
|
|
24
25
|
const sunat_soap_client_1 = require("./soap/sunat-soap.client");
|
|
25
26
|
const sunat_gre_client_1 = require("./gre/sunat-gre.client");
|
|
27
|
+
const ose_client_1 = require("./ose/ose.client");
|
|
26
28
|
const cdr_parser_service_1 = require("./cdr/cdr-parser.service");
|
|
27
29
|
const sunat_engine_module_1 = require("./sunat-engine.module");
|
|
28
30
|
let SunatEngineService = SunatEngineService_1 = class SunatEngineService {
|
|
29
|
-
constructor(signer, soap, gre, cdrParser, options) {
|
|
31
|
+
constructor(signer, soap, gre, oseClient, cdrParser, options) {
|
|
30
32
|
this.signer = signer;
|
|
31
33
|
this.soap = soap;
|
|
32
34
|
this.gre = gre;
|
|
35
|
+
this.oseClient = oseClient;
|
|
33
36
|
this.cdrParser = cdrParser;
|
|
34
37
|
this.options = options;
|
|
35
38
|
this.logger = new common_1.Logger(SunatEngineService_1.name);
|
|
36
39
|
}
|
|
40
|
+
useOse() {
|
|
41
|
+
return (this.options.provider ?? 'sunat') === 'ose';
|
|
42
|
+
}
|
|
37
43
|
resolveCredentials(perCall) {
|
|
38
44
|
const global = this.options.sunat ?? {};
|
|
39
45
|
const merged = { ...global, ...perCall };
|
|
@@ -47,20 +53,13 @@ let SunatEngineService = SunatEngineService_1 = class SunatEngineService {
|
|
|
47
53
|
const xmlUnsigned = (0, invoice_builder_1.buildInvoiceXml)(payload);
|
|
48
54
|
const { signedXml, hash } = this.signDocument(xmlUnsigned, creds);
|
|
49
55
|
const fileName = this.soap.buildZipFileName(creds.ruc, payload.tipoDoc, payload.serie, payload.correlativo);
|
|
50
|
-
const result =
|
|
51
|
-
|
|
52
|
-
solUser: creds.solUser,
|
|
53
|
-
solPass: creds.solPass,
|
|
54
|
-
fileName,
|
|
55
|
-
xmlSigned: signedXml,
|
|
56
|
-
mode: creds.endpointMode ?? 'beta',
|
|
57
|
-
});
|
|
56
|
+
const result = this.useOse()
|
|
57
|
+
? await this.oseClient.sendBill({ fileName, xmlSigned: signedXml, ose: this.options.ose })
|
|
58
|
+
: await this.soap.sendBill({ ruc: creds.ruc, solUser: creds.solUser, solPass: creds.solPass, fileName, xmlSigned: signedXml, mode: creds.endpointMode ?? 'beta' });
|
|
58
59
|
if (!result.success) {
|
|
59
60
|
return { xml: Buffer.from(signedXml).toString('base64'), hash, sunatResponse: { success: false, error: result.error } };
|
|
60
61
|
}
|
|
61
|
-
const cdrResponse = result.cdrZipBase64
|
|
62
|
-
? await this.cdrParser.parse(result.cdrZipBase64)
|
|
63
|
-
: undefined;
|
|
62
|
+
const cdrResponse = result.cdrZipBase64 ? await this.cdrParser.parse(result.cdrZipBase64) : undefined;
|
|
64
63
|
return {
|
|
65
64
|
xml: Buffer.from(signedXml).toString('base64'),
|
|
66
65
|
hash,
|
|
@@ -76,26 +75,14 @@ let SunatEngineService = SunatEngineService_1 = class SunatEngineService {
|
|
|
76
75
|
const xmlUnsigned = (0, note_builder_1.buildNoteXml)(payload);
|
|
77
76
|
const { signedXml, hash } = this.signDocument(xmlUnsigned, creds);
|
|
78
77
|
const fileName = this.soap.buildZipFileName(creds.ruc, payload.tipoDoc, payload.serie, payload.correlativo);
|
|
79
|
-
const result =
|
|
80
|
-
|
|
81
|
-
solUser: creds.solUser,
|
|
82
|
-
|
|
83
|
-
fileName,
|
|
84
|
-
xmlSigned: signedXml,
|
|
85
|
-
mode: creds.endpointMode ?? 'beta',
|
|
86
|
-
});
|
|
87
|
-
const cdrResponse = result.cdrZipBase64
|
|
88
|
-
? await this.cdrParser.parse(result.cdrZipBase64)
|
|
89
|
-
: undefined;
|
|
78
|
+
const result = this.useOse()
|
|
79
|
+
? await this.oseClient.sendBill({ fileName, xmlSigned: signedXml, ose: this.options.ose })
|
|
80
|
+
: await this.soap.sendBill({ ruc: creds.ruc, solUser: creds.solUser, solPass: creds.solPass, fileName, xmlSigned: signedXml, mode: creds.endpointMode ?? 'beta' });
|
|
81
|
+
const cdrResponse = result.cdrZipBase64 ? await this.cdrParser.parse(result.cdrZipBase64) : undefined;
|
|
90
82
|
return {
|
|
91
83
|
xml: Buffer.from(signedXml).toString('base64'),
|
|
92
84
|
hash,
|
|
93
|
-
sunatResponse: {
|
|
94
|
-
success: result.success,
|
|
95
|
-
cdrZip: result.cdrZipBase64,
|
|
96
|
-
cdrResponse,
|
|
97
|
-
error: result.error,
|
|
98
|
-
},
|
|
85
|
+
sunatResponse: { success: result.success, cdrZip: result.cdrZipBase64, cdrResponse, error: result.error },
|
|
99
86
|
};
|
|
100
87
|
}
|
|
101
88
|
async sendDespatch(payload, credentials) {
|
|
@@ -130,22 +117,13 @@ let SunatEngineService = SunatEngineService_1 = class SunatEngineService {
|
|
|
130
117
|
const { signedXml, hash } = this.signDocument(xmlUnsigned, creds);
|
|
131
118
|
const fecha = payload.fecResumen.slice(0, 10);
|
|
132
119
|
const fileName = this.soap.buildSummaryFileName(creds.ruc, 'RC', fecha, payload.correlativo);
|
|
133
|
-
const result =
|
|
134
|
-
|
|
135
|
-
solUser: creds.solUser,
|
|
136
|
-
solPass: creds.solPass,
|
|
137
|
-
fileName,
|
|
138
|
-
xmlSigned: signedXml,
|
|
139
|
-
mode: creds.endpointMode ?? 'beta',
|
|
140
|
-
});
|
|
120
|
+
const result = this.useOse()
|
|
121
|
+
? await this.oseClient.sendSummary({ fileName, xmlSigned: signedXml, ose: this.options.ose })
|
|
122
|
+
: await this.soap.sendSummary({ ruc: creds.ruc, solUser: creds.solUser, solPass: creds.solPass, fileName, xmlSigned: signedXml, mode: creds.endpointMode ?? 'beta' });
|
|
141
123
|
return {
|
|
142
124
|
xml: Buffer.from(signedXml).toString('base64'),
|
|
143
125
|
hash,
|
|
144
|
-
sunatResponse: {
|
|
145
|
-
success: result.success,
|
|
146
|
-
ticket: result.ticket,
|
|
147
|
-
error: result.error,
|
|
148
|
-
},
|
|
126
|
+
sunatResponse: { success: result.success, ticket: result.ticket, error: result.error },
|
|
149
127
|
};
|
|
150
128
|
}
|
|
151
129
|
async sendVoided(payload, credentials) {
|
|
@@ -154,14 +132,9 @@ let SunatEngineService = SunatEngineService_1 = class SunatEngineService {
|
|
|
154
132
|
const { signedXml, hash } = this.signDocument(xmlUnsigned, creds);
|
|
155
133
|
const fecha = payload.fecGeneracion.slice(0, 10);
|
|
156
134
|
const fileName = this.soap.buildSummaryFileName(creds.ruc, 'RA', fecha, payload.correlativo);
|
|
157
|
-
const result =
|
|
158
|
-
|
|
159
|
-
solUser: creds.solUser,
|
|
160
|
-
solPass: creds.solPass,
|
|
161
|
-
fileName,
|
|
162
|
-
xmlSigned: signedXml,
|
|
163
|
-
mode: creds.endpointMode ?? 'beta',
|
|
164
|
-
});
|
|
135
|
+
const result = this.useOse()
|
|
136
|
+
? await this.oseClient.sendSummary({ fileName, xmlSigned: signedXml, ose: this.options.ose })
|
|
137
|
+
: await this.soap.sendSummary({ ruc: creds.ruc, solUser: creds.solUser, solPass: creds.solPass, fileName, xmlSigned: signedXml, mode: creds.endpointMode ?? 'beta' });
|
|
165
138
|
return {
|
|
166
139
|
xml: Buffer.from(signedXml).toString('base64'),
|
|
167
140
|
hash,
|
|
@@ -217,9 +190,15 @@ let SunatEngineService = SunatEngineService_1 = class SunatEngineService {
|
|
|
217
190
|
},
|
|
218
191
|
};
|
|
219
192
|
}
|
|
193
|
+
resolveFileContent(value) {
|
|
194
|
+
if (/^\.{0,2}\//.test(value) || /^[A-Za-z]:\\/.test(value)) {
|
|
195
|
+
return fs.readFileSync(value, 'utf8');
|
|
196
|
+
}
|
|
197
|
+
return value;
|
|
198
|
+
}
|
|
220
199
|
signDocument(xmlUnsigned, credentials) {
|
|
221
|
-
let
|
|
222
|
-
let
|
|
200
|
+
let certPem = this.resolveFileContent(credentials.certPem);
|
|
201
|
+
let privateKeyPem = credentials.certKey ? this.resolveFileContent(credentials.certKey) : '';
|
|
223
202
|
if (!certPem.includes('-----BEGIN')) {
|
|
224
203
|
const extracted = this.signer.loadP12(certPem);
|
|
225
204
|
privateKeyPem = extracted.privateKeyPem;
|
|
@@ -239,10 +218,11 @@ let SunatEngineService = SunatEngineService_1 = class SunatEngineService {
|
|
|
239
218
|
exports.SunatEngineService = SunatEngineService;
|
|
240
219
|
exports.SunatEngineService = SunatEngineService = SunatEngineService_1 = __decorate([
|
|
241
220
|
(0, common_1.Injectable)(),
|
|
242
|
-
__param(
|
|
221
|
+
__param(5, (0, common_1.Inject)(sunat_engine_module_1.SUNAT_ENGINE_OPTIONS)),
|
|
243
222
|
__metadata("design:paramtypes", [xml_signer_service_1.XmlSignerService,
|
|
244
223
|
sunat_soap_client_1.SunatSoapClient,
|
|
245
224
|
sunat_gre_client_1.SunatGreClient,
|
|
225
|
+
ose_client_1.OseClient,
|
|
246
226
|
cdr_parser_service_1.CdrParserService, Object])
|
|
247
227
|
], SunatEngineService);
|
|
248
228
|
//# sourceMappingURL=sunat-engine.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sunat-engine.service.js","sourceRoot":"","sources":["../src/sunat-engine.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAA4D;
|
|
1
|
+
{"version":3,"file":"sunat-engine.service.js","sourceRoot":"","sources":["../src/sunat-engine.service.ts"],"names":[],"mappings":"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"}
|