diff --git a/debo/cabeceraDebo.js b/debo/cabeceraDebo.js index 31050ee..6288936 100644 --- a/debo/cabeceraDebo.js +++ b/debo/cabeceraDebo.js @@ -1,16 +1,16 @@ -module.exports = function(comprobante, afipTablas) { +module.exports = function(comprobante, afipTablas, entities) { return { TIP: afipTablas(comprobante.identificaxComprobante.tipo).letraComprobante, // [char](1) NOT NULL, LETRA DEL COMPROBANTE (A,B,C,M,E) TCO: afipTablas(comprobante.identificaxComprobante.tipo).tipoComprobante, // [char](2) NOT NULL, TIPO DE COMPROBANTE (FT,NC,ND,RE,CI,LP) SUC: parseInt(comprobante.identificaxComprobante.puntoVenta), // [int] NOT NULL, PUNTO DE VENTA NCO: parseInt(comprobante.identificaxComprobante.numero), // [bigint] NOT NULL, NUMERO DE COMPROBANTE - COD: null, // [int] NOT NULL, CODIGO DEL PROVEEDOR NECESITAS RELACION -- BUSCAR SI ENVIAN EL CUIT DEL PROVEEDOR SELECT COD FROM PROVEED WHERE CUIT= '30-54775125-2' + COD: entities.proveedores.COD, // [int] NOT NULL, CODIGO DEL PROVEEDOR NECESITAS RELACION -- BUSCAR SI ENVIAN EL CUIT DEL PROVEEDOR SELECT COD FROM PROVEED WHERE CUIT= '30-54775125-2' FEC: comprobante.identificaxComprobante.fechaComprobante, // [smalldatetime] NULL, FECHA DEL COMPROBANTE - NOM: null, // [varchar](40) NOT NULL, NOMBRE DEL PROVEEDOR TABLA PROVEED CAMPO NOM - TIV: null, // [tinyint] NOT NULL, TIPO DE IVA CAMPO IVA TABLA PROVEED - CUI: null, // [char](13) NOT NULL, CUIT DEL PROVEEDOR CAMPO CUIT DEL PROVEEDOR O EL QUE VIENE EN LA COMUNICACION - FPA: null, // [tinyint] NOT NULL, FORMA DE PAGO CAMPO FPA TABLA PROVEED + NOM: entities.proveedores.NOM, // [varchar](40) NOT NULL, NOMBRE DEL PROVEEDOR TABLA PROVEED CAMPO NOM + TIV: entities.proveedores.IVA, // [tinyint] NOT NULL, TIPO DE IVA CAMPO IVA TABLA PROVEED + CUI: entities.proveedores.CUIT, // [char](13) NOT NULL, CUIT DEL PROVEEDOR CAMPO CUIT DEL PROVEEDOR O EL QUE VIENE EN LA COMUNICACION + FPA: entities.proveedores.FPA, // [tinyint] NOT NULL, FORMA DE PAGO CAMPO FPA TABLA PROVEED TCA: 1, // [money] NOT NULL, FIJO 1 DTO: comprobante.descuentosGlobalesFactura.importe, // [money] NOT NULL, DESCUENTO TOTAL SUMATORIA DE LOS DTO POR ITEM PDT: 0, // [money] NOT NULL, FIJO 0 @@ -20,11 +20,11 @@ module.exports = function(comprobante, afipTablas) { IRS: 0, // [money] NOT NULL, FIJO 0 IMI: comprobante.importesTotales.importeImpuestosInternos, // [money] NOT NULL, SUMATORIA DE LOS IMPUESTOS INTERNOS POR ITEM RGA: null, // [money] NOT NULL, IMPORTE RETENCION DE GANANCIAS - RIB: null, // [money] NOT NULL, IMPORTE RETENCION DE INBRESOS BRUTOS + RIB: null, // [money] NOT NULL, IMPORTE RETENCION DE INGRESOS BRUTOS PIV: null, // [money] NOT NULL, IMPORTE PERCEPCION DE IVA CNG: comprobante.importesTotales.totalConceptosNoNetoGravado, // [money] NULL, IMPORTE DE CONCEPTOS NO GRAVADOS TOT: null, // [money] NOT NULL, IMPORTE TOTAL DE LA FACTURA - ZON: null, // [int] NOT NULL, NUMERO DE LA EMPRESA SELECT ZON FROM APAREMP + ZON: entities.empresa.ZON, // [int] NOT NULL, NUMERO DE LA EMPRESA SELECT ZON FROM APAREMP FEV: comprobante.identificaxComprobante.fechaComprobante, // [datetime] NULL, FECHA DE VENCIMIENTO OCP: null, // [char](10) NOT NULL, SI VIENE LA ORDEN DE COMPRA FORMATO "0000000000" (DOS PRIMERO PARA PVE Y 8 ULTIMOS EL NUMERO DE LA OC) OPE: 0, // [int] NOT NULL, FIJO 0 diff --git a/debo/cuerpoDebo.js b/debo/cuerpoDebo.js index 2ded185..e7039b4 100644 --- a/debo/cuerpoDebo.js +++ b/debo/cuerpoDebo.js @@ -1,11 +1,11 @@ -module.exports = function(comprobante) { +module.exports = function(comprobante, afipTablas, entities) { return { - TIP: null, // [char](1) NOT NULL, LETRA DEL COMPROBANTE (A,B,C,M) - TCO: null, // [char](2) NOT NULL, TIPO DE COMPROBANTE (FT,NC,ND) + TIP: afipTablas(comprobante.identificaxComprobante.tipo).letraComprobante, // [char](1) NOT NULL, LETRA DEL COMPROBANTE (A,B,C,M) + TCO: afipTablas(comprobante.identificaxComprobante.tipo).tipoComprobante, // [char](2) NOT NULL, TIPO DE COMPROBANTE (FT,NC,ND) SUC: parseInt(comprobante.identificaxComprobante.puntoVenta), // [int] NOT NULL, PUNTO DE VENTA DE LA FACTURA NCO: parseInt(comprobante.identificaxComprobante.numero), // [bigint] NOT NULL, NUMERO DE COMPROBANTE - PRO: null, // [int] NOT NULL, CODIGO DEL PROVEEDOR NECESITAS RELACION -- BUSCAR SI ENVIAN EL CUIT DEL PROVEEDOR SELECT COD FROM PROVEED WHERE CUIT= '30-54775125-2' + PRO: entities.proveedor.COD, // [int] NOT NULL, CODIGO DEL PROVEEDOR NECESITAS RELACION -- BUSCAR SI ENVIAN EL CUIT DEL PROVEEDOR SELECT COD FROM PROVEED WHERE CUIT= '30-54775125-2' ORD: parseInt(comprobante.itemsFactura.numeroLinea), // [int] NOT NULL, ORDEN DEL ITEM, EMPIEZA EN 1 Y SUMA DE A 1 POR CADA REGISTRO DE MOVIMIENTO COD: null, // [int] NOT NULL, SECTOR DEBO DEL PRODUCTO ART: null, // [int] NOT NULL, ARTICULO DEBO DEL PRODUCTO ESTOS 2 SE OBTIENEN A PARTIR DEL CODIGO DE BARRAS: SELECT CodSec AS SECTOR,CodArt AS ARTICULO FROM CODBAR WHERE CODBAR='03239210540' @@ -20,7 +20,7 @@ module.exports = function(comprobante) { LEG: 0, // [int] NOT NULL, FIJO 0 CMF: 0, // [int] NOT NULL, FIJO 0 TUR: 0, // [int] NOT NULL, FIJO 0 - PLA: 0, // [int] NOT NULL, FIJO 0 + PLA: 0, // [int] NOT NULL, FIJO 0 LUG: 0, // [int] NOT NULL, FIJO 0 ESC: 0, // [bit] NOT NULL, FIJO 0 TAN: 0, // [int] NOT NULL, FIJO 0 diff --git a/debo/index.js b/debo/index.js index 9c9eeea..c4315ab 100644 --- a/debo/index.js +++ b/debo/index.js @@ -1,9 +1,9 @@ -module.exports = function(comprobante) { +module.exports = function(comprobante, entities) { var afipTablas = require('../afip/index'); return { - cabecera: require('./cabeceraDebo')(comprobante, afipTablas), + cabecera: require('./cabeceraDebo')(comprobante, afipTablas, entities), cuerpo: require('./cuerpoDebo')(comprobante, afipTablas) }; } diff --git a/index.js b/index.js index b42f29c..7942d36 100644 --- a/index.js +++ b/index.js @@ -10,18 +10,25 @@ function onGetFile(event, fileString) { var planex = require('./planex/index')(fileString); - var entidades = []; + var entities = {}; - wsServer.getEntidad('7790968003283', 'PROVEED').then(function(data) { - entidades.push({ entidad:'proveedores', data: data}) - }); + var tipoCuit = planex.identificaxEmisor.cuit.slice(0, 2); + var digitoVerificador = planex.identificaxEmisor.cuit[planex.identificaxEmisor.cuit.length - 1]; + + var cuitToDebo = tipoCuit + '-' + planex.identificaxEmisor.cuit.slice(2, 10) + '-' + digitoVerificador; - console.log(entidades.length); + var promiseProveedores = wsServer.getEntidad('7790968003283', 'PROVEED', {CUIT: cuitToDebo}); + var promiseEmp = wsServer.getEntidad('7790968003283', 'APAREMP'); - var debo = require('./debo/index')(planex, entidades); + Promise.all([promiseProveedores, promiseEmp]).then(function(data) { - // console.log(debo); + entities.proveedores = data[0]; + entities.empresa = data[1]; + + var debo = require('./debo/index')(planex, entities); + }); + console.log(planex); } console.log('listen websocket port ' + config.port); diff --git a/watch/index.js b/watch/index.js index f37d243..4643e54 100644 --- a/watch/index.js +++ b/watch/index.js @@ -6,7 +6,7 @@ module.exports = function(dir, callback) { var extencion = file.split('.')[1]; - if (extencion == 'plx') { + if (extencion == 'plx' && event == 'change') { fs.readFile(dir + '\\' + file, 'utf8', function(err , fileString) { diff --git a/webSocketServer/index.js b/webSocketServer/index.js index 7c96774..1d0a8b8 100644 --- a/webSocketServer/index.js +++ b/webSocketServer/index.js @@ -2,6 +2,7 @@ module.exports = function() { const webSocketServer = require('ws').Server; var clients = []; +var idsSolicitud = []; const objWs = {}; @@ -22,7 +23,7 @@ objWs.wsServer.on('connection', function connection(ws) { clients.push({ws: ws, gln: message.gln}); break; default: - console.log(message.action); + // console.log(message.action); } }); }); @@ -31,25 +32,32 @@ objWs.getEntidad = function(gln, tableName, where) { return new Promise(function(resolve, reject) { - clients.forEach(client => { + var client = clients.filter(function(client) { + return client.gln == gln + })[0]; - if (client.gln == gln) { + var idSolicitud = Math.round(Math.random() * 1000); - var enviar = { - action: 'getEntity', - tableName: tableName, - where: where - } + var enviar = { + action: 'getEntity', + tableName: tableName, + where: where || {}, + idSolicitud: idSolicitud + } + + idsSolicitud.push(idSolicitud); - client.ws.send(JSON.stringify(enviar)); + client.ws.send(JSON.stringify(enviar)); - client.ws.on('message', function(message) { + client.ws.on('message', function(message) { - console.log(JSON.parse(message)); + message = JSON.parse(message); - resolve(message.data); - }); + if (idSolicitud == message.idSolicitud) { + + resolve(message.data); } + }); }); }