public void EditarPedido(Pedido ped, Model.retConsCad consulta)
        {
            using (var context = new ColinfoContext())
            {
                var vnd = context.Arquivos
                          .Include(vd => vd.Pedidos)
                          .ThenInclude(cli => cli.Cliente)
                          .ThenInclude(cons => cons.RetConsultaCadastro)
                          .ThenInclude(inf => inf.infCons)
                          .ThenInclude(cad => cad.infCad)
                          .FirstOrDefault(v => v.ArquivoID == ped.Arquivo.ArquivoID);

                var oldPed = vnd.Pedidos.FirstOrDefault(pd => pd.PedidoID == ped.PedidoID);
                var ctxPed = Arquivos.FirstOrDefault(v => v.ArquivoID == ped.Arquivo.ArquivoID).Pedidos.FirstOrDefault(p => p.PedidoID == ped.PedidoID);

                oldPed.Cliente.RetConsultaCadastro = consulta;
                oldPed.Cliente.Situacao            = SituacaoCadastro(oldPed);
                context.Entry(oldPed).State        = EntityState.Modified;
                context.SaveChanges();

                ctxPed.Cliente.RetConsultaCadastro = consulta;
            }
        }
        public void ConsultaCadastro(Pedido ped)
        {
            int NumOfRetries = 10;
            int trysExCom    = 0;
            int trysExOthers = 0;
            var recRet       = new Model.retConsCad();

            Task.Run(() =>
            {
                TryAgain:
                try
                {
                    var servicoNFe = new ServicosNFe(Configuracoes.CfgServico);
                    //var cert = DFe.Utils.Assinatura.CertificadoDigital.ListareObterDoRepositorio();
                    //Configuracoes.CfgServico.Certificado.Serial = cert.SerialNumber;
                    //Configuracoes.CfgServico.Certificado.Serial = "00D424AA";

                    var retornoConsulta = servicoNFe.NfeConsultaCadastro("MG", (ConsultaCadastroTipoDocumento)1, ped.Cliente.CNPJ.Replace(".", "").Replace("/", "").Replace("-", ""));
                    recRet = FuncoesXml.XmlStringParaClasse <Model.retConsCad>(retornoConsulta.RetornoCompletoStr);
                    //ped.Cliente.RetConsultaCadastro = recRet;

                    using (var context = new ColinfoContext())
                    {
                        var vnd = context.Arquivos
                                  .Include(vd => vd.Pedidos)
                                  .ThenInclude(cli => cli.Cliente)
                                  .ThenInclude(cons => cons.RetConsultaCadastro)
                                  .ThenInclude(inf => inf.infCons)
                                  .ThenInclude(cad => cad.infCad)
                                  .FirstOrDefault(v => v.ArquivoID == ped.Arquivo.ArquivoID);

                        var oldPed = vnd.Pedidos.FirstOrDefault(pd => pd.PedidoID == ped.PedidoID);
                        var ctxPed = Arquivos.FirstOrDefault(v => v.ArquivoID == ped.Arquivo.ArquivoID).Pedidos.FirstOrDefault(p => p.PedidoID == ped.PedidoID);
                        var ctxVnd = Arquivos.FirstOrDefault(v => v.ArquivoID == ped.Arquivo.ArquivoID);

                        oldPed.Cliente.RetConsultaCadastro = recRet;
                        oldPed.Cliente.Situacao            = SituacaoCadastro(oldPed);
                        context.Entry(oldPed).State        = EntityState.Modified;
                        context.SaveChanges();

                        ctxPed.Cliente.RetConsultaCadastro = recRet;

                        Arquivo = ctxVnd;

                        NotifyOfPropertyChange(() => ctxVnd.Pedidos);

                        NotifyOfPropertyChange(() => Arquivo.Pedidos);

                        Arquivo.ForcePropertyChanged("Pedidos");
                        ctxPed.Cliente.ForcePropertyChanged("RetConsultaCadastro");
                    }
                }
                catch (ComunicacaoException ex)
                {
                    if (trysExCom < NumOfRetries)
                    {
                        trysExCom += 1;
                        goto TryAgain;
                    }
                    var consulta = new Model.retConsCad()
                    {
                        ErrorCode    = "err_dives",
                        ErrorMessage = ex.Message
                    };
                    EditarPedido(ped, consulta);
                }
                catch (ValidacaoSchemaException ex)
                {
                    var consulta = new Model.retConsCad()
                    {
                        ErrorCode    = "err_dives",
                        ErrorMessage = ex.Message
                    };
                    EditarPedido(ped, consulta);
                }
                catch (DbUpdateException)
                {
                    throw;
                }
                catch (Exception ex)
                {
                    if (trysExOthers < NumOfRetries)
                    {
                        trysExOthers += 1;
                        goto TryAgain;
                    }
                    var consulta = new Model.retConsCad()
                    {
                        ErrorCode    = "err_dives",
                        ErrorMessage = ex.Message
                    };
                    EditarPedido(ped, consulta);
                }
            });
        }