Commit 5eda16ee29cf853020a1fb92901f204d06259ab7

Authored by Eric Fernandez
1 parent 25903588b1
Exists in master

avances debo

1 module.exports = function(codigo) { 1 module.exports = function(codigo) {
2 2
3 var tablaAfip = [ 3 var tablaAfip = [
4 { 4 {
5 codigo: 1, 5 codigo: 1,
6 letraComprobante: 'A', 6 letraComprobante: 'A',
7 tipoComprobante: 'FT' 7 tipoComprobante: 'FT'
8 }, 8 },
9 { 9 {
10 codigo: 7, 10 codigo: 7,
11 letraComprobante: 'B', 11 letraComprobante: 'B',
12 tipoComprobante: 'ND' 12 tipoComprobante: 'ND'
13 }, 13 },
14 { 14 {
15 codigo: 8, 15 codigo: 8,
16 letraComprobante: 'B', 16 letraComprobante: 'B',
17 tipoComprobante: 'NC' 17 tipoComprobante: 'NC'
18 }, 18 },
19 { 19 {
20 codigo: 15, 20 codigo: 15,
21 letraComprobante: 'C', 21 letraComprobante: 'C',
22 tipoComprobante: 'RE' 22 tipoComprobante: 'RE'
23 }, 23 },
24 { 24 {
25 codigo: 60, 25 codigo: 60,
26 letraComprobante: 'A', 26 letraComprobante: 'A',
27 tipoComprobante: 'LP' 27 tipoComprobante: 'LP'
28 }, 28 },
29 { 29 {
30 codigo: 61, 30 codigo: 61,
31 letraComprobante: 'B', 31 letraComprobante: 'B',
32 tipoComprobante: 'LP' 32 tipoComprobante: 'LP'
33 } 33 }
34 ] 34 ]
35 35
36 return tablaAfip.filter(function(comprobante) { 36 var result = tablaAfip.filter(function(comprobante) {
37 return comprobante.codigo == parseInt(codigo) 37 return comprobante.codigo == parseInt(codigo)
38 })[0]; 38 })[0];
39 39
40 if (!result) {
41 result = {
42 letraComprobante: 'CIB',
43 tipoComprobante: 'CI'
44 }
45 }
46
47 return result;
48
40 } 49 }
41 50
1 const webSocketServer = require('ws').Server; 1 config = require('./config/config.json');
2 const fs = require('fs');
3 const config = require('./config/config.json');
4 2
5 const planex = require('./planex/index')(''); 3 require('./watch/index')(config.dir, onGetFile);
6 4
7 const debo = require('./debo/index')(planex); 5 const wsServer = require('./webSocketServer/index')();
8 6
9 console.log(planex); 7 function onGetFile(event, fileString) {
10 console.log(debo);
11 8
12 fs.watch(__dirname, function (event, file) { 9 if (!fileString) return;
13 console.log(event);
14 console.log(file);
15 });
16 10
17 const wsServer = new webSocketServer({ 11 var planex = require('./planex/index')(fileString);
18 port: config.port
19 });
20 12
21 wsServer.on('connection', function connection(ws) { 13 var entidades = [];
22 14
23 console.log('open socket server'); 15 wsServer.getEntidad('7790968003283', 'PROVEED').then(function(data) {
16 entidades.push({ entidad:'proveedores', data: data})
17 });
24 18
25 ws.on('message', function incoming(message) { 19 console.log(entidades.length);
26 20
27 message = message.toString('utf8'); 21 var debo = require('./debo/index')(planex, entidades);
28 console.log(message);
29 22
30 switch (message) { 23 // console.log(debo);
31 case message.action == 'gln': 24
32 ws.gln = message.gln; 25 }
33 break;
34 default:
35 break;
36 }
37 });
38 });
39 26
planex/comprobantesReferencia.js
1 module.exports = function(comprobante) { 1 module.exports = function(comprobante) {
2
3 comprobante = '020;RE;0009;00093491;;'
4 2
5 var comprobanteArr = comprobante.split(';'); 3 var comprobanteArr = comprobante.split(';');
6 4
7 return { 5 return {
8 tipoDocumentoReferencia: comprobanteArr[1], 6 tipoDocumentoReferencia: comprobanteArr[1],
9 puntoVentaReferencia: parseInt(comprobanteArr[2]), 7 puntoVentaReferencia: parseInt(comprobanteArr[2]),
10 numeroDocumentoReferencia: parseInt(comprobanteArr[3]), 8 numeroDocumentoReferencia: parseInt(comprobanteArr[3]),
11 fechaComprobanteReferencia: comprobanteArr[4], 9 fechaComprobanteReferencia: comprobanteArr[4],
12 cuitEmisorComprobanteAsociado: comprobanteArr[5] 10 cuitEmisorComprobanteAsociado: comprobanteArr[5]
13 } 11 }
14 } 12 }
15 13
planex/detallePercepcionesIIBB.js
1 module.exports = function(comprobante, returnFloatByDecimals) { 1 module.exports = function(comprobante, returnFloatByDecimals) {
2
3 comprobante = '070;01;000000000000411;00;000000000000000;PERC .I.B. BS. A.S;00250;000000000016436;00000;000000000000000 ';
4 2
5 var comprobanteArr = comprobante.split(';'); 3 var comprobanteArr = comprobante.split(';');
6 4
7 return { 5 return {
8 codigoJurisdiccionIB: comprobanteArr[1], 6 codigoJurisdiccionIB: comprobanteArr[1],
9 importePercepcionesIB: returnFloatByDecimals(comprobanteArr[2], 2), 7 importePercepcionesIB: returnFloatByDecimals(comprobanteArr[2], 2),
10 jurisdiccionImpuestosMunicipales: comprobanteArr[3], 8 jurisdiccionImpuestosMunicipales: comprobanteArr[3],
11 importePercepcionesImpuestosMunicipales: returnFloatByDecimals(comprobanteArr[4], 2), 9 importePercepcionesImpuestosMunicipales: returnFloatByDecimals(comprobanteArr[4], 2),
12 descripcionPercepcionIB: comprobanteArr[5], 10 descripcionPercepcionIB: comprobanteArr[5],
13 porcentajePercepcionesIB: returnFloatByDecimals(comprobanteArr[6], 2), 11 porcentajePercepcionesIB: returnFloatByDecimals(comprobanteArr[6], 2),
14 importeBasePercepcionesIB: returnFloatByDecimals(comprobanteArr[7], 2), 12 importeBasePercepcionesIB: returnFloatByDecimals(comprobanteArr[7], 2),
15 porcentajePercepcionesImpuestosMunicipales: returnFloatByDecimals(comprobanteArr[8], 2), 13 porcentajePercepcionesImpuestosMunicipales: returnFloatByDecimals(comprobanteArr[8], 2),
16 importeBasePercepcionesImpuestosMunicipales: returnFloatByDecimals(comprobanteArr[9], 2) 14 importeBasePercepcionesImpuestosMunicipales: returnFloatByDecimals(comprobanteArr[9], 2)
17 }; 15 };
18 } 16 }
19 17
planex/detallesImportesIVA.js
1 module.exports = function(comprobante, returnFloatByDecimals) { 1 module.exports = function(comprobante, returnFloatByDecimals) {
2 2
3 comprobante = '060;02100;000000000024349;000000000115946;000000000000000';
4
5 var comprobanteArr = comprobante.split(';'); 3 var comprobanteArr = comprobante.split(';');
6 4
7 return { 5 return {
8 alicuotaIVAAplicable: returnFloatByDecimals(comprobanteArr[1], 2), 6 alicuotaIVAAplicable: returnFloatByDecimals(comprobanteArr[1], 2),
9 importeLiquidado: returnFloatByDecimals(comprobanteArr[2], 2), 7 importeLiquidado: returnFloatByDecimals(comprobanteArr[2], 2),
10 importeNetoGravado: returnFloatByDecimals(comprobanteArr[3], 2), 8 importeNetoGravado: returnFloatByDecimals(comprobanteArr[3], 2),
11 importeLiquidadoRNI: returnFloatByDecimals(comprobanteArr[4], 2) 9 importeLiquidadoRNI: returnFloatByDecimals(comprobanteArr[4], 2)
12 }; 10 };
13 } 11 }
14 12
planex/identificaxComprobante.js
1 module.exports = function(comprobante) { 1 module.exports = function(comprobante) {
2 2
3 var comprobante = '010;01;00081929;00081929;0002;20120927;20120927;;;14 DIAS;;;32012114736927;20140716;;;;;;;;;;;20120927';
4
5 var comprobanteArr = comprobante.split(';'); 3 var comprobanteArr = comprobante.split(';');
6 4
7 return { 5 return {
8 tipo: comprobanteArr[1], 6 tipo: comprobanteArr[1],
9 numero: parseInt(comprobanteArr[2]), 7 numero: parseInt(comprobanteArr[2]),
10 numeroRegistrado: parseInt(comprobanteArr[3]), 8 numeroRegistrado: parseInt(comprobanteArr[3]),
11 puntoVenta: parseInt(comprobanteArr[4]), 9 puntoVenta: parseInt(comprobanteArr[4]),
12 fechaComprobante: comprobanteArr[5], 10 fechaComprobante: comprobanteArr[5],
13 fechaVencimiento: comprobanteArr[6], 11 fechaVencimiento: comprobanteArr[6],
14 fechaSegundoVencimiento: comprobanteArr[7], 12 fechaSegundoVencimiento: comprobanteArr[7],
15 fechaProximoVencimiento: comprobanteArr[8], 13 fechaProximoVencimiento: comprobanteArr[8],
16 condicionPago: comprobanteArr[9], 14 condicionPago: comprobanteArr[9],
17 caeOCaea: comprobanteArr[10], 15 caeOCaea: comprobanteArr[10],
18 fechaVencimientoCaeOCaea: comprobanteArr[11], 16 fechaVencimientoCaeOCaea: comprobanteArr[11],
19 cai: comprobanteArr[12], 17 cai: comprobanteArr[12],
20 fechaVencimientoCai: comprobanteArr[14], 18 fechaVencimientoCai: comprobanteArr[14],
21 motivo: comprobanteArr[15], 19 motivo: comprobanteArr[15],
22 fechaServicioDesde: comprobanteArr[16], 20 fechaServicioDesde: comprobanteArr[16],
23 fechaServicioHasta: comprobanteArr[17], 21 fechaServicioHasta: comprobanteArr[17],
24 codigoControladorFiscal: comprobanteArr[17], 22 codigoControladorFiscal: comprobanteArr[17],
25 codigoOperacion: comprobanteArr[18], 23 codigoOperacion: comprobanteArr[18],
26 cantidadHojas: comprobanteArr[19], 24 cantidadHojas: comprobanteArr[19],
27 datosCodigoBarraParaCobranza: comprobanteArr[20], 25 datosCodigoBarraParaCobranza: comprobanteArr[20],
28 datosOtroCodigoBarras: comprobanteArr[21], 26 datosOtroCodigoBarras: comprobanteArr[21],
29 datosCodigoParaPagoElectronico: comprobanteArr[22], 27 datosCodigoParaPagoElectronico: comprobanteArr[22],
30 fechaAnulacion: comprobanteArr[23], 28 fechaAnulacion: comprobanteArr[23],
31 fechaEntrega: comprobanteArr[24], 29 fechaEntrega: comprobanteArr[24],
32 numeroVisualizador: comprobanteArr[25] 30 numeroVisualizador: comprobanteArr[25]
33 }; 31 };
34 } 32 }
35 33
planex/identificaxEmisor.js
1 module.exports = function(comprobante) { 1 module.exports = function(comprobante) {
2 2
3 comprobante = '030;EMPRESA EMISORA S.A.;7790522012340;01;902-108324-2;19690727;;Maximo M 885;;;;;;;Lanus Oeste;Buenos Aires;1824;;;30123654736;;;;;;'
4
5 comprobanteArr = comprobante.split(';'); 3 comprobanteArr = comprobante.split(';');
6 4
7 return { 5 return {
8 razonSocial: comprobanteArr[1], 6 razonSocial: comprobanteArr[1],
9 glnEmisor: comprobanteArr[2], 7 glnEmisor: comprobanteArr[2],
10 ivaEmisor: comprobanteArr[3], 8 ivaEmisor: comprobanteArr[3],
11 numeroIngresosBrutos: comprobanteArr[4], 9 numeroIngresosBrutos: comprobanteArr[4],
12 inicioActividades: comprobanteArr[5], 10 inicioActividades: comprobanteArr[5],
13 contacto: comprobanteArr[6], 11 contacto: comprobanteArr[6],
14 direccion: comprobanteArr[7], 12 direccion: comprobanteArr[7],
15 numero: comprobanteArr[8], 13 numero: comprobanteArr[8],
16 piso: comprobanteArr[9], 14 piso: comprobanteArr[9],
17 departamento: comprobanteArr[10], 15 departamento: comprobanteArr[10],
18 sector: comprobanteArr[11], 16 sector: comprobanteArr[11],
19 torre: comprobanteArr[12], 17 torre: comprobanteArr[12],
20 manzana: comprobanteArr[13], 18 manzana: comprobanteArr[13],
21 localidad: comprobante[14], 19 localidad: comprobante[14],
22 provincia: comprobanteArr[15], 20 provincia: comprobanteArr[15],
23 codigoPostal: comprobanteArr[16], 21 codigoPostal: comprobanteArr[16],
24 email: comprobanteArr[17], 22 email: comprobanteArr[17],
25 telefono: comprobanteArr[18], 23 telefono: comprobanteArr[18],
26 cuit: comprobanteArr[19], 24 cuit: comprobanteArr[19],
27 codigoAgenciaResponsableListaCodigos: comprobanteArr[20], 25 codigoAgenciaResponsableListaCodigos: comprobanteArr[20],
28 numeroEstablecimientoEmisor: comprobanteArr[21], 26 numeroEstablecimientoEmisor: comprobanteArr[21],
29 numeroAgentePercepcionProvincialDelEmisor: comprobanteArr[22], 27 numeroAgentePercepcionProvincialDelEmisor: comprobanteArr[22],
30 numeroAgentePercepcionMunicipalDelEmisor: comprobanteArr[23], 28 numeroAgentePercepcionMunicipalDelEmisor: comprobanteArr[23],
31 numeroFax: comprobanteArr[24], 29 numeroFax: comprobanteArr[24],
32 codigoVendedor: comprobanteArr[25] 30 codigoVendedor: comprobanteArr[25]
33 }; 31 };
34 } 32 }
35 33
planex/identificaxReceptorFactura.js
1 module.exports = function(comprobante) { 1 module.exports = function(comprobante) {
2
3 comprobante = '040;CADENARECEPTORA;7798032710006;401000;01;;9011890556;;CALLE 401 6TO PISO;;;;;;;Cap. federal;1640;;;80;30123654434;;;;; '
4 2
5 var comprobanteArr = comprobante.split(';'); 3 var comprobanteArr = comprobante.split(';');
6 4
7 return { 5 return {
8 razonSocial: comprobanteArr[1], 6 razonSocial: comprobanteArr[1],
9 glnReceptor: comprobanteArr[2], 7 glnReceptor: comprobanteArr[2],
10 codigoInternoReceptorParaEmisor: comprobanteArr[3], 8 codigoInternoReceptorParaEmisor: comprobanteArr[3],
11 ivaReceptor: comprobanteArr[4], 9 ivaReceptor: comprobanteArr[4],
12 codigoJurisdiccionIBReceptor: comprobanteArr[5], 10 codigoJurisdiccionIBReceptor: comprobanteArr[5],
13 numeroIngresosBrutos: comprobanteArr[6], 11 numeroIngresosBrutos: comprobanteArr[6],
14 contacto: comprobanteArr[7], 12 contacto: comprobanteArr[7],
15 direccionCalle: comprobanteArr[8], 13 direccionCalle: comprobanteArr[8],
16 direccionNumero: comprobanteArr[9], 14 direccionNumero: comprobanteArr[9],
17 piso: comprobanteArr[10], 15 piso: comprobanteArr[10],
18 departamento: comprobanteArr[11], 16 departamento: comprobanteArr[11],
19 sector: comprobanteArr[12], 17 sector: comprobanteArr[12],
20 torre: comprobanteArr[13], 18 torre: comprobanteArr[13],
21 manzana: comprobanteArr[14], 19 manzana: comprobanteArr[14],
22 localidad: comprobanteArr[15], 20 localidad: comprobanteArr[15],
23 provincia: comprobanteArr[16], 21 provincia: comprobanteArr[16],
24 codigoPostal: comprobanteArr[17], 22 codigoPostal: comprobanteArr[17],
25 email: comprobanteArr[18], 23 email: comprobanteArr[18],
26 telefono: comprobanteArr[19], 24 telefono: comprobanteArr[19],
27 tipoDocumentoReceptor: comprobanteArr[20], 25 tipoDocumentoReceptor: comprobanteArr[20],
28 numeroDocumentoReceptor: comprobanteArr[21], 26 numeroDocumentoReceptor: comprobanteArr[21],
29 codigoAgenciaResponsableListaCodigos: comprobanteArr[22], 27 codigoAgenciaResponsableListaCodigos: comprobanteArr[22],
30 codigoDptoOPersonaAQuienVaDirigidoElComp: comprobanteArr[23], 28 codigoDptoOPersonaAQuienVaDirigidoElComp: comprobanteArr[23],
31 nombreDptoOPersonaAQuienVaDirigidoElComp: comprobanteArr[24], 29 nombreDptoOPersonaAQuienVaDirigidoElComp: comprobanteArr[24],
32 numeroFax: comprobanteArr[25], 30 numeroFax: comprobanteArr[25],
33 municipio: comprobanteArr[26] 31 municipio: comprobanteArr[26]
34 }; 32 };
35 } 33 }
36 34
planex/identificaxSucursalReceptorFactura.js
1 module.exports = function(comprobante) { 1 module.exports = function(comprobante) {
2 2
3 comprobante = '045;SUCURSAL CADENA RECEPTORA;7791236854;;;;;;;;;;;;;;;;;;80;30123610434;;;;;;; ';
4
5 var comprobanteArr = comprobante.split(';'); 3 var comprobanteArr = comprobante.split(';');
6 4
7 return { 5 return {
8 razonSocial: comprobanteArr[1], 6 razonSocial: comprobanteArr[1],
9 glnSucursal: comprobanteArr[2], 7 glnSucursal: comprobanteArr[2],
10 codigoInternoSucursalReceptorParaEmisor: comprobanteArr[3], 8 codigoInternoSucursalReceptorParaEmisor: comprobanteArr[3],
11 ivaSucursal: comprobanteArr[4], 9 ivaSucursal: comprobanteArr[4],
12 codigoJurisdiccionIB: comprobanteArr[5], 10 codigoJurisdiccionIB: comprobanteArr[5],
13 numeroIB: comprobanteArr[6], 11 numeroIB: comprobanteArr[6],
14 contacto: comprobanteArr[7], 12 contacto: comprobanteArr[7],
15 direccion: comprobanteArr[8], 13 direccion: comprobanteArr[8],
16 numero: comprobanteArr[9], 14 numero: comprobanteArr[9],
17 piso: comprobanteArr[10], 15 piso: comprobanteArr[10],
18 departamento: comprobanteArr[11], 16 departamento: comprobanteArr[11],
19 sector: comprobanteArr[12], 17 sector: comprobanteArr[12],
20 torre: comprobanteArr[13], 18 torre: comprobanteArr[13],
21 manzana: comprobanteArr[14], 19 manzana: comprobanteArr[14],
22 localidad: comprobanteArr[15], 20 localidad: comprobanteArr[15],
23 provincia: comprobanteArr[16], 21 provincia: comprobanteArr[16],
24 codigoPostal: comprobanteArr[17], 22 codigoPostal: comprobanteArr[17],
25 email: comprobanteArr[18], 23 email: comprobanteArr[18],
26 telefono: comprobanteArr[19], 24 telefono: comprobanteArr[19],
27 tipoDocumento: comprobanteArr[20], 25 tipoDocumento: comprobanteArr[20],
28 numeroDocumento: comprobanteArr[21], 26 numeroDocumento: comprobanteArr[21],
29 codigoAgenciaResponsableListaCodigos: comprobanteArr[22], 27 codigoAgenciaResponsableListaCodigos: comprobanteArr[22],
30 codigoDptoOPersonaAQuienVaDirigidoElMsj: comprobanteArr[23], 28 codigoDptoOPersonaAQuienVaDirigidoElMsj: comprobanteArr[23],
31 nombreDptoOPersonaAQuienVaDirigidoElMsj: comprobanteArr[24], 29 nombreDptoOPersonaAQuienVaDirigidoElMsj: comprobanteArr[24],
32 numeroFax: comprobanteArr[25], 30 numeroFax: comprobanteArr[25],
33 municipio: comprobanteArr[26], 31 municipio: comprobanteArr[26],
34 numeroSucursalReceptorParaEmisor: comprobanteArr[27], 32 numeroSucursalReceptorParaEmisor: comprobanteArr[27],
35 } 33 }
36 } 34 }
37 35
planex/importesTotales.js
1 module.exports = function(comprobante, returnFloatByDecimals) { 1 module.exports = function(comprobante, returnFloatByDecimals) {
2 2
3 comprobante = '050;000000000000000;000000000000000;000000000000000;000000000140295;000000000000000;000000000115946;000000 000024349;000000000000000;000000000000000;000000000000000;000000000000000;000000000000000;000000000000000;;PES;00001000000;1;000000000000000;;;'
4
5 var comprobanteArr = comprobante.split(';'); 3 var comprobanteArr = comprobante.split(';');
6 4
7 return { 5 return {
8 saldoAnterior: returnFloatByDecimals(comprobanteArr[1], 2), 6 saldoAnterior: returnFloatByDecimals(comprobanteArr[1], 2),
9 totalBruto: returnFloatByDecimals(comprobanteArr[2], 2), 7 totalBruto: returnFloatByDecimals(comprobanteArr[2], 2),
10 totalNeto: returnFloatByDecimals(comprobanteArr[3], 2), 8 totalNeto: returnFloatByDecimals(comprobanteArr[3], 2),
11 totalOperacion: returnFloatByDecimals(comprobanteArr[4], 2), 9 totalOperacion: returnFloatByDecimals(comprobanteArr[4], 2),
12 totalConceptosNoNetoGravado: returnFloatByDecimals(comprobanteArr[5], 2), 10 totalConceptosNoNetoGravado: returnFloatByDecimals(comprobanteArr[5], 2),
13 netoGravado: returnFloatByDecimals(comprobanteArr[6], 2), 11 netoGravado: returnFloatByDecimals(comprobanteArr[6], 2),
14 liquidado: returnFloatByDecimals(comprobanteArr[7], 2), 12 liquidado: returnFloatByDecimals(comprobanteArr[7], 2),
15 liquidadoRNI: returnFloatByDecimals(comprobanteArr[8], 2), 13 liquidadoRNI: returnFloatByDecimals(comprobanteArr[8], 2),
16 importeOperacionesExentas: returnFloatByDecimals(comprobanteArr[9], 2), 14 importeOperacionesExentas: returnFloatByDecimals(comprobanteArr[9], 2),
17 importeActaImpuestosNacionales: returnFloatByDecimals(comprobanteArr[10], 2), 15 importeActaImpuestosNacionales: returnFloatByDecimals(comprobanteArr[10], 2),
18 importeIB: returnFloatByDecimals(comprobanteArr[11], 2), 16 importeIB: returnFloatByDecimals(comprobanteArr[11], 2),
19 importeImpuestosMunicipales: returnFloatByDecimals(comprobanteArr[12], 2), 17 importeImpuestosMunicipales: returnFloatByDecimals(comprobanteArr[12], 2),
20 importeImpuestosInternos: returnFloatByDecimals(comprobanteArr[13], 2), 18 importeImpuestosInternos: returnFloatByDecimals(comprobanteArr[13], 2),
21 transporte: returnFloatByDecimals(comprobanteArr[14], 2), 19 transporte: returnFloatByDecimals(comprobanteArr[14], 2),
22 monedaFacturacion: comprobanteArr[15], 20 monedaFacturacion: comprobanteArr[15],
23 tipoCambioFacturacion: returnFloatByDecimals(comprobanteArr[16], 2), 21 tipoCambioFacturacion: returnFloatByDecimals(comprobanteArr[16], 2),
24 cantidadAlicuotasIVA: comprobanteArr[17], 22 cantidadAlicuotasIVA: comprobanteArr[17],
25 totalFacturaSegundoVencimiento: returnFloatByDecimals(comprobanteArr[18], 2), 23 totalFacturaSegundoVencimiento: returnFloatByDecimals(comprobanteArr[18], 2),
26 observaciones: comprobanteArr[19], 24 observaciones: comprobanteArr[19],
27 observacionesDebitoAutomatico: comprobanteArr[20], 25 observacionesDebitoAutomatico: comprobanteArr[20],
28 fechaTipoCambioFacturacion: comprobanteArr[21], 26 fechaTipoCambioFacturacion: comprobanteArr[21],
29 monedaPago: comprobanteArr[22], 27 monedaPago: comprobanteArr[22],
30 tipoCambioMonedaPago: returnFloatByDecimals(comprobanteArr[23], 6), 28 tipoCambioMonedaPago: returnFloatByDecimals(comprobanteArr[23], 6),
31 fechaTipoCambioPago: comprobanteArr[24], 29 fechaTipoCambioPago: comprobanteArr[24],
32 importeOtrosTributos: returnFloatByDecimals(comprobanteArr[25], 2) 30 importeOtrosTributos: returnFloatByDecimals(comprobanteArr[25], 2)
33 }; 31 };
34 } 32 }
35 33
1 module.exports = function(comprobante) { 1 module.exports = function(comprobante) {
2 2
3 // split por salto de línea
4 comprobante = comprobante.split(/\r?\n/);
5
6 var objReturn = {
7 identificaxComprobante: {},
8 identificaxMensaje: {},
9 comprobantesReferencia: [],
10 identificaxEmisor: {},
11 informaxRepresentanteEmisor: {},
12 identificaxReceptorFactura: {},
13 identificaxSucursalReceptorFactura: {},
14 importesTotales: {},
15 detallesImportesIVA: {},
16 detallePercepcionesIIBB: {},
17 descuentosGlobalesFactura: {},
18 detalleOtrosImpuestosComprobante: {},
19 itemsFactura: [],
20 detalleDescuentosItemFactura: {},
21 detalleImpuestosItemFactura: {}
22 };
3 23
4 function returnFloatByDecimals(parameter, cantDecimal) { 24 function returnFloatByDecimals(parameter, cantDecimal) {
5 25
6 if (!parameter) return; 26 if (!parameter) return;
7 27
8 var antesDeLaComa = parseFloat(parameter.slice(0, parameter.length - cantDecimal)); 28 var beforeSemiColon = parseFloat(parameter.slice(0, parameter.length - cantDecimal));
9 29
10 var despuesDeLaComa = parameter.slice(parameter.length - cantDecimal, parameter.length); 30 var afterSemicolon = parameter.slice(parameter.length - cantDecimal, parameter.length);
11 31
12 return parseFloat(antesDeLaComa + '.' + despuesDeLaComa); 32 return parseFloat(beforeSemiColon + '.' + afterSemicolon);
13 } 33 }
14 34
15 return { 35 comprobante.forEach(sector => {
16 identificaxComprobante: require('./identificaxComprobante')(comprobante),// 010 36
17 identificaxMensaje: require('./identificaxMensaje')(comprobante),// 012 37 if (sector.slice(0, 3) == '010') {
18 comprobantesReferencia: require('./comprobantesReferencia')(comprobante), // 020 38 objReturn.identificaxComprobante = require('./identificaxComprobante')(sector)// 010
19 identificaxEmisor: require('./identificaxEmisor')(comprobante), // 030 39 } else if (sector.slice(0, 3) == '012') {
20 informaxRepresentanteEmisor: require('./informaxRepresentanteEmisor')(comprobante), // 035 40 objReturn.identificaxMensaje = require('./identificaxMensaje')(sector)// 012
21 identificaxReceptorFactura: require('./identificaxReceptorFactura')(comprobante), // 040 41 } else if (sector.slice(0, 3) == '020') {
22 identificaxSucursalReceptorFactura: require('./identificaxSucursalReceptorFactura')(comprobante), // 045 42 objReturn.comprobantesReferencia.push(require('./comprobantesReferencia')(sector)) // 020
23 importesTotales: require('./importesTotales')(comprobante, returnFloatByDecimals), // 050 43 } else if (sector.slice(0, 3) == '030') {
24 detallesImportesIVA: require('./detallesImportesIVA')(comprobante, returnFloatByDecimals), // 060 44 objReturn.identificaxEmisor = require('./identificaxEmisor')(sector) // 030
25 detallePercepcionesIIBB: require('./detallePercepcionesIIBB')(comprobante, returnFloatByDecimals), // 070 45 } else if (sector.slice(0, 3) == '035') {
26 descuentosGlobalesFactura: require('./descuentosGlobalesFactura')(comprobante, returnFloatByDecimals), // 080 46 objReturn.informaxRepresentanteEmisor = require('./informaxRepresentanteEmisor')(sector) // 035
27 detalleOtrosImpuestosComprobante: require('./detalleOtrosImpuestosComprobante')(comprobante, returnFloatByDecimals), // 090 47 } else if (sector.slice(0, 3) == '040') {
28 itemsFactura: require('./itemsFactura')(comprobante, returnFloatByDecimals), // 100 48 objReturn.identificaxReceptorFactura = require('./identificaxReceptorFactura')(sector) // 040
29 detalleDescuentosItemFactura: require('./detalleDescuentosItemFactura')(comprobante, returnFloatByDecimals), // 110 49 } else if (sector.slice(0, 3) == '045') {
30 detalleImpuestosItemFactura: require('./detalleImpuestosItemFactura')(comprobante, returnFloatByDecimals), // 120 50 objReturn.identificaxSucursalReceptorFactura = require('./identificaxSucursalReceptorFactura')(sector) // 045
31 }; 51 } else if (sector.slice(0, 3) == '050') {
52 objReturn.importesTotales = require('./importesTotales')(sector, returnFloatByDecimals) // 050
53 } else if (sector.slice(0, 3) == '060') {
54 objReturn.detallesImportesIVA = require('./detallesImportesIVA')(sector, returnFloatByDecimals) // 060
55 } else if (sector.slice(0, 3) == '070') {
56 objReturn.detallePercepcionesIIBB = require('./detallePercepcionesIIBB')(sector, returnFloatByDecimals) // 070
57 } else if (sector.slice(0, 3) == '080') {
58 objReturn.descuentosGlobalesFactura = require('./descuentosGlobalesFactura')(sector, returnFloatByDecimals) // 080
59 } else if (sector.slice(0, 3) == '090') {
60 objReturn.detalleOtrosImpuestosComprobante = require('./detalleOtrosImpuestosComprobante')(sector, returnFloatByDecimals) // 090
61 } else if (sector.slice(0, 3) == '100') {
62 objReturn.itemsFactura.push(require('./itemsFactura')(sector, returnFloatByDecimals)); // 100
63 } else if (sector.slice(0, 3) == '110') {
64 objReturn.detalleDescuentosItemFactura = require('./detalleDescuentosItemFactura')(sector, returnFloatByDecimals); // 110
65 } else if (sector.slice(0, 3) == '120') {
66 objReturn.detalleImpuestosItemFactura = require('./detalleImpuestosItemFactura')(sector, returnFloatByDecimals); // 120
67 }
68 });
69
70 return objReturn;
32 } 71 }
33 72
planex/itemsFactura.js
1 module.exports = function(comprobante, returnFloatByDecimals) { 1 module.exports = function(comprobante, returnFloatByDecimals) {
2 2
3 comprobante = '100;000001;74300;2087455000005;DescripciónArticulo;000000000500000;;000000000035500;02100;0000 00000003452;000000000016437;000000000000000;000000000000000;G; ;000000000000100;000000000000100;CR;CU;000000000032873;7798569874125;; ';
4
5 var comprobanteArr = comprobante.split(';'); 3 var comprobanteArr = comprobante.split(';');
6 4
7 return { 5 return {
8 numeroLinea: comprobanteArr[1], 6 numeroLinea: comprobanteArr[1],
9 codigoProductoServicio: comprobanteArr[2], 7 codigoProductoServicio: comprobanteArr[2],
10 codigoProductoServicioComprador: comprobanteArr[3], 8 codigoProductoServicioComprador: comprobanteArr[3],
11 descripcion: comprobanteArr[4], 9 descripcion: comprobanteArr[4],
12 cantidad: returnFloatByDecimals(comprobanteArr[5], 5), 10 cantidad: returnFloatByDecimals(comprobanteArr[5], 5),
13 unidadMedida: comprobanteArr[6], 11 unidadMedida: comprobanteArr[6],
14 precioUnitario: returnFloatByDecimals(comprobanteArr[7], 3), 12 precioUnitario: returnFloatByDecimals(comprobanteArr[7], 3),
15 alicuotaIVAAplicable: returnFloatByDecimals(comprobanteArr[8], 2), 13 alicuotaIVAAplicable: returnFloatByDecimals(comprobanteArr[8], 2),
16 importeIVA: returnFloatByDecimals(comprobanteArr[9], 2), 14 importeIVA: returnFloatByDecimals(comprobanteArr[9], 2),
17 subtotalPorRegistro: returnFloatByDecimals(comprobanteArr[10], 2), 15 subtotalPorRegistro: returnFloatByDecimals(comprobanteArr[10], 2),
18 importeBonificacion: returnFloatByDecimals(comprobanteArr[11], 2), 16 importeBonificacion: returnFloatByDecimals(comprobanteArr[11], 2),
19 importeAjuste: returnFloatByDecimals(comprobanteArr[12], 2), 17 importeAjuste: returnFloatByDecimals(comprobanteArr[12], 2),
20 indicacionExento: comprobanteArr[13], 18 indicacionExento: comprobanteArr[13],
21 indicacionAnulacion: comprobanteArr[14], 19 indicacionAnulacion: comprobanteArr[14],
22 numeroUnidadesPorUnidadEmbalaje: returnFloatByDecimals(comprobanteArr[15], 2), 20 numeroUnidadesPorUnidadEmbalaje: returnFloatByDecimals(comprobanteArr[15], 2),
23 cantidadEmbalajes: returnFloatByDecimals(comprobanteArr[16], 2), 21 cantidadEmbalajes: returnFloatByDecimals(comprobanteArr[16], 2),
24 codigoTipoEmbalaje: comprobanteArr[17], 22 codigoTipoEmbalaje: comprobanteArr[17],
25 unidadReferenciaDescripcion: comprobanteArr[18], 23 unidadReferenciaDescripcion: comprobanteArr[18],
26 precioUnitarioSinImpuestos: returnFloatByDecimals(comprobanteArr[19], 3), 24 precioUnitarioSinImpuestos: returnFloatByDecimals(comprobanteArr[19], 3),
27 codigoUPCEAN13: comprobanteArr[20], 25 codigoUPCEAN13: comprobanteArr[20],
28 codigoDUN14: comprobanteArr[21], 26 codigoDUN14: comprobanteArr[21],
29 codigoMercosur: comprobanteArr[22], 27 codigoMercosur: comprobanteArr[22],
30 unidadesMatrix: comprobanteArr[23], 28 unidadesMatrix: comprobanteArr[23],
31 codigoMatrix: comprobanteArr[24], 29 codigoMatrix: comprobanteArr[24],
32 precioLista: returnFloatByDecimals(comprobanteArr[25], 2) 30 precioLista: returnFloatByDecimals(comprobanteArr[25], 2)
33 }; 31 };
34 } 32 }
35 33
File was created 1 module.exports = function(dir, callback) {
2
3 const fs = require('fs');
4
5 fs.watch(dir, function(event, file) {
6
7 var extencion = file.split('.')[1];
8
9 if (extencion == 'plx') {
10
11 fs.readFile(dir + '\\' + file, 'utf8', function(err , fileString) {
12
13 callback(event, fileString);
14 })
15 }
16
17 });
18
19 };
20
webSocketServer/index.js
File was created 1 module.exports = function() {
2
3 const webSocketServer = require('ws').Server;
4 var clients = [];
5
6 const objWs = {};
7
8 objWs.wsServer = new webSocketServer({
9 port: config.port
10 });
11
12 objWs.wsServer.on('connection', function connection(ws) {
13
14 console.log('open socket server');
15
16 ws.on('message', function incoming(message) {
17
18 message = JSON.parse(message.toString('utf8'));
19
20 switch (message.action) {
21 case 'gln':
22 clients.push({ws: ws, gln: message.gln});
23 break;
24 default:
25 console.log(message.action);
26 }
27 });
28 });
29
30 objWs.getEntidad = function(gln, tableName, where) {
31
32 return new Promise(function(resolve, reject) {
33
34 clients.forEach(client => {
35
36 if (client.gln == gln) {
37
38 var enviar = {
39 action: 'getEntity',
40 tableName: tableName,
41 where: where
42 }
43
44 client.ws.send(JSON.stringify(enviar));
45
46 client.ws.on('message', function(message) {
47
48 console.log(JSON.parse(message));
49
50 resolve(message.data);
51 });
52 }
53 });
54 });
55 }
56
57 return objWs;
58 }