UNPKG

boleto-utils-ts

Version:

Biblioteca com funções úteis para a validação de todos os tipos de boleto

174 lines (172 loc) 7.75 kB
declare enum TipoCodigo { CODIGO_DE_BARRAS = "CODIGO_DE_BARRAS", LINHA_DIGITAVEL = "LINHA_DIGITAVEL", TAMANHO_INCORRETO = "TAMANHO_INCORRETO" } /** * Identifica o tipo de código inserido (se baseando na quantidade de dígitos). */ declare const identificarTipoCodigo: (codigo: string) => TipoCodigo; declare enum TipoBoleto { BANCO = "BANCO", ARRECADACAO_PREFEITURA = "ARRECADACAO_PREFEITURA", ARRECADACAO_ORGAOS_GOVERNAMENTAIS = "ARRECADACAO_ORGAOS_GOVERNAMENTAIS", ARRECADACAO_TAXAS_DE_TRANSITO = "ARRECADACAO_TAXAS_DE_TRANSITO", CONVENIO_SANEAMENTO = "CONVENIO_SANEAMENTO", CONVENIO_ENERGIA_ELETRICA_E_GAS = "CONVENIO_ENERGIA_ELETRICA_E_GAS", CONVENIO_TELECOMUNICACOES = "CONVENIO_TELECOMUNICACOES", OUTROS = "OUTROS", CARTAO_DE_CREDITO = "CARTAO_DE_CREDITO" } /** * Identifica o tipo de boleto inserido a partir da validação de seus dois dígitos iniciais. */ declare const identificarTipoBoleto: (codigo: string) => TipoBoleto | undefined; /** * Identifica o o código de referência do boleto para determinar qual módulo * será utilizado para calcular os dígitos verificadores */ declare const identificarReferencia: (codigo: string) => { mod: number; efetivo: boolean; }; type obtemFatorDataParams = { codigo: string; tipoCodigo: TipoCodigo; }; declare const obtemFatorData: ({ codigo, tipoCodigo }: obtemFatorDataParams) => string; /** * Identifica o fator da data de vencimento do boleto */ declare const identificarData: (codigo: string, tipoCodigo: TipoCodigo) => Date; /** * Identifica o fator da data de vencimento do boleto após 22/02/2025 * O novo fator já tem seu início em 1000, logo fator 1000 representa 22/05/2025 */ declare const identificarDataComNovoFator2025: (codigo: string, tipoCodigo: TipoCodigo) => Date; /** * Identifica o valor no CÓDIGO DE BARRAS do boleto do tipo 'Arrecadação' */ declare const identificarValorCodBarrasArrecadacao: (codigo: string, tipoCodigo: TipoCodigo) => string | number; /** * Identifica o valor no boleto inserido */ declare const identificarValor: (codigo: string, tipoCodigo: TipoCodigo) => number; /** * Define qual módulo deverá ser utilizado para calcular os dígitos verificadores */ declare const digitosVerificadores: (codigo: string, mod: 10 | 11) => string | undefined; /** * Converte a numeração do código de barras em linha digitável */ declare const codBarras2LinhaDigitavel: (codigo: string, formatada: boolean) => string; /** * Converte a numeração da linha digitável em código de barras */ declare const linhaDigitavel2CodBarras: (codigo: string) => string; /** * Calcula o dígito verificador de toda a numeração do código de barras */ declare const calculaDVCodBarras: (codigo: string, posicaoCodigo: number, mod: number) => number | undefined; /** * Informa se o código de barras inserido é válido, calculando seu dígito verificador. */ declare const validarCodigoComDV: (codigo: string, tipoCodigo: TipoCodigo) => boolean; /** * Gerar código de barras já realizando o cálculo do dígito verificador */ declare const geraCodBarras: (codigo: string) => string; /** * ## __`BOLETO COBRANÇA`__ * ### __AS POSIÇÕES AQUI MENCIONADAS PARTEM DO NÚMERO 0 E NÃO DO 1, A FIM DE FACILITAR O ENTENDIMENTO LÓGICO__ * --------------------------------------------------------- * * ### __TIPO:__ CÓDIGO DE BARRAS (44 POSIÇÕES NUMÉRICAS) * * --------------------------------------------------------- * * #### __EXEMPLO:__ 11123444455555555556666666666666666666666666 * * Bloco | Posições | Definição * --- | --- | --- * __1__ | **0 a 2** | `Código do Banco na Câmara de Compensação` * __2__ | **3 a 3** | `Código da Moeda = 9 (Real)` * __3__ | **4 a 4** | `Digito Verificador (DV) do código de Barras` * __4__ | **5 a 8** | `Fator de Vencimento` * __5__ | **9 a 18** | `Valor com 2 casas de centavos` * __6__ | **19 a 43** | `Campo Livre (De uso da instituição bancária)` * * --------------------------------------------------------- * * ### __TIPO:__ LINHA DIGITÁVEL (47 POSIÇÕES NUMÉRICAS) * * --------------------------------------------------------- * * #### __EXEMPLO__: AAABC.CCCCX DDDDD.DDDDDY EEEEE.EEEEEZ K UUUUVVVVVVVVVV * * Campo | Posições linha dig. | Definição * --- | --- | --- * __A__ | **0 a 2** (0 a 2 do cód. barras) | `Código do Banco na Câmara de compensação` * __B__ | **3 a 3** (3 a 3 do cód. barras) | `Código da moeda` * __C__ | **4 a 8** (19 a 23 do cód. barras) | `Campo Livre` * __X__ | **9 a 9** | `Dígito verificador do Bloco 1 (Módulo 10)` * __D__ | **10 a 19** (24 a 33 do cód. barras) | `Campo Livre` * __Y__ | **20 a 20** | `Dígito verificador do Bloco 2 (Módulo 10)` * __E__ | **21 a 30** (24 a 43 do cód. barras) | `Campo Livre` * __Z__ | **31 a 31** | `Dígito verificador do Bloco 3 (Módulo 10)` * __K__ | **32 a 32** (4 a 4 do cód. barras) | `Dígito verificador do código de barras` * __U__ | **33 a 36** (5 a 8 do cód. barras) | `Fator de Vencimento` * __V__ | **37 a 43** (9 a 18 do cód. barras) | `Valor` * * ## __`CONTA CONVÊNIO / ARRECADAÇÃO`__ * * --------------------------------------------------------- * * ### __TIPO:__ CÓDIGO DE BARRAS (44 POSIÇÕES NUMÉRICAS) * * --------------------------------------------------------- * * #### __EXEMPLO__: 12345555555555566667777777777777777777777777 * * Campo | Posições | Definição * --- | --- | --- * __1__ | **0 a 0** | `"8" Identificação da Arrecadação/convênio` * __2__ | **1 a 1** | `Identificação do segmento` * __3__ | **2 a 2** | `Identificação do valor real ou referência` * __4__ | **3 a 3** | `Dígito verificador geral (módulo 10 ou 11)` * __5__ | **4 a 14** | `Valor efetivo ou valor referência` * __6__ | **15 a 18** | `Identificação da empresa/órgão` * __7__ | **19 a 43** | `Campo livre de utilização da empresa/órgão` * * --------------------------------------------------------- * * ### __TIPO:__ LINHA DIGITÁVEL (48 POSIÇÕES NUMÉRICAS) * * --------------------------------------------------------- * * #### __EXEMPLO__: ABCDEEEEEEE-W EEEEFFFFGGG-X GGGGGGGGGGG-Y GGGGGGGGGGG-Z * * Campo | Posições | Definição * --- | --- | --- * __A__ | **0 a 0** | `"8" Identificação da Arrecadação/convênio` * __B__ | **1 a 1** | `Identificação do segmento` * __C__ | **2 a 2** | `Identificação do valor real ou referência` * __D__ | **3 a 3** | `Dígito verificador geral (módulo 10 ou 11)` * __E__ | **4 a 14** | `Valor efetivo ou valor referência` * __W__ | **11 a 11** | `Dígito verificador do Bloco 1` * __F__ | **15 a 18** | `Identificação da empresa/órgão` * __G__ | **19 a 43** | `Campo livre de utilização da empresa/órgão` * __X__ | **23 a 23** | `Dígito verificador do Bloco 2` * __Y__ | **35 a 35** | `Dígito verificador do Bloco 3` * __Z__ | **47 a 47** | `Dígito verificador do Bloco 4` */ declare const validarBoleto: (codigo: string) => Record<string, any>; /** * Calcula o dígito verificador de uma numeração a partir do módulo 10 */ declare const calculaMod10: (numero: string) => number; /** * Calcula o dígito verificador de uma numeração a partir do módulo 11 */ declare const calculaMod11: (x: string) => number; export { TipoBoleto, TipoCodigo, calculaDVCodBarras, calculaMod10, calculaMod11, codBarras2LinhaDigitavel, digitosVerificadores, geraCodBarras, identificarData, identificarDataComNovoFator2025, identificarReferencia, identificarTipoBoleto, identificarTipoCodigo, identificarValor, identificarValorCodBarrasArrecadacao, linhaDigitavel2CodBarras, obtemFatorData, validarBoleto, validarCodigoComDV };