UNPKG

control-see

Version:

Control Util Documentos Electronicos SUNAT

168 lines 6.98 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.FeFactory = void 0; const class_transformer_1 = require("class-transformer"); const exchange_1 = require("@fe/common/exchange"); const models_1 = require("@fe/common/models"); class FeFactory { get builder() { return this._builder; } set builder(builder) { this._builder = builder; } get pdfBuilder() { return this._pdfBuilder; } set pdfBuilder(pdfBuilder) { this._pdfBuilder = pdfBuilder; } get sender() { return this._sender; } set sender(sender) { this._sender = sender; } get signer() { return this._signer; } set signer(signer) { this._signer = signer; } get serializer() { return this._serializer; } set serializer(serializer) { this._serializer = serializer; } get lastFile() { return this._lastfile; } set lastFile(lastFile) { this._lastfile = lastFile; } send(document) { return __awaiter(this, void 0, void 0, function* () { try { const response = new exchange_1.Response(); const documentElectronic = class_transformer_1.plainToClass(models_1.CPE, document); response.xml = yield this.getXmlSigned(document); if (!response.xml.success) { throw response.xml; } const zipResponse = yield this.serializer.zipCompress(response.xml.xmlDocument, documentElectronic.fileName()); if (!zipResponse.success) { throw zipResponse; } const wsResponse = yield this.sender.send({ fileName: documentElectronic.fileName(), zip: zipResponse.contentFile }); if (!wsResponse.success) throw wsResponse; response.cdr = yield this.serializer.documentResponseGenerate(wsResponse.constancyOfRecepty); response.pdf = yield this.getPdf(document); this.lastFile = Object.assign(Object.assign({}, this.lastFile), { ZIP: { fileName: documentElectronic.fileName(), contentFile: zipResponse.contentFile }, CDR: { fileName: response.cdr.fileName, contentFile: wsResponse.constancyOfRecepty } }); return response; } catch (e) { throw new exchange_1.Error(e, 'Generar, Firmar, Comprimir, Enviar CPE.'); } }); } sendXml(document) { return __awaiter(this, void 0, void 0, function* () { try { const wsResponse = yield this.sender.send({ fileName: document.fileName, zip: document.zip }); if (!wsResponse.success) { throw wsResponse; } return this.serializer.documentResponseGenerate(wsResponse.constancyOfRecepty); } catch (e) { throw new exchange_1.Error(e, 'Enviar CPE.'); } }); } getPdf(document) { return __awaiter(this, void 0, void 0, function* () { try { let pdf = new exchange_1.PDF(); const documentElectronic = class_transformer_1.plainToClass(models_1.CPE, document); const zipResponse = yield this.pdfBuilder.generate(document); if (!zipResponse.success) { throw zipResponse; } const { contentFile } = zipResponse, rest = __rest(zipResponse, ["contentFile"]); pdf = Object.assign({}, rest); pdf.fileName = documentElectronic.fileName(); this.lastFile = Object.assign(Object.assign({}, this.lastFile), { PDF: { fileName: documentElectronic.fileName(), contentFile: zipResponse.contentFile } }); return pdf; } catch (e) { throw new exchange_1.Error(e, 'Generar Pdf.'); } }); } getXmlSigned(document) { return __awaiter(this, void 0, void 0, function* () { try { let xml = new exchange_1.XML(); const documentElectronic = class_transformer_1.plainToClass(models_1.CPE, document); const xmlDocument = this.builder.generate(document); const xmlGenerate = this.serializer.xmlGenerate(xmlDocument); if (!xmlGenerate.success) { throw xmlGenerate; } const responseXml = yield this.signer.xml(xmlGenerate.xmlDocument); if (!responseXml.success) { throw xml; } xml = Object.assign({}, responseXml); xml.fileName = documentElectronic.fileName(); this.lastFile = Object.assign(Object.assign({}, this.lastFile), { XML: { fileName: documentElectronic.fileName(), contentFile: responseXml.xmlDocument } }); return xml; } catch (e) { throw new exchange_1.Error(e, 'Generar Xml.'); } }); } } exports.FeFactory = FeFactory; //# sourceMappingURL=fe-factory.js.map