diff --git a/src/boleto-utils.js b/src/boleto-utils.js index 8e4265b..1640043 100644 --- a/src/boleto-utils.js +++ b/src/boleto-utils.js @@ -46,8 +46,10 @@ exports.identificarTipoBoleto = (codigo) => { codigo = codigo.replace(/[^0-9]/g, ''); if (typeof codigo !== 'string') throw new TypeError('Insira uma string vĂ¡lida!'); - - if (codigo.substr(0, 1) == '8') { + + if (codigo.substr(-14) == '00000000000000') { + return 'CARTAO_DE_CREDITO'; + } else if (codigo.substr(0, 1) == '8') { if (codigo.substr(1, 1) == '1') { return 'ARRECADACAO_PREFEITURA'; } else if (codigo.substr(1, 1) == '2') { @@ -62,7 +64,7 @@ exports.identificarTipoBoleto = (codigo) => { return 'OUTROS'; } else if (codigo.substr(1, 1) == '7') { return 'ARRECADACAO_TAXAS_DE_TRANSITO'; - } + } } else { return 'BANCO'; } @@ -142,13 +144,13 @@ exports.identificarData = (codigo, tipoCodigo) => { dataBoleto.setHours(23, 54, 59); if (tipoCodigo === 'CODIGO_DE_BARRAS') { - if (tipoBoleto == 'BANCO') { + if (tipoBoleto == 'BANCO' || tipoBoleto == 'CARTAO_DE_CREDITO') { fatorData = codigo.substr(5, 4) } else { fatorData = '0'; } } else if (tipoCodigo === 'LINHA_DIGITAVEL') { - if (tipoBoleto == 'BANCO') { + if (tipoBoleto == 'BANCO' || tipoBoleto == 'CARTAO_DE_CREDITO') { fatorData = codigo.substr(33, 4) } else { fatorData = '0'; @@ -226,7 +228,7 @@ exports.identificarValor = (codigo, tipoCodigo) => { let valorFinal; if (tipoCodigo == 'CODIGO_DE_BARRAS') { - if (tipoBoleto == 'BANCO') { + if (tipoBoleto == 'BANCO' || tipoBoleto == 'CARTAO_DE_CREDITO') { valorBoleto = codigo.substr(9, 10); valorFinal = valorBoleto.substr(0, 8) + '.' + valorBoleto.substr(8, 2); @@ -240,7 +242,7 @@ exports.identificarValor = (codigo, tipoCodigo) => { } } else if (tipoCodigo == 'LINHA_DIGITAVEL') { - if (tipoBoleto == 'BANCO') { + if (tipoBoleto == 'BANCO' || tipoBoleto == 'CARTAO_DE_CREDITO') { valorBoleto = codigo.substr(37); valorFinal = valorBoleto.substr(0, 8) + '.' + valorBoleto.substr(8, 2); @@ -301,7 +303,7 @@ exports.codBarras2LinhaDigitavel = (codigo, formatada) => { let resultado = ''; - if (tipoBoleto == 'BANCO') { + if (tipoBoleto == 'BANCO' || tipoBoleto == 'CARTAO_DE_CREDITO') { const novaLinha = codigo.substr(0, 4) + codigo.substr(19, 25) + codigo.substr(4, 1) + codigo.substr(5, 14); const bloco1 = novaLinha.substr(0, 9) + this.calculaMod10(novaLinha.substr(0, 9)); @@ -372,7 +374,7 @@ exports.linhaDigitavel2CodBarras = (codigo) => { let resultado = ''; - if (tipoBoleto == 'BANCO') { + if (tipoBoleto == 'BANCO' || tipoBoleto == 'CARTAO_DE_CREDITO') { resultado = codigo.substr(0, 4) + codigo.substr(32, 1) + codigo.substr(33, 14) + @@ -441,7 +443,7 @@ exports.validarCodigoComDV = (codigo, tipoCodigo) => { if (tipoCodigo === 'LINHA_DIGITAVEL') { tipoBoleto = this.identificarTipoBoleto(codigo, 'LINHA_DIGITAVEL'); - if (tipoBoleto == 'BANCO') { + if (tipoBoleto == 'BANCO' || tipoBoleto == 'CARTAO_DE_CREDITO') { const bloco1 = codigo.substr(0, 9) + this.calculaMod10(codigo.substr(0, 9)); const bloco2 = codigo.substr(10, 10) + this.calculaMod10(codigo.substr(10, 10)); const bloco3 = codigo.substr(21, 10) + this.calculaMod10(codigo.substr(21, 10)); @@ -485,7 +487,7 @@ exports.validarCodigoComDV = (codigo, tipoCodigo) => { } else if (tipoCodigo === 'CODIGO_DE_BARRAS') { tipoBoleto = this.identificarTipoBoleto(codigo, 'CODIGO_DE_BARRAS'); - if (tipoBoleto == 'BANCO') { + if (tipoBoleto == 'BANCO' || tipoBoleto == 'CARTAO_DE_CREDITO') { const DV = this.calculaDVCodBarras(codigo, 4, 11); resultado = codigo.substr(0, 4) + DV + codigo.substr(5); } else {