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
TypeScript
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 };