/// <summary> /// Informa se a chave de um DF-e é válida /// </summary> /// <param name="chave"></param> /// <returns></returns> public static bool Validar(string chave) { if (chave.IsEmpty()) { return(false); } chave = chave.Trim(); if (chave.Trim().Length != 44) { return(false); } var digitoVerificador = chave.Substring(43, 1).ToInt32(); var calcDigito = new CalcDigito { Documento = chave.Substring(0, 43) }; calcDigito.CalculoPadrao(); calcDigito.Calcular(); return(digitoVerificador == calcDigito.DigitoFinal); }
internal ChaveDFe(DFeCodUF ufEmitente, DateTime dataEmissao, string cnpjEmitente, int modelo, int serie, long numero, DFeTipoEmissao tipoEmissao, int cNumerico) { var chave = new StringBuilder(); chave.Append(ufEmitente.GetDFeValue()) .Append(dataEmissao.ToString("yyMM")) .Append(cnpjEmitente) .Append(modelo.ToString("D2")) .Append(serie.ToString("D3")) .Append(numero.ToString("D9")) .Append(tipoEmissao.GetDFeValue()) .Append(cNumerico.ToString("D8")); var calcDigito = new CalcDigito { FormulaDigito = CalcDigFormula.Modulo11, Documento = chave.ToString(), MultiplicadorInicial = 2, MultiplicadorFinal = 9 }; calcDigito.Calcular(); chave.Append(calcDigito.DigitoFinal); Chave = chave.ToString(); Digito = calcDigito.DigitoFinal; }
/// <summary> /// Gera a chave do documento fiscal /// </summary> /// <param name="ufEmitente">UF do emitente do DF-e</param> /// <param name="dataEmissao">Data de emissão do DF-e</param> /// <param name="cnpjEmitente">CNPJ do emitente do DF-e</param> /// <param name="modelo">Modelo do DF-e</param> /// <param name="serie">Série do DF-e</param> /// <param name="numero">Numero do DF-e</param> /// <param name="tipoEmissao">Tipo de emissão do DF-e. Informar inteiro conforme consta no manual de orientação do contribuinte para o DF-e</param> /// <param name="cNf">Código numérico que compõe a Chave de Acesso. Número gerado pelo emitente para cada DF-e</param> /// <returns>Retorna a chave DFe</returns> public static string Gerar(DFeCodUF ufEmitente, DateTime dataEmissao, string cnpjEmitente, int modelo, int serie, long numero, DFeTipoEmissao tipoEmissao, int cNf) { var chave = new StringBuilder(); chave.Append(ufEmitente.GetValue()) .Append(dataEmissao.ToString("yyMM")) .Append(cnpjEmitente) .Append(modelo.ToString("D2")) .Append(serie.ToString("D3")) .Append(numero.ToString("D9")) .Append(tipoEmissao.GetValue()) .Append(cNf.ToString("D8")); var calcDigito = new CalcDigito { Documento = chave.ToString() }; calcDigito.CalculoPadrao(); calcDigito.Calcular(); chave.Append(calcDigito.DigitoFinal); return(chave.ToString()); }