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;
        }
示例#2
0
        /// <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());
        }
        /// <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);
        }
示例#4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="BancoBase" /> class.
 /// </summary>
 /// <param name="parent">The parent.</param>
 internal BancoBase(Banco parent)
 {
     Banco                 = parent;
     Modulo                = new CalcDigito();
     TipoCobranca          = TipoCobranca.Nenhum;
     OrientacoesBanco      = new List <string>();
     Nome                  = "Nenhum";
     TamanhoAgencia        = 0;
     TamanhoCarteira       = 0;
     TamanhoConta          = 0;
     TamanhoMaximoNossoNum = 0;
     CodigosMoraAceitos    = "12";
     CodigosGeracaoAceitos = "0123456789";
 }