diff --git a/.eslintrc b/.eslintrc index b6e228d..774f570 100644 --- a/.eslintrc +++ b/.eslintrc @@ -2,7 +2,8 @@ "extends": "standard", "rules": { "eqeqeq": "warn", - "no-throw-literal": "off" + "no-throw-literal": "off", + "no-var": "warn" }, "env": { "mocha": true diff --git a/banks/bradesco/index.js b/banks/bradesco/index.js index 944e8e4..a0a05c4 100644 --- a/banks/bradesco/index.js +++ b/banks/bradesco/index.js @@ -1,6 +1,6 @@ const moment = require('moment') -var formatters = require('../../lib/formatters') -var ediHelper = require('../../lib/edi-helper') +const formatters = require('../../lib/formatters') +const ediHelper = require('../../lib/edi-helper') exports.options = { logoURL: 'https://assets.pagar.me/boleto/images/bradesco.jpg', @@ -8,28 +8,28 @@ exports.options = { } exports.dvBarra = function (barra) { - var resto2 = formatters.mod11(barra, 9, 1) + const resto2 = formatters.mod11(barra, 9, 1) return (resto2 == 0 || resto2 == 1 || resto2 == 10) ? 1 : 11 - resto2 } exports.barcodeData = function (boleto) { - var codigoBanco = this.options.codigo - var numMoeda = '9' + const codigoBanco = this.options.codigo + const numMoeda = '9' - var fatorVencimento = formatters.fatorVencimento(moment(boleto['data_vencimento']).utc().format()) + const fatorVencimento = formatters.fatorVencimento(moment(boleto['data_vencimento']).utc().format()) - var agencia = formatters.addTrailingZeros(boleto['agencia'], 4) + const agencia = formatters.addTrailingZeros(boleto['agencia'], 4) - var valor = formatters.addTrailingZeros(boleto['valor'], 10) - var carteira = boleto['carteira'] - var codigoCedente = formatters.addTrailingZeros(boleto['codigo_cedente'], 7) + const valor = formatters.addTrailingZeros(boleto['valor'], 10) + const carteira = boleto['carteira'] + const codigoCedente = formatters.addTrailingZeros(boleto['codigo_cedente'], 7) - var nossoNumero = carteira + formatters.addTrailingZeros(boleto['nosso_numero'], 11) + const nossoNumero = carteira + formatters.addTrailingZeros(boleto['nosso_numero'], 11) - var barra = codigoBanco + numMoeda + fatorVencimento + valor + agencia + nossoNumero + codigoCedente + '0' + const barra = codigoBanco + numMoeda + fatorVencimento + valor + agencia + nossoNumero + codigoCedente + '0' - var dvBarra = this.dvBarra(barra) - var lineData = barra.substring(0, 4) + dvBarra + barra.substring(4, barra.length) + const dvBarra = this.dvBarra(barra) + const lineData = barra.substring(0, 4) + dvBarra + barra.substring(4, barra.length) return lineData } @@ -47,11 +47,11 @@ exports.linhaDigitavel = function (barcodeData) { // 37-43 -> Conta do Cedente (sem dígito) // 44-44 -> Zero (Fixo) - var campos = [] + const campos = [] // 1. Campo - composto pelo código do banco, código da moéda, as cinco primeiras posições // do campo livre e DV (modulo10) deste campo - var campo = barcodeData.substring(0, 3) + barcodeData.substring(3, 4) + barcodeData.substring(19, 20) + barcodeData.substring(20, 24) + let campo = barcodeData.substring(0, 3) + barcodeData.substring(3, 4) + barcodeData.substring(19, 20) + barcodeData.substring(20, 24) campo = campo + formatters.mod10(campo) campo = campo.substring(0, 5) + '.' + campo.substring(5, campo.length) campos.push(campo) @@ -85,20 +85,20 @@ exports.linhaDigitavel = function (barcodeData) { exports.parseEDIFile = function (fileContent) { try { - var lines = fileContent.split('\n') - var parsedFile = { + const lines = fileContent.split('\n') + const parsedFile = { boletos: [] } - for (var i = 0; i < lines.length; i++) { - var line = lines[i] - var registro = line.substring(0, 1) + for (let i = 0; i < lines.length; i++) { + const line = lines[i] + const registro = line.substring(0, 1) if (registro == '0') { parsedFile['razao_social'] = line.substring(46, 76) parsedFile['data_arquivo'] = ediHelper.dateFromEdiDate(line.substring(94, 100)) } else if (registro == '1') { - var boleto = {} + const boleto = {} parsedFile['cnpj'] = formatters.removeTrailingZeros(line.substring(3, 17)) parsedFile['carteira'] = formatters.removeTrailingZeros(line.substring(22, 24)) @@ -107,12 +107,12 @@ exports.parseEDIFile = function (fileContent) { boleto['codigo_ocorrencia'] = line.substring(108, 110) - var ocorrenciasStr = line.substring(318, 328) - var motivosOcorrencia = [] - var isPaid = (parseInt(boleto['valor_pago']) >= parseInt(boleto['valor']) || boleto['codigo_ocorrencia'] == '06') + const ocorrenciasStr = line.substring(318, 328) + const motivosOcorrencia = [] + let isPaid = (parseInt(boleto['valor_pago']) >= parseInt(boleto['valor']) || boleto['codigo_ocorrencia'] == '06') - for (var j = 0; j < ocorrenciasStr.length; j += 2) { - var ocorrencia = ocorrenciasStr.substr(j, 2) + for (let j = 0; j < ocorrenciasStr.length; j += 2) { + const ocorrencia = ocorrenciasStr.substr(j, 2) motivosOcorrencia.push(ocorrencia) if (ocorrencia != '00') { diff --git a/banks/santander/index.js b/banks/santander/index.js index 59c68af..407dece 100644 --- a/banks/santander/index.js +++ b/banks/santander/index.js @@ -1,7 +1,7 @@ const moment = require('moment') -var formatters = require('../../lib/formatters') -var ediHelper = require('../../lib/edi-helper') -var helper = require('./helper') +const formatters = require('../../lib/formatters') +const ediHelper = require('../../lib/edi-helper') +const helper = require('./helper') exports.options = { logoURL: 'https://assets.pagar.me/boleto/images/santander.png', @@ -9,28 +9,28 @@ exports.options = { } exports.dvBarra = function (barra) { - var resto2 = formatters.mod11(barra, 9, 1) + const resto2 = formatters.mod11(barra, 9, 1) return (resto2 == 0 || resto2 == 1 || resto2 == 10) ? 1 : 11 - resto2 } exports.barcodeData = function (boleto) { - var codigoBanco = this.options.codigo - var numMoeda = '9' - var fixo = '9' // Numero fixo para a posição 05-05 - var ios = '0' // IOS - somente para Seguradoras (Se 7% informar 7, limitado 9%) - demais clientes usar 0 + const codigoBanco = this.options.codigo + const numMoeda = '9' + const fixo = '9' // Numero fixo para a posição 05-05 + const ios = '0' // IOS - somente para Seguradoras (Se 7% informar 7, limitado 9%) - demais clientes usar 0 - var fatorVencimento = formatters.fatorVencimento(moment(boleto['data_vencimento']).utc().format()) + const fatorVencimento = formatters.fatorVencimento(moment(boleto['data_vencimento']).utc().format()) - var valor = formatters.addTrailingZeros(boleto['valor'], 10) - var carteira = boleto['carteira'] - var codigoCedente = formatters.addTrailingZeros(boleto['codigo_cedente'], 7) + const valor = formatters.addTrailingZeros(boleto['valor'], 10) + const carteira = boleto['carteira'] + const codigoCedente = formatters.addTrailingZeros(boleto['codigo_cedente'], 7) - var nossoNumero = formatters.addTrailingZeros(boleto['nosso_numero'], 12) + formatters.mod11(boleto['nosso_numero']) + const nossoNumero = formatters.addTrailingZeros(boleto['nosso_numero'], 12) + formatters.mod11(boleto['nosso_numero']) - var barra = codigoBanco + numMoeda + fatorVencimento + valor + fixo + codigoCedente + nossoNumero + ios + carteira + const barra = codigoBanco + numMoeda + fatorVencimento + valor + fixo + codigoCedente + nossoNumero + ios + carteira - var dvBarra = this.dvBarra(barra) - var lineData = barra.substring(0, 4) + dvBarra + barra.substring(4, barra.length) + const dvBarra = this.dvBarra(barra) + const lineData = barra.substring(0, 4) + dvBarra + barra.substring(4, barra.length) return lineData } @@ -50,11 +50,11 @@ exports.linhaDigitavel = function (barcodeData) { // 31 a 34 Fator de vencimento (qtdade de dias desde 07/10/1997 até a data de vencimento) // 35 a 44 Valor do título - var campos = [] + const campos = [] // 1. Primeiro Grupo - composto pelo código do banco, código da moéda, Valor Fixo "9" // e 4 primeiros digitos do PSK (codigo do cliente) e DV (modulo10) deste campo - var campo = barcodeData.substring(0, 3) + barcodeData.substring(3, 4) + barcodeData.substring(19, 20) + barcodeData.substring(20, 24) + let campo = barcodeData.substring(0, 3) + barcodeData.substring(3, 4) + barcodeData.substring(19, 20) + barcodeData.substring(20, 24) campo = campo + formatters.mod10(campo) campo = campo.substring(0, 5) + '.' + campo.substring(5, campo.length) campos.push(campo) @@ -88,16 +88,16 @@ exports.linhaDigitavel = function (barcodeData) { exports.parseEDIFile = function (fileContent) { try { - var lines = fileContent.split('\n') - var parsedFile = { + const lines = fileContent.split('\n') + const parsedFile = { boletos: {} } - var currentNossoNumero = null + let currentNossoNumero = null - for (var i = 0; i < lines.length; i++) { - var line = lines[i] - var registro = line.substring(7, 8) + for (let i = 0; i < lines.length; i++) { + const line = lines[i] + const registro = line.substring(7, 8) if (registro == '0') { parsedFile['cnpj'] = line.substring(17, 32) @@ -106,10 +106,10 @@ exports.parseEDIFile = function (fileContent) { parsedFile['conta_cedente'] = line.substring(37, 47) parsedFile['data_arquivo'] = helper.dateFromEdiDate(line.substring(143, 152)) } else if (registro == '3') { - var segmento = line.substring(13, 14) + const segmento = line.substring(13, 14) if (segmento == 'T') { - var boleto = {} + const boleto = {} boleto['codigo_ocorrencia'] = line.substring(15, 17) boleto['vencimento'] = formatters.dateFromEdiDate(line.substring(69, 77)) @@ -123,10 +123,10 @@ exports.parseEDIFile = function (fileContent) { } else if (segmento == 'U') { parsedFile.boletos[currentNossoNumero]['valor_pago'] = formatters.removeTrailingZeros(line.substring(77, 92)) - var paid = parsedFile.boletos[currentNossoNumero]['valor_pago'] >= parsedFile.boletos[currentNossoNumero]['valor'] + let paid = parsedFile.boletos[currentNossoNumero]['valor_pago'] >= parsedFile.boletos[currentNossoNumero]['valor'] paid = paid && parsedFile.boletos[currentNossoNumero]['codigo_ocorrencia'] == '17' - boleto = parsedFile.boletos[currentNossoNumero] + let boleto = parsedFile.boletos[currentNossoNumero] boleto['pago'] = paid boleto['edi_line_number'] = i diff --git a/examples/bradesco-edi.js b/examples/bradesco-edi.js index 837ccc5..ed79a60 100644 --- a/examples/bradesco-edi.js +++ b/examples/bradesco-edi.js @@ -1,6 +1,6 @@ -var fs = require('fs') -var path = require('path') +const fs = require('fs') +const path = require('path') -var ediParser = require('../index').EdiParser +const ediParser = require('../index').EdiParser console.log(ediParser.parse('bradesco', fs.readFileSync(path.join(__dirname, 'retorno_bradesco.txt')).toString())) diff --git a/examples/bradesco-emission.js b/examples/bradesco-emission.js index 1b745a0..5cabbeb 100644 --- a/examples/bradesco-emission.js +++ b/examples/bradesco-emission.js @@ -1,11 +1,11 @@ -var express = require('express') -var path = require('path') +const express = require('express') +const path = require('path') -var app = express() +const app = express() -var Boleto = require('../index').Boleto +const Boleto = require('../index').Boleto -var boleto = new Boleto({ +const boleto = new Boleto({ 'banco': 'bradesco', 'data_emissao': new Date(), 'data_vencimento': new Date(new Date().getTime() + 5 * 24 * 3600 * 1000), diff --git a/examples/santander-edi.js b/examples/santander-edi.js index bd26220..3402dfc 100644 --- a/examples/santander-edi.js +++ b/examples/santander-edi.js @@ -1,6 +1,6 @@ -var fs = require('fs') -var path = require('path') +const fs = require('fs') +const path = require('path') -var ediParser = require('../index').EdiParser +const ediParser = require('../index').EdiParser console.log(ediParser.parse('santander', fs.readFileSync(path.join(__dirname, '/retorno.txt')).toString())) diff --git a/examples/santander-emission.js b/examples/santander-emission.js index bf39e89..1ccd6cf 100644 --- a/examples/santander-emission.js +++ b/examples/santander-emission.js @@ -1,11 +1,11 @@ -var express = require('express') -var path = require('path') +const express = require('express') +const path = require('path') -var app = express() +const app = express() -var Boleto = require('../index').Boleto +const Boleto = require('../index').Boleto -var boleto = new Boleto({ +const boleto = new Boleto({ 'banco': 'santander', 'data_emissao': new Date(), 'data_vencimento': new Date(new Date().getTime() + 5 * 24 * 3600 * 1000), diff --git a/index.js b/index.js index 4e56785..b9a6b74 100644 --- a/index.js +++ b/index.js @@ -1,10 +1,10 @@ -var fs = require('fs') -var path = require('path') +const fs = require('fs') +const path = require('path') // Load banks -var banks = {} -var banksFolders = fs.readdirSync(path.join(__dirname, '/banks/')) -for (var i = 0; i < banksFolders.length; i++) { +const banks = {} +const banksFolders = fs.readdirSync(path.join(__dirname, '/banks/')) +for (let i = 0; i < banksFolders.length; i++) { banks[banksFolders[i]] = require(path.join(__dirname, '/banks/' + banksFolders[i] + '/index.js')) } diff --git a/lib/boleto.js b/lib/boleto.js index 5eb2b53..ee3a75b 100644 --- a/lib/boleto.js +++ b/lib/boleto.js @@ -4,13 +4,13 @@ const barcode = require('./barcode') const path = require('path') const moment = require('moment') -var banks = null +let banks = null -var hashString = function (string) { - var hash = 0 - var i - var chr - var len +let hashString = function (string) { + let hash = 0 + let i + let chr + let len if (string.length == 0) return hash for (i = 0, len = string.length; i < len; i++) { @@ -21,7 +21,7 @@ var hashString = function (string) { return hash } -var Boleto = function (options) { +const Boleto = function (options) { if (!options) { throw 'No options provided initializing Boleto.' } @@ -43,7 +43,7 @@ var Boleto = function (options) { options['data_vencimento'] = moment(moment(options['data_vencimento']).utc().format('YYYY-MM-DD')) } - for (var key in options) { + for (let key in options) { this[key] = options[key] } @@ -67,13 +67,13 @@ Boleto.prototype._calculate = function () { } Boleto.prototype.renderHTML = function (callback) { - var self = this + let self = this - var renderOptions = self.bank.options + let renderOptions = self.bank.options renderOptions.boleto = self // Copy renderHelper's methods to renderOptions - for (var key in formatters) { + for (let key in formatters) { renderOptions[key] = formatters[key] } diff --git a/lib/edi-helper.js b/lib/edi-helper.js index 4fa122b..1fbabf2 100644 --- a/lib/edi-helper.js +++ b/lib/edi-helper.js @@ -1,4 +1,4 @@ -var crypto = require('crypto') +const crypto = require('crypto') exports.calculateLineChecksum = function (line) { return crypto.createHash('sha1').update(line).digest('hex') diff --git a/lib/formatters.js b/lib/formatters.js index 62286a9..758c5b8 100644 --- a/lib/formatters.js +++ b/lib/formatters.js @@ -17,12 +17,12 @@ exports.addTrailingZeros = function (string, length) { exports.formatAmount = function (amount) { amount = amount.toString() - var cents = exports.addTrailingZeros(amount.substring(amount.length - 2, amount.length), 2) - var integers = exports.addTrailingZeros(amount.substring(0, amount.length - 2), 1) + const cents = exports.addTrailingZeros(amount.substring(amount.length - 2, amount.length), 2) + const integers = exports.addTrailingZeros(amount.substring(0, amount.length - 2), 1) - var newIntegers = '' + let newIntegers = '' - for (var i = 0; i < integers.length; i++) { + for (let i = 0; i < integers.length; i++) { if (i > 0 && (integers.length - i) % 3 == 0) newIntegers += '.' newIntegers += integers[i] } @@ -38,11 +38,11 @@ exports.mod11 = function (num, base, r) { if (!base) base = 9 if (!r) r = 0 - var soma = 0 - var fator = 2 + let soma = 0 + let fator = 2 - for (var i = num.length - 1; i >= 0; i--) { - var parcial = parseInt(num[i]) * fator + for (let i = num.length - 1; i >= 0; i--) { + const parcial = parseInt(num[i]) * fator soma += parcial if (fator == base) { @@ -54,7 +54,7 @@ exports.mod11 = function (num, base, r) { if (r == 0) { soma *= 10 - var digito = soma % 11 + const digito = soma % 11 return digito == 10 ? 0 : digito } else if (r == 1) { return soma % 11 @@ -62,20 +62,20 @@ exports.mod11 = function (num, base, r) { } exports.mod10 = function (num) { - var total = 0 - var fator = 2 + let total = 0 + let fator = 2 - for (var i = num.length - 1; i >= 0; i--) { - var temp = (parseInt(num[i]) * fator).toString() - var tempSum = 0 - for (var j = 0; j < temp.length; j++) { + for (let i = num.length - 1; i >= 0; i--) { + const temp = (parseInt(num[i]) * fator).toString() + let tempSum = 0 + for (let j = 0; j < temp.length; j++) { tempSum += parseInt(temp[j]) } total += tempSum fator = (fator == 2) ? 1 : 2 } - var resto = total % 10 + const resto = total % 10 return (resto == 0) ? 0 : (10 - resto) }