Skip to content

Commit

Permalink
Merge pull request #102 from victorers1/feat/cnpj-basico
Browse files Browse the repository at this point in the history
Adiciona `obterCnpjInscricao`, `obterCnpjOrdem` e `obterCnpjDiv`
  • Loading branch information
rubensdemelo authored Dec 17, 2024
2 parents 41a8f47 + 0d230d8 commit eefc953
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 0 deletions.
31 changes: 31 additions & 0 deletions lib/src/util/util_brasil_fields.dart
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,37 @@ class UtilBrasilFields {
return CNPJValidator.format(cnpj);
}

/// Retorna os dígitos da inscrição do [cnpj] informado.
///
/// Formatado ou não formatado, baseado no parâmetro `useFormat`:
///
/// `true`: inscrição terá o formato `XX.YYY.ZZZ`
///
/// `false`: inscrição terá o formato `XXYYYZZZ`
static String obterCnpjInscricao(String cnpj, {bool useFormat = false}) {
assert(isCNPJValido(cnpj), 'CNPJ inválido!');
return useFormat
? CNPJValidator.format(cnpj).substring(0, 10)
: CNPJValidator.strip(cnpj).substring(0, 8);
}

/// Retorna os dígitos da ordem do [cnpj] informado.
///
/// A ordem do CNPJ são os 4 dígitos após a barra. Essa parte representa se o
/// estabelecimento é matriz ou filial (0001 = matriz, 0002 = filial).
static String obterCnpjOrdem(String cnpj) {
assert(isCNPJValido(cnpj), 'CNPJ inválido!');
return CNPJValidator.strip(cnpj).substring(8, 12);
}

/// Retorna os dígitos verificadores do [cnpj] informado.
///
/// Os dígitos verificadores são os dois últimos números do CNPJ.
static String obterCnpjDiv(String cnpj) {
assert(isCNPJValido(cnpj), 'CNPJ inválido!');
return CNPJValidator.strip(cnpj).substring(12);
}

/// Retorna o número real informado, utilizando a máscara: `R$ 50.000,00` ou `50.000,00`
static String obterReal(double value, {bool moeda = true, int decimal = 2}) {
bool isNegative = false;
Expand Down
29 changes: 29 additions & 0 deletions test/util_brasil_fields_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,35 @@ void main() {
expect(UtilBrasilFields.obterCnpj(cpnjSemMascara), cpnjComMascara);
});

test('Obter inscrição CNPJ', () {
const cpnjSemMascara = '34318733000190';
const cpnjComMascara = '34.318.733/0001-90';
expect(UtilBrasilFields.obterCnpjInscricao(cpnjSemMascara), '34318733');
expect(UtilBrasilFields.obterCnpjInscricao(cpnjComMascara), '34318733');
expect(
UtilBrasilFields.obterCnpjInscricao(cpnjSemMascara, useFormat: true),
'34.318.733',
);
expect(
UtilBrasilFields.obterCnpjInscricao(cpnjComMascara, useFormat: true),
'34.318.733',
);
});

test('Obter Ordem do CNPJ', () {
const cpnjSemMascara = '34318733000190';
const cpnjComMascara = '34.318.733/0001-90';
expect(UtilBrasilFields.obterCnpjOrdem(cpnjSemMascara), '0001');
expect(UtilBrasilFields.obterCnpjOrdem(cpnjComMascara), '0001');
});

test('Obter dígitos verificadores do CNPJ', () {
const cpnjSemMascara = '34318733000190';
const cpnjComMascara = '34.318.733/0001-90';
expect(UtilBrasilFields.obterCnpjDiv(cpnjSemMascara), '90');
expect(UtilBrasilFields.obterCnpjDiv(cpnjComMascara), '90');
});

group('Obter Real', () {
test('com moeda (R\$)', () {
const real = 85437107.04;
Expand Down

0 comments on commit eefc953

Please sign in to comment.