Commit dc03e450 authored by Wendy Fuertes's avatar Wendy Fuertes

Test envio Masivos

parent b73fb5ca

Too many changes to show.

To preserve performance only 1000 of 1000+ files are displayed.

......@@ -45,6 +45,9 @@
"test_paquetes_11": "NODE_ENV=test mocha --timeout 400000 test/**/06_02_11EnvioPaquetes.js --exit",
"test_paquetes_12": "NODE_ENV=test mocha --timeout 400000 test/**/06_02_12EnvioPaquetes.js --exit",
"test_anulaciones": "NODE_ENV=test mocha --timeout 90000 test/**/09_01Anulaciones.js --exit",
"test_masivo_soap": "NODE_ENV=test mocha --timeout 400000 test/**/10_01EnvioMasivo.js --exit",
"test_masivo_1": "NODE_ENV=test mocha --timeout 600000 test/**/10_02_1EnvioMasivo.js --exit",
"test_masivo_2": "NODE_ENV=test mocha --timeout 600000 test/**/10_02_2EnvioMasivo.js --exit",
"test_masivo": "mocha --timeout 90000 test/**/12TestFacturasMasivas.js --exit"
},
"dependencies": {
......
......@@ -52,6 +52,7 @@ module.exports = (app) => {
}
async function getCuf(nit, fecha, sucursal, modalidad, tipoEmision, codigoDocumentoFiscal, tipoDocumentoSector, numeroFactura, puntoVenta) {
console.log("CUF ::::::", nit, fecha, sucursal, modalidad, tipoEmision, codigoDocumentoFiscal, tipoDocumentoSector, numeroFactura, puntoVenta)
let value = `${cero(nit, 13)}${moment(fecha, 'YYYY-MM-DDTHH:mm:ss.SSS').format('YYYYMMDDHHmmssSSS')}`;
value = `${value}${cero(sucursal, 4)}${modalidad}${tipoEmision}${codigoDocumentoFiscal}`;
value = `${value}${cero(tipoDocumentoSector, 2)}${cero(numeroFactura, 8)}${cero(puntoVenta, 4)}`;
......
......@@ -23,17 +23,6 @@ describe('Envío de paquete de facturas', function() {
const list = fs.readdirSync(dir);//array de nombres de archivos
const files = []; j = -1; name = '';
let facturaFirmada, datoCufd, params, facturasP=[], cufdPunto, facturasPaquetePunto=[];
/* for (let i = 0; i < list.length; i++) {
if (name !== list[i].substr(0, 17)) {
j++;
name = list[i].substr(0, 17);
files.push({});
}
if (list[i].endsWith('facturaValida.json')) {
files[j].factura = fs.readFileSync(path.join(__dirname, '/CasosPaquetes01', list[i])).toString('utf8');
}
}
console.log(files); */
it('SolicitarCufdActual - Casa Matriz',async function() {
datoCufd = await app.dao.cufd.get(1, 'test');
......@@ -54,7 +43,7 @@ describe('Envío de paquete de facturas', function() {
if (factura.cabecera.fechaEmision === '') {
factura.cabecera.fechaEmision = moment().format('YYYY-MM-DDTHH:mm:ss.SSS');
}
if (factura.cabecera.codigoPuntoVenta === 1) {
if (factura.cabecera.codigoPuntoVenta === '1') {
factura.cabecera.cufd = cufdPunto;
} else {
factura.cabecera.cufd = datoCufd;
......@@ -70,9 +59,10 @@ describe('Envío de paquete de facturas', function() {
const schema = xsd.parse(fs.readFileSync(`${_path}/xml/facturaStandar.xsd`).toString('utf8').replace('http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd', `${_path}/xml/xmldsig-core-schema.xsd`));
const validation = schema.validate(facturaFirmada);
console.log(facturaFirmada);
assert.notEqual(validation, null);
console.log(validation);
assert.deepEqual(validation, null);
if (factura.cabecera.codigoPuntoVenta === 1) {
if (factura.cabecera.codigoPuntoVenta === '1') {
facturasPaquetePunto.push(facturaFirmada);
} else {
facturasP.push(facturaFirmada);
......@@ -80,7 +70,7 @@ describe('Envío de paquete de facturas', function() {
//assert.ok(typeof facturaFirmada == 'string')
});
}
it(`1.- Paquete recepcionado`,async function() {
it(`1.- Paquete recepcionado`,async function() {
params = {
codigoSistema: app.config.impuestos.codigoSistema,
codigoAmbiente: 2,
......@@ -95,7 +85,7 @@ describe('Envío de paquete de facturas', function() {
codigoPuntoVenta: '',
fechaEnvio: moment().format('YYYY-MM-DDTHH:mm:ss.SSS')
}
var resp,validacion, sw = true;
var resp, validacion, sw = true;
try {
let pack = tar.pack();
for (let j = 0; j < facturasP.length; j++) {
......@@ -133,7 +123,7 @@ describe('Envío de paquete de facturas', function() {
}
});
it(`2.- Paquete recepcionado - Punto de Venta`,async function() {
it(`2.- Paquete recepcionado - Punto de Venta`,async function() {
paramsPunto = {
codigoSistema: app.config.impuestos.codigoSistema,
codigoAmbiente: 2,
......@@ -145,7 +135,7 @@ describe('Envío de paquete de facturas', function() {
codigoDocumentoFiscal: 1,
codigoDocumentoSector: 1,
codigoSucursal: 0,
codigoPuntoVenta: 2,
codigoPuntoVenta: 1,
fechaEnvio: moment().format('YYYY-MM-DDTHH:mm:ss.SSS')
}
var resp,validacion, sw=true;
......@@ -154,12 +144,9 @@ describe('Envío de paquete de facturas', function() {
for (let j = 0; j < facturasPaquetePunto.length; j++) {
pack.entry({ name: `factura${j}.xml` }, Buffer.from(facturasPaquetePunto[j], 'utf8').toString('base64'));
}
paramsPunto.archivo = Buffer.from(await gzip(pack.read()), 'binary').toString('base64');
paramsPunto.hashArchivo = crypto.createHash('sha256').update(paramsPunto.archivo, 'utf8').digest().toString('hex');
// console.log("... Params Recepción paquete factura Punto de Venta ...");
// console.log(paramsPunto);
resp = await impuestos.recepcionPaqueteFacturaElectronicaEstandar(paramsPunto);
} catch (error) {
resp = error.message
......@@ -174,7 +161,7 @@ describe('Envío de paquete de facturas', function() {
paramsPunto.codigoRecepcion = resp.codigoRecepcion;
while (sw) {
validacion = await impuestos.validacionRecepcionPaqueteFacturaElectronicaEstandar(params);
validacion = await impuestos.validacionRecepcionPaqueteFacturaElectronicaEstandar(paramsPunto);
console.log("... Validacion ...");
console.log(validacion);
if (!validacion.listaCodigosRespuestas || validacion.listaCodigosRespuestas[0] != 63) {
......@@ -187,7 +174,7 @@ describe('Envío de paquete de facturas', function() {
}
});
it('3.- Código 88 = Soap parámetros formato xsd incorrecto',async function() {
it('3.- Código 88 = Soap parámetros formato xsd incorrecto',async function() {
params = {
codigoSistema: null,
codigoAmbiente: 2,
......@@ -1443,7 +1430,7 @@ describe('Envío de paquete de facturas', function() {
console.log("... Respuesta Recepción paquete factura ...");
console.log(resp);
assert.deepEqual(resp.listaCodigosRespuestas[0], 88);//recepcion factura
});
});
......
......@@ -48,10 +48,8 @@ describe('AnulaciondeFacturas', function() {
}
if (factura.cabecera.codigoPuntoVenta === '1') {
factura.cabecera.cufd = cufdPunto;
console.log("es punto.......", factura.cabecera.cufd)
} else {
factura.cabecera.cufd = cufdSucursal;
console.log("es sucursal.......", factura.cabecera.cufd)
}
cuf = factura.cabecera.cuf;
numeroFactura = factura.cabecera.numeroFactura;
......
This diff is collapsed.
before(done => {
console.log('\n\n-----------------------\n--\n-- START TEST\n--\n-------------------------');
done();
});
after(done => {
console.log('\n\n-----------------------\n--\n-- END TEST\n--\n-------------------------');
done();
});
let app = require('../app.js');
var assert = require('assert');
const moment = require('moment');
const xsd = require('libxml-xsd');
const fs = require('fs');
const { gzip } = require('node-gzip');
const crypto = require('crypto');
const path = require('path');
const tar = require('tar-stream');
const convert = require('xml-js');
const impuestos = require('../src/services/impuestos/facturaElectronicaEstandar')(app);
describe('Casos de Prueba - Envío de paquete masivo de facturas', function() {
const dir = path.join(__dirname, '/CasosMasivos02/01');
const list = fs.readdirSync(dir);//array de nombres de archivos
let facturaFirmada, datoCufd, params, facturasP=[], fechaFactura, numeroFactura = 100;
it('SolicitarCufdActual - Casa Matriz',async function() {
datoCufd = await app.dao.cufd.get(1, 'test');
assert.ok(typeof datoCufd == 'string');
});
it('Armar factura y paquetes',async function() {
for (let i = 0; i < list.length; i++) {
fechaFactura = new Date();
const xml = convert.xml2js(fs.readFileSync(path.join(__dirname, '/CasosMasivos02/01', list[i])).toString('utf8'), { compact: true, ignoreComment: true, fullTagEmptyElement: true });
const factura = xml.facturaElectronicaEstandar;
console.log(list[i])
fechaFactura.setMilliseconds(fechaFactura.getMilliseconds() + 1);
var puntoVenta = (factura.cabecera.codigoPuntoVenta._attributes)? "":factura.cabecera.codigoPuntoVenta._text;
factura.cabecera.numeroFactura._text = numeroFactura++;
factura.cabecera.fechaEmision._text = moment(fechaFactura).format('YYYY-MM-DDTHH:mm:ss.SSS');
factura.cabecera.cufd._text = datoCufd;
factura.cabecera.cuf._text = await app.dao.cuf(factura.cabecera.nitEmisor._text, factura.cabecera.fechaEmision._text, factura.cabecera.codigoSucursal._text, app.config.impuestos.codigoModalidad, 3, 1, factura.cabecera.codigoDocumentoSector._text, factura.cabecera.numeroFactura._text, puntoVenta);//3 = tipoEmision
facturaFirmada = await app.dao.factura.firmar({
facturaElectronicaEstandar: app.dao.factura.setNill(factura)
});
facturasP.push(facturaFirmada);
}
assert.deepEqual(facturasP.length, list.length)
});
it('1.- Recepción validada',async function() {
params = {
codigoSistema: app.config.impuestos.codigoSistema,
codigoAmbiente: 2,
codigoEmision: 3,
codigoModalidad: app.config.impuestos.codigoModalidad,
nit: 120431020,
cuis: app.config.impuestos.cuis,
cufd: datoCufd ,
codigoDocumentoFiscal: 1,
codigoDocumentoSector: 1,
codigoSucursal: 0,
codigoPuntoVenta: '',
fechaEnvio: moment().format('YYYY-MM-DDTHH:mm:ss.SSS')
}
var resp,validacion;
try {
let pack = tar.pack();
for (let j = 0; j < facturasP.length; j++) {
pack.entry({ name: `factura${j}.xml` }, Buffer.from(facturasP[j], 'utf8').toString('base64'));
}
params.archivo = Buffer.from(await gzip(pack.read()), 'binary').toString('base64');
params.hashArchivo = crypto.createHash('sha256').update(params.archivo, 'utf8').digest().toString('hex');
resp = await impuestos.recepcionMasivaFacturaElectronicaEstandar(params);
} catch (error) {
resp = error.message
}
console.log(resp);
assert.deepEqual(resp.codigoEstado, 901);//recepcion
if (resp.codigoEstado === 901) {
delete params["archivo"];
delete params["fechaEnvio"];