Commit 6f6374fc authored by Alberto Inch's avatar Alberto Inch

Corrección facturación masiva.

parent a7979ca5
......@@ -267,7 +267,7 @@ module.exports = (app) => {
cuis: facturas[0].punto_venta.cuis,
fechaEnvio: moment().format('YYYY-MM-DDTHH:mm:ss.SSS'),
hashArchivo: crypto.createHash('sha256').update(tgz, 'utf8').digest().toString('hex'),
nit: facturas[0].punto_venta.sucursal.nit,
nit: facturas[0].punto_venta.sucursal.nit
};
const conn = await impuestos.verificarComunicacion();
if (conn === 66) {
......@@ -315,7 +315,7 @@ module.exports = (app) => {
codigoSucursal: facturas[0].punto_venta.sucursal.codigo,
cufd: cufd,
cuis: facturas[0].punto_venta.cuis,
nit: facturas[0].punto_venta.sucursal.nit,
nit: facturas[0].punto_venta.sucursal.nit
};
const conn = await impuestos.verificarComunicacion();
if (conn === 66) {
......@@ -349,41 +349,56 @@ module.exports = (app) => {
if (facturas.length > 0) {
const cufd = await app.dao.cufd.get(idPuntoVenta, 'system', t);
try {
let pack = tar.pack();
const pack = {}, ids = {}, codigoDocumentoFiscal = {};
for (let i = 0; i < facturas.length; i++) {
pack.entry({ name: `factura${i}.xml` }, Buffer.from(facturas[i].factura, 'utf8').toString('base64'));
if (!pack[facturas[i].codigo_documento_sector]) {
pack[facturas[i].codigo_documento_sector] = tar.pack();
ids[facturas[i].codigo_documento_sector] = [];
codigoDocumentoFiscal[facturas[i].codigo_documento_sector] = facturas[i].esquema.codigo_documento_fiscal;
}
pack[facturas[i].codigo_documento_sector].entry({ name: `factura${i}.xml` }, Buffer.from(facturas[i].factura, 'utf8').toString('base64'));
ids[facturas[i].codigo_documento_sector].push(facturas[i].id_venta);
}
const tgz = Buffer.from(await gzip(pack.read()), 'binary').toString('base64');
const params = {
archivo: tgz,
codigoAmbiente: app.config.impuestos.codigoAmbiente,
codigoDocumentoFiscal: facturas[0].esquema.codigo_documento_fiscal,
codigoDocumentoSector: facturas[0].codigo_documento_sector,
codigoEmision: facturas[0].tipo_emision,
codigoModalidad: app.config.impuestos.codigoModalidad,
codigoPuntoVenta: facturas[0].punto_venta.codigo,
codigoSistema: app.config.impuestos.codigoSistema,
codigoSucursal: facturas[0].punto_venta.sucursal.codigo,
cufd: cufd,
cuis: facturas[0].punto_venta.cuis,
fechaEnvio: moment().format('YYYY-MM-DDTHH:mm:ss.SSS'),
hashArchivo: crypto.createHash('sha256').update(tgz, 'utf8').digest().toString('hex'),
nit: facturas[0].punto_venta.sucursal.nit,
};
const conn = await impuestos.verificarComunicacion();
if (conn === 66) {
const recepcion = await impuestos.recepcionMasivaFacturaElectronicaEstandar(params);
if (recepcion.codigoEstado === 901) {
await app.dao.venta.setCodigoRecepcion(facturas.map(f => f.id_venta), recepcion.codigoRecepcion, t);
} else {
if (recepcion.codigoEstado === 902) {
const idsObs = await app.dao.venta.registrarObs(recepcion.listaCodigosRespuestas, 'RECHAZADO', t);
const idsVal = await app.dao.venta.buscarIdsVal(facturas.map(f => f.id_venta), idsObs);
if (idsVal.length > 0) {
await await app.dao.venta.setCodigoRecepcion(idsVal, recepcion.codigoRecepcion, t);
}
const keys = Object.keys(pack);
for (let j = 0; j < keys.length; j++) {
const tgz = Buffer.from(await gzip(pack[keys[j]].read()), 'binary').toString('base64');
const params = {
archivo: tgz,
codigoAmbiente: app.config.impuestos.codigoAmbiente,
codigoDocumentoFiscal: codigoDocumentoFiscal[keys[j]],
codigoDocumentoSector: keys[j],
codigoEmision: facturas[0].tipo_emision,
codigoModalidad: app.config.impuestos.codigoModalidad,
codigoPuntoVenta: facturas[0].punto_venta.codigo,
codigoSistema: app.config.impuestos.codigoSistema,
codigoSucursal: facturas[0].punto_venta.sucursal.codigo,
cufd: cufd,
cuis: facturas[0].punto_venta.cuis,
fechaEnvio: moment().format('YYYY-MM-DDTHH:mm:ss.SSS'),
hashArchivo: crypto.createHash('sha256').update(tgz, 'utf8').digest().toString('hex'),
nit: facturas[0].punto_venta.sucursal.nit
};
const conn = await impuestos.verificarComunicacion();
if (conn === 66) {
let recepcion;
switch (keys[j]) {
case '1': recepcion = await impuestos.recepcionMasivaFacturaElectronicaEstandar(params);
break;
case '22': recepcion = await impuestos2.recepcionMasivaNotaFiscalElectronicaTasaCero(params);
break;
}
if (recepcion.codigoEstado === 901) {
await app.dao.venta.setCodigoRecepcion(facturas.map(f => f.id_venta), recepcion.codigoRecepcion, t);
} else {
await logs(models.logs).error(await app.dao.catalogo.getErrores(idPuntoVenta, recepcion.listaErroresDetalles.map(val => val.toString())), 'INESPERADO', `factura.js 272`, 'system');
if (recepcion.codigoEstado === 902) {
const idsObs = await app.dao.venta.registrarObs(recepcion.listaCodigosRespuestas, 'RECHAZADO', t);
const idsVal = await app.dao.venta.buscarIdsVal(facturas.map(f => f.id_venta), idsObs);
if (idsVal.length > 0) {
await await app.dao.venta.setCodigoRecepcion(idsVal, recepcion.codigoRecepcion, t);
}
} else {
await logs(models.logs).error(await app.dao.catalogo.getErrores(idPuntoVenta, recepcion.listaErroresDetalles.map(val => val.toString())), 'INESPERADO', `factura.js 272`, 'system');
}
}
}
}
......
......@@ -470,7 +470,13 @@ module.exports = (app) => {
if (conn === 66) {
console.log(params)
console.log("----------------------- VALIDACION MASIVA DE FACTURAS -----------------------")
const validacion = await impuestos.validacionRecepcionMasivaFacturaElectronicaEstandar(params);
let validacion;
switch (facturas[0].codigo_documento_sector) {
case '1': validacion = await impuestos.validacionRecepcionMasivaFacturaElectronicaEstandar(params);
break;
case '22': validacion = await impuestos2.validacionRecepcionMasivaNotaFiscalElectronicaTasaCero(params);
break;
}
console.log(validacion)
console.log("---------------------------------------------------------------------------------")
if (!validacion.transaccion) {
......
......@@ -84,8 +84,7 @@ module.exports = {
metodo: 'sincronizarListaLeyendasFactura'
}, {
codigo: 'CODIGOS_ESPECIALES',
descripcion: 'Lista de tipos de codigos especiales',
metodo: ''
descripcion: 'Lista de tipos de codigos especiales'
}
], {});
},
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment