consultame-sdk 1.0.0 → 1.0.1

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/dist/index.js CHANGED
@@ -25,7 +25,7 @@ function _interopNamespace(e) {
25
25
  return Object.freeze(n);
26
26
  }
27
27
 
28
- var forge__namespace = /*#__PURE__*/_interopNamespace(forge);
28
+ var forge__default = /*#__PURE__*/_interopDefault(forge);
29
29
  var xml2js__namespace = /*#__PURE__*/_interopNamespace(xml2js);
30
30
  var sha256__default = /*#__PURE__*/_interopDefault(sha256);
31
31
 
@@ -136,13 +136,13 @@ var generateConsultBatchXml = (consultBatchDto) => {
136
136
  </env:Envelope>
137
137
  `;
138
138
  };
139
- var OIDS_KEYS = [forge__namespace.pki.oids.pkcs8ShroudedKeyBag, forge__namespace.pki.oids.keyBag];
139
+ var OIDS_KEYS = [forge__default.default.pki.oids.pkcs8ShroudedKeyBag, forge__default.default.pki.oids.keyBag];
140
140
  var obtainBags = (almacen) => almacen.safeContents.flatMap((contenido) => contenido.safeBags);
141
141
  var readDigitalSign = (digitalSignDto) => {
142
142
  const { camino, contrase\u00F1a } = digitalSignDto;
143
143
  const contenidoPfx = fs.readFileSync(camino, { encoding: "binary" });
144
- const estructuraAsn1 = forge__namespace.asn1.fromDer(contenidoPfx);
145
- const almacen = forge__namespace.pkcs12.pkcs12FromAsn1(estructuraAsn1, contrase\u00F1a);
144
+ const estructuraAsn1 = forge__default.default.asn1.fromDer(contenidoPfx);
145
+ const almacen = forge__default.default.pkcs12.pkcs12FromAsn1(estructuraAsn1, contrase\u00F1a);
146
146
  const bolsas = obtainBags(almacen);
147
147
  const bolsaLlave = bolsas.find(
148
148
  (bolsa) => OIDS_KEYS.includes(bolsa.type) && bolsa.key
@@ -151,14 +151,14 @@ var readDigitalSign = (digitalSignDto) => {
151
151
  throw new Error("La firma digital no contiene una llave privada");
152
152
  }
153
153
  const bolsaCertificado = bolsas.find(
154
- (bolsa) => bolsa.type === forge__namespace.pki.oids.certBag && bolsa.cert
154
+ (bolsa) => bolsa.type === forge__default.default.pki.oids.certBag && bolsa.cert
155
155
  );
156
156
  if (!bolsaCertificado?.cert) {
157
157
  throw new Error("La firma digital no contiene un certificado");
158
158
  }
159
159
  return {
160
- certificado: forge__namespace.pki.certificateToPem(bolsaCertificado.cert),
161
- llavePrivada: forge__namespace.pki.privateKeyToPem(bolsaLlave.key)
160
+ certificado: forge__default.default.pki.certificateToPem(bolsaCertificado.cert),
161
+ llavePrivada: forge__default.default.pki.privateKeyToPem(bolsaLlave.key)
162
162
  };
163
163
  };
164
164
  var generateQr = async (generationQrDto) => {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/sifen/domain/useCases/consultBatch.useCase.ts","../src/sifen/domain/useCases/consultRuc.useCase.ts","../src/sifen/domain/useCases/consultDocument.useCase.ts","../src/sifen/domain/useCases/obtainDigitalSign.useCase.ts","../src/sifen/domain/useCases/generateQr.useCase.ts","../src/shared/functions/functions.utils.ts","../src/sifen/infrastructure/persistence/sifen.persistence.ts","../src/sifen/applications/services/sifen.service.ts"],"names":["forge","readFileSync","xml2js","sha256"],"mappings":"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","file":"index.js","sourcesContent":["import { ConsultBatchDto } from \"../../applications/dtos\";\r\nimport { SifenRepository } from \"../repository/sifen.repository\";\r\n\r\nexport class ConsultBatchUseCase {\r\n constructor(private readonly sifenRepository: SifenRepository) {}\r\n\r\n execute(consultBatchDto: ConsultBatchDto) {\r\n const batch = this.sifenRepository.consultBatch(consultBatchDto);\r\n\r\n return batch;\r\n }\r\n}\r\n","import { ConsultRucDto } from \"../../applications/dtos\";\r\nimport { SifenRepository } from \"../repository/sifen.repository\";\r\n\r\nexport class ConsultRucUseCase {\r\n constructor(private readonly sifenRepository: SifenRepository) {}\r\n\r\n execute(consultRucDto: ConsultRucDto) {\r\n const ruc = this.sifenRepository.consultRuc(consultRucDto);\r\n\r\n return ruc;\r\n }\r\n}\r\n","import { ConsultDocumentDto } from \"../../applications/dtos\";\r\nimport { SifenRepository } from \"../repository/sifen.repository\";\r\n\r\nexport class ConsultDocumentUseCase {\r\n constructor(private readonly sifenRepository: SifenRepository) {}\r\n\r\n execute(consultDocumentDto: ConsultDocumentDto) {\r\n const document = this.sifenRepository.consultDocument(consultDocumentDto);\r\n\r\n return document;\r\n }\r\n}\r\n","import { DigitalSignDto } from \"../../applications/dtos\";\r\nimport { SifenRepository } from \"../repository/sifen.repository\";\r\n\r\nexport class ObtainDigitalSignUseCase {\r\n constructor(private readonly sifenRepository: SifenRepository) {}\r\n\r\n execute(digitalSignDto: DigitalSignDto) {\r\n const digitalSign = this.sifenRepository.obtainDigitalSign(digitalSignDto);\r\n\r\n return digitalSign;\r\n }\r\n}\r\n","import { GenerationQrDto } from \"../../applications/dtos\";\r\nimport { SifenRepository } from \"../repository/sifen.repository\";\r\n\r\nexport class GenerateQrUseCase {\r\n constructor(private readonly sifenRepository: SifenRepository) {}\r\n\r\n async execute(generationQrDto: GenerationQrDto): Promise<string> {\r\n const generationQr = await this.sifenRepository.generateQr(generationQrDto);\r\n\r\n return generationQr;\r\n }\r\n}\r\n","import {\r\n ConsultBatchDto,\r\n ConsultDocumentDto,\r\n ConsultRucDto,\r\n DigitalSignDto,\r\n GenerationQrDto,\r\n} from \"../../sifen/applications/dtos\";\r\nimport { readFileSync } from \"fs\";\r\nimport * as forge from \"node-forge\";\r\nimport { ResponseDigitalSign } from \"../dto/responseDigitalSign.dto\";\r\nimport * as xml2js from \"xml2js\";\r\nimport { LINK_SIFEN, SIFEN_ENVIRONMENT } from \"../utils/dictionary.utils\";\r\nimport sha256 from \"crypto-js/sha256\";\r\n\r\nexport const calculateDigitVerification = (\r\n value: string,\r\n baseMax: number = 11,\r\n): string => {\r\n let v_total = 0;\r\n let v_resto = 0;\r\n let k = 0;\r\n let v_numero_aux = 0;\r\n let v_numero_al = \"\";\r\n let v_caracter = \"\";\r\n let v_digit = 0;\r\n\r\n // Cambia la ultima letra por ascii en caso que la cedula termine en letra\r\n for (let i = 0; i < value.length; i++) {\r\n v_caracter = value.toUpperCase().substring(i, i + 1);\r\n if (!(v_caracter.charCodeAt(0) >= 48 && v_caracter.charCodeAt(0) <= 57)) {\r\n v_numero_al = v_numero_al + v_caracter.charCodeAt(0);\r\n } else {\r\n v_numero_al = v_numero_al + v_caracter;\r\n }\r\n }\r\n\r\n // Calcula el DV\r\n k = 2;\r\n v_total = 0;\r\n // FOR i IN REVERSE 1 .. LENGTH(v_numero_al) LOOP\r\n for (let i = v_numero_al.length; i > 0; i--) {\r\n if (k > baseMax) {\r\n k = 2;\r\n }\r\n v_numero_aux = parseInt(v_numero_al.substring(i - 1, i));\r\n v_total = v_total + v_numero_aux * k;\r\n k = k + 1;\r\n }\r\n v_resto = v_total % 11;\r\n if (v_resto > 1) {\r\n v_digit = 11 - v_resto;\r\n } else {\r\n v_digit = 0;\r\n }\r\n return v_digit.toString();\r\n};\r\n\r\nexport function normalizeXML(xml: string): string {\r\n xml = xml.split(\"\\r\\n\").join(\"\");\r\n xml = xml.split(\"\\n\").join(\"\");\r\n xml = xml.split(\"\\t\").join(\"\");\r\n xml = xml.split(\" \").join(\"\");\r\n xml = xml.split(\"> <\").join(\"><\");\r\n xml = xml.split(\"> <\").join(\"><\");\r\n xml = xml.replace(/\\r?\\n|\\r/g, \"\");\r\n return xml;\r\n}\r\n\r\nexport const generateConsultRucXml = (consultRucDto: ConsultRucDto): string => {\r\n return `<env:Envelope xmlns:env=\"http://www.w3.org/2003/05/soap-envelope\">\\n\\\r\n <env:Header/>\\n\\\r\n <env:Body>\\n\\\r\n <rEnviConsRUC xmlns=\"http://ekuatia.set.gov.py/sifen/xsd\">\\n\\\r\n <dId>${consultRucDto.id}</dId>\\n\\\r\n <dRUCCons>${consultRucDto.ruc}</dRUCCons>\\n\\\r\n </rEnviConsRUC>\\n\\\r\n </env:Body>\\n\\\r\n </env:Envelope>\\n`;\r\n};\r\n\r\nexport const generateConsultDocumentXml = (\r\n consultDocumentDto: ConsultDocumentDto,\r\n): string => {\r\n return `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n\\\r\n <env:Envelope xmlns:env=\"http://www.w3.org/2003/05/soap-envelope\">\\n\\\r\n <env:Header/>\\n\\\r\n <env:Body>\\n\\\r\n <rEnviConsDeRequest xmlns=\"http://ekuatia.set.gov.py/sifen/xsd\">\\n\\\r\n <dId>${consultDocumentDto.id}</dId>\\n\\\r\n <dCDC>${consultDocumentDto.cdc}</dCDC>\\n\\\r\n </rEnviConsDeRequest>\\n\\\r\n </env:Body>\\n\\\r\n </env:Envelope>\\n`;\r\n};\r\n\r\nexport const generateConsultBatchXml = (\r\n consultBatchDto: ConsultBatchDto,\r\n): string => {\r\n return `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n\\\r\n <env:Envelope xmlns:env=\"http://www.w3.org/2003/05/soap-envelope\">\\n\\\r\n <env:Header/>\\n\\\r\n <env:Body>\\n\\\r\n <rEnviConsLoteDe xmlns=\"http://ekuatia.set.gov.py/sifen/xsd\">\\n\\\r\n <dId>${consultBatchDto.id}</dId>\\n\\\r\n <dProtConsLote>${consultBatchDto.codigoLote}</dProtConsLote>\\n\\\r\n </rEnviConsLoteDe>\\n\\\r\n </env:Body>\\n\\\r\n </env:Envelope>\\n`;\r\n};\r\n\r\nconst OIDS_KEYS = [forge.pki.oids.pkcs8ShroudedKeyBag, forge.pki.oids.keyBag];\r\n\r\nconst obtainBags = (almacen: forge.pkcs12.Pkcs12Pfx): forge.pkcs12.Bag[] =>\r\n almacen.safeContents.flatMap((contenido) => contenido.safeBags);\r\n\r\nexport const readDigitalSign = (\r\n digitalSignDto: DigitalSignDto,\r\n): ResponseDigitalSign => {\r\n const { camino, contraseña } = digitalSignDto;\r\n\r\n const contenidoPfx = readFileSync(camino, { encoding: \"binary\" });\r\n const estructuraAsn1 = forge.asn1.fromDer(contenidoPfx);\r\n const almacen = forge.pkcs12.pkcs12FromAsn1(estructuraAsn1, contraseña);\r\n\r\n const bolsas = obtainBags(almacen);\r\n\r\n const bolsaLlave = bolsas.find(\r\n (bolsa) => OIDS_KEYS.includes(bolsa.type) && bolsa.key,\r\n );\r\n if (!bolsaLlave?.key) {\r\n throw new Error(\"La firma digital no contiene una llave privada\");\r\n }\r\n\r\n const bolsaCertificado = bolsas.find(\r\n (bolsa) => bolsa.type === forge.pki.oids.certBag && bolsa.cert,\r\n );\r\n if (!bolsaCertificado?.cert) {\r\n throw new Error(\"La firma digital no contiene un certificado\");\r\n }\r\n\r\n return {\r\n certificado: forge.pki.certificateToPem(bolsaCertificado.cert),\r\n llavePrivada: forge.pki.privateKeyToPem(bolsaLlave.key),\r\n };\r\n};\r\n\r\nexport const generateQr = async (\r\n generationQrDto: GenerationQrDto,\r\n): Promise<string> => {\r\n try {\r\n const { xml, idCsc, csc, ambiente } = generationQrDto;\r\n\r\n const xmlObject = await xml2js.parseStringPromise(xml);\r\n\r\n if (\r\n !(\r\n xmlObject &&\r\n xmlObject[\"rDE\"] &&\r\n xmlObject[\"rDE\"][\"Signature\"] &&\r\n xmlObject[\"rDE\"][\"Signature\"]\r\n )\r\n ) {\r\n throw new Error(\"XML debe estar firmado digitalmente para generar el QR\");\r\n }\r\n\r\n xmlObject[\"rDE\"][\"gCamFuFD\"] = {};\r\n\r\n let linkQr: string = \"\";\r\n\r\n if (ambiente === SIFEN_ENVIRONMENT.TEST) {\r\n linkQr = LINK_SIFEN.TEST;\r\n } else {\r\n linkQr = LINK_SIFEN.PRODUCCION;\r\n }\r\n\r\n linkQr += \"/qr?\";\r\n\r\n let qr: string = \"\";\r\n\r\n const newVersion = xmlObject[\"rDE\"][\"dVerFor\"][0];\r\n\r\n qr += \"nVersion=\" + newVersion + \"&\";\r\n\r\n const id = xmlObject[\"rDE\"][\"DE\"][0][\"$\"][\"Id\"];\r\n qr += \"Id=\" + id + \"&\";\r\n\r\n let dFeEmiDE = xmlObject[\"rDE\"][\"DE\"][0][\"gDatGralOpe\"][0][\"dFeEmiDE\"][0];\r\n dFeEmiDE = Buffer.from(dFeEmiDE, \"utf8\").toString(\"hex\");\r\n qr += \"dFeEmiDE=\" + dFeEmiDE + \"&\";\r\n\r\n let dRucRec: string = \"\";\r\n\r\n if (\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gDatGralOpe\"][0][\"gDatRec\"][0][\"iNatRec\"][0] ==\r\n 1\r\n ) {\r\n dRucRec =\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gDatGralOpe\"][0][\"gDatRec\"][0][\"dRucRec\"][0];\r\n qr += \"dRucRec=\" + dRucRec + \"&\";\r\n } else {\r\n dRucRec =\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gDatGralOpe\"][0][\"gDatRec\"][0][\r\n \"dNumIDRec\"\r\n ][0];\r\n qr += \"dNumIDRec=\" + dRucRec + \"&\";\r\n }\r\n\r\n let dTotGralOpe: number = 0;\r\n\r\n if (\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"] &&\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"][0] &&\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"][0][\"dTotGralOpe\"] &&\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"][0][\"dTotGralOpe\"][0]\r\n ) {\r\n dTotGralOpe = xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"][0][\"dTotGralOpe\"][0];\r\n }\r\n qr += \"dTotGralOpe=\" + dTotGralOpe + \"&\";\r\n\r\n let dTotIVA: number = 0;\r\n\r\n if (\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"] &&\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"][0] &&\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"][0][\"dTotIVA\"] &&\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"][0][\"dTotIVA\"][0]\r\n ) {\r\n dTotIVA = xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"][0][\"dTotIVA\"][0];\r\n }\r\n qr += \"dTotIVA=\" + dTotIVA + \"&\";\r\n\r\n let cItems: number = 0;\r\n\r\n if (\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gDtipDE\"][0] &&\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gDtipDE\"][0][\"gCamItem\"] &&\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gDtipDE\"][0][\"gCamItem\"].length > 0\r\n ) {\r\n cItems = xmlObject[\"rDE\"][\"DE\"][0][\"gDtipDE\"][0][\"gCamItem\"].length;\r\n }\r\n\r\n qr += \"cItems=\" + cItems + \"&\";\r\n\r\n let digestValue =\r\n xmlObject[\"rDE\"][\"Signature\"][0][\"SignedInfo\"][0][\"Reference\"][0][\r\n \"DigestValue\"\r\n ][0];\r\n\r\n digestValue = Buffer.from(digestValue, \"utf8\").toString(\"hex\");\r\n qr += \"DigestValue=\" + digestValue + \"&\";\r\n\r\n qr += \"IdCSC=\" + idCsc;\r\n\r\n const valueForHash = qr;\r\n const valueHashed = sha256(valueForHash + csc);\r\n\r\n qr += \"&cHashQR=\" + valueHashed;\r\n\r\n xmlObject[\"rDE\"][\"gCamFuFD\"][\"dCarQR\"] = {\r\n _: linkQr + qr,\r\n };\r\n const builder = new xml2js.Builder();\r\n\r\n const xmlWithQR = builder.buildObject(xmlObject);\r\n\r\n return xmlWithQR;\r\n } catch (error) {\r\n throw error;\r\n }\r\n};\r\n","import { ResponseDigitalSign } from \"../../../shared/dto/responseDigitalSign.dto\";\r\nimport {\r\n generateConsultBatchXml,\r\n generateConsultDocumentXml,\r\n generateConsultRucXml,\r\n readDigitalSign,\r\n normalizeXML,\r\n generateQr,\r\n} from \"../../../shared/functions/functions.utils\";\r\nimport {\r\n ConsultRucDto,\r\n ConsultBatchDto,\r\n ConsultDocumentDto,\r\n DigitalSignDto,\r\n GenerationQrDto,\r\n} from \"../../applications/dtos\";\r\nimport { CancelInvoiceDto } from \"../../applications/dtos/cancelDocument.dto\";\r\nimport { InvalidationInvoiceDto } from \"../../applications/dtos/invalidationInvoice.dto\";\r\nimport { SifenRepository } from \"../../domain/repository/sifen.repository\";\r\n\r\nexport class SifenPersistence implements SifenRepository {\r\n consultRuc(consultRucDto: ConsultRucDto): string {\r\n const rucXml = generateConsultRucXml(consultRucDto);\r\n\r\n const xmlFormated = normalizeXML(rucXml);\r\n\r\n return xmlFormated;\r\n }\r\n\r\n consultBatch(consultBatchDto: ConsultBatchDto): string {\r\n const batchXml = generateConsultBatchXml(consultBatchDto);\r\n\r\n const xmlFormated = normalizeXML(batchXml);\r\n\r\n return xmlFormated;\r\n }\r\n\r\n consultDocument(ConsultDocumentDto: ConsultDocumentDto): string {\r\n const documentXml = generateConsultDocumentXml(ConsultDocumentDto);\r\n\r\n const xmlFormated = normalizeXML(documentXml);\r\n\r\n return xmlFormated;\r\n }\r\n\r\n cancelationInvoice(cancelInvoiceDto: CancelInvoiceDto): string {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n invalidationInvoice(invalidationInvoiceDto: InvalidationInvoiceDto): string {\r\n try {\r\n throw new Error(\"Method not implemented.\");\r\n } catch (error) {\r\n console.log(error);\r\n throw error;\r\n }\r\n }\r\n\r\n obtainDigitalSign(digitalSignDto: DigitalSignDto): ResponseDigitalSign {\r\n try {\r\n const digitalSign = readDigitalSign(digitalSignDto);\r\n\r\n return digitalSign;\r\n } catch (error) {\r\n console.log(error);\r\n throw error;\r\n }\r\n }\r\n\r\n async generateQr(generationQrDto: GenerationQrDto): Promise<string> {\r\n try {\r\n const digitalSign = await generateQr(generationQrDto);\r\n\r\n return digitalSign;\r\n } catch (error) {\r\n console.log(error);\r\n throw error;\r\n }\r\n }\r\n}\r\n","import { SifenRepository } from \"../../domain/repository/sifen.repository\";\r\nimport {\r\n ConsultBatchUseCase,\r\n ConsultDocumentUseCase,\r\n ConsultRucUseCase,\r\n GenerateQrUseCase,\r\n ObtainDigitalSignUseCase,\r\n} from \"../../domain/useCases\";\r\nimport { SifenPersistence } from \"../../infrastructure/persistence/sifen.persistence\";\r\nimport {\r\n ConsultBatchDto,\r\n ConsultDocumentDto,\r\n ConsultRucDto,\r\n DigitalSignDto,\r\n GenerationQrDto,\r\n} from \"../dtos\";\r\n\r\nexport class SifenService {\r\n private readonly consultRucUseCase: ConsultRucUseCase;\r\n private readonly consultBatchUseCase: ConsultBatchUseCase;\r\n private readonly consultDocumentUseCase: ConsultDocumentUseCase;\r\n private readonly obtainDigitalSignUseCase: ObtainDigitalSignUseCase;\r\n private readonly generateQrUseCase: GenerateQrUseCase;\r\n private readonly sifenRepository: SifenRepository;\r\n\r\n constructor() {\r\n this.sifenRepository = new SifenPersistence();\r\n this.consultRucUseCase = new ConsultRucUseCase(this.sifenRepository);\r\n this.consultBatchUseCase = new ConsultBatchUseCase(this.sifenRepository);\r\n this.consultDocumentUseCase = new ConsultDocumentUseCase(\r\n this.sifenRepository,\r\n );\r\n this.obtainDigitalSignUseCase = new ObtainDigitalSignUseCase(\r\n this.sifenRepository,\r\n );\r\n this.generateQrUseCase = new GenerateQrUseCase(this.sifenRepository);\r\n }\r\n\r\n consultRuc(consultRucDto: ConsultRucDto) {\r\n const ruc = this.consultRucUseCase.execute(consultRucDto);\r\n return ruc;\r\n }\r\n\r\n consultBatch(consultBatchDto: ConsultBatchDto) {\r\n const batch = this.consultBatchUseCase.execute(consultBatchDto);\r\n return batch;\r\n }\r\n\r\n consultDocument(consultDocumentDto: ConsultDocumentDto) {\r\n const invoice = this.consultDocumentUseCase.execute(consultDocumentDto);\r\n return invoice;\r\n }\r\n\r\n obtainDigitalSign(digitalSignDto: DigitalSignDto) {\r\n const digitalSign = this.obtainDigitalSignUseCase.execute(digitalSignDto);\r\n return digitalSign;\r\n }\r\n\r\n async generateQr(generationQrDto: GenerationQrDto): Promise<string> {\r\n try {\r\n const generationQr =\r\n await this.generateQrUseCase.execute(generationQrDto);\r\n\r\n return generationQr;\r\n } catch (error) {\r\n throw error;\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"sources":["../src/sifen/domain/useCases/consultBatch.useCase.ts","../src/sifen/domain/useCases/consultRuc.useCase.ts","../src/sifen/domain/useCases/consultDocument.useCase.ts","../src/sifen/domain/useCases/obtainDigitalSign.useCase.ts","../src/sifen/domain/useCases/generateQr.useCase.ts","../src/shared/functions/functions.utils.ts","../src/sifen/infrastructure/persistence/sifen.persistence.ts","../src/sifen/applications/services/sifen.service.ts"],"names":["forge","readFileSync","xml2js","sha256"],"mappings":"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","file":"index.js","sourcesContent":["import { ConsultBatchDto } from \"../../applications/dtos\";\r\nimport { SifenRepository } from \"../repository/sifen.repository\";\r\n\r\nexport class ConsultBatchUseCase {\r\n constructor(private readonly sifenRepository: SifenRepository) {}\r\n\r\n execute(consultBatchDto: ConsultBatchDto) {\r\n const batch = this.sifenRepository.consultBatch(consultBatchDto);\r\n\r\n return batch;\r\n }\r\n}\r\n","import { ConsultRucDto } from \"../../applications/dtos\";\r\nimport { SifenRepository } from \"../repository/sifen.repository\";\r\n\r\nexport class ConsultRucUseCase {\r\n constructor(private readonly sifenRepository: SifenRepository) {}\r\n\r\n execute(consultRucDto: ConsultRucDto) {\r\n const ruc = this.sifenRepository.consultRuc(consultRucDto);\r\n\r\n return ruc;\r\n }\r\n}\r\n","import { ConsultDocumentDto } from \"../../applications/dtos\";\r\nimport { SifenRepository } from \"../repository/sifen.repository\";\r\n\r\nexport class ConsultDocumentUseCase {\r\n constructor(private readonly sifenRepository: SifenRepository) {}\r\n\r\n execute(consultDocumentDto: ConsultDocumentDto) {\r\n const document = this.sifenRepository.consultDocument(consultDocumentDto);\r\n\r\n return document;\r\n }\r\n}\r\n","import { DigitalSignDto } from \"../../applications/dtos\";\r\nimport { SifenRepository } from \"../repository/sifen.repository\";\r\n\r\nexport class ObtainDigitalSignUseCase {\r\n constructor(private readonly sifenRepository: SifenRepository) {}\r\n\r\n execute(digitalSignDto: DigitalSignDto) {\r\n const digitalSign = this.sifenRepository.obtainDigitalSign(digitalSignDto);\r\n\r\n return digitalSign;\r\n }\r\n}\r\n","import { GenerationQrDto } from \"../../applications/dtos\";\r\nimport { SifenRepository } from \"../repository/sifen.repository\";\r\n\r\nexport class GenerateQrUseCase {\r\n constructor(private readonly sifenRepository: SifenRepository) {}\r\n\r\n async execute(generationQrDto: GenerationQrDto): Promise<string> {\r\n const generationQr = await this.sifenRepository.generateQr(generationQrDto);\r\n\r\n return generationQr;\r\n }\r\n}\r\n","import {\r\n ConsultBatchDto,\r\n ConsultDocumentDto,\r\n ConsultRucDto,\r\n DigitalSignDto,\r\n GenerationQrDto,\r\n} from \"../../sifen/applications/dtos\";\r\nimport { readFileSync } from \"fs\";\r\nimport forge from \"node-forge\";\r\nimport { ResponseDigitalSign } from \"../dto/responseDigitalSign.dto\";\r\nimport * as xml2js from \"xml2js\";\r\nimport { LINK_SIFEN, SIFEN_ENVIRONMENT } from \"../utils/dictionary.utils\";\r\nimport sha256 from \"crypto-js/sha256\";\r\n\r\nexport const calculateDigitVerification = (\r\n value: string,\r\n baseMax: number = 11,\r\n): string => {\r\n let v_total = 0;\r\n let v_resto = 0;\r\n let k = 0;\r\n let v_numero_aux = 0;\r\n let v_numero_al = \"\";\r\n let v_caracter = \"\";\r\n let v_digit = 0;\r\n\r\n // Cambia la ultima letra por ascii en caso que la cedula termine en letra\r\n for (let i = 0; i < value.length; i++) {\r\n v_caracter = value.toUpperCase().substring(i, i + 1);\r\n if (!(v_caracter.charCodeAt(0) >= 48 && v_caracter.charCodeAt(0) <= 57)) {\r\n v_numero_al = v_numero_al + v_caracter.charCodeAt(0);\r\n } else {\r\n v_numero_al = v_numero_al + v_caracter;\r\n }\r\n }\r\n\r\n // Calcula el DV\r\n k = 2;\r\n v_total = 0;\r\n // FOR i IN REVERSE 1 .. LENGTH(v_numero_al) LOOP\r\n for (let i = v_numero_al.length; i > 0; i--) {\r\n if (k > baseMax) {\r\n k = 2;\r\n }\r\n v_numero_aux = parseInt(v_numero_al.substring(i - 1, i));\r\n v_total = v_total + v_numero_aux * k;\r\n k = k + 1;\r\n }\r\n v_resto = v_total % 11;\r\n if (v_resto > 1) {\r\n v_digit = 11 - v_resto;\r\n } else {\r\n v_digit = 0;\r\n }\r\n return v_digit.toString();\r\n};\r\n\r\nexport function normalizeXML(xml: string): string {\r\n xml = xml.split(\"\\r\\n\").join(\"\");\r\n xml = xml.split(\"\\n\").join(\"\");\r\n xml = xml.split(\"\\t\").join(\"\");\r\n xml = xml.split(\" \").join(\"\");\r\n xml = xml.split(\"> <\").join(\"><\");\r\n xml = xml.split(\"> <\").join(\"><\");\r\n xml = xml.replace(/\\r?\\n|\\r/g, \"\");\r\n return xml;\r\n}\r\n\r\nexport const generateConsultRucXml = (consultRucDto: ConsultRucDto): string => {\r\n return `<env:Envelope xmlns:env=\"http://www.w3.org/2003/05/soap-envelope\">\\n\\\r\n <env:Header/>\\n\\\r\n <env:Body>\\n\\\r\n <rEnviConsRUC xmlns=\"http://ekuatia.set.gov.py/sifen/xsd\">\\n\\\r\n <dId>${consultRucDto.id}</dId>\\n\\\r\n <dRUCCons>${consultRucDto.ruc}</dRUCCons>\\n\\\r\n </rEnviConsRUC>\\n\\\r\n </env:Body>\\n\\\r\n </env:Envelope>\\n`;\r\n};\r\n\r\nexport const generateConsultDocumentXml = (\r\n consultDocumentDto: ConsultDocumentDto,\r\n): string => {\r\n return `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n\\\r\n <env:Envelope xmlns:env=\"http://www.w3.org/2003/05/soap-envelope\">\\n\\\r\n <env:Header/>\\n\\\r\n <env:Body>\\n\\\r\n <rEnviConsDeRequest xmlns=\"http://ekuatia.set.gov.py/sifen/xsd\">\\n\\\r\n <dId>${consultDocumentDto.id}</dId>\\n\\\r\n <dCDC>${consultDocumentDto.cdc}</dCDC>\\n\\\r\n </rEnviConsDeRequest>\\n\\\r\n </env:Body>\\n\\\r\n </env:Envelope>\\n`;\r\n};\r\n\r\nexport const generateConsultBatchXml = (\r\n consultBatchDto: ConsultBatchDto,\r\n): string => {\r\n return `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n\\\r\n <env:Envelope xmlns:env=\"http://www.w3.org/2003/05/soap-envelope\">\\n\\\r\n <env:Header/>\\n\\\r\n <env:Body>\\n\\\r\n <rEnviConsLoteDe xmlns=\"http://ekuatia.set.gov.py/sifen/xsd\">\\n\\\r\n <dId>${consultBatchDto.id}</dId>\\n\\\r\n <dProtConsLote>${consultBatchDto.codigoLote}</dProtConsLote>\\n\\\r\n </rEnviConsLoteDe>\\n\\\r\n </env:Body>\\n\\\r\n </env:Envelope>\\n`;\r\n};\r\n\r\nconst OIDS_KEYS = [forge.pki.oids.pkcs8ShroudedKeyBag, forge.pki.oids.keyBag];\r\n\r\nconst obtainBags = (almacen: forge.pkcs12.Pkcs12Pfx): forge.pkcs12.Bag[] =>\r\n almacen.safeContents.flatMap((contenido) => contenido.safeBags);\r\n\r\nexport const readDigitalSign = (\r\n digitalSignDto: DigitalSignDto,\r\n): ResponseDigitalSign => {\r\n const { camino, contraseña } = digitalSignDto;\r\n\r\n const contenidoPfx = readFileSync(camino, { encoding: \"binary\" });\r\n const estructuraAsn1 = forge.asn1.fromDer(contenidoPfx);\r\n const almacen = forge.pkcs12.pkcs12FromAsn1(estructuraAsn1, contraseña);\r\n\r\n const bolsas = obtainBags(almacen);\r\n\r\n const bolsaLlave = bolsas.find(\r\n (bolsa) => OIDS_KEYS.includes(bolsa.type) && bolsa.key,\r\n );\r\n if (!bolsaLlave?.key) {\r\n throw new Error(\"La firma digital no contiene una llave privada\");\r\n }\r\n\r\n const bolsaCertificado = bolsas.find(\r\n (bolsa) => bolsa.type === forge.pki.oids.certBag && bolsa.cert,\r\n );\r\n if (!bolsaCertificado?.cert) {\r\n throw new Error(\"La firma digital no contiene un certificado\");\r\n }\r\n\r\n return {\r\n certificado: forge.pki.certificateToPem(bolsaCertificado.cert),\r\n llavePrivada: forge.pki.privateKeyToPem(bolsaLlave.key),\r\n };\r\n};\r\n\r\nexport const generateQr = async (\r\n generationQrDto: GenerationQrDto,\r\n): Promise<string> => {\r\n try {\r\n const { xml, idCsc, csc, ambiente } = generationQrDto;\r\n\r\n const xmlObject = await xml2js.parseStringPromise(xml);\r\n\r\n if (\r\n !(\r\n xmlObject &&\r\n xmlObject[\"rDE\"] &&\r\n xmlObject[\"rDE\"][\"Signature\"] &&\r\n xmlObject[\"rDE\"][\"Signature\"]\r\n )\r\n ) {\r\n throw new Error(\"XML debe estar firmado digitalmente para generar el QR\");\r\n }\r\n\r\n xmlObject[\"rDE\"][\"gCamFuFD\"] = {};\r\n\r\n let linkQr: string = \"\";\r\n\r\n if (ambiente === SIFEN_ENVIRONMENT.TEST) {\r\n linkQr = LINK_SIFEN.TEST;\r\n } else {\r\n linkQr = LINK_SIFEN.PRODUCCION;\r\n }\r\n\r\n linkQr += \"/qr?\";\r\n\r\n let qr: string = \"\";\r\n\r\n const newVersion = xmlObject[\"rDE\"][\"dVerFor\"][0];\r\n\r\n qr += \"nVersion=\" + newVersion + \"&\";\r\n\r\n const id = xmlObject[\"rDE\"][\"DE\"][0][\"$\"][\"Id\"];\r\n qr += \"Id=\" + id + \"&\";\r\n\r\n let dFeEmiDE = xmlObject[\"rDE\"][\"DE\"][0][\"gDatGralOpe\"][0][\"dFeEmiDE\"][0];\r\n dFeEmiDE = Buffer.from(dFeEmiDE, \"utf8\").toString(\"hex\");\r\n qr += \"dFeEmiDE=\" + dFeEmiDE + \"&\";\r\n\r\n let dRucRec: string = \"\";\r\n\r\n if (\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gDatGralOpe\"][0][\"gDatRec\"][0][\"iNatRec\"][0] ==\r\n 1\r\n ) {\r\n dRucRec =\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gDatGralOpe\"][0][\"gDatRec\"][0][\"dRucRec\"][0];\r\n qr += \"dRucRec=\" + dRucRec + \"&\";\r\n } else {\r\n dRucRec =\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gDatGralOpe\"][0][\"gDatRec\"][0][\r\n \"dNumIDRec\"\r\n ][0];\r\n qr += \"dNumIDRec=\" + dRucRec + \"&\";\r\n }\r\n\r\n let dTotGralOpe: number = 0;\r\n\r\n if (\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"] &&\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"][0] &&\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"][0][\"dTotGralOpe\"] &&\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"][0][\"dTotGralOpe\"][0]\r\n ) {\r\n dTotGralOpe = xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"][0][\"dTotGralOpe\"][0];\r\n }\r\n qr += \"dTotGralOpe=\" + dTotGralOpe + \"&\";\r\n\r\n let dTotIVA: number = 0;\r\n\r\n if (\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"] &&\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"][0] &&\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"][0][\"dTotIVA\"] &&\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"][0][\"dTotIVA\"][0]\r\n ) {\r\n dTotIVA = xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"][0][\"dTotIVA\"][0];\r\n }\r\n qr += \"dTotIVA=\" + dTotIVA + \"&\";\r\n\r\n let cItems: number = 0;\r\n\r\n if (\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gDtipDE\"][0] &&\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gDtipDE\"][0][\"gCamItem\"] &&\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gDtipDE\"][0][\"gCamItem\"].length > 0\r\n ) {\r\n cItems = xmlObject[\"rDE\"][\"DE\"][0][\"gDtipDE\"][0][\"gCamItem\"].length;\r\n }\r\n\r\n qr += \"cItems=\" + cItems + \"&\";\r\n\r\n let digestValue =\r\n xmlObject[\"rDE\"][\"Signature\"][0][\"SignedInfo\"][0][\"Reference\"][0][\r\n \"DigestValue\"\r\n ][0];\r\n\r\n digestValue = Buffer.from(digestValue, \"utf8\").toString(\"hex\");\r\n qr += \"DigestValue=\" + digestValue + \"&\";\r\n\r\n qr += \"IdCSC=\" + idCsc;\r\n\r\n const valueForHash = qr;\r\n const valueHashed = sha256(valueForHash + csc);\r\n\r\n qr += \"&cHashQR=\" + valueHashed;\r\n\r\n xmlObject[\"rDE\"][\"gCamFuFD\"][\"dCarQR\"] = {\r\n _: linkQr + qr,\r\n };\r\n const builder = new xml2js.Builder();\r\n\r\n const xmlWithQR = builder.buildObject(xmlObject);\r\n\r\n return xmlWithQR;\r\n } catch (error) {\r\n throw error;\r\n }\r\n};\r\n","import { ResponseDigitalSign } from \"../../../shared/dto/responseDigitalSign.dto\";\r\nimport {\r\n generateConsultBatchXml,\r\n generateConsultDocumentXml,\r\n generateConsultRucXml,\r\n readDigitalSign,\r\n normalizeXML,\r\n generateQr,\r\n} from \"../../../shared/functions/functions.utils\";\r\nimport {\r\n ConsultRucDto,\r\n ConsultBatchDto,\r\n ConsultDocumentDto,\r\n DigitalSignDto,\r\n GenerationQrDto,\r\n} from \"../../applications/dtos\";\r\nimport { CancelInvoiceDto } from \"../../applications/dtos/cancelDocument.dto\";\r\nimport { InvalidationInvoiceDto } from \"../../applications/dtos/invalidationInvoice.dto\";\r\nimport { SifenRepository } from \"../../domain/repository/sifen.repository\";\r\n\r\nexport class SifenPersistence implements SifenRepository {\r\n consultRuc(consultRucDto: ConsultRucDto): string {\r\n const rucXml = generateConsultRucXml(consultRucDto);\r\n\r\n const xmlFormated = normalizeXML(rucXml);\r\n\r\n return xmlFormated;\r\n }\r\n\r\n consultBatch(consultBatchDto: ConsultBatchDto): string {\r\n const batchXml = generateConsultBatchXml(consultBatchDto);\r\n\r\n const xmlFormated = normalizeXML(batchXml);\r\n\r\n return xmlFormated;\r\n }\r\n\r\n consultDocument(ConsultDocumentDto: ConsultDocumentDto): string {\r\n const documentXml = generateConsultDocumentXml(ConsultDocumentDto);\r\n\r\n const xmlFormated = normalizeXML(documentXml);\r\n\r\n return xmlFormated;\r\n }\r\n\r\n cancelationInvoice(cancelInvoiceDto: CancelInvoiceDto): string {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n invalidationInvoice(invalidationInvoiceDto: InvalidationInvoiceDto): string {\r\n try {\r\n throw new Error(\"Method not implemented.\");\r\n } catch (error) {\r\n console.log(error);\r\n throw error;\r\n }\r\n }\r\n\r\n obtainDigitalSign(digitalSignDto: DigitalSignDto): ResponseDigitalSign {\r\n try {\r\n const digitalSign = readDigitalSign(digitalSignDto);\r\n\r\n return digitalSign;\r\n } catch (error) {\r\n console.log(error);\r\n throw error;\r\n }\r\n }\r\n\r\n async generateQr(generationQrDto: GenerationQrDto): Promise<string> {\r\n try {\r\n const digitalSign = await generateQr(generationQrDto);\r\n\r\n return digitalSign;\r\n } catch (error) {\r\n console.log(error);\r\n throw error;\r\n }\r\n }\r\n}\r\n","import { SifenRepository } from \"../../domain/repository/sifen.repository\";\r\nimport {\r\n ConsultBatchUseCase,\r\n ConsultDocumentUseCase,\r\n ConsultRucUseCase,\r\n GenerateQrUseCase,\r\n ObtainDigitalSignUseCase,\r\n} from \"../../domain/useCases\";\r\nimport { SifenPersistence } from \"../../infrastructure/persistence/sifen.persistence\";\r\nimport {\r\n ConsultBatchDto,\r\n ConsultDocumentDto,\r\n ConsultRucDto,\r\n DigitalSignDto,\r\n GenerationQrDto,\r\n} from \"../dtos\";\r\n\r\nexport class SifenService {\r\n private readonly consultRucUseCase: ConsultRucUseCase;\r\n private readonly consultBatchUseCase: ConsultBatchUseCase;\r\n private readonly consultDocumentUseCase: ConsultDocumentUseCase;\r\n private readonly obtainDigitalSignUseCase: ObtainDigitalSignUseCase;\r\n private readonly generateQrUseCase: GenerateQrUseCase;\r\n private readonly sifenRepository: SifenRepository;\r\n\r\n constructor() {\r\n this.sifenRepository = new SifenPersistence();\r\n this.consultRucUseCase = new ConsultRucUseCase(this.sifenRepository);\r\n this.consultBatchUseCase = new ConsultBatchUseCase(this.sifenRepository);\r\n this.consultDocumentUseCase = new ConsultDocumentUseCase(\r\n this.sifenRepository,\r\n );\r\n this.obtainDigitalSignUseCase = new ObtainDigitalSignUseCase(\r\n this.sifenRepository,\r\n );\r\n this.generateQrUseCase = new GenerateQrUseCase(this.sifenRepository);\r\n }\r\n\r\n consultRuc(consultRucDto: ConsultRucDto) {\r\n const ruc = this.consultRucUseCase.execute(consultRucDto);\r\n return ruc;\r\n }\r\n\r\n consultBatch(consultBatchDto: ConsultBatchDto) {\r\n const batch = this.consultBatchUseCase.execute(consultBatchDto);\r\n return batch;\r\n }\r\n\r\n consultDocument(consultDocumentDto: ConsultDocumentDto) {\r\n const invoice = this.consultDocumentUseCase.execute(consultDocumentDto);\r\n return invoice;\r\n }\r\n\r\n obtainDigitalSign(digitalSignDto: DigitalSignDto) {\r\n const digitalSign = this.obtainDigitalSignUseCase.execute(digitalSignDto);\r\n return digitalSign;\r\n }\r\n\r\n async generateQr(generationQrDto: GenerationQrDto): Promise<string> {\r\n try {\r\n const generationQr =\r\n await this.generateQrUseCase.execute(generationQrDto);\r\n\r\n return generationQr;\r\n } catch (error) {\r\n throw error;\r\n }\r\n }\r\n}\r\n"]}
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import { readFileSync } from 'fs';
2
- import * as forge from 'node-forge';
2
+ import forge from 'node-forge';
3
3
  import * as xml2js from 'xml2js';
4
4
  import sha256 from 'crypto-js/sha256';
5
5
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/sifen/domain/useCases/consultBatch.useCase.ts","../src/sifen/domain/useCases/consultRuc.useCase.ts","../src/sifen/domain/useCases/consultDocument.useCase.ts","../src/sifen/domain/useCases/obtainDigitalSign.useCase.ts","../src/sifen/domain/useCases/generateQr.useCase.ts","../src/shared/functions/functions.utils.ts","../src/sifen/infrastructure/persistence/sifen.persistence.ts","../src/sifen/applications/services/sifen.service.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["import { ConsultBatchDto } from \"../../applications/dtos\";\r\nimport { SifenRepository } from \"../repository/sifen.repository\";\r\n\r\nexport class ConsultBatchUseCase {\r\n constructor(private readonly sifenRepository: SifenRepository) {}\r\n\r\n execute(consultBatchDto: ConsultBatchDto) {\r\n const batch = this.sifenRepository.consultBatch(consultBatchDto);\r\n\r\n return batch;\r\n }\r\n}\r\n","import { ConsultRucDto } from \"../../applications/dtos\";\r\nimport { SifenRepository } from \"../repository/sifen.repository\";\r\n\r\nexport class ConsultRucUseCase {\r\n constructor(private readonly sifenRepository: SifenRepository) {}\r\n\r\n execute(consultRucDto: ConsultRucDto) {\r\n const ruc = this.sifenRepository.consultRuc(consultRucDto);\r\n\r\n return ruc;\r\n }\r\n}\r\n","import { ConsultDocumentDto } from \"../../applications/dtos\";\r\nimport { SifenRepository } from \"../repository/sifen.repository\";\r\n\r\nexport class ConsultDocumentUseCase {\r\n constructor(private readonly sifenRepository: SifenRepository) {}\r\n\r\n execute(consultDocumentDto: ConsultDocumentDto) {\r\n const document = this.sifenRepository.consultDocument(consultDocumentDto);\r\n\r\n return document;\r\n }\r\n}\r\n","import { DigitalSignDto } from \"../../applications/dtos\";\r\nimport { SifenRepository } from \"../repository/sifen.repository\";\r\n\r\nexport class ObtainDigitalSignUseCase {\r\n constructor(private readonly sifenRepository: SifenRepository) {}\r\n\r\n execute(digitalSignDto: DigitalSignDto) {\r\n const digitalSign = this.sifenRepository.obtainDigitalSign(digitalSignDto);\r\n\r\n return digitalSign;\r\n }\r\n}\r\n","import { GenerationQrDto } from \"../../applications/dtos\";\r\nimport { SifenRepository } from \"../repository/sifen.repository\";\r\n\r\nexport class GenerateQrUseCase {\r\n constructor(private readonly sifenRepository: SifenRepository) {}\r\n\r\n async execute(generationQrDto: GenerationQrDto): Promise<string> {\r\n const generationQr = await this.sifenRepository.generateQr(generationQrDto);\r\n\r\n return generationQr;\r\n }\r\n}\r\n","import {\r\n ConsultBatchDto,\r\n ConsultDocumentDto,\r\n ConsultRucDto,\r\n DigitalSignDto,\r\n GenerationQrDto,\r\n} from \"../../sifen/applications/dtos\";\r\nimport { readFileSync } from \"fs\";\r\nimport * as forge from \"node-forge\";\r\nimport { ResponseDigitalSign } from \"../dto/responseDigitalSign.dto\";\r\nimport * as xml2js from \"xml2js\";\r\nimport { LINK_SIFEN, SIFEN_ENVIRONMENT } from \"../utils/dictionary.utils\";\r\nimport sha256 from \"crypto-js/sha256\";\r\n\r\nexport const calculateDigitVerification = (\r\n value: string,\r\n baseMax: number = 11,\r\n): string => {\r\n let v_total = 0;\r\n let v_resto = 0;\r\n let k = 0;\r\n let v_numero_aux = 0;\r\n let v_numero_al = \"\";\r\n let v_caracter = \"\";\r\n let v_digit = 0;\r\n\r\n // Cambia la ultima letra por ascii en caso que la cedula termine en letra\r\n for (let i = 0; i < value.length; i++) {\r\n v_caracter = value.toUpperCase().substring(i, i + 1);\r\n if (!(v_caracter.charCodeAt(0) >= 48 && v_caracter.charCodeAt(0) <= 57)) {\r\n v_numero_al = v_numero_al + v_caracter.charCodeAt(0);\r\n } else {\r\n v_numero_al = v_numero_al + v_caracter;\r\n }\r\n }\r\n\r\n // Calcula el DV\r\n k = 2;\r\n v_total = 0;\r\n // FOR i IN REVERSE 1 .. LENGTH(v_numero_al) LOOP\r\n for (let i = v_numero_al.length; i > 0; i--) {\r\n if (k > baseMax) {\r\n k = 2;\r\n }\r\n v_numero_aux = parseInt(v_numero_al.substring(i - 1, i));\r\n v_total = v_total + v_numero_aux * k;\r\n k = k + 1;\r\n }\r\n v_resto = v_total % 11;\r\n if (v_resto > 1) {\r\n v_digit = 11 - v_resto;\r\n } else {\r\n v_digit = 0;\r\n }\r\n return v_digit.toString();\r\n};\r\n\r\nexport function normalizeXML(xml: string): string {\r\n xml = xml.split(\"\\r\\n\").join(\"\");\r\n xml = xml.split(\"\\n\").join(\"\");\r\n xml = xml.split(\"\\t\").join(\"\");\r\n xml = xml.split(\" \").join(\"\");\r\n xml = xml.split(\"> <\").join(\"><\");\r\n xml = xml.split(\"> <\").join(\"><\");\r\n xml = xml.replace(/\\r?\\n|\\r/g, \"\");\r\n return xml;\r\n}\r\n\r\nexport const generateConsultRucXml = (consultRucDto: ConsultRucDto): string => {\r\n return `<env:Envelope xmlns:env=\"http://www.w3.org/2003/05/soap-envelope\">\\n\\\r\n <env:Header/>\\n\\\r\n <env:Body>\\n\\\r\n <rEnviConsRUC xmlns=\"http://ekuatia.set.gov.py/sifen/xsd\">\\n\\\r\n <dId>${consultRucDto.id}</dId>\\n\\\r\n <dRUCCons>${consultRucDto.ruc}</dRUCCons>\\n\\\r\n </rEnviConsRUC>\\n\\\r\n </env:Body>\\n\\\r\n </env:Envelope>\\n`;\r\n};\r\n\r\nexport const generateConsultDocumentXml = (\r\n consultDocumentDto: ConsultDocumentDto,\r\n): string => {\r\n return `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n\\\r\n <env:Envelope xmlns:env=\"http://www.w3.org/2003/05/soap-envelope\">\\n\\\r\n <env:Header/>\\n\\\r\n <env:Body>\\n\\\r\n <rEnviConsDeRequest xmlns=\"http://ekuatia.set.gov.py/sifen/xsd\">\\n\\\r\n <dId>${consultDocumentDto.id}</dId>\\n\\\r\n <dCDC>${consultDocumentDto.cdc}</dCDC>\\n\\\r\n </rEnviConsDeRequest>\\n\\\r\n </env:Body>\\n\\\r\n </env:Envelope>\\n`;\r\n};\r\n\r\nexport const generateConsultBatchXml = (\r\n consultBatchDto: ConsultBatchDto,\r\n): string => {\r\n return `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n\\\r\n <env:Envelope xmlns:env=\"http://www.w3.org/2003/05/soap-envelope\">\\n\\\r\n <env:Header/>\\n\\\r\n <env:Body>\\n\\\r\n <rEnviConsLoteDe xmlns=\"http://ekuatia.set.gov.py/sifen/xsd\">\\n\\\r\n <dId>${consultBatchDto.id}</dId>\\n\\\r\n <dProtConsLote>${consultBatchDto.codigoLote}</dProtConsLote>\\n\\\r\n </rEnviConsLoteDe>\\n\\\r\n </env:Body>\\n\\\r\n </env:Envelope>\\n`;\r\n};\r\n\r\nconst OIDS_KEYS = [forge.pki.oids.pkcs8ShroudedKeyBag, forge.pki.oids.keyBag];\r\n\r\nconst obtainBags = (almacen: forge.pkcs12.Pkcs12Pfx): forge.pkcs12.Bag[] =>\r\n almacen.safeContents.flatMap((contenido) => contenido.safeBags);\r\n\r\nexport const readDigitalSign = (\r\n digitalSignDto: DigitalSignDto,\r\n): ResponseDigitalSign => {\r\n const { camino, contraseña } = digitalSignDto;\r\n\r\n const contenidoPfx = readFileSync(camino, { encoding: \"binary\" });\r\n const estructuraAsn1 = forge.asn1.fromDer(contenidoPfx);\r\n const almacen = forge.pkcs12.pkcs12FromAsn1(estructuraAsn1, contraseña);\r\n\r\n const bolsas = obtainBags(almacen);\r\n\r\n const bolsaLlave = bolsas.find(\r\n (bolsa) => OIDS_KEYS.includes(bolsa.type) && bolsa.key,\r\n );\r\n if (!bolsaLlave?.key) {\r\n throw new Error(\"La firma digital no contiene una llave privada\");\r\n }\r\n\r\n const bolsaCertificado = bolsas.find(\r\n (bolsa) => bolsa.type === forge.pki.oids.certBag && bolsa.cert,\r\n );\r\n if (!bolsaCertificado?.cert) {\r\n throw new Error(\"La firma digital no contiene un certificado\");\r\n }\r\n\r\n return {\r\n certificado: forge.pki.certificateToPem(bolsaCertificado.cert),\r\n llavePrivada: forge.pki.privateKeyToPem(bolsaLlave.key),\r\n };\r\n};\r\n\r\nexport const generateQr = async (\r\n generationQrDto: GenerationQrDto,\r\n): Promise<string> => {\r\n try {\r\n const { xml, idCsc, csc, ambiente } = generationQrDto;\r\n\r\n const xmlObject = await xml2js.parseStringPromise(xml);\r\n\r\n if (\r\n !(\r\n xmlObject &&\r\n xmlObject[\"rDE\"] &&\r\n xmlObject[\"rDE\"][\"Signature\"] &&\r\n xmlObject[\"rDE\"][\"Signature\"]\r\n )\r\n ) {\r\n throw new Error(\"XML debe estar firmado digitalmente para generar el QR\");\r\n }\r\n\r\n xmlObject[\"rDE\"][\"gCamFuFD\"] = {};\r\n\r\n let linkQr: string = \"\";\r\n\r\n if (ambiente === SIFEN_ENVIRONMENT.TEST) {\r\n linkQr = LINK_SIFEN.TEST;\r\n } else {\r\n linkQr = LINK_SIFEN.PRODUCCION;\r\n }\r\n\r\n linkQr += \"/qr?\";\r\n\r\n let qr: string = \"\";\r\n\r\n const newVersion = xmlObject[\"rDE\"][\"dVerFor\"][0];\r\n\r\n qr += \"nVersion=\" + newVersion + \"&\";\r\n\r\n const id = xmlObject[\"rDE\"][\"DE\"][0][\"$\"][\"Id\"];\r\n qr += \"Id=\" + id + \"&\";\r\n\r\n let dFeEmiDE = xmlObject[\"rDE\"][\"DE\"][0][\"gDatGralOpe\"][0][\"dFeEmiDE\"][0];\r\n dFeEmiDE = Buffer.from(dFeEmiDE, \"utf8\").toString(\"hex\");\r\n qr += \"dFeEmiDE=\" + dFeEmiDE + \"&\";\r\n\r\n let dRucRec: string = \"\";\r\n\r\n if (\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gDatGralOpe\"][0][\"gDatRec\"][0][\"iNatRec\"][0] ==\r\n 1\r\n ) {\r\n dRucRec =\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gDatGralOpe\"][0][\"gDatRec\"][0][\"dRucRec\"][0];\r\n qr += \"dRucRec=\" + dRucRec + \"&\";\r\n } else {\r\n dRucRec =\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gDatGralOpe\"][0][\"gDatRec\"][0][\r\n \"dNumIDRec\"\r\n ][0];\r\n qr += \"dNumIDRec=\" + dRucRec + \"&\";\r\n }\r\n\r\n let dTotGralOpe: number = 0;\r\n\r\n if (\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"] &&\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"][0] &&\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"][0][\"dTotGralOpe\"] &&\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"][0][\"dTotGralOpe\"][0]\r\n ) {\r\n dTotGralOpe = xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"][0][\"dTotGralOpe\"][0];\r\n }\r\n qr += \"dTotGralOpe=\" + dTotGralOpe + \"&\";\r\n\r\n let dTotIVA: number = 0;\r\n\r\n if (\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"] &&\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"][0] &&\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"][0][\"dTotIVA\"] &&\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"][0][\"dTotIVA\"][0]\r\n ) {\r\n dTotIVA = xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"][0][\"dTotIVA\"][0];\r\n }\r\n qr += \"dTotIVA=\" + dTotIVA + \"&\";\r\n\r\n let cItems: number = 0;\r\n\r\n if (\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gDtipDE\"][0] &&\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gDtipDE\"][0][\"gCamItem\"] &&\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gDtipDE\"][0][\"gCamItem\"].length > 0\r\n ) {\r\n cItems = xmlObject[\"rDE\"][\"DE\"][0][\"gDtipDE\"][0][\"gCamItem\"].length;\r\n }\r\n\r\n qr += \"cItems=\" + cItems + \"&\";\r\n\r\n let digestValue =\r\n xmlObject[\"rDE\"][\"Signature\"][0][\"SignedInfo\"][0][\"Reference\"][0][\r\n \"DigestValue\"\r\n ][0];\r\n\r\n digestValue = Buffer.from(digestValue, \"utf8\").toString(\"hex\");\r\n qr += \"DigestValue=\" + digestValue + \"&\";\r\n\r\n qr += \"IdCSC=\" + idCsc;\r\n\r\n const valueForHash = qr;\r\n const valueHashed = sha256(valueForHash + csc);\r\n\r\n qr += \"&cHashQR=\" + valueHashed;\r\n\r\n xmlObject[\"rDE\"][\"gCamFuFD\"][\"dCarQR\"] = {\r\n _: linkQr + qr,\r\n };\r\n const builder = new xml2js.Builder();\r\n\r\n const xmlWithQR = builder.buildObject(xmlObject);\r\n\r\n return xmlWithQR;\r\n } catch (error) {\r\n throw error;\r\n }\r\n};\r\n","import { ResponseDigitalSign } from \"../../../shared/dto/responseDigitalSign.dto\";\r\nimport {\r\n generateConsultBatchXml,\r\n generateConsultDocumentXml,\r\n generateConsultRucXml,\r\n readDigitalSign,\r\n normalizeXML,\r\n generateQr,\r\n} from \"../../../shared/functions/functions.utils\";\r\nimport {\r\n ConsultRucDto,\r\n ConsultBatchDto,\r\n ConsultDocumentDto,\r\n DigitalSignDto,\r\n GenerationQrDto,\r\n} from \"../../applications/dtos\";\r\nimport { CancelInvoiceDto } from \"../../applications/dtos/cancelDocument.dto\";\r\nimport { InvalidationInvoiceDto } from \"../../applications/dtos/invalidationInvoice.dto\";\r\nimport { SifenRepository } from \"../../domain/repository/sifen.repository\";\r\n\r\nexport class SifenPersistence implements SifenRepository {\r\n consultRuc(consultRucDto: ConsultRucDto): string {\r\n const rucXml = generateConsultRucXml(consultRucDto);\r\n\r\n const xmlFormated = normalizeXML(rucXml);\r\n\r\n return xmlFormated;\r\n }\r\n\r\n consultBatch(consultBatchDto: ConsultBatchDto): string {\r\n const batchXml = generateConsultBatchXml(consultBatchDto);\r\n\r\n const xmlFormated = normalizeXML(batchXml);\r\n\r\n return xmlFormated;\r\n }\r\n\r\n consultDocument(ConsultDocumentDto: ConsultDocumentDto): string {\r\n const documentXml = generateConsultDocumentXml(ConsultDocumentDto);\r\n\r\n const xmlFormated = normalizeXML(documentXml);\r\n\r\n return xmlFormated;\r\n }\r\n\r\n cancelationInvoice(cancelInvoiceDto: CancelInvoiceDto): string {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n invalidationInvoice(invalidationInvoiceDto: InvalidationInvoiceDto): string {\r\n try {\r\n throw new Error(\"Method not implemented.\");\r\n } catch (error) {\r\n console.log(error);\r\n throw error;\r\n }\r\n }\r\n\r\n obtainDigitalSign(digitalSignDto: DigitalSignDto): ResponseDigitalSign {\r\n try {\r\n const digitalSign = readDigitalSign(digitalSignDto);\r\n\r\n return digitalSign;\r\n } catch (error) {\r\n console.log(error);\r\n throw error;\r\n }\r\n }\r\n\r\n async generateQr(generationQrDto: GenerationQrDto): Promise<string> {\r\n try {\r\n const digitalSign = await generateQr(generationQrDto);\r\n\r\n return digitalSign;\r\n } catch (error) {\r\n console.log(error);\r\n throw error;\r\n }\r\n }\r\n}\r\n","import { SifenRepository } from \"../../domain/repository/sifen.repository\";\r\nimport {\r\n ConsultBatchUseCase,\r\n ConsultDocumentUseCase,\r\n ConsultRucUseCase,\r\n GenerateQrUseCase,\r\n ObtainDigitalSignUseCase,\r\n} from \"../../domain/useCases\";\r\nimport { SifenPersistence } from \"../../infrastructure/persistence/sifen.persistence\";\r\nimport {\r\n ConsultBatchDto,\r\n ConsultDocumentDto,\r\n ConsultRucDto,\r\n DigitalSignDto,\r\n GenerationQrDto,\r\n} from \"../dtos\";\r\n\r\nexport class SifenService {\r\n private readonly consultRucUseCase: ConsultRucUseCase;\r\n private readonly consultBatchUseCase: ConsultBatchUseCase;\r\n private readonly consultDocumentUseCase: ConsultDocumentUseCase;\r\n private readonly obtainDigitalSignUseCase: ObtainDigitalSignUseCase;\r\n private readonly generateQrUseCase: GenerateQrUseCase;\r\n private readonly sifenRepository: SifenRepository;\r\n\r\n constructor() {\r\n this.sifenRepository = new SifenPersistence();\r\n this.consultRucUseCase = new ConsultRucUseCase(this.sifenRepository);\r\n this.consultBatchUseCase = new ConsultBatchUseCase(this.sifenRepository);\r\n this.consultDocumentUseCase = new ConsultDocumentUseCase(\r\n this.sifenRepository,\r\n );\r\n this.obtainDigitalSignUseCase = new ObtainDigitalSignUseCase(\r\n this.sifenRepository,\r\n );\r\n this.generateQrUseCase = new GenerateQrUseCase(this.sifenRepository);\r\n }\r\n\r\n consultRuc(consultRucDto: ConsultRucDto) {\r\n const ruc = this.consultRucUseCase.execute(consultRucDto);\r\n return ruc;\r\n }\r\n\r\n consultBatch(consultBatchDto: ConsultBatchDto) {\r\n const batch = this.consultBatchUseCase.execute(consultBatchDto);\r\n return batch;\r\n }\r\n\r\n consultDocument(consultDocumentDto: ConsultDocumentDto) {\r\n const invoice = this.consultDocumentUseCase.execute(consultDocumentDto);\r\n return invoice;\r\n }\r\n\r\n obtainDigitalSign(digitalSignDto: DigitalSignDto) {\r\n const digitalSign = this.obtainDigitalSignUseCase.execute(digitalSignDto);\r\n return digitalSign;\r\n }\r\n\r\n async generateQr(generationQrDto: GenerationQrDto): Promise<string> {\r\n try {\r\n const generationQr =\r\n await this.generateQrUseCase.execute(generationQrDto);\r\n\r\n return generationQr;\r\n } catch (error) {\r\n throw error;\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"sources":["../src/sifen/domain/useCases/consultBatch.useCase.ts","../src/sifen/domain/useCases/consultRuc.useCase.ts","../src/sifen/domain/useCases/consultDocument.useCase.ts","../src/sifen/domain/useCases/obtainDigitalSign.useCase.ts","../src/sifen/domain/useCases/generateQr.useCase.ts","../src/shared/functions/functions.utils.ts","../src/sifen/infrastructure/persistence/sifen.persistence.ts","../src/sifen/applications/services/sifen.service.ts"],"names":[],"mappings":";;;;;;AAGO,IAAM,sBAAN,MAA0B;AAAA,EAC/B,YAA6B,eAAA,EAAkC;AAAlC,IAAA,IAAA,CAAA,eAAA,GAAA,eAAA;AAAA,EAAmC;AAAA,EAAnC,eAAA;AAAA,EAE7B,QAAQ,eAAA,EAAkC;AACxC,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,eAAA,CAAgB,YAAA,CAAa,eAAe,CAAA;AAE/D,IAAA,OAAO,KAAA;AAAA,EACT;AACF,CAAA;;;ACRO,IAAM,oBAAN,MAAwB;AAAA,EAC7B,YAA6B,eAAA,EAAkC;AAAlC,IAAA,IAAA,CAAA,eAAA,GAAA,eAAA;AAAA,EAAmC;AAAA,EAAnC,eAAA;AAAA,EAE7B,QAAQ,aAAA,EAA8B;AACpC,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,eAAA,CAAgB,UAAA,CAAW,aAAa,CAAA;AAEzD,IAAA,OAAO,GAAA;AAAA,EACT;AACF,CAAA;;;ACRO,IAAM,yBAAN,MAA6B;AAAA,EAClC,YAA6B,eAAA,EAAkC;AAAlC,IAAA,IAAA,CAAA,eAAA,GAAA,eAAA;AAAA,EAAmC;AAAA,EAAnC,eAAA;AAAA,EAE7B,QAAQ,kBAAA,EAAwC;AAC9C,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,eAAA,CAAgB,eAAA,CAAgB,kBAAkB,CAAA;AAExE,IAAA,OAAO,QAAA;AAAA,EACT;AACF,CAAA;;;ACRO,IAAM,2BAAN,MAA+B;AAAA,EACpC,YAA6B,eAAA,EAAkC;AAAlC,IAAA,IAAA,CAAA,eAAA,GAAA,eAAA;AAAA,EAAmC;AAAA,EAAnC,eAAA;AAAA,EAE7B,QAAQ,cAAA,EAAgC;AACtC,IAAA,MAAM,WAAA,GAAc,IAAA,CAAK,eAAA,CAAgB,iBAAA,CAAkB,cAAc,CAAA;AAEzE,IAAA,OAAO,WAAA;AAAA,EACT;AACF,CAAA;;;ACRO,IAAM,oBAAN,MAAwB;AAAA,EAC7B,YAA6B,eAAA,EAAkC;AAAlC,IAAA,IAAA,CAAA,eAAA,GAAA,eAAA;AAAA,EAAmC;AAAA,EAAnC,eAAA;AAAA,EAE7B,MAAM,QAAQ,eAAA,EAAmD;AAC/D,IAAA,MAAM,YAAA,GAAe,MAAM,IAAA,CAAK,eAAA,CAAgB,WAAW,eAAe,CAAA;AAE1E,IAAA,OAAO,YAAA;AAAA,EACT;AACF,CAAA;AC8CO,SAAS,aAAa,GAAA,EAAqB;AAChD,EAAA,GAAA,GAAM,GAAA,CAAI,KAAA,CAAM,MAAM,CAAA,CAAE,KAAK,EAAE,CAAA;AAC/B,EAAA,GAAA,GAAM,GAAA,CAAI,KAAA,CAAM,IAAI,CAAA,CAAE,KAAK,EAAE,CAAA;AAC7B,EAAA,GAAA,GAAM,GAAA,CAAI,KAAA,CAAM,GAAI,CAAA,CAAE,KAAK,EAAE,CAAA;AAC7B,EAAA,GAAA,GAAM,GAAA,CAAI,KAAA,CAAM,MAAM,CAAA,CAAE,KAAK,EAAE,CAAA;AAC/B,EAAA,GAAA,GAAM,GAAA,CAAI,KAAA,CAAM,QAAQ,CAAA,CAAE,KAAK,IAAI,CAAA;AACnC,EAAA,GAAA,GAAM,GAAA,CAAI,KAAA,CAAM,MAAM,CAAA,CAAE,KAAK,IAAI,CAAA;AACjC,EAAA,GAAA,GAAM,GAAA,CAAI,OAAA,CAAQ,WAAA,EAAa,EAAE,CAAA;AACjC,EAAA,OAAO,GAAA;AACT;AAEO,IAAM,qBAAA,GAAwB,CAAC,aAAA,KAAyC;AAC7E,EAAA,OAAO,CAAA;AAAA;AAAA;AAAA;AAAA,mCAAA,EAI4B,cAAc,EAAE,CAAA;AAAA,wCAAA,EACX,cAAc,GAAG,CAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAI3D,CAAA;AAEO,IAAM,0BAAA,GAA6B,CACxC,kBAAA,KACW;AACX,EAAA,OAAO,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAA,EAKc,mBAAmB,EAAE,CAAA;AAAA,sBAAA,EACpB,mBAAmB,GAAG,CAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAI9C,CAAA;AAEO,IAAM,uBAAA,GAA0B,CACrC,eAAA,KACW;AACX,EAAA,OAAO,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,+BAAA,EAKwB,gBAAgB,EAAE,CAAA;AAAA,yCAAA,EACR,gBAAgB,UAAU,CAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAIrE,CAAA;AAEA,IAAM,SAAA,GAAY,CAAC,KAAA,CAAM,GAAA,CAAI,KAAK,mBAAA,EAAqB,KAAA,CAAM,GAAA,CAAI,IAAA,CAAK,MAAM,CAAA;AAE5E,IAAM,UAAA,GAAa,CAAC,OAAA,KAClB,OAAA,CAAQ,aAAa,OAAA,CAAQ,CAAC,SAAA,KAAc,SAAA,CAAU,QAAQ,CAAA;AAEzD,IAAM,eAAA,GAAkB,CAC7B,cAAA,KACwB;AACxB,EAAA,MAAM,EAAE,MAAA,EAAQ,eAAA,EAAW,GAAI,cAAA;AAE/B,EAAA,MAAM,eAAe,YAAA,CAAa,MAAA,EAAQ,EAAE,QAAA,EAAU,UAAU,CAAA;AAChE,EAAA,MAAM,cAAA,GAAiB,KAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,YAAY,CAAA;AACtD,EAAA,MAAM,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,cAAA,CAAe,gBAAgB,eAAU,CAAA;AAEtE,EAAA,MAAM,MAAA,GAAS,WAAW,OAAO,CAAA;AAEjC,EAAA,MAAM,aAAa,MAAA,CAAO,IAAA;AAAA,IACxB,CAAC,KAAA,KAAU,SAAA,CAAU,SAAS,KAAA,CAAM,IAAI,KAAK,KAAA,CAAM;AAAA,GACrD;AACA,EAAA,IAAI,CAAC,YAAY,GAAA,EAAK;AACpB,IAAA,MAAM,IAAI,MAAM,gDAAgD,CAAA;AAAA,EAClE;AAEA,EAAA,MAAM,mBAAmB,MAAA,CAAO,IAAA;AAAA,IAC9B,CAAC,UAAU,KAAA,CAAM,IAAA,KAAS,MAAM,GAAA,CAAI,IAAA,CAAK,WAAW,KAAA,CAAM;AAAA,GAC5D;AACA,EAAA,IAAI,CAAC,kBAAkB,IAAA,EAAM;AAC3B,IAAA,MAAM,IAAI,MAAM,6CAA6C,CAAA;AAAA,EAC/D;AAEA,EAAA,OAAO;AAAA,IACL,WAAA,EAAa,KAAA,CAAM,GAAA,CAAI,gBAAA,CAAiB,iBAAiB,IAAI,CAAA;AAAA,IAC7D,YAAA,EAAc,KAAA,CAAM,GAAA,CAAI,eAAA,CAAgB,WAAW,GAAG;AAAA,GACxD;AACF,CAAA;AAEO,IAAM,UAAA,GAAa,OACxB,eAAA,KACoB;AACpB,EAAA,IAAI;AACF,IAAA,MAAM,EAAE,GAAA,EAAK,KAAA,EAAO,GAAA,EAAK,UAAS,GAAI,eAAA;AAEtC,IAAA,MAAM,SAAA,GAAY,MAAa,MAAA,CAAA,kBAAA,CAAmB,GAAG,CAAA;AAErD,IAAA,IACE,EACE,SAAA,IACA,SAAA,CAAU,KAAK,KACf,SAAA,CAAU,KAAK,CAAA,CAAE,WAAW,CAAA,IAC5B,SAAA,CAAU,KAAK,CAAA,CAAE,WAAW,CAAA,CAAA,EAE9B;AACA,MAAA,MAAM,IAAI,MAAM,wDAAwD,CAAA;AAAA,IAC1E;AAEA,IAAA,SAAA,CAAU,KAAK,CAAA,CAAE,UAAU,CAAA,GAAI,EAAC;AAEhC,IAAA,IAAI,MAAA,GAAiB,EAAA;AAErB,IAAA,IAAI,QAAA,KAAA,MAAA,aAAqC;AACvC,MAAA,MAAA,GAAA,2CAAA;AAAA,IACF,CAAA,MAAO;AACL,MAAA,MAAA,GAAA,sCAAA;AAAA,IACF;AAEA,IAAA,MAAA,IAAU,MAAA;AAEV,IAAA,IAAI,EAAA,GAAa,EAAA;AAEjB,IAAA,MAAM,aAAa,SAAA,CAAU,KAAK,CAAA,CAAE,SAAS,EAAE,CAAC,CAAA;AAEhD,IAAA,EAAA,IAAM,cAAc,UAAA,GAAa,GAAA;AAEjC,IAAA,MAAM,EAAA,GAAK,SAAA,CAAU,KAAK,CAAA,CAAE,IAAI,EAAE,CAAC,CAAA,CAAE,GAAG,CAAA,CAAE,IAAI,CAAA;AAC9C,IAAA,EAAA,IAAM,QAAQ,EAAA,GAAK,GAAA;AAEnB,IAAA,IAAI,QAAA,GAAW,SAAA,CAAU,KAAK,CAAA,CAAE,IAAI,CAAA,CAAE,CAAC,CAAA,CAAE,aAAa,CAAA,CAAE,CAAC,CAAA,CAAE,UAAU,EAAE,CAAC,CAAA;AACxE,IAAA,QAAA,GAAW,OAAO,IAAA,CAAK,QAAA,EAAU,MAAM,CAAA,CAAE,SAAS,KAAK,CAAA;AACvD,IAAA,EAAA,IAAM,cAAc,QAAA,GAAW,GAAA;AAE/B,IAAA,IAAI,OAAA,GAAkB,EAAA;AAEtB,IAAA,IACE,UAAU,KAAK,CAAA,CAAE,IAAI,CAAA,CAAE,CAAC,EAAE,aAAa,CAAA,CAAE,CAAC,CAAA,CAAE,SAAS,EAAE,CAAC,CAAA,CAAE,SAAS,CAAA,CAAE,CAAC,KACtE,CAAA,EACA;AACA,MAAA,OAAA,GACE,UAAU,KAAK,CAAA,CAAE,IAAI,CAAA,CAAE,CAAC,CAAA,CAAE,aAAa,CAAA,CAAE,CAAC,EAAE,SAAS,CAAA,CAAE,CAAC,CAAA,CAAE,SAAS,EAAE,CAAC,CAAA;AACxE,MAAA,EAAA,IAAM,aAAa,OAAA,GAAU,GAAA;AAAA,IAC/B,CAAA,MAAO;AACL,MAAA,OAAA,GACE,UAAU,KAAK,CAAA,CAAE,IAAI,CAAA,CAAE,CAAC,CAAA,CAAE,aAAa,CAAA,CAAE,CAAC,EAAE,SAAS,CAAA,CAAE,CAAC,CAAA,CACtD,WACF,EAAE,CAAC,CAAA;AACL,MAAA,EAAA,IAAM,eAAe,OAAA,GAAU,GAAA;AAAA,IACjC;AAEA,IAAA,IAAI,WAAA,GAAsB,CAAA;AAE1B,IAAA,IACE,SAAA,CAAU,KAAK,CAAA,CAAE,IAAI,EAAE,CAAC,CAAA,CAAE,SAAS,CAAA,IACnC,SAAA,CAAU,KAAK,CAAA,CAAE,IAAI,EAAE,CAAC,CAAA,CAAE,SAAS,CAAA,CAAE,CAAC,CAAA,IACtC,SAAA,CAAU,KAAK,CAAA,CAAE,IAAI,CAAA,CAAE,CAAC,EAAE,SAAS,CAAA,CAAE,CAAC,CAAA,CAAE,aAAa,CAAA,IACrD,SAAA,CAAU,KAAK,CAAA,CAAE,IAAI,CAAA,CAAE,CAAC,EAAE,SAAS,CAAA,CAAE,CAAC,CAAA,CAAE,aAAa,CAAA,CAAE,CAAC,CAAA,EACxD;AACA,MAAA,WAAA,GAAc,SAAA,CAAU,KAAK,CAAA,CAAE,IAAI,CAAA,CAAE,CAAC,CAAA,CAAE,SAAS,CAAA,CAAE,CAAC,CAAA,CAAE,aAAa,EAAE,CAAC,CAAA;AAAA,IACxE;AACA,IAAA,EAAA,IAAM,iBAAiB,WAAA,GAAc,GAAA;AAErC,IAAA,IAAI,OAAA,GAAkB,CAAA;AAEtB,IAAA,IACE,SAAA,CAAU,KAAK,CAAA,CAAE,IAAI,EAAE,CAAC,CAAA,CAAE,SAAS,CAAA,IACnC,SAAA,CAAU,KAAK,CAAA,CAAE,IAAI,EAAE,CAAC,CAAA,CAAE,SAAS,CAAA,CAAE,CAAC,CAAA,IACtC,SAAA,CAAU,KAAK,CAAA,CAAE,IAAI,CAAA,CAAE,CAAC,EAAE,SAAS,CAAA,CAAE,CAAC,CAAA,CAAE,SAAS,CAAA,IACjD,SAAA,CAAU,KAAK,CAAA,CAAE,IAAI,CAAA,CAAE,CAAC,EAAE,SAAS,CAAA,CAAE,CAAC,CAAA,CAAE,SAAS,CAAA,CAAE,CAAC,CAAA,EACpD;AACA,MAAA,OAAA,GAAU,SAAA,CAAU,KAAK,CAAA,CAAE,IAAI,CAAA,CAAE,CAAC,CAAA,CAAE,SAAS,CAAA,CAAE,CAAC,CAAA,CAAE,SAAS,EAAE,CAAC,CAAA;AAAA,IAChE;AACA,IAAA,EAAA,IAAM,aAAa,OAAA,GAAU,GAAA;AAE7B,IAAA,IAAI,MAAA,GAAiB,CAAA;AAErB,IAAA,IACE,UAAU,KAAK,CAAA,CAAE,IAAI,CAAA,CAAE,CAAC,CAAA,CAAE,SAAS,CAAA,CAAE,CAAC,KACtC,SAAA,CAAU,KAAK,EAAE,IAAI,CAAA,CAAE,CAAC,CAAA,CAAE,SAAS,CAAA,CAAE,CAAC,EAAE,UAAU,CAAA,IAClD,SAAA,CAAU,KAAK,EAAE,IAAI,CAAA,CAAE,CAAC,CAAA,CAAE,SAAS,CAAA,CAAE,CAAC,EAAE,UAAU,CAAA,CAAE,SAAS,CAAA,EAC7D;AACA,MAAA,MAAA,GAAS,SAAA,CAAU,KAAK,CAAA,CAAE,IAAI,CAAA,CAAE,CAAC,CAAA,CAAE,SAAS,CAAA,CAAE,CAAC,CAAA,CAAE,UAAU,CAAA,CAAE,MAAA;AAAA,IAC/D;AAEA,IAAA,EAAA,IAAM,YAAY,MAAA,GAAS,GAAA;AAE3B,IAAA,IAAI,cACF,SAAA,CAAU,KAAK,EAAE,WAAW,CAAA,CAAE,CAAC,CAAA,CAAE,YAAY,CAAA,CAAE,CAAC,EAAE,WAAW,CAAA,CAAE,CAAC,CAAA,CAC9D,aACF,EAAE,CAAC,CAAA;AAEL,IAAA,WAAA,GAAc,OAAO,IAAA,CAAK,WAAA,EAAa,MAAM,CAAA,CAAE,SAAS,KAAK,CAAA;AAC7D,IAAA,EAAA,IAAM,iBAAiB,WAAA,GAAc,GAAA;AAErC,IAAA,EAAA,IAAM,QAAA,GAAW,KAAA;AAEjB,IAAA,MAAM,YAAA,GAAe,EAAA;AACrB,IAAA,MAAM,WAAA,GAAc,MAAA,CAAO,YAAA,GAAe,GAAG,CAAA;AAE7C,IAAA,EAAA,IAAM,WAAA,GAAc,WAAA;AAEpB,IAAA,SAAA,CAAU,KAAK,CAAA,CAAE,UAAU,CAAA,CAAE,QAAQ,CAAA,GAAI;AAAA,MACvC,GAAG,MAAA,GAAS;AAAA,KACd;AACA,IAAA,MAAM,OAAA,GAAU,IAAW,MAAA,CAAA,OAAA,EAAQ;AAEnC,IAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,WAAA,CAAY,SAAS,CAAA;AAE/C,IAAA,OAAO,SAAA;AAAA,EACT,SAAS,KAAA,EAAO;AACd,IAAA,MAAM,KAAA;AAAA,EACR;AACF,CAAA;;;ACzPO,IAAM,mBAAN,MAAkD;AAAA,EACvD,WAAW,aAAA,EAAsC;AAC/C,IAAA,MAAM,MAAA,GAAS,sBAAsB,aAAa,CAAA;AAElD,IAAA,MAAM,WAAA,GAAc,aAAa,MAAM,CAAA;AAEvC,IAAA,OAAO,WAAA;AAAA,EACT;AAAA,EAEA,aAAa,eAAA,EAA0C;AACrD,IAAA,MAAM,QAAA,GAAW,wBAAwB,eAAe,CAAA;AAExD,IAAA,MAAM,WAAA,GAAc,aAAa,QAAQ,CAAA;AAEzC,IAAA,OAAO,WAAA;AAAA,EACT;AAAA,EAEA,gBAAgB,kBAAA,EAAgD;AAC9D,IAAA,MAAM,WAAA,GAAc,2BAA2B,kBAAkB,CAAA;AAEjE,IAAA,MAAM,WAAA,GAAc,aAAa,WAAW,CAAA;AAE5C,IAAA,OAAO,WAAA;AAAA,EACT;AAAA,EAEA,mBAAmB,gBAAA,EAA4C;AAC7D,IAAA,MAAM,IAAI,MAAM,yBAAyB,CAAA;AAAA,EAC3C;AAAA,EAEA,oBAAoB,sBAAA,EAAwD;AAC1E,IAAA,IAAI;AACF,MAAA,MAAM,IAAI,MAAM,yBAAyB,CAAA;AAAA,IAC3C,SAAS,KAAA,EAAO;AACd,MAAA,OAAA,CAAQ,IAAI,KAAK,CAAA;AACjB,MAAA,MAAM,KAAA;AAAA,IACR;AAAA,EACF;AAAA,EAEA,kBAAkB,cAAA,EAAqD;AACrE,IAAA,IAAI;AACF,MAAA,MAAM,WAAA,GAAc,gBAAgB,cAAc,CAAA;AAElD,MAAA,OAAO,WAAA;AAAA,IACT,SAAS,KAAA,EAAO;AACd,MAAA,OAAA,CAAQ,IAAI,KAAK,CAAA;AACjB,MAAA,MAAM,KAAA;AAAA,IACR;AAAA,EACF;AAAA,EAEA,MAAM,WAAW,eAAA,EAAmD;AAClE,IAAA,IAAI;AACF,MAAA,MAAM,WAAA,GAAc,MAAM,UAAA,CAAW,eAAe,CAAA;AAEpD,MAAA,OAAO,WAAA;AAAA,IACT,SAAS,KAAA,EAAO;AACd,MAAA,OAAA,CAAQ,IAAI,KAAK,CAAA;AACjB,MAAA,MAAM,KAAA;AAAA,IACR;AAAA,EACF;AACF,CAAA;;;AC9DO,IAAM,eAAN,MAAmB;AAAA,EACP,iBAAA;AAAA,EACA,mBAAA;AAAA,EACA,sBAAA;AAAA,EACA,wBAAA;AAAA,EACA,iBAAA;AAAA,EACA,eAAA;AAAA,EAEjB,WAAA,GAAc;AACZ,IAAA,IAAA,CAAK,eAAA,GAAkB,IAAI,gBAAA,EAAiB;AAC5C,IAAA,IAAA,CAAK,iBAAA,GAAoB,IAAI,iBAAA,CAAkB,IAAA,CAAK,eAAe,CAAA;AACnE,IAAA,IAAA,CAAK,mBAAA,GAAsB,IAAI,mBAAA,CAAoB,IAAA,CAAK,eAAe,CAAA;AACvE,IAAA,IAAA,CAAK,yBAAyB,IAAI,sBAAA;AAAA,MAChC,IAAA,CAAK;AAAA,KACP;AACA,IAAA,IAAA,CAAK,2BAA2B,IAAI,wBAAA;AAAA,MAClC,IAAA,CAAK;AAAA,KACP;AACA,IAAA,IAAA,CAAK,iBAAA,GAAoB,IAAI,iBAAA,CAAkB,IAAA,CAAK,eAAe,CAAA;AAAA,EACrE;AAAA,EAEA,WAAW,aAAA,EAA8B;AACvC,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,iBAAA,CAAkB,OAAA,CAAQ,aAAa,CAAA;AACxD,IAAA,OAAO,GAAA;AAAA,EACT;AAAA,EAEA,aAAa,eAAA,EAAkC;AAC7C,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,mBAAA,CAAoB,OAAA,CAAQ,eAAe,CAAA;AAC9D,IAAA,OAAO,KAAA;AAAA,EACT;AAAA,EAEA,gBAAgB,kBAAA,EAAwC;AACtD,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,sBAAA,CAAuB,OAAA,CAAQ,kBAAkB,CAAA;AACtE,IAAA,OAAO,OAAA;AAAA,EACT;AAAA,EAEA,kBAAkB,cAAA,EAAgC;AAChD,IAAA,MAAM,WAAA,GAAc,IAAA,CAAK,wBAAA,CAAyB,OAAA,CAAQ,cAAc,CAAA;AACxE,IAAA,OAAO,WAAA;AAAA,EACT;AAAA,EAEA,MAAM,WAAW,eAAA,EAAmD;AAClE,IAAA,IAAI;AACF,MAAA,MAAM,YAAA,GACJ,MAAM,IAAA,CAAK,iBAAA,CAAkB,QAAQ,eAAe,CAAA;AAEtD,MAAA,OAAO,YAAA;AAAA,IACT,SAAS,KAAA,EAAO;AACd,MAAA,MAAM,KAAA;AAAA,IACR;AAAA,EACF;AACF","file":"index.mjs","sourcesContent":["import { ConsultBatchDto } from \"../../applications/dtos\";\r\nimport { SifenRepository } from \"../repository/sifen.repository\";\r\n\r\nexport class ConsultBatchUseCase {\r\n constructor(private readonly sifenRepository: SifenRepository) {}\r\n\r\n execute(consultBatchDto: ConsultBatchDto) {\r\n const batch = this.sifenRepository.consultBatch(consultBatchDto);\r\n\r\n return batch;\r\n }\r\n}\r\n","import { ConsultRucDto } from \"../../applications/dtos\";\r\nimport { SifenRepository } from \"../repository/sifen.repository\";\r\n\r\nexport class ConsultRucUseCase {\r\n constructor(private readonly sifenRepository: SifenRepository) {}\r\n\r\n execute(consultRucDto: ConsultRucDto) {\r\n const ruc = this.sifenRepository.consultRuc(consultRucDto);\r\n\r\n return ruc;\r\n }\r\n}\r\n","import { ConsultDocumentDto } from \"../../applications/dtos\";\r\nimport { SifenRepository } from \"../repository/sifen.repository\";\r\n\r\nexport class ConsultDocumentUseCase {\r\n constructor(private readonly sifenRepository: SifenRepository) {}\r\n\r\n execute(consultDocumentDto: ConsultDocumentDto) {\r\n const document = this.sifenRepository.consultDocument(consultDocumentDto);\r\n\r\n return document;\r\n }\r\n}\r\n","import { DigitalSignDto } from \"../../applications/dtos\";\r\nimport { SifenRepository } from \"../repository/sifen.repository\";\r\n\r\nexport class ObtainDigitalSignUseCase {\r\n constructor(private readonly sifenRepository: SifenRepository) {}\r\n\r\n execute(digitalSignDto: DigitalSignDto) {\r\n const digitalSign = this.sifenRepository.obtainDigitalSign(digitalSignDto);\r\n\r\n return digitalSign;\r\n }\r\n}\r\n","import { GenerationQrDto } from \"../../applications/dtos\";\r\nimport { SifenRepository } from \"../repository/sifen.repository\";\r\n\r\nexport class GenerateQrUseCase {\r\n constructor(private readonly sifenRepository: SifenRepository) {}\r\n\r\n async execute(generationQrDto: GenerationQrDto): Promise<string> {\r\n const generationQr = await this.sifenRepository.generateQr(generationQrDto);\r\n\r\n return generationQr;\r\n }\r\n}\r\n","import {\r\n ConsultBatchDto,\r\n ConsultDocumentDto,\r\n ConsultRucDto,\r\n DigitalSignDto,\r\n GenerationQrDto,\r\n} from \"../../sifen/applications/dtos\";\r\nimport { readFileSync } from \"fs\";\r\nimport forge from \"node-forge\";\r\nimport { ResponseDigitalSign } from \"../dto/responseDigitalSign.dto\";\r\nimport * as xml2js from \"xml2js\";\r\nimport { LINK_SIFEN, SIFEN_ENVIRONMENT } from \"../utils/dictionary.utils\";\r\nimport sha256 from \"crypto-js/sha256\";\r\n\r\nexport const calculateDigitVerification = (\r\n value: string,\r\n baseMax: number = 11,\r\n): string => {\r\n let v_total = 0;\r\n let v_resto = 0;\r\n let k = 0;\r\n let v_numero_aux = 0;\r\n let v_numero_al = \"\";\r\n let v_caracter = \"\";\r\n let v_digit = 0;\r\n\r\n // Cambia la ultima letra por ascii en caso que la cedula termine en letra\r\n for (let i = 0; i < value.length; i++) {\r\n v_caracter = value.toUpperCase().substring(i, i + 1);\r\n if (!(v_caracter.charCodeAt(0) >= 48 && v_caracter.charCodeAt(0) <= 57)) {\r\n v_numero_al = v_numero_al + v_caracter.charCodeAt(0);\r\n } else {\r\n v_numero_al = v_numero_al + v_caracter;\r\n }\r\n }\r\n\r\n // Calcula el DV\r\n k = 2;\r\n v_total = 0;\r\n // FOR i IN REVERSE 1 .. LENGTH(v_numero_al) LOOP\r\n for (let i = v_numero_al.length; i > 0; i--) {\r\n if (k > baseMax) {\r\n k = 2;\r\n }\r\n v_numero_aux = parseInt(v_numero_al.substring(i - 1, i));\r\n v_total = v_total + v_numero_aux * k;\r\n k = k + 1;\r\n }\r\n v_resto = v_total % 11;\r\n if (v_resto > 1) {\r\n v_digit = 11 - v_resto;\r\n } else {\r\n v_digit = 0;\r\n }\r\n return v_digit.toString();\r\n};\r\n\r\nexport function normalizeXML(xml: string): string {\r\n xml = xml.split(\"\\r\\n\").join(\"\");\r\n xml = xml.split(\"\\n\").join(\"\");\r\n xml = xml.split(\"\\t\").join(\"\");\r\n xml = xml.split(\" \").join(\"\");\r\n xml = xml.split(\"> <\").join(\"><\");\r\n xml = xml.split(\"> <\").join(\"><\");\r\n xml = xml.replace(/\\r?\\n|\\r/g, \"\");\r\n return xml;\r\n}\r\n\r\nexport const generateConsultRucXml = (consultRucDto: ConsultRucDto): string => {\r\n return `<env:Envelope xmlns:env=\"http://www.w3.org/2003/05/soap-envelope\">\\n\\\r\n <env:Header/>\\n\\\r\n <env:Body>\\n\\\r\n <rEnviConsRUC xmlns=\"http://ekuatia.set.gov.py/sifen/xsd\">\\n\\\r\n <dId>${consultRucDto.id}</dId>\\n\\\r\n <dRUCCons>${consultRucDto.ruc}</dRUCCons>\\n\\\r\n </rEnviConsRUC>\\n\\\r\n </env:Body>\\n\\\r\n </env:Envelope>\\n`;\r\n};\r\n\r\nexport const generateConsultDocumentXml = (\r\n consultDocumentDto: ConsultDocumentDto,\r\n): string => {\r\n return `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n\\\r\n <env:Envelope xmlns:env=\"http://www.w3.org/2003/05/soap-envelope\">\\n\\\r\n <env:Header/>\\n\\\r\n <env:Body>\\n\\\r\n <rEnviConsDeRequest xmlns=\"http://ekuatia.set.gov.py/sifen/xsd\">\\n\\\r\n <dId>${consultDocumentDto.id}</dId>\\n\\\r\n <dCDC>${consultDocumentDto.cdc}</dCDC>\\n\\\r\n </rEnviConsDeRequest>\\n\\\r\n </env:Body>\\n\\\r\n </env:Envelope>\\n`;\r\n};\r\n\r\nexport const generateConsultBatchXml = (\r\n consultBatchDto: ConsultBatchDto,\r\n): string => {\r\n return `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n\\\r\n <env:Envelope xmlns:env=\"http://www.w3.org/2003/05/soap-envelope\">\\n\\\r\n <env:Header/>\\n\\\r\n <env:Body>\\n\\\r\n <rEnviConsLoteDe xmlns=\"http://ekuatia.set.gov.py/sifen/xsd\">\\n\\\r\n <dId>${consultBatchDto.id}</dId>\\n\\\r\n <dProtConsLote>${consultBatchDto.codigoLote}</dProtConsLote>\\n\\\r\n </rEnviConsLoteDe>\\n\\\r\n </env:Body>\\n\\\r\n </env:Envelope>\\n`;\r\n};\r\n\r\nconst OIDS_KEYS = [forge.pki.oids.pkcs8ShroudedKeyBag, forge.pki.oids.keyBag];\r\n\r\nconst obtainBags = (almacen: forge.pkcs12.Pkcs12Pfx): forge.pkcs12.Bag[] =>\r\n almacen.safeContents.flatMap((contenido) => contenido.safeBags);\r\n\r\nexport const readDigitalSign = (\r\n digitalSignDto: DigitalSignDto,\r\n): ResponseDigitalSign => {\r\n const { camino, contraseña } = digitalSignDto;\r\n\r\n const contenidoPfx = readFileSync(camino, { encoding: \"binary\" });\r\n const estructuraAsn1 = forge.asn1.fromDer(contenidoPfx);\r\n const almacen = forge.pkcs12.pkcs12FromAsn1(estructuraAsn1, contraseña);\r\n\r\n const bolsas = obtainBags(almacen);\r\n\r\n const bolsaLlave = bolsas.find(\r\n (bolsa) => OIDS_KEYS.includes(bolsa.type) && bolsa.key,\r\n );\r\n if (!bolsaLlave?.key) {\r\n throw new Error(\"La firma digital no contiene una llave privada\");\r\n }\r\n\r\n const bolsaCertificado = bolsas.find(\r\n (bolsa) => bolsa.type === forge.pki.oids.certBag && bolsa.cert,\r\n );\r\n if (!bolsaCertificado?.cert) {\r\n throw new Error(\"La firma digital no contiene un certificado\");\r\n }\r\n\r\n return {\r\n certificado: forge.pki.certificateToPem(bolsaCertificado.cert),\r\n llavePrivada: forge.pki.privateKeyToPem(bolsaLlave.key),\r\n };\r\n};\r\n\r\nexport const generateQr = async (\r\n generationQrDto: GenerationQrDto,\r\n): Promise<string> => {\r\n try {\r\n const { xml, idCsc, csc, ambiente } = generationQrDto;\r\n\r\n const xmlObject = await xml2js.parseStringPromise(xml);\r\n\r\n if (\r\n !(\r\n xmlObject &&\r\n xmlObject[\"rDE\"] &&\r\n xmlObject[\"rDE\"][\"Signature\"] &&\r\n xmlObject[\"rDE\"][\"Signature\"]\r\n )\r\n ) {\r\n throw new Error(\"XML debe estar firmado digitalmente para generar el QR\");\r\n }\r\n\r\n xmlObject[\"rDE\"][\"gCamFuFD\"] = {};\r\n\r\n let linkQr: string = \"\";\r\n\r\n if (ambiente === SIFEN_ENVIRONMENT.TEST) {\r\n linkQr = LINK_SIFEN.TEST;\r\n } else {\r\n linkQr = LINK_SIFEN.PRODUCCION;\r\n }\r\n\r\n linkQr += \"/qr?\";\r\n\r\n let qr: string = \"\";\r\n\r\n const newVersion = xmlObject[\"rDE\"][\"dVerFor\"][0];\r\n\r\n qr += \"nVersion=\" + newVersion + \"&\";\r\n\r\n const id = xmlObject[\"rDE\"][\"DE\"][0][\"$\"][\"Id\"];\r\n qr += \"Id=\" + id + \"&\";\r\n\r\n let dFeEmiDE = xmlObject[\"rDE\"][\"DE\"][0][\"gDatGralOpe\"][0][\"dFeEmiDE\"][0];\r\n dFeEmiDE = Buffer.from(dFeEmiDE, \"utf8\").toString(\"hex\");\r\n qr += \"dFeEmiDE=\" + dFeEmiDE + \"&\";\r\n\r\n let dRucRec: string = \"\";\r\n\r\n if (\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gDatGralOpe\"][0][\"gDatRec\"][0][\"iNatRec\"][0] ==\r\n 1\r\n ) {\r\n dRucRec =\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gDatGralOpe\"][0][\"gDatRec\"][0][\"dRucRec\"][0];\r\n qr += \"dRucRec=\" + dRucRec + \"&\";\r\n } else {\r\n dRucRec =\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gDatGralOpe\"][0][\"gDatRec\"][0][\r\n \"dNumIDRec\"\r\n ][0];\r\n qr += \"dNumIDRec=\" + dRucRec + \"&\";\r\n }\r\n\r\n let dTotGralOpe: number = 0;\r\n\r\n if (\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"] &&\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"][0] &&\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"][0][\"dTotGralOpe\"] &&\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"][0][\"dTotGralOpe\"][0]\r\n ) {\r\n dTotGralOpe = xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"][0][\"dTotGralOpe\"][0];\r\n }\r\n qr += \"dTotGralOpe=\" + dTotGralOpe + \"&\";\r\n\r\n let dTotIVA: number = 0;\r\n\r\n if (\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"] &&\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"][0] &&\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"][0][\"dTotIVA\"] &&\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"][0][\"dTotIVA\"][0]\r\n ) {\r\n dTotIVA = xmlObject[\"rDE\"][\"DE\"][0][\"gTotSub\"][0][\"dTotIVA\"][0];\r\n }\r\n qr += \"dTotIVA=\" + dTotIVA + \"&\";\r\n\r\n let cItems: number = 0;\r\n\r\n if (\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gDtipDE\"][0] &&\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gDtipDE\"][0][\"gCamItem\"] &&\r\n xmlObject[\"rDE\"][\"DE\"][0][\"gDtipDE\"][0][\"gCamItem\"].length > 0\r\n ) {\r\n cItems = xmlObject[\"rDE\"][\"DE\"][0][\"gDtipDE\"][0][\"gCamItem\"].length;\r\n }\r\n\r\n qr += \"cItems=\" + cItems + \"&\";\r\n\r\n let digestValue =\r\n xmlObject[\"rDE\"][\"Signature\"][0][\"SignedInfo\"][0][\"Reference\"][0][\r\n \"DigestValue\"\r\n ][0];\r\n\r\n digestValue = Buffer.from(digestValue, \"utf8\").toString(\"hex\");\r\n qr += \"DigestValue=\" + digestValue + \"&\";\r\n\r\n qr += \"IdCSC=\" + idCsc;\r\n\r\n const valueForHash = qr;\r\n const valueHashed = sha256(valueForHash + csc);\r\n\r\n qr += \"&cHashQR=\" + valueHashed;\r\n\r\n xmlObject[\"rDE\"][\"gCamFuFD\"][\"dCarQR\"] = {\r\n _: linkQr + qr,\r\n };\r\n const builder = new xml2js.Builder();\r\n\r\n const xmlWithQR = builder.buildObject(xmlObject);\r\n\r\n return xmlWithQR;\r\n } catch (error) {\r\n throw error;\r\n }\r\n};\r\n","import { ResponseDigitalSign } from \"../../../shared/dto/responseDigitalSign.dto\";\r\nimport {\r\n generateConsultBatchXml,\r\n generateConsultDocumentXml,\r\n generateConsultRucXml,\r\n readDigitalSign,\r\n normalizeXML,\r\n generateQr,\r\n} from \"../../../shared/functions/functions.utils\";\r\nimport {\r\n ConsultRucDto,\r\n ConsultBatchDto,\r\n ConsultDocumentDto,\r\n DigitalSignDto,\r\n GenerationQrDto,\r\n} from \"../../applications/dtos\";\r\nimport { CancelInvoiceDto } from \"../../applications/dtos/cancelDocument.dto\";\r\nimport { InvalidationInvoiceDto } from \"../../applications/dtos/invalidationInvoice.dto\";\r\nimport { SifenRepository } from \"../../domain/repository/sifen.repository\";\r\n\r\nexport class SifenPersistence implements SifenRepository {\r\n consultRuc(consultRucDto: ConsultRucDto): string {\r\n const rucXml = generateConsultRucXml(consultRucDto);\r\n\r\n const xmlFormated = normalizeXML(rucXml);\r\n\r\n return xmlFormated;\r\n }\r\n\r\n consultBatch(consultBatchDto: ConsultBatchDto): string {\r\n const batchXml = generateConsultBatchXml(consultBatchDto);\r\n\r\n const xmlFormated = normalizeXML(batchXml);\r\n\r\n return xmlFormated;\r\n }\r\n\r\n consultDocument(ConsultDocumentDto: ConsultDocumentDto): string {\r\n const documentXml = generateConsultDocumentXml(ConsultDocumentDto);\r\n\r\n const xmlFormated = normalizeXML(documentXml);\r\n\r\n return xmlFormated;\r\n }\r\n\r\n cancelationInvoice(cancelInvoiceDto: CancelInvoiceDto): string {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n invalidationInvoice(invalidationInvoiceDto: InvalidationInvoiceDto): string {\r\n try {\r\n throw new Error(\"Method not implemented.\");\r\n } catch (error) {\r\n console.log(error);\r\n throw error;\r\n }\r\n }\r\n\r\n obtainDigitalSign(digitalSignDto: DigitalSignDto): ResponseDigitalSign {\r\n try {\r\n const digitalSign = readDigitalSign(digitalSignDto);\r\n\r\n return digitalSign;\r\n } catch (error) {\r\n console.log(error);\r\n throw error;\r\n }\r\n }\r\n\r\n async generateQr(generationQrDto: GenerationQrDto): Promise<string> {\r\n try {\r\n const digitalSign = await generateQr(generationQrDto);\r\n\r\n return digitalSign;\r\n } catch (error) {\r\n console.log(error);\r\n throw error;\r\n }\r\n }\r\n}\r\n","import { SifenRepository } from \"../../domain/repository/sifen.repository\";\r\nimport {\r\n ConsultBatchUseCase,\r\n ConsultDocumentUseCase,\r\n ConsultRucUseCase,\r\n GenerateQrUseCase,\r\n ObtainDigitalSignUseCase,\r\n} from \"../../domain/useCases\";\r\nimport { SifenPersistence } from \"../../infrastructure/persistence/sifen.persistence\";\r\nimport {\r\n ConsultBatchDto,\r\n ConsultDocumentDto,\r\n ConsultRucDto,\r\n DigitalSignDto,\r\n GenerationQrDto,\r\n} from \"../dtos\";\r\n\r\nexport class SifenService {\r\n private readonly consultRucUseCase: ConsultRucUseCase;\r\n private readonly consultBatchUseCase: ConsultBatchUseCase;\r\n private readonly consultDocumentUseCase: ConsultDocumentUseCase;\r\n private readonly obtainDigitalSignUseCase: ObtainDigitalSignUseCase;\r\n private readonly generateQrUseCase: GenerateQrUseCase;\r\n private readonly sifenRepository: SifenRepository;\r\n\r\n constructor() {\r\n this.sifenRepository = new SifenPersistence();\r\n this.consultRucUseCase = new ConsultRucUseCase(this.sifenRepository);\r\n this.consultBatchUseCase = new ConsultBatchUseCase(this.sifenRepository);\r\n this.consultDocumentUseCase = new ConsultDocumentUseCase(\r\n this.sifenRepository,\r\n );\r\n this.obtainDigitalSignUseCase = new ObtainDigitalSignUseCase(\r\n this.sifenRepository,\r\n );\r\n this.generateQrUseCase = new GenerateQrUseCase(this.sifenRepository);\r\n }\r\n\r\n consultRuc(consultRucDto: ConsultRucDto) {\r\n const ruc = this.consultRucUseCase.execute(consultRucDto);\r\n return ruc;\r\n }\r\n\r\n consultBatch(consultBatchDto: ConsultBatchDto) {\r\n const batch = this.consultBatchUseCase.execute(consultBatchDto);\r\n return batch;\r\n }\r\n\r\n consultDocument(consultDocumentDto: ConsultDocumentDto) {\r\n const invoice = this.consultDocumentUseCase.execute(consultDocumentDto);\r\n return invoice;\r\n }\r\n\r\n obtainDigitalSign(digitalSignDto: DigitalSignDto) {\r\n const digitalSign = this.obtainDigitalSignUseCase.execute(digitalSignDto);\r\n return digitalSign;\r\n }\r\n\r\n async generateQr(generationQrDto: GenerationQrDto): Promise<string> {\r\n try {\r\n const generationQr =\r\n await this.generateQrUseCase.execute(generationQrDto);\r\n\r\n return generationQr;\r\n } catch (error) {\r\n throw error;\r\n }\r\n }\r\n}\r\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "consultame-sdk",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "SDK oficial de Consultame para integración con servicios de facturación electrónica",
5
5
  "type": "commonjs",
6
6
  "main": "./dist/index.js",