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); } }
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); }