Commit e94ef018dab96f176f2e723cfcea50a9caaa8acb
Exists in
master
Merge branch 'master' into 'master'
Master(efernandez) See merge request !4
Showing
17 changed files
Show diff stats
afip/index.js
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 |
debo/cuerpoDebo.js
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 |
debo/index.js
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 |
index.js
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 |
planex/index.js
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 |
watch/index.js
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 |