Commit 859bdcbb0726d408f9f9bcd962dd81cf8113c99b
1 parent
540b58a031
Exists in
master
parse wesocket
Showing
16 changed files
with
282 additions
and
81 deletions
Show diff stats
afip/index.js
File was created | 1 | module.exports = function(codigo) { | |
2 | |||
3 | var tablaAfip = [ | ||
4 | { | ||
5 | codigo: 1, | ||
6 | letraComprobante: 'A', | ||
7 | tipoComprobante: 'FT' | ||
8 | }, | ||
9 | { | ||
10 | codigo: 7, | ||
11 | letraComprobante: 'B', | ||
12 | tipoComprobante: 'ND' | ||
13 | }, | ||
14 | { | ||
15 | codigo: 8, | ||
16 | letraComprobante: 'B', | ||
17 | tipoComprobante: 'NC' | ||
18 | }, | ||
19 | { | ||
20 | codigo: 15, | ||
21 | letraComprobante: 'C', | ||
22 | tipoComprobante: 'RE' | ||
23 | }, | ||
24 | { | ||
25 | codigo: 60, | ||
26 | letraComprobante: 'A', | ||
27 | tipoComprobante: 'LP' | ||
28 | }, | ||
29 | { | ||
30 | codigo: 61, | ||
31 | letraComprobante: 'B', | ||
32 | tipoComprobante: 'LP' | ||
33 | } | ||
34 | ] | ||
35 | |||
36 | return tablaAfip.filter(function(comprobante) { | ||
37 | return comprobante.codigo == parseInt(codigo) | ||
38 | })[0]; | ||
39 | |||
40 | } |
debo/cabeceraDebo.js
File was created | 1 | module.exports = function(comprobante, afipTablas) { | |
2 | |||
3 | return { | ||
4 | TIP: afipTablas(comprobante.identificaxComprobante.tipo).letraComprobante, // [char](1) NOT NULL, LETRA DEL COMPROBANTE (A,B,C,M,E) | ||
5 | TCO: afipTablas(comprobante.identificaxComprobante.tipo).tipoComprobante, // [char](2) NOT NULL, TIPO DE COMPROBANTE (FT,NC,ND,RE,CI,LP) | ||
6 | SUC: parseInt(comprobante.identificaxComprobante.puntoVenta), // [int] NOT NULL, PUNTO DE VENTA | ||
7 | NCO: parseInt(comprobante.identificaxComprobante.numero), // [bigint] NOT NULL, NUMERO DE COMPROBANTE | ||
8 | 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' | ||
9 | FEC: comprobante.identificaxComprobante.fechaComprobante, // [smalldatetime] NULL, FECHA DEL COMPROBANTE | ||
10 | NOM: null, // [varchar](40) NOT NULL, NOMBRE DEL PROVEEDOR TABLA PROVEED CAMPO NOM | ||
11 | TIV: null, // [tinyint] NOT NULL, TIPO DE IVA CAMPO IVA TABLA PROVEED | ||
12 | CUI: null, // [char](13) NOT NULL, CUIT DEL PROVEEDOR CAMPO CUIT DEL PROVEEDOR O EL QUE VIENE EN LA COMUNICACION | ||
13 | FPA: null, // [tinyint] NOT NULL, FORMA DE PAGO CAMPO FPA TABLA PROVEED | ||
14 | TCA: 1, // [money] NOT NULL, FIJO 1 | ||
15 | DTO: comprobante.descuentosGlobalesFactura.importe, // [money] NOT NULL, DESCUENTO TOTAL SUMATORIA DE LOS DTO POR ITEM | ||
16 | PDT: 0, // [money] NOT NULL, FIJO 0 | ||
17 | NET: null, // [money] NOT NULL, SUMATORIA DE LOS NETOS POR ITEM QUE TIENEN IVA <> 0 | ||
18 | NEE: null, // [money] NOT NULL, SUMATORIA DE LOS NETOS POR ITEM QUE TIENEN IVA = 0 | ||
19 | IRI: comprobante.detallesImportesIVA.importeLiquidado, // [money] NOT NULL, SUMATORIA DE LOS IVA POR ITEM | ||
20 | IRS: 0, // [money] NOT NULL, FIJO 0 | ||
21 | IMI: comprobante.importesTotales.importeImpuestosInternos, // [money] NOT NULL, SUMATORIA DE LOS IMPUESTOS INTERNOS POR ITEM | ||
22 | RGA: null, // [money] NOT NULL, IMPORTE RETENCION DE GANANCIAS | ||
23 | RIB: null, // [money] NOT NULL, IMPORTE RETENCION DE INBRESOS BRUTOS | ||
24 | PIV: null, // [money] NOT NULL, IMPORTE PERCEPCION DE IVA | ||
25 | CNG: comprobante.importesTotales.totalConceptosNoNetoGravado, // [money] NULL, IMPORTE DE CONCEPTOS NO GRAVADOS | ||
26 | TOT: null, // [money] NOT NULL, IMPORTE TOTAL DE LA FACTURA | ||
27 | ZON: null, // [int] NOT NULL, NUMERO DE LA EMPRESA SELECT ZON FROM APAREMP | ||
28 | FEV: comprobante.identificaxComprobante.fechaComprobante, // [datetime] NULL, FECHA DE VENCIMIENTO | ||
29 | 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) | ||
30 | OPE: 0, // [int] NOT NULL, FIJO 0 | ||
31 | REC: 0, // [bigint] NOT NULL, FIJO 0 | ||
32 | FEP: null, // [datetime] NULL, ITEM FECHA FACTURA | ||
33 | NPE: 0, // [bigint] NOT NULL, NOTA DE PEDIDO FIJO 0 | ||
34 | CPA: 0, // [int] NOT NULL, FIJO 0 | ||
35 | ENV: 0, // [int] NOT NULL, FIJO 0 | ||
36 | REM: 0, // [bigint] NOT NULL, FIJO 0 | ||
37 | PRO: ' ', // [char](1) NOT NULL, FIJO ' ' VACIO NO NULO | ||
38 | ANU: ' ', // [char](1) NOT NULL, FIJO ' ' VACIO NO NULO | ||
39 | TUR: 0, // [int] NOT NULL, FIJO 0 | ||
40 | PLA: 0, // [int] NOT NULL, FIJO 0 | ||
41 | LUG: 0, // [int] NOT NULL, FIJO 0 | ||
42 | ATO: 0, // [numeric](18, 0) NOT NULL, FIJO 0 | ||
43 | CCO: 0, // [bigint] NOT NULL, FIJO 0 | ||
44 | IMA: 0, // [int] NOT NULL, FIJO 0 | ||
45 | CCA1: 0, // [int] NOT NULL, FIJO 0 | ||
46 | CCA2: 0, // [int] NOT NULL, FIJO 0 | ||
47 | CCA3: 0, // [int] NOT NULL, FIJO 0 | ||
48 | CCA4: 0, // [int] NOT NULL, FIJO 0 | ||
49 | CCA5: 0, // [int] NOT NULL, FIJO 0 | ||
50 | CCA6: 0, // [int] NOT NULL, FIJO 0 | ||
51 | CCA7: 0, // [int] NOT NULL, FIJO 0 | ||
52 | CCA8: 0, // [int] NOT NULL, FIJO 0 | ||
53 | CCA0: 0, // [int] NOT NULL, FIJO 0 | ||
54 | OBS: comprobante.importesTotales.observaciones, // [varchar](60) NOT NULL, SI VIENEN OBSERVACIONES PONER AQUI SINO VACIO NO NULO | ||
55 | RIV: null, // [money] NOT NULL, IMPORTE RETENCION DE IVA | ||
56 | FECCAI: comprobante.identificaxComprobante.fechaVencimientoCai, // [smalldatetime] NOT NULL, FECHA DEL CAI | ||
57 | CAI: comprobante.identificaxComprobante.cai, // [char](16) NOT NULL, NUMERO DE CAI | ||
58 | CHO: 0, // [int] NOT NULL, FIJO 0 | ||
59 | CTR: '', // [char](1) NOT NULL, VACIO NO NULO | ||
60 | PER: null, // [money] NOT NULL, IMPORTE DE PERCEPCIONES | ||
61 | CCA9: 0, // [int] NOT NULL, FIJO 0 | ||
62 | FECVEN: comprobante.identificaxComprobante.fechaVencimiento, // [smalldatetime] NOT NULL, FECHA DE VENCIMIENTO DE LA FACTURA | ||
63 | CNG2: null, // [money] NOT NULL, IMPORTE DE CONCEPTOS NO GRAVADOS 2 | ||
64 | E_HD: '', // [varchar](8) NOT NULL, VACIO NO NULO | ||
65 | C_HD: '', // [varchar](1) NOT NULL, VACIO NO NULO | ||
66 | RSS: null, // [money] NOT NULL, IMPORTE RETENCIONS SUSS | ||
67 | E_HD2: '', // [varchar](12) NOT NULL, VACIO NO NULO | ||
68 | C_HD2: '', // [varchar](1) NOT NULL, VACIO NO NULO | ||
69 | DTO2: null, // [money] NOT NULL, IMPORTE DE OTROS DESCUENTOS | ||
70 | ENLP: 0, // [bit] NOT NULL, FIJO 0 | ||
71 | COD_TRANS: comprobante.identificaxComprobante.numeroRegistrado, // [bigint] NOT NULL, VER DE PONER EL NUMERO DE REFERENCIA QUE PUEDA UNIRNOS A LO QUE VIENE DESDE PLANEX | ||
72 | RETMUN: comprobante.importesTotales.importeImpuestosMunicipales, // [money] NOT NULL, IMPORTE DE RETENCIONES MUNICIPALES | ||
73 | TIPO_OPERACION: 0, // [int] NOT NULL, FIJO 0 | ||
74 | IRD: 0, // [money] NOT NULL, FIJO 0 | ||
75 | AUX1: 0, // [money] NOT NULL, FIJO 0 | ||
76 | AUX2: 0, // [money] NOT NULL, FIJO 0 | ||
77 | AUX3: 0, // [money] NOT NULL, FIJO 0 | ||
78 | AUX4: 0, // [money] NOT NULL, FIJO 0 | ||
79 | ARBA: null, // [money] NOT NULL, IMPORTE RETENCION ARBA | ||
80 | DGR: null, // [money] NOT NULL, IMPORTE RETENCION DGR | ||
81 | DTO_PIE: null, // [money] NOT NULL, IMPORTE DE DESCUENTO AL PIE, NO POR ITEM | ||
82 | OPERACIONES_3711: 1, // [int] NOT NULL, FIJO 1 (PORQUE SON BIENES) | ||
83 | ORC: null, // [bigint] NOT NULL, NUMERO DE ORDEN DE COMPRA | ||
84 | NC_ES_NP: 0, // [bit] NOT NULL, FIJO 0 | ||
85 | CABA: null, // [money] NOT NULL, IMPORTE RETENCION CABA | ||
86 | ARBA_PER: null, // [money] NOT NULL, IMPORTE PERCEPCION ARBA | ||
87 | CABA_PER: null, // [money] NOT NULL, IMPORTE PERCEPCION CABA | ||
88 | PERMUN: comprobante.importesTotales.importeImpuestosMunicipales, // [money] NOT NULL, IMPORTE PERCEPCIONES MUNICIPALES | ||
89 | IMI2: 0, // [money] NOT NULL, FIJO 0 | ||
90 | }; | ||
91 | } | ||
92 |
debo/cuerpoDebo.js
File was created | 1 | module.exports = function(comprobante) { | |
2 | |||
3 | return { | ||
4 | TIP: null, // [char](1) NOT NULL, LETRA DEL COMPROBANTE (A,B,C,M) | ||
5 | TCO: null, // [char](2) NOT NULL, TIPO DE COMPROBANTE (FT,NC,ND) | ||
6 | SUC: parseInt(comprobante.identificaxComprobante.puntoVenta), // [int] NOT NULL, PUNTO DE VENTA DE LA FACTURA | ||
7 | NCO: parseInt(comprobante.identificaxComprobante.numero), // [bigint] NOT NULL, NUMERO DE COMPROBANTE | ||
8 | 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' | ||
9 | ORD: parseInt(comprobante.itemsFactura.numeroLinea), // [int] NOT NULL, ORDEN DEL ITEM, EMPIEZA EN 1 Y SUMA DE A 1 POR CADA REGISTRO DE MOVIMIENTO | ||
10 | COD: null, // [int] NOT NULL, SECTOR DEBO DEL PRODUCTO | ||
11 | 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' | ||
12 | RUB: null, // [int] NOT NULL, CODIGO DE RUBRO SE OBTIENE DE LA TABLA ARTICULOS SELECT DET_LAR,CODRUB FROM ARTICULOS WHERE CODSEC=SECTOR AND CODART=ARTICULO (DATOS OBTENIDOS EN NOTA ANTERIOR | ||
13 | TIO: null, // [varchar](60) NOT NULL DESCRIPCION DEL PRODUCTO DEL PUNTO ANTERIOR DET_LAR | ||
14 | LI0: comprobante.itemsFactura.descripcion, // [varchar](60) NOT NULL, DESCRIPCION ENVIADA POR EL PROVEEDOR | ||
15 | CAN: comprobante.itemsFactura.cantidad, // [money] NOT NULL, CANTIDAD DEL ITEM | ||
16 | PUN: comprobante.itemsFactura.precioUnitario, // [decimal](20, 8) NOT NULL PRECIO UNITARIO DEL PRODUCTO ITEM | ||
17 | IMI: comprobante.detalleImpuestosItemFactura.importeImpuesto, // [money] NOT NULL, IMPORTE IMPUESTOS INTERNOS DEL ITEM | ||
18 | IVA: comprobante.itemsFactura.importeIVA, // [money] NOT NULL, IMPORTE IVA DEL ITEM | ||
19 | PUT: comprobante.itemsFactura.precioUnitario, // [money] NOT NULL, IGUAL AL PUN | ||
20 | LEG: 0, // [int] NOT NULL, FIJO 0 | ||
21 | CMF: 0, // [int] NOT NULL, FIJO 0 | ||
22 | TUR: 0, // [int] NOT NULL, FIJO 0 | ||
23 | PLA: 0, // [int] NOT NULL, FIJO 0 | ||
24 | LUG: 0, // [int] NOT NULL, FIJO 0 | ||
25 | ESC: 0, // [bit] NOT NULL, FIJO 0 | ||
26 | TAN: 0, // [int] NOT NULL, FIJO 0 | ||
27 | CCO: 0, // [bigint] NOT NULL, FIJO 0 | ||
28 | E_HD: '', // [varchar](8) NOT NULL, FIJO '' VACIO NO NULO | ||
29 | C_HD: '', // [varchar](1) NOT NULL, FIJO '' VACIO NO NULO | ||
30 | DTO: comprobante.detalleDescuentosItemFactura.importeDescuento, // [money] NOT NULL, IMPORTE DESCUENTO DE LA FACTURA | ||
31 | PTA: 0, // [int] NOT NULL, FIJO 0 | ||
32 | SUBM: 0, // [int] NOT NULL, FIJO 0 | ||
33 | E_HD2: '', // [varchar](12) NOT NULL, FIJO '' VACIO NO NULO | ||
34 | C_HD2: '', // [varchar](1) NOT NULL, FIJO '' VACIO NO NULO | ||
35 | COMISION: 0, // [money] NOT NULL, FIJO 0 | ||
36 | LIQ_VTA: '', // [varchar](20) NOT NULL, FIJO '' VACIO NO NULO | ||
37 | COSTO_PMOV: comprobante.itemsFactura.precioUnitario, // [money] NOT NULL, IGUAL AL PUN | ||
38 | SAL_ITEM: 0, // [money] NOT NULL, fijo 0 es el que se llenara al mostrar en la tablet o telefono para que llene operador | ||
39 | TASIVA: comprobante.itemsFactura.alicuotaIVAAplicable, // [money] NOT NULL, TASA DE IVA DEL ITEM = 21.00 / 10.50 / ETC. | ||
40 | }; | ||
41 | } | ||
42 |
debo/index.js
File was created | 1 | module.exports = function(comprobante) { | |
2 | |||
3 | var afipTablas = require('../afip/index'); | ||
4 | |||
5 | return { | ||
6 | cabecera: require('./cabeceraDebo')(comprobante, afipTablas), | ||
7 | cuerpo: require('./cuerpoDebo')(comprobante, afipTablas) | ||
8 | }; | ||
9 | } | ||
10 |
index.js
1 | const webSocketServer = require('ws').Server; | 1 | const webSocketServer = require('ws').Server; |
2 | const fs = require('fs'); | 2 | const fs = require('fs'); |
3 | const config = require('./config/config.json'); | 3 | const config = require('./config/config.json'); |
4 | 4 | ||
5 | const planex = require('./planex/index')(''); | 5 | const planex = require('./planex/index')(''); |
6 | 6 | ||
7 | const debo = require('./debo/index')(planex); | ||
8 | |||
7 | console.log(planex); | 9 | console.log(planex); |
10 | console.log(debo); | ||
8 | 11 | ||
9 | fs.watch(__dirname, function (event, file) { | 12 | fs.watch(__dirname, function (event, file) { |
10 | console.log(event); | 13 | console.log(event); |
11 | console.log(file); | 14 | console.log(file); |
12 | }); | 15 | }); |
13 | 16 | ||
14 | const wsServer = new webSocketServer({ | 17 | const wsServer = new webSocketServer({ |
15 | port: config.port | 18 | port: config.port |
16 | }); | 19 | }); |
17 | 20 | ||
18 | wsServer.on('connection', function connection(ws) { | 21 | wsServer.on('connection', function connection(ws) { |
19 | console.log('open socket server') | 22 | |
23 | console.log('open socket server'); | ||
20 | 24 | ||
21 | ws.on('message', function incoming(message) { | 25 | ws.on('message', function incoming(message) { |
22 | console.log('recibe ho: %s', message); | ||
23 | if (message == 'isAlive?') { | ||
24 | 26 | ||
25 | setTimeout(function () { | 27 | message = message.toString('utf8'); |
26 | ws.send('YES IS ALIVE'); | 28 | console.log(message); |
27 | }, 10000); | 29 | |
30 | switch (message) { | ||
31 | case message.action == 'gln': | ||
32 | ws.gln = message.gln; | ||
33 | break; | ||
34 | default: | ||
35 | break; | ||
28 | } | 36 | } |
29 | }); | 37 | }); |
30 | }); | 38 | }); |
31 | 39 |
planex/comprobantesReferencia.js
1 | module.exports = function(comprobante) { | 1 | module.exports = function(comprobante) { |
2 | 2 | ||
3 | comprobante = '020;RE;0009;00093491;;' | 3 | comprobante = '020;RE;0009;00093491;;' |
4 | 4 | ||
5 | var comprobanteArr = comprobante.split(';'); | 5 | var comprobanteArr = comprobante.split(';'); |
6 | 6 | ||
7 | return { | 7 | return { |
8 | tipoDocumentoReferencia: comprobanteArr[1], | 8 | tipoDocumentoReferencia: comprobanteArr[1], |
9 | puntoVentaReferencia: comprobanteArr[2], | 9 | puntoVentaReferencia: parseInt(comprobanteArr[2]), |
10 | numeroDocumentoReferencia: comprobanteArr[3], | 10 | numeroDocumentoReferencia: parseInt(comprobanteArr[3]), |
11 | fechaComprobanteReferencia: comprobanteArr[4], | 11 | fechaComprobanteReferencia: comprobanteArr[4], |
12 | cuitEmisorComprobanteAsociado: comprobanteArr[5] | 12 | cuitEmisorComprobanteAsociado: comprobanteArr[5] |
13 | } | 13 | } |
14 | } | 14 | } |
15 | 15 |
planex/descuentosGlobalesFactura.js
1 | module.exports = function(comprobante) { | 1 | module.exports = function(comprobante, returnFloatByDecimals) { |
2 | 2 | ||
3 | var comrpobanteArr = comprobante.split(';'); | 3 | var comrpobanteArr = comprobante.split(';'); |
4 | 4 | ||
5 | return { | 5 | return { |
6 | descripcionDescuentoOIntereses: comrpobanteArr[1], | 6 | descripcionDescuentoOIntereses: comrpobanteArr[1], |
7 | porcentaje: comrpobanteArr[2], | 7 | porcentaje: returnFloatByDecimals(comrpobanteArr[2], 2), |
8 | importeBase: comrpobanteArr[3], | 8 | importeBase: returnFloatByDecimals(comrpobanteArr[3], 2), |
9 | importe: comrpobanteArr[4], | 9 | importe: returnFloatByDecimals(comrpobanteArr[4]), |
10 | ClasificadorDescuentoOInteres: comrpobanteArr[5] | 10 | ClasificadorDescuentoOInteres: comrpobanteArr[5] |
11 | }; | 11 | }; |
12 | } | 12 | } |
13 | 13 |
planex/detalleDescuentosItemFactura.js
1 | module.exports = function(comprobante) { | 1 | module.exports = function(comprobante, returnFloatByDecimals) { |
2 | 2 | ||
3 | var comprobanteArr = comprobante.split(';'); | 3 | var comprobanteArr = comprobante.split(';'); |
4 | 4 | ||
5 | return { | 5 | return { |
6 | numeroLinea: comprobanteArr[1], | 6 | numeroLinea: comprobanteArr[1], |
7 | descripcionDescuento: comprobanteArr[2], | 7 | descripcionDescuento: comprobanteArr[2], |
8 | porcentajeDescuento: comprobanteArr[3], | 8 | porcentajeDescuento: returnFloatByDecimals(comprobanteArr[3], 2), |
9 | importeBase: comprobanteArr[4], | 9 | importeBase: returnFloatByDecimals(comprobanteArr[4], 2), |
10 | importeDescuento: comprobanteArr[5], | 10 | importeDescuento: returnFloatByDecimals(comprobanteArr[5], 2) |
11 | }; | 11 | }; |
12 | } | 12 | } |
13 | 13 |
planex/detalleImpuestosItemFactura.js
1 | module.exports = function(comprobante) { | 1 | module.exports = function(comprobante, returnFloatByDecimals) { |
2 | 2 | ||
3 | var comprobanteArr = comprobante.split(';'); | 3 | var comprobanteArr = comprobante.split(';'); |
4 | 4 | ||
5 | return { | 5 | return { |
6 | numeroLinea: comprobanteArr[1], | 6 | numeroLinea: comprobanteArr[1], |
7 | descripcionImpuesto: comprobanteArr[2], | 7 | descripcionImpuesto: comprobanteArr[2], |
8 | procentajeImpuesto: comprobanteArr[3], | 8 | procentajeImpuesto: returnFloatByDecimals(comprobanteArr[3], 2), |
9 | importeBase: comprobanteArr[4], | 9 | importeBase: returnFloatByDecimals(comprobanteArr[4], 2), |
10 | importeImpuesto: comprobanteArr[5] | 10 | importeImpuesto: returnFloatByDecimals(comprobanteArr[5, 2]) |
11 | }; | 11 | }; |
12 | } | 12 | } |
13 | 13 |
planex/detalleOtrosImpuestosComprobante.js
1 | module.exports = function(comprobante) { | 1 | module.exports = function(comprobante, returnFloatByDecimals) { |
2 | 2 | ||
3 | var comprobanteArr = comprobante.split(';'); | 3 | var comprobanteArr = comprobante.split(';'); |
4 | 4 | ||
5 | return { | 5 | return { |
6 | descripcionImpuesto: comprobanteArr[1], | 6 | descripcionImpuesto: comprobanteArr[1], |
7 | porcentaje: comprobanteArr[2], | 7 | porcentaje: returnFloatByDecimals(comprobanteArr[2], 2), |
8 | importeBase: comprobanteArr[3], | 8 | importeBase: returnFloatByDecimals(comprobanteArr[3], 2), |
9 | importeImpuesto: comprobanteArr[4], | 9 | importeImpuesto: returnFloatByDecimals(comprobanteArr[4], 2), |
10 | codigoArancelImpuestoOCuota: comprobanteArr[5], | 10 | codigoArancelImpuestoOCuota: comprobanteArr[5], |
11 | jurisdiccion: comprobanteArr[6] | 11 | jurisdiccion: comprobanteArr[6] |
12 | }; | 12 | }; |
13 | } | 13 | } |
14 | 14 |
planex/detallePercepcionesIIBB.js
1 | module.exports = function(comprobante) { | 1 | module.exports = function(comprobante, returnFloatByDecimals) { |
2 | 2 | ||
3 | comprobante = '070;01;000000000000411;00;000000000000000;PERC .I.B. BS. A.S;00250;000000000016436;00000;000000000000000 '; | 3 | comprobante = '070;01;000000000000411;00;000000000000000;PERC .I.B. BS. A.S;00250;000000000016436;00000;000000000000000 '; |
4 | 4 | ||
5 | var comprobanteArr = comprobante.split(';'); | 5 | var comprobanteArr = comprobante.split(';'); |
6 | 6 | ||
7 | return { | 7 | return { |
8 | codigoJurisdiccionIB: comprobanteArr[1], | 8 | codigoJurisdiccionIB: comprobanteArr[1], |
9 | importePercepcionesIB: comprobanteArr[2], | 9 | importePercepcionesIB: returnFloatByDecimals(comprobanteArr[2], 2), |
10 | jurisdiccionImpuestosMunicipales: comprobanteArr[3], | 10 | jurisdiccionImpuestosMunicipales: comprobanteArr[3], |
11 | importePercepcionesImpuestosMunicipales: comprobanteArr[4], | 11 | importePercepcionesImpuestosMunicipales: returnFloatByDecimals(comprobanteArr[4], 2), |
12 | descripcionPercepcionIB: comprobanteArr[5], | 12 | descripcionPercepcionIB: comprobanteArr[5], |
13 | porcentajePercepcionesIB: comprobanteArr[6], | 13 | porcentajePercepcionesIB: returnFloatByDecimals(comprobanteArr[6], 2), |
14 | importeBasePercepcionesIB: comprobanteArr[7], | 14 | importeBasePercepcionesIB: returnFloatByDecimals(comprobanteArr[7], 2), |
15 | porcentajePercepcionesImpuestosMunicipales: comprobanteArr[8], | 15 | porcentajePercepcionesImpuestosMunicipales: returnFloatByDecimals(comprobanteArr[8], 2), |
16 | importeBasePercepcionesImpuestosMunicipales: comprobanteArr[9] | 16 | importeBasePercepcionesImpuestosMunicipales: returnFloatByDecimals(comprobanteArr[9], 2) |
17 | }; | 17 | }; |
18 | } | 18 | } |
19 | 19 |
planex/detallesImportesIVA.js
1 | module.exports = function(comprobante) { | 1 | module.exports = function(comprobante, returnFloatByDecimals) { |
2 | 2 | ||
3 | comprobante = '060;02100;000000000024349;000000000115946;000000000000000 '; | 3 | comprobante = '060;02100;000000000024349;000000000115946;000000000000000'; |
4 | 4 | ||
5 | var comprobanteArr = comprobante.split(';'); | 5 | var comprobanteArr = comprobante.split(';'); |
6 | 6 | ||
7 | return { | 7 | return { |
8 | alicuotaIVAAplicable: comprobanteArr[1], | 8 | alicuotaIVAAplicable: returnFloatByDecimals(comprobanteArr[1], 2), |
9 | importeLiquidado: comprobanteArr[2], | 9 | importeLiquidado: returnFloatByDecimals(comprobanteArr[2], 2), |
10 | importeNetoGravado: comprobanteArr[3], | 10 | importeNetoGravado: returnFloatByDecimals(comprobanteArr[3], 2), |
11 | importeLiquidadoRNI: comprobanteArr[4] | 11 | importeLiquidadoRNI: returnFloatByDecimals(comprobanteArr[4], 2) |
12 | }; | 12 | }; |
13 | } | 13 | } |
14 | 14 |
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'; | 3 | var comprobante = '010;01;00081929;00081929;0002;20120927;20120927;;;14 DIAS;;;32012114736927;20140716;;;;;;;;;;;20120927'; |
4 | 4 | ||
5 | var comprobanteArr = comprobante.split(';'); | 5 | var comprobanteArr = comprobante.split(';'); |
6 | 6 | ||
7 | return { | 7 | return { |
8 | tipo: comprobanteArr[1], | 8 | tipo: comprobanteArr[1], |
9 | numero: comprobanteArr[2], | 9 | numero: parseInt(comprobanteArr[2]), |
10 | numeroRegistrado: comprobanteArr[3], | 10 | numeroRegistrado: parseInt(comprobanteArr[3]), |
11 | puntoVenta: comprobanteArr[4], | 11 | puntoVenta: parseInt(comprobanteArr[4]), |
12 | fechaComprobante: comprobanteArr[5], | 12 | fechaComprobante: comprobanteArr[5], |
13 | fechaVencimiento: comprobanteArr[6], | 13 | fechaVencimiento: comprobanteArr[6], |
14 | fechaSegundoVencimiento: comprobanteArr[7], | 14 | fechaSegundoVencimiento: comprobanteArr[7], |
15 | fechaProximoVencimiento: comprobanteArr[8], | 15 | fechaProximoVencimiento: comprobanteArr[8], |
16 | condicionPago: comprobanteArr[9], | 16 | condicionPago: comprobanteArr[9], |
17 | caeOCaea: comprobanteArr[10], | 17 | caeOCaea: comprobanteArr[10], |
18 | fechaVencimientoCaeOCaea: comprobanteArr[11], | 18 | fechaVencimientoCaeOCaea: comprobanteArr[11], |
19 | cai: comprobanteArr[12], | 19 | cai: comprobanteArr[12], |
20 | fechaVencimientoCai: comprobanteArr[14], | 20 | fechaVencimientoCai: comprobanteArr[14], |
21 | motivo: comprobanteArr[15], | 21 | motivo: comprobanteArr[15], |
22 | fechaServicioDesde: comprobanteArr[16], | 22 | fechaServicioDesde: comprobanteArr[16], |
23 | fechaServicioHasta: comprobanteArr[17], | 23 | fechaServicioHasta: comprobanteArr[17], |
24 | codigoControladorFiscal: comprobanteArr[17], | 24 | codigoControladorFiscal: comprobanteArr[17], |
25 | codigoOperacion: comprobanteArr[18], | 25 | codigoOperacion: comprobanteArr[18], |
26 | cantidadHojas: comprobanteArr[19], | 26 | cantidadHojas: comprobanteArr[19], |
27 | datosCodigoBarraParaCobranza: comprobanteArr[20], | 27 | datosCodigoBarraParaCobranza: comprobanteArr[20], |
28 | datosOtroCodigoBarras: comprobanteArr[21], | 28 | datosOtroCodigoBarras: comprobanteArr[21], |
29 | datosCodigoParaPagoElectronico: comprobanteArr[22], | 29 | datosCodigoParaPagoElectronico: comprobanteArr[22], |
30 | fechaAnulacion: comprobanteArr[23], | 30 | fechaAnulacion: comprobanteArr[23], |
31 | fechaEntrega: comprobanteArr[24], | 31 | fechaEntrega: comprobanteArr[24], |
32 | numeroVisualizador: comprobanteArr[25] | 32 | numeroVisualizador: comprobanteArr[25] |
33 | }; | 33 | }; |
34 | } | 34 | } |
35 | 35 |
planex/importesTotales.js
1 | module.exports = function(comprobante) { | 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;;; ' | 3 | comprobante = '050;000000000000000;000000000000000;000000000000000;000000000140295;000000000000000;000000000115946;000000 000024349;000000000000000;000000000000000;000000000000000;000000000000000;000000000000000;000000000000000;;PES;00001000000;1;000000000000000;;;' |
4 | 4 | ||
5 | var comprobanteArr = comprobante.split(';'); | 5 | var comprobanteArr = comprobante.split(';'); |
6 | 6 | ||
7 | return { | 7 | return { |
8 | saldoAnterior: comprobanteArr[1], | 8 | saldoAnterior: returnFloatByDecimals(comprobanteArr[1], 2), |
9 | totalBruto: comprobanteArr[2], | 9 | totalBruto: returnFloatByDecimals(comprobanteArr[2], 2), |
10 | totalNeto: comprobanteArr[3], | 10 | totalNeto: returnFloatByDecimals(comprobanteArr[3], 2), |
11 | totalOperacion: comprobanteArr[4], | 11 | totalOperacion: returnFloatByDecimals(comprobanteArr[4], 2), |
12 | totalConceptosNoNetoGravado: comprobanteArr[5], | 12 | totalConceptosNoNetoGravado: returnFloatByDecimals(comprobanteArr[5], 2), |
13 | netoGravado: comprobanteArr[6], | 13 | netoGravado: returnFloatByDecimals(comprobanteArr[6], 2), |
14 | liquidado: comprobanteArr[7], | 14 | liquidado: returnFloatByDecimals(comprobanteArr[7], 2), |
15 | liquidadoRNI: comprobanteArr[8], | 15 | liquidadoRNI: returnFloatByDecimals(comprobanteArr[8], 2), |
16 | importeOperacionesExentas: comprobanteArr[9], | 16 | importeOperacionesExentas: returnFloatByDecimals(comprobanteArr[9], 2), |
17 | importeACtaImpuestosNacionales: comprobanteArr[10], | 17 | importeActaImpuestosNacionales: returnFloatByDecimals(comprobanteArr[10], 2), |
18 | importeIB: comprobanteArr[11], | 18 | importeIB: returnFloatByDecimals(comprobanteArr[11], 2), |
19 | importeImpuestosMunicipales: comprobanteArr[12], | 19 | importeImpuestosMunicipales: returnFloatByDecimals(comprobanteArr[12], 2), |
20 | importeImpuestosInternos: comprobanteArr[13], | 20 | importeImpuestosInternos: returnFloatByDecimals(comprobanteArr[13], 2), |
21 | transporte: comprobanteArr[14], | 21 | transporte: returnFloatByDecimals(comprobanteArr[14], 2), |
22 | monedaFacturacion: comprobanteArr[15], | 22 | monedaFacturacion: comprobanteArr[15], |
23 | tipoCambioFacturacion: comprobanteArr[16], | 23 | tipoCambioFacturacion: returnFloatByDecimals(comprobanteArr[16], 2), |
24 | cantidadAlicuotasIVA: comprobanteArr[17], | 24 | cantidadAlicuotasIVA: comprobanteArr[17], |
25 | totalFacturaSegundoVencimiento: comprobanteArr[18], | 25 | totalFacturaSegundoVencimiento: returnFloatByDecimals(comprobanteArr[18], 2), |
26 | observaciones: comprobanteArr[19], | 26 | observaciones: comprobanteArr[19], |
27 | observacionesDebitoAutomatico: comprobanteArr[20], | 27 | observacionesDebitoAutomatico: comprobanteArr[20], |
28 | fechaTipoCambioFacturacion: comprobanteArr[21], | 28 | fechaTipoCambioFacturacion: comprobanteArr[21], |
29 | monedaPago: comprobanteArr[22], | 29 | monedaPago: comprobanteArr[22], |
30 | tipoCambioMonedaPago: comprobanteArr[23], | 30 | tipoCambioMonedaPago: returnFloatByDecimals(comprobanteArr[23], 6), |
31 | fechaTipoCambioPago: comprobanteArr[24], | 31 | fechaTipoCambioPago: comprobanteArr[24], |
32 | importeOtrosTributos: comprobanteArr[25] | 32 | importeOtrosTributos: returnFloatByDecimals(comprobanteArr[25], 2) |
33 | }; | 33 | }; |
34 | } | 34 | } |
35 | 35 |
planex/index.js
1 | module.exports = function(comprobante) { | 1 | module.exports = function(comprobante) { |
2 | 2 | ||
3 | |||
4 | function returnFloatByDecimals(parameter, cantDecimal) { | ||
5 | |||
6 | if (!parameter) return; | ||
7 | |||
8 | var antesDeLaComa = parseFloat(parameter.slice(0, parameter.length - cantDecimal)); | ||
9 | |||
10 | var despuesDeLaComa = parameter.slice(parameter.length - cantDecimal, parameter.length); | ||
11 | |||
12 | return parseFloat(antesDeLaComa + '.' + despuesDeLaComa); | ||
13 | } | ||
14 | |||
3 | return { | 15 | return { |
4 | identificaxComprobante: require('./identificaxComprobante')(comprobante),// 010 | 16 | identificaxComprobante: require('./identificaxComprobante')(comprobante),// 010 |
5 | identificaxMensaje: require('./identificaxMensaje')(comprobante),// 012 | 17 | identificaxMensaje: require('./identificaxMensaje')(comprobante),// 012 |
6 | comprobantesReferencia: require('./comprobantesReferencia')(comprobante), // 020 | 18 | comprobantesReferencia: require('./comprobantesReferencia')(comprobante), // 020 |
7 | identificaxEmisor: require('./identificaxEmisor')(comprobante), // 030 | 19 | identificaxEmisor: require('./identificaxEmisor')(comprobante), // 030 |
8 | informaxRepresentanteEmisor: require('./informaxRepresentanteEmisor')(comprobante), // 035 | 20 | informaxRepresentanteEmisor: require('./informaxRepresentanteEmisor')(comprobante), // 035 |
9 | identificaxReceptorFactura: require('./identificaxReceptorFactura')(comprobante), // 040 | 21 | identificaxReceptorFactura: require('./identificaxReceptorFactura')(comprobante), // 040 |
10 | identificaxSucursalReceptorFactura: require('./identificaxSucursalReceptorFactura')(comprobante), // 045 | 22 | identificaxSucursalReceptorFactura: require('./identificaxSucursalReceptorFactura')(comprobante), // 045 |
11 | importesTotales: require('./importesTotales')(comprobante), // 050 | 23 | importesTotales: require('./importesTotales')(comprobante, returnFloatByDecimals), // 050 |
12 | detallesImportesIVA: require('./detallesImportesIVA')(comprobante), // 060 | 24 | detallesImportesIVA: require('./detallesImportesIVA')(comprobante, returnFloatByDecimals), // 060 |
13 | detallePercepcionesIIBB: require('./detallePercepcionesIIBB')(comprobante), // 070 | 25 | detallePercepcionesIIBB: require('./detallePercepcionesIIBB')(comprobante, returnFloatByDecimals), // 070 |
14 | descuentosGlobalesFactura: require('./descuentosGlobalesFactura')(comprobante), // 080 | 26 | descuentosGlobalesFactura: require('./descuentosGlobalesFactura')(comprobante, returnFloatByDecimals), // 080 |
15 | detalleOtrosImpuestosComprobante: require('./detalleOtrosImpuestosComprobante')(comprobante), // 090 | 27 | detalleOtrosImpuestosComprobante: require('./detalleOtrosImpuestosComprobante')(comprobante, returnFloatByDecimals), // 090 |
16 | itemsFactura: require('./itemsFactura')(comprobante), // 100 | 28 | itemsFactura: require('./itemsFactura')(comprobante, returnFloatByDecimals), // 100 |
17 | detalleDescuentosItemFactura: require('./detalleDescuentosItemFactura')(comprobante), // 110 | 29 | detalleDescuentosItemFactura: require('./detalleDescuentosItemFactura')(comprobante, returnFloatByDecimals), // 110 |
18 | detalleImpuestosItemFactura: require('./detalleImpuestosItemFactura')(comprobante), // 120 | 30 | detalleImpuestosItemFactura: require('./detalleImpuestosItemFactura')(comprobante, returnFloatByDecimals), // 120 |
19 | }; | 31 | }; |
20 | } | 32 | } |
21 | 33 |
planex/itemsFactura.js
1 | module.exports = function(comprobante) { | 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;; '; | 3 | comprobante = '100;000001;74300;2087455000005;DescripciónArticulo;000000000500000;;000000000035500;02100;0000 00000003452;000000000016437;000000000000000;000000000000000;G; ;000000000000100;000000000000100;CR;CU;000000000032873;7798569874125;; '; |
4 | 4 | ||
5 | var comprobanteArr = comprobante.split(';'); | 5 | var comprobanteArr = comprobante.split(';'); |
6 | 6 | ||
7 | return { | 7 | return { |
8 | numeroLinea: comprobanteArr[1], | 8 | numeroLinea: comprobanteArr[1], |
9 | codigoProductoServicio: comprobanteArr[2], | 9 | codigoProductoServicio: comprobanteArr[2], |
10 | codigoProductoServicioComprador: comprobanteArr[3], | 10 | codigoProductoServicioComprador: comprobanteArr[3], |
11 | descripcion: comprobanteArr[4], | 11 | descripcion: comprobanteArr[4], |
12 | cantidad: comprobanteArr[5], | 12 | cantidad: returnFloatByDecimals(comprobanteArr[5], 5), |
13 | unidadMedida: comprobanteArr[6], | 13 | unidadMedida: comprobanteArr[6], |
14 | precioUnitario: comprobanteArr[7], | 14 | precioUnitario: returnFloatByDecimals(comprobanteArr[7], 3), |
15 | alicuotaIVAAplicable: comprobanteArr[8], | 15 | alicuotaIVAAplicable: returnFloatByDecimals(comprobanteArr[8], 2), |
16 | importeIVA: comprobanteArr[9], | 16 | importeIVA: returnFloatByDecimals(comprobanteArr[9], 2), |
17 | subtotalPorRegistro: comprobanteArr[10], | 17 | subtotalPorRegistro: returnFloatByDecimals(comprobanteArr[10], 2), |
18 | importeBonificacion: comprobanteArr[11], | 18 | importeBonificacion: returnFloatByDecimals(comprobanteArr[11], 2), |
19 | importeAjuste: comprobanteArr[12], | 19 | importeAjuste: returnFloatByDecimals(comprobanteArr[12], 2), |
20 | indicacionExento: comprobanteArr[13], | 20 | indicacionExento: comprobanteArr[13], |
21 | indicacionAnulacion: comprobanteArr[14], | 21 | indicacionAnulacion: comprobanteArr[14], |
22 | numeroUnidadesPorUnidadEmbalaje: comprobanteArr[15], | 22 | numeroUnidadesPorUnidadEmbalaje: returnFloatByDecimals(comprobanteArr[15], 2), |
23 | cantidadEmbalajes: comprobanteArr[16], | 23 | cantidadEmbalajes: returnFloatByDecimals(comprobanteArr[16], 2), |
24 | codigoTipoEmbalaje: comprobanteArr[17], | 24 | codigoTipoEmbalaje: comprobanteArr[17], |
25 | unidadReferenciaDescripcion: comprobanteArr[18], | 25 | unidadReferenciaDescripcion: comprobanteArr[18], |
26 | precioUnitarioSinImpuestos: comprobanteArr[19], | 26 | precioUnitarioSinImpuestos: returnFloatByDecimals(comprobanteArr[19], 3), |
27 | codigoUPCEAN13: comprobanteArr[20], | 27 | codigoUPCEAN13: comprobanteArr[20], |
28 | codigoDUN14: comprobanteArr[21], | 28 | codigoDUN14: comprobanteArr[21], |
29 | codigoMercosur: comprobanteArr[22], | 29 | codigoMercosur: comprobanteArr[22], |
30 | unidadesMatrix: comprobanteArr[23], | 30 | unidadesMatrix: comprobanteArr[23], |
31 | codigoMatrix: comprobanteArr[24], | 31 | codigoMatrix: comprobanteArr[24], |
32 | precioLista: comprobanteArr[25] | 32 | precioLista: returnFloatByDecimals(comprobanteArr[25], 2) |
33 | }; | 33 | }; |
34 | } | 34 | } |
35 | 35 |