dvChaveNFe function
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;
}