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 +7 -7
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -25,7 +25,7 @@ function _interopNamespace(e) {
|
|
|
25
25
|
return Object.freeze(n);
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
var
|
|
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 = [
|
|
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 =
|
|
145
|
-
const almacen =
|
|
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 ===
|
|
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:
|
|
161
|
-
llavePrivada:
|
|
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
package/dist/index.mjs.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":[],"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":"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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 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"]}
|