O negocio é tão simples gente... Acho que o tempo para fazer essas 2 funcoes foi menor que o de ficar procurando nos fontes (nada contra procurar nos fontes)
Não sei se vai ter muita utilidade para quem usa o Componente, mas pra quem usa o Monitor e quiser gerar a chave antes de enviar a NFe
tai as funcoes que eu uso em C#
public static String montaChaveAcessoNFe(String UF, Int32 Ano, Int32 Mes, String CNPJ, String Serie, String Numero, String FormaEmissao)
{
//Forma Emissao = 1-Normal, 2-Contigencia FS, 3-SCAN, 4-DPEC, 5-FS-DA
CNPJ = FuncoesUteis.somenteNumeros(CNPJ);
String sAno = (Ano - (Ano / 100 * 100)).ToString();
String Chave = UF + sAno + Mes.ToString("D2") + CNPJ + "55" + Serie.PadLeft(3, '0') + Numero.PadLeft(9, '0') + FormaEmissao + Numero.PadLeft(8, '0');
Chave += calculaDVNFe(Chave);
return Chave;
}
public static String calculaDVNFe(String ChaveAcesso)
{
Int32 Peso = 2, Soma = 0, Contador, Digito;
for (Contador = (ChaveAcesso.Length-1); Contador >= 0; Contador--)
{
Soma = Soma + (Convert.ToInt32(ChaveAcesso[Contador].ToString()) * Peso);
if (Peso < 9) Peso++;
else Peso = 2;
}
Digito = 11 - (Soma % 11);
if (Digito > 9) Digito = 0;
return Digito.ToString();
}