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);
            }
        }
示例#2
0
        public void SalvarHash(HistoricoModelo22E21 historico)
        {
            var codigoDaFilial = historico.CodigoDaFilial;

            var queryFilial =
                @"SELECT ORG_TAB_IN_CODIGO, ORG_PAD_IN_CODIGO, ORG_IN_CODIGO, PAI_ORG_IN_CODIGO FROM MGGLO.GLO_VW_ORGANIZACAO WHERE ORG_IN_CODIGO = " + codigoDaFilial;

            var filial = UtilXpo.ExecutaSelect(queryFilial);

            if (filial.Rows.Count == 0 || filial.Rows.Count > 1)
            {
                throw new Exception(
                          string.Format(
                              "Não foi encontrado organização maior com o código [{0}]", codigoDaFilial));
            }

            var linhaDaFilial = filial.Rows[0];

            var queryDeInsertDoHistorico =
                string.Format(CultureInfo.InvariantCulture,
                              @"INSERT INTO MGCUSTOM.MG_HISTNFMODELO21 (
                    ORG_TAB_IN_CODIGO,
                    ORG_PAD_IN_CODIGO,
                    ORG_IN_CODIGO,
                    FIL_IN_CODIGO,
                    REC_DT_RECIBO,
                    REC_ST_NOMEARQMESTRE,
                    REC_ST_HASHARQMESTRE ,
                    rec_st_nomearqitem  ,
                    rec_st_hasharqitem  ,
                    rec_st_nomearqdest  ,
                    rec_st_hasharqdest  ,
                    rec_in_qtderegistro ,
                    rec_re_vlrtotal     ,
                    rec_re_vlrdesc      ,
                    rec_re_vlracres     ,
                    rec_re_vlrbaseicms  ,
                    rec_re_vlricms      ,
                    rec_re_vlrisentas   ,
                    rec_re_vlroutros    ,
                    rec_dt_referenciaini,
                    rec_dt_referenciafin
                )
                VALUES 
                    ({0},
                     {1},
                     {2},
                     {3},
                     SYSDATE,
                     '{4}',
                     '{5}',
                     '{6}',
                     '{7}',
                     '{8}',
                     '{9}',
                      {10},
                      {11},
                      {12},
                      {13},
                      {14},
                      {15},
                      {16},
                      {17},
                     TO_DATE('{18:dd/MM/yyyy}{20:hh:mm:ss}',  'DD/MM/YYYYHH24:MI:SS'),
                     TO_DATE('{19:dd/MM/yyyy}{20:hh:mm:ss}',  'DD/MM/YYYYHH24:MI:SS')
             )",
                              linhaDaFilial["ORG_TAB_IN_CODIGO"],
                              linhaDaFilial["ORG_PAD_IN_CODIGO"],
                              linhaDaFilial["PAI_ORG_IN_CODIGO"],
                              codigoDaFilial,
                              historico.NomeDoArquioMestre,
                              historico.HashDoArquivoMestere,
                              historico.NomeDoArquivoItem,
                              historico.HashDoArquivoItem,
                              historico.NomeDoArquivoDados,
                              historico.HashDoArquivoDados,
                              historico.QtdRegistroMestre,
                              historico.ValorTotal,
                              historico.ValorDesconto,
                              historico.ValorAcrescimo,
                              historico.ValorBaseIcms,
                              historico.ValorIcms,
                              historico.ValorBaseIsentas,
                              historico.ValorOutros,
                              historico.ReferenciaInicial,
                              historico.ReferenciaFinal,
                              DateTime.Now
                              );

            UtilXpo.WriteLog(queryDeInsertDoHistorico);

            UtilXpo.ExecuteNonQuery(queryDeInsertDoHistorico);
        }