dvChaveNFe function

int dvChaveNFe(
  1. String chnfe
)

Cálculo do Dígito Verificador da Chave de Acesso da NF-e

Calcula o DV da chnfe conforme Manual de Orientação do Contribuinte 6.00 página 131, item 5.4: "O dígito verificador da chave de acesso da NF-e é baseado em um cálculo do módulo 11 (...)"

Implementation

int dvChaveNFe(String chnfe) {
  if (chnfe.length != 43) {
    return -1;
  }
  int _mult = 4;
  int _soma = 0;
  for (var i = 0; i < chnfe.length; i++) {
    int? _digito = int.tryParse(chnfe[i]);
    if (_digito == null) {
      return -2;
    }
    _soma += _digito * _mult;
    _mult--;
    if (_mult < 2) {
      _mult = 9;
    }
  }
  final _resto = _soma % 11;
  var _dv = 11 - _resto;
  if (_dv > 9) {
    _dv = 0;
  }

  return _dv;
}