private string GetCodigoAtuDigitalArquivoItem()
 {
     return(GetCodigoAtuDigital(ArquivoModel22.GetFileNameArquivoItem()));
 }
        public override void Append(StringBuilder stringBuilder)
        {
            var movimentos = _parametro
                             .Movimentos
                             .GroupBy(m => new
            {
                m.EstabelecimentoCpfCnpj,
                m.EstabelecimentoIe,
                m.EstabelecimentoRazaoSocial,
                m.EstabelecimentoCep,
                m.EstabelecimentoBairro,
                m.EstabelecimentoMunicipio,
                m.EstabelecimentoUf,
                m.EstabelecimentoEndereco,
                m.Responsavel,
                m.ResponsavelCargo,
                m.ResponsavelEmail,
                m.ResponsavelTelefone,
            });

            foreach (var movimento in movimentos)
            {
                SetValue(_cnpj, movimento.Key.EstabelecimentoCpfCnpj);
                SetValue(_ie, movimento.Key.EstabelecimentoIe);
                SetValue(_razaoSocial, movimento.Key.EstabelecimentoRazaoSocial);
                SetValue(_endereco, movimento.Key.EstabelecimentoEndereco);
                SetValue(_cep, movimento.Key.EstabelecimentoCep.Replace(".", ""));
                SetValue(_bairro, movimento.Key.EstabelecimentoBairro);
                SetValue(_municipio, movimento.Key.EstabelecimentoMunicipio);
                SetValue(_uf, movimento.Key.EstabelecimentoUf);
                SetValue(_responsavel, movimento.Key.Responsavel);
                SetValue(_cargo, movimento.Key.ResponsavelCargo);
                SetValue(_telefone, movimento.Key.ResponsavelTelefone);
                SetValue(_email, movimento.Key.ResponsavelEmail);

                // Registro Mestre
                _conteudoParcial.Clear();
                SetValue(_qtdRegistroMestre, _parametro.Movimentos.GetMovimentoAgrupadoDadosCadastrais().Count());
                SetValue(_qtdNfCancelada, 0);
                SetValue(_dataEmissaoPrimeiroDocMestre, _parametro.Movimentos.Min(v => v.DataEmissao));
                SetValue(_dataEmissaoUltimoDocMestre, _parametro.Movimentos.Max(v => v.DataEmissao));
                SetValue(_numeroPrimeiroDocMestre, _parametro.Movimentos.Min(v => v.NumeroNf));
                SetValue(_numeroUltimoDocMestre, _parametro.Movimentos.Max(v => v.NumeroNf));
                SetValue(_valorTotalMestre, _parametro.Movimentos.Sum(v => v.ValorTotal));
                SetValue(_baseIcmsMestre, _parametro.Movimentos.Sum(v => v.ValorBaseIcms));
                SetValue(_valorIcmsMestre, _parametro.Movimentos.Sum(v => v.ValorIcms));
                SetValue(_valorIsentosMestre, _parametro.Movimentos.Sum(v => v.ValorIcmsIsento));
                SetValue(_valorOutrosMestre, _parametro.Movimentos.Sum(v => v.ValorIcmsOutros));
                SetValue(_nomeArquivoMestre, ArquivoModel22.GetFileNameArquivoMestre());
                SetValue(_statusRetificacaoMestre, _parametro.GetStringRetificacao());
                _codigoAutDigitalMestre.Value = HashCode.GetMd5Hash(_conteudoParcial.ToString()).ToUpper();

                // Registro Item
                _conteudoParcial.Clear();
                SetValue(_qtdRegistroItem, _parametro.Movimentos.GetMovimentoAgrupadoItem().Count());
                SetValue(_qtdItemCancelado, 0);
                SetValue(_dataEmissaoPrimeiroDocItem, _parametro.Movimentos.Min(v => v.DataEmissao));
                SetValue(_dataEmissaoUltimoDocItem, _parametro.Movimentos.Max(v => v.DataEmissao));
                SetValue(_numeroPrimeiroDocItem, _parametro.Movimentos.Min(v => v.NumeroNf));
                SetValue(_numeroUltimoDocItem, _parametro.Movimentos.Max(v => v.NumeroNf));
                SetValue(_valorTotalItem, _parametro.Movimentos.Sum(v => v.ValorTotal));
                SetValue(_valorDescontoItem, _parametro.Movimentos.Sum(v => v.ValorDesconto));
                SetValue(_valorAcrescimoItem, _parametro.Movimentos.Sum(v => v.ValorAcrescimo));
                SetValue(_baseIcmsItem, _parametro.Movimentos.Sum(v => v.ValorBaseIcms));
                SetValue(_valorIcmsItem, _parametro.Movimentos.Sum(v => v.ValorIcms));
                SetValue(_valorIsentosItem, _parametro.Movimentos.Sum(v => v.ValorIcmsIsento));
                SetValue(_valorOutrosItem, _parametro.Movimentos.Sum(v => v.ValorIcmsOutros));
                SetValue(_nomeArquivoItem, ArquivoModel22.GetFileNameArquivoItem());
                SetValue(_statusRetificacaoItem, _parametro.GetStringRetificacao());
                _codigoAutDigitalItem.Value = HashCode.GetMd5Hash(_conteudoParcial.ToString()).ToUpper();

                // Registro Dados Cadastrais
                _conteudoParcial.Clear();

                SetValue(_qtdRegistroDadosCadastro, _parametro.Movimentos.GetMovimentoAgrupadoDadosCadastrais().Count());
                SetValue(_nomeArquivoDadosCadastrais, ArquivoModel22.GetFileNameArquivoDadosCadastrais());

                SetValue(_statusRetificacaoArquivoDadosCadastrais, _parametro.GetStringRetificacao());
                _codigoAutDigitalDadosCadastrais.Value = HashCode.GetMd5Hash(_conteudoParcial.ToString()).ToUpper();

                SetValue(_versaoValidador, 208);
                SetValue(_chaveControle, string.Empty);
                SetValue(_qtdadeAdvertencias, 0);

                SetValue(_brancos, string.Empty);

                _codigoAutDigitalRegistro.Value = HashCode.GetMd5Hash(_conteudoArquivo.ToString()).ToUpper();

                AppendLine(stringBuilder);

                _conteudoArquivo.Clear();

                var historico = new HistoricoModelo22E21
                {
                    NomeDoArquioMestre   = ArquivoModel22.GetFileNameArquivoMestre(),
                    HashDoArquivoMestere = _codigoAutDigitalMestre.Value.ToString(),
                    NomeDoArquivoItem    = ArquivoModel22.GetFileNameArquivoItem(),
                    HashDoArquivoItem    = _codigoAutDigitalItem.Value.ToString(),
                    NomeDoArquivoDados   = ArquivoModel22.GetFileNameArquivoDadosCadastrais(),
                    HashDoArquivoDados   = GetCodigoAtuDigital(ArquivoModel22.GetFileNameArquivoDadosCadastrais()),
                    QtdRegistroMestre    = _parametro.Movimentos.GetMovimentoAgrupadoItem().Count(),
                    ValorTotal           = (decimal)_valorTotalItem.Value,
                    ValorDesconto        = (decimal)_valorDescontoItem.Value,
                    ValorAcrescimo       = (decimal)_valorAcrescimoItem.Value,
                    ValorIcms            = (decimal)_valorIcmsItem.Value,
                    ValorBaseIcms        = (decimal)_baseIcmsItem.Value,
                    ValorBaseIsentas     = (decimal)_valorIsentosItem.Value,
                    ValorOutros          = (decimal)_valorOutrosItem.Value,
                    ReferenciaInicial    = _parametro.DataInicio,
                    ReferenciaFinal      = _parametro.DataFim,
                    CodigoDaFilial       = _parametro.EstabelecimentoId
                };

                _hashDosArquivos.SalvarHash(historico);
            }
        }