Commit e94ef018dab96f176f2e723cfcea50a9caaa8acb

Authored by Eric Fernandez
Exists in master

Merge branch 'master' into 'master'

Master(efernandez)

See merge request !4
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
debo/cabeceraDebo.js
1 module.exports = function(comprobante, afipTablas) { 1 module.exports = function(comprobante, afipTablas, entities) {
2 2
3 return { 3 return {
4 TIP: afipTablas(comprobante.identificaxComprobante.tipo).letraComprobante, // [char](1) NOT NULL, LETRA DEL COMPROBANTE (A,B,C,M,E) 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) 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 6 SUC: parseInt(comprobante.identificaxComprobante.puntoVenta), // [int] NOT NULL, PUNTO DE VENTA
7 NCO: parseInt(comprobante.identificaxComprobante.numero), // [bigint] NOT NULL, NUMERO DE COMPROBANTE 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' 8 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'
9 FEC: comprobante.identificaxComprobante.fechaComprobante, // [smalldatetime] NULL, FECHA DEL COMPROBANTE 9 FEC: comprobante.identificaxComprobante.fechaComprobante, // [smalldatetime] NULL, FECHA DEL COMPROBANTE
10 NOM: null, // [varchar](40) NOT NULL, NOMBRE DEL PROVEEDOR TABLA PROVEED CAMPO NOM 10 NOM: entities.proveedores.NOM, // [varchar](40) NOT NULL, NOMBRE DEL PROVEEDOR TABLA PROVEED CAMPO NOM
11 TIV: null, // [tinyint] NOT NULL, TIPO DE IVA CAMPO IVA TABLA PROVEED 11 TIV: entities.proveedores.IVA, // [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 12 CUI: entities.proveedores.CUIT, // [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 13 FPA: entities.proveedores.FPA, // [tinyint] NOT NULL, FORMA DE PAGO CAMPO FPA TABLA PROVEED
14 TCA: 1, // [money] NOT NULL, FIJO 1 14 TCA: 1, // [money] NOT NULL, FIJO 1
15 DTO: comprobante.descuentosGlobalesFactura.importe, // [money] NOT NULL, DESCUENTO TOTAL SUMATORIA DE LOS DTO POR ITEM 15 DTO: comprobante.descuentosGlobalesFactura.importe, // [money] NOT NULL, DESCUENTO TOTAL SUMATORIA DE LOS DTO POR ITEM
16 PDT: 0, // [money] NOT NULL, FIJO 0 16 PDT: 0, // [money] NOT NULL, FIJO 0
17 NET: null, // [money] NOT NULL, SUMATORIA DE LOS NETOS POR ITEM QUE TIENEN IVA <> 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 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 19 IRI: comprobante.detallesImportesIVA.importeLiquidado, // [money] NOT NULL, SUMATORIA DE LOS IVA POR ITEM
20 IRS: 0, // [money] NOT NULL, FIJO 0 20 IRS: 0, // [money] NOT NULL, FIJO 0
21 IMI: comprobante.importesTotales.importeImpuestosInternos, // [money] NOT NULL, SUMATORIA DE LOS IMPUESTOS INTERNOS POR ITEM 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 22 RGA: null, // [money] NOT NULL, IMPORTE RETENCION DE GANANCIAS
23 RIB: null, // [money] NOT NULL, IMPORTE RETENCION DE INBRESOS BRUTOS 23 RIB: null, // [money] NOT NULL, IMPORTE RETENCION DE INGRESOS BRUTOS
24 PIV: null, // [money] NOT NULL, IMPORTE PERCEPCION DE IVA 24 PIV: null, // [money] NOT NULL, IMPORTE PERCEPCION DE IVA
25 CNG: comprobante.importesTotales.totalConceptosNoNetoGravado, // [money] NULL, IMPORTE DE CONCEPTOS NO GRAVADOS 25 CNG: comprobante.importesTotales.totalConceptosNoNetoGravado, // [money] NULL, IMPORTE DE CONCEPTOS NO GRAVADOS
26 TOT: null, // [money] NOT NULL, IMPORTE TOTAL DE LA FACTURA 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 27 ZON: entities.empresa.ZON, // [int] NOT NULL, NUMERO DE LA EMPRESA SELECT ZON FROM APAREMP
28 FEV: comprobante.identificaxComprobante.fechaComprobante, // [datetime] NULL, FECHA DE VENCIMIENTO 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) 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 30 OPE: 0, // [int] NOT NULL, FIJO 0
31 REC: 0, // [bigint] NOT NULL, FIJO 0 31 REC: 0, // [bigint] NOT NULL, FIJO 0
32 FEP: null, // [datetime] NULL, ITEM FECHA FACTURA 32 FEP: null, // [datetime] NULL, ITEM FECHA FACTURA
33 NPE: 0, // [bigint] NOT NULL, NOTA DE PEDIDO FIJO 0 33 NPE: 0, // [bigint] NOT NULL, NOTA DE PEDIDO FIJO 0
34 CPA: 0, // [int] NOT NULL, FIJO 0 34 CPA: 0, // [int] NOT NULL, FIJO 0
35 ENV: 0, // [int] NOT NULL, FIJO 0 35 ENV: 0, // [int] NOT NULL, FIJO 0
36 REM: 0, // [bigint] NOT NULL, FIJO 0 36 REM: 0, // [bigint] NOT NULL, FIJO 0
37 PRO: ' ', // [char](1) NOT NULL, FIJO ' ' VACIO NO NULO 37 PRO: ' ', // [char](1) NOT NULL, FIJO ' ' VACIO NO NULO
38 ANU: ' ', // [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 39 TUR: 0, // [int] NOT NULL, FIJO 0
40 PLA: 0, // [int] NOT NULL, FIJO 0 40 PLA: 0, // [int] NOT NULL, FIJO 0
41 LUG: 0, // [int] NOT NULL, FIJO 0 41 LUG: 0, // [int] NOT NULL, FIJO 0
42 ATO: 0, // [numeric](18, 0) NOT NULL, FIJO 0 42 ATO: 0, // [numeric](18, 0) NOT NULL, FIJO 0
43 CCO: 0, // [bigint] NOT NULL, FIJO 0 43 CCO: 0, // [bigint] NOT NULL, FIJO 0
44 IMA: 0, // [int] NOT NULL, FIJO 0 44 IMA: 0, // [int] NOT NULL, FIJO 0
45 CCA1: 0, // [int] NOT NULL, FIJO 0 45 CCA1: 0, // [int] NOT NULL, FIJO 0
46 CCA2: 0, // [int] NOT NULL, FIJO 0 46 CCA2: 0, // [int] NOT NULL, FIJO 0
47 CCA3: 0, // [int] NOT NULL, FIJO 0 47 CCA3: 0, // [int] NOT NULL, FIJO 0
48 CCA4: 0, // [int] NOT NULL, FIJO 0 48 CCA4: 0, // [int] NOT NULL, FIJO 0
49 CCA5: 0, // [int] NOT NULL, FIJO 0 49 CCA5: 0, // [int] NOT NULL, FIJO 0
50 CCA6: 0, // [int] NOT NULL, FIJO 0 50 CCA6: 0, // [int] NOT NULL, FIJO 0
51 CCA7: 0, // [int] NOT NULL, FIJO 0 51 CCA7: 0, // [int] NOT NULL, FIJO 0
52 CCA8: 0, // [int] NOT NULL, FIJO 0 52 CCA8: 0, // [int] NOT NULL, FIJO 0
53 CCA0: 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 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 55 RIV: null, // [money] NOT NULL, IMPORTE RETENCION DE IVA
56 FECCAI: comprobante.identificaxComprobante.fechaVencimientoCai, // [smalldatetime] NOT NULL, FECHA DEL CAI 56 FECCAI: comprobante.identificaxComprobante.fechaVencimientoCai, // [smalldatetime] NOT NULL, FECHA DEL CAI
57 CAI: comprobante.identificaxComprobante.cai, // [char](16) NOT NULL, NUMERO DE CAI 57 CAI: comprobante.identificaxComprobante.cai, // [char](16) NOT NULL, NUMERO DE CAI
58 CHO: 0, // [int] NOT NULL, FIJO 0 58 CHO: 0, // [int] NOT NULL, FIJO 0
59 CTR: '', // [char](1) NOT NULL, VACIO NO NULO 59 CTR: '', // [char](1) NOT NULL, VACIO NO NULO
60 PER: null, // [money] NOT NULL, IMPORTE DE PERCEPCIONES 60 PER: null, // [money] NOT NULL, IMPORTE DE PERCEPCIONES
61 CCA9: 0, // [int] NOT NULL, FIJO 0 61 CCA9: 0, // [int] NOT NULL, FIJO 0
62 FECVEN: comprobante.identificaxComprobante.fechaVencimiento, // [smalldatetime] NOT NULL, FECHA DE VENCIMIENTO DE LA FACTURA 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 63 CNG2: null, // [money] NOT NULL, IMPORTE DE CONCEPTOS NO GRAVADOS 2
64 E_HD: '', // [varchar](8) NOT NULL, VACIO NO NULO 64 E_HD: '', // [varchar](8) NOT NULL, VACIO NO NULO
65 C_HD: '', // [varchar](1) NOT NULL, VACIO NO NULO 65 C_HD: '', // [varchar](1) NOT NULL, VACIO NO NULO
66 RSS: null, // [money] NOT NULL, IMPORTE RETENCIONS SUSS 66 RSS: null, // [money] NOT NULL, IMPORTE RETENCIONS SUSS
67 E_HD2: '', // [varchar](12) NOT NULL, VACIO NO NULO 67 E_HD2: '', // [varchar](12) NOT NULL, VACIO NO NULO
68 C_HD2: '', // [varchar](1) 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 69 DTO2: null, // [money] NOT NULL, IMPORTE DE OTROS DESCUENTOS
70 ENLP: 0, // [bit] NOT NULL, FIJO 0 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 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 72 RETMUN: comprobante.importesTotales.importeImpuestosMunicipales, // [money] NOT NULL, IMPORTE DE RETENCIONES MUNICIPALES
73 TIPO_OPERACION: 0, // [int] NOT NULL, FIJO 0 73 TIPO_OPERACION: 0, // [int] NOT NULL, FIJO 0
74 IRD: 0, // [money] NOT NULL, FIJO 0 74 IRD: 0, // [money] NOT NULL, FIJO 0
75 AUX1: 0, // [money] NOT NULL, FIJO 0 75 AUX1: 0, // [money] NOT NULL, FIJO 0
76 AUX2: 0, // [money] NOT NULL, FIJO 0 76 AUX2: 0, // [money] NOT NULL, FIJO 0
77 AUX3: 0, // [money] NOT NULL, FIJO 0 77 AUX3: 0, // [money] NOT NULL, FIJO 0
78 AUX4: 0, // [money] NOT NULL, FIJO 0 78 AUX4: 0, // [money] NOT NULL, FIJO 0
79 ARBA: null, // [money] NOT NULL, IMPORTE RETENCION ARBA 79 ARBA: null, // [money] NOT NULL, IMPORTE RETENCION ARBA
80 DGR: null, // [money] NOT NULL, IMPORTE RETENCION DGR 80 DGR: null, // [money] NOT NULL, IMPORTE RETENCION DGR
81 DTO_PIE: null, // [money] NOT NULL, IMPORTE DE DESCUENTO AL PIE, NO POR ITEM 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) 82 OPERACIONES_3711: 1, // [int] NOT NULL, FIJO 1 (PORQUE SON BIENES)
83 ORC: null, // [bigint] NOT NULL, NUMERO DE ORDEN DE COMPRA 83 ORC: null, // [bigint] NOT NULL, NUMERO DE ORDEN DE COMPRA
84 NC_ES_NP: 0, // [bit] NOT NULL, FIJO 0 84 NC_ES_NP: 0, // [bit] NOT NULL, FIJO 0
85 CABA: null, // [money] NOT NULL, IMPORTE RETENCION CABA 85 CABA: null, // [money] NOT NULL, IMPORTE RETENCION CABA
86 ARBA_PER: null, // [money] NOT NULL, IMPORTE PERCEPCION ARBA 86 ARBA_PER: null, // [money] NOT NULL, IMPORTE PERCEPCION ARBA
87 CABA_PER: null, // [money] NOT NULL, IMPORTE PERCEPCION CABA 87 CABA_PER: null, // [money] NOT NULL, IMPORTE PERCEPCION CABA
88 PERMUN: comprobante.importesTotales.importeImpuestosMunicipales, // [money] NOT NULL, IMPORTE PERCEPCIONES MUNICIPALES 88 PERMUN: comprobante.importesTotales.importeImpuestosMunicipales, // [money] NOT NULL, IMPORTE PERCEPCIONES MUNICIPALES
89 IMI2: 0, // [money] NOT NULL, FIJO 0 89 IMI2: 0, // [money] NOT NULL, FIJO 0
90 }; 90 };
91 } 91 }
92 92
1 module.exports = function(comprobante) { 1 module.exports = function(comprobante, afipTablas, entities) {
2 2
3 return { 3 return {
4 TIP: null, // [char](1) NOT NULL, LETRA DEL COMPROBANTE (A,B,C,M) 4 TIP: afipTablas(comprobante.identificaxComprobante.tipo).letraComprobante, // [char](1) NOT NULL, LETRA DEL COMPROBANTE (A,B,C,M)
5 TCO: null, // [char](2) NOT NULL, TIPO DE COMPROBANTE (FT,NC,ND) 5 TCO: afipTablas(comprobante.identificaxComprobante.tipo).tipoComprobante, // [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 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 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' 8 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'
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 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 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' 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 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 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 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 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 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 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 18 IVA: comprobante.itemsFactura.importeIVA, // [money] NOT NULL, IMPORTE IVA DEL ITEM
19 PUT: comprobante.itemsFactura.precioUnitario, // [money] NOT NULL, IGUAL AL PUN 19 PUT: comprobante.itemsFactura.precioUnitario, // [money] NOT NULL, IGUAL AL PUN
20 LEG: 0, // [int] NOT NULL, FIJO 0 20 LEG: 0, // [int] NOT NULL, FIJO 0
21 CMF: 0, // [int] NOT NULL, FIJO 0 21 CMF: 0, // [int] NOT NULL, FIJO 0
22 TUR: 0, // [int] NOT NULL, FIJO 0 22 TUR: 0, // [int] NOT NULL, FIJO 0
23 PLA: 0, // [int] NOT NULL, FIJO 0 23 PLA: 0, // [int] NOT NULL, FIJO 0
24 LUG: 0, // [int] NOT NULL, FIJO 0 24 LUG: 0, // [int] NOT NULL, FIJO 0
25 ESC: 0, // [bit] NOT NULL, FIJO 0 25 ESC: 0, // [bit] NOT NULL, FIJO 0
26 TAN: 0, // [int] NOT NULL, FIJO 0 26 TAN: 0, // [int] NOT NULL, FIJO 0
27 CCO: 0, // [bigint] NOT NULL, FIJO 0 27 CCO: 0, // [bigint] NOT NULL, FIJO 0
28 E_HD: '', // [varchar](8) NOT NULL, FIJO '' VACIO NO NULO 28 E_HD: '', // [varchar](8) NOT NULL, FIJO '' VACIO NO NULO
29 C_HD: '', // [varchar](1) 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 30 DTO: comprobante.detalleDescuentosItemFactura.importeDescuento, // [money] NOT NULL, IMPORTE DESCUENTO DE LA FACTURA
31 PTA: 0, // [int] NOT NULL, FIJO 0 31 PTA: 0, // [int] NOT NULL, FIJO 0
32 SUBM: 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 33 E_HD2: '', // [varchar](12) NOT NULL, FIJO '' VACIO NO NULO
34 C_HD2: '', // [varchar](1) 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 35 COMISION: 0, // [money] NOT NULL, FIJO 0
36 LIQ_VTA: '', // [varchar](20) NOT NULL, FIJO '' VACIO NO NULO 36 LIQ_VTA: '', // [varchar](20) NOT NULL, FIJO '' VACIO NO NULO
37 COSTO_PMOV: comprobante.itemsFactura.precioUnitario, // [money] NOT NULL, IGUAL AL PUN 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 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. 39 TASIVA: comprobante.itemsFactura.alicuotaIVAAplicable, // [money] NOT NULL, TASA DE IVA DEL ITEM = 21.00 / 10.50 / ETC.
40 }; 40 };
41 } 41 }
42 42
1 module.exports = function(comprobante) { 1 module.exports = function(comprobante, entities) {
2 2
3 var afipTablas = require('../afip/index'); 3 var afipTablas = require('../afip/index');
4 4
5 return { 5 return {
6 cabecera: require('./cabeceraDebo')(comprobante, afipTablas), 6 cabecera: require('./cabeceraDebo')(comprobante, afipTablas, entities),
7 cuerpo: require('./cuerpoDebo')(comprobante, afipTablas) 7 cuerpo: require('./cuerpoDebo')(comprobante, afipTablas)
8 }; 8 };
9 } 9 }
10 10
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 entities = {};
22 14
23 console.log('open socket server'); 15 var tipoCuit = planex.identificaxEmisor.cuit.slice(0, 2);
16 var digitoVerificador = planex.identificaxEmisor.cuit[planex.identificaxEmisor.cuit.length - 1];
24 17
25 ws.on('message', function incoming(message) { 18 var cuitToDebo = tipoCuit + '-' + planex.identificaxEmisor.cuit.slice(2, 10) + '-' + digitoVerificador;
26 19
27 message = message.toString('utf8'); 20 var promiseProveedores = wsServer.getEntidad('7790968003283', 'PROVEED', {CUIT: cuitToDebo});
28 console.log(message); 21 var promiseEmp = wsServer.getEntidad('7790968003283', 'APAREMP');
29 22
30 switch (message) { 23 Promise.all([promiseProveedores, promiseEmp]).then(function(data) {
31 case message.action == 'gln': 24
32 ws.gln = message.gln; 25 entities.proveedores = data[0];
33 break; 26 entities.empresa = data[1];
34 default: 27
35 break; 28 var debo = require('./debo/index')(planex, entities);
36 }
37 }); 29 });
38 }); 30
31 console.log(planex);
32 }
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' && event == 'change') {
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 var idsSolicitud = [];
6
7 const objWs = {};
8
9 objWs.wsServer = new webSocketServer({
10 port: config.port
11 });
12
13 objWs.wsServer.on('connection', function connection(ws) {
14
15 console.log('open socket server');
16
17 ws.on('message', function incoming(message) {
18
19 message = JSON.parse(message.toString('utf8'));
20
21 switch (message.action) {
22 case 'gln':
23 clients.push({ws: ws, gln: message.gln});
24 break;
25 default:
26 // console.log(message.action);
27 }
28 });
29 });
30
31 objWs.getEntidad = function(gln, tableName, where) {
32
33 return new Promise(function(resolve, reject) {
34
35 var client = clients.filter(function(client) {
36 return client.gln == gln
37 })[0];
38
39 var idSolicitud = Math.round(Math.random() * 1000);
40
41 var enviar = {
42 action: 'getEntity',
43 tableName: tableName,
44 where: where || {},
45 idSolicitud: idSolicitud
46 }
47
48 idsSolicitud.push(idSolicitud);
49
50 client.ws.send(JSON.stringify(enviar));
51
52 client.ws.on('message', function(message) {
53
54 message = JSON.parse(message);
55
56 if (idSolicitud == message.idSolicitud) {
57
58 resolve(message.data);
59 }
60
61 });
62 });
63 }
64
65 return objWs;
66 }
67