Ejemplo n.º 1
0
        private void Form1_Load(object sender, EventArgs e)
        {
            bool error = false;

            try
            {
                //
                //SERVICO: danasa 7/2011
                //servico está instalado e rodando?
                this.servicoInstaladoErodando = Propriedade.ServicoRodando;

                this.tbSeparator1.Visible           =
                    this.tbRestartServico.Visible   =
                        this.tbPararServico.Visible = this.servicoInstaladoErodando;

                ///
                /// danasa 9-2009
                ///
                this.MinimumSize = new Size(800, 600);
                this.MaximumSize = new Size(800, 600);
                //Trazer minimizado e no systray
                this.notifyIcon1.BalloonTipText  = string.Format("Para abrir novamente o {0}, de um duplo clique ou pressione o botão direito do mouse sobre o ícone.", NFe.Components.Propriedade.NomeAplicacao);
                this.notifyIcon1.BalloonTipTitle =
                    this.notifyIcon1.Text        = NFe.Components.Propriedade.NomeAplicacao + " - " + NFe.Components.Propriedade.DescricaoAplicacao;
                this.notifyIcon1.Visible         = true;
                this.WindowState   = FormWindowState.Minimized;
                this.Visible       = false;
                this.ShowInTaskbar = false;
                this.notifyIcon1.ShowBalloonTip(6000);

                try
                {
                    //this.uTheme = NFe.Components.EnumHelper.StringToEnum<MetroFramework.MetroThemeStyle>(uninfeDummy.xmlParams.ReadValue(this.Name, "Theme", this.metroStyleManager1.Theme.ToString()));
                    //this.uStyle = NFe.Components.EnumHelper.StringToEnum<MetroFramework.MetroColorStyle>(uninfeDummy.xmlParams.ReadValue(this.Name, "Style", this.metroStyleManager1.Style.ToString()));
                }
                catch { }

                ConfiguracaoApp.StartVersoes();

                _menu = new menu();
                this.Controls.Add(_menu);
                _menu.Dock = DockStyle.Fill;

                switch (NFe.Components.Propriedade.TipoAplicativo)
                {
                default:
                    this.notifyIcon1.Icon = this.Icon = NFe.UI.Properties.Resources.uninfe_icon;
                    break;

                case NFe.Components.TipoAplicativo.Nfse:
                    this.notifyIcon1.Icon = this.Icon = NFe.UI.Properties.Resources.uninfse_icon;
                    break;
                }

                this.cmAbrir.Text     = "Abrir " + NFe.Components.Propriedade.NomeAplicacao;
                this.cmFechar.Text    = "Fechar " + NFe.Components.Propriedade.NomeAplicacao;
                this.cmSobre.Text     = "Sobre o " + NFe.Components.Propriedade.NomeAplicacao;
                this.cmManual.Text    = "Manual do " + NFe.Components.Propriedade.NomeAplicacao;
                this.cmManual.Enabled = File.Exists(Path.Combine(NFe.Components.Propriedade.PastaExecutavel, NFe.Components.Propriedade.NomeAplicacao + ".pdf"));

                string filenameWS1 = Propriedade.NomeArqXMLMunicipios;
                string filenameWS2 = Propriedade.NomeArqXMLWebService_NFSe;
                string filenameWS3 = Propriedade.NomeArqXMLWebService_NFe;
                string msg         = "";

                error = !System.IO.File.Exists(filenameWS1) || !System.IO.File.Exists(filenameWS2) || !System.IO.File.Exists(filenameWS3);
                msg   = "Arquivos '" + filenameWS1 + "', '" + filenameWS2 + "' e '" + filenameWS3 + "' não encontrados";

                if (error)
                {
                    MetroFramework.MetroMessageBox.Show(this, msg, "", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    Application.Exit();
                    return;
                }

                if (!this.servicoInstaladoErodando)     //danasa 12/8/2011
                //Definir eventos de controles de execução das thread´s de serviços do UniNFe. Wandrey 26/07/2011
                {
                    new ThreadControlEvents();  //danasa 12/8/2011
                }
                //Executar os serviços do UniNFe em novas threads
                //Tem que ser carregado depois que o formulário da MainForm estiver totalmente carregado para evitar Erros. Wandrey 19/10/2010
                this.ExecutaServicos();
            }
            finally
            {
                if (!error)
                {
                    this.updateControleDoServico();
                }
            }

#if DEBUG
#if verifica_wsdl
            Console.WriteLine("----------------------");
            NFe.Components.Servicos    servico = NFe.Components.Servicos.Nulo;
            NFe.Components.PadroesNFSe padrao  = PadroesNFSe.NaoIdentificado;

            Console.WriteLine(NFe.Components.Propriedade.NomeArqXMLWebService);

            if (Propriedade.TipoAplicativo == TipoAplicativo.Nfse)
            {
                XElement axml = XElement.Load(NFe.Components.Propriedade.NomeArqXMLWebService);
                var      s    = (from p in axml.Descendants(NFe.Components.NFeStrConstants.Estado)
                                 where (string)p.Attribute(NFe.Components.NFeStrConstants.UF) != "XX"
                                 select p);
                foreach (var item in s)
                {
                    NFe.Components.TipoAmbiente taHomologacao = TipoAmbiente.taProducao;
                    var x = XElement.Parse(item.Element(NFe.Components.NFeStrConstants.LocalProducao).ToString()).Elements();
                    foreach (var xa in x)
                    {
                        if (!string.IsNullOrEmpty(xa.Value))
                        {
                            padrao = NFe.Components.EnumHelper.StringToEnum <NFe.Components.PadroesNFSe>(item.Attribute("Padrao").Value);

                            if (padrao == PadroesNFSe.SYSTEMPRO || padrao == PadroesNFSe.IPM || padrao == PadroesNFSe.BETHA)
                            {
                                continue;
                            }

                            switch (xa.Name.ToString())
                            {
                            case "RecepcionarLoteRps":
                                servico = NFe.Components.Servicos.RecepcionarLoteRps;
                                break;

                            case "ConsultarSituacaoLoteRps":
                                servico = NFe.Components.Servicos.ConsultarSituacaoLoteRps;
                                break;

                            case "ConsultarNfsePorRps":
                                servico = NFe.Components.Servicos.ConsultarNfsePorRps;
                                break;

                            case "ConsultarNfse":
                                servico = NFe.Components.Servicos.ConsultarNfse;
                                break;

                            case "ConsultarLoteRps":
                                servico = NFe.Components.Servicos.ConsultarLoteRps;
                                break;

                            case "CancelarNfse":
                                servico = NFe.Components.Servicos.CancelarNfse;
                                break;

                            case "ConsultarURLNfseSerie":
                                servico = Servicos.ConsultarURLNfseSerie;
                                break;

                            case "ConsultarURLNfse":
                                servico = Servicos.ConsultarURLNfse;
                                break;

                            default:
                                Console.WriteLine("====>(" + xa.Name.ToString() + ")");
                                break;
                            }
                            if (servico == Servicos.Nulo)
                            {
                                Console.WriteLine("=========================================="
                                                  + " => " + item.Attribute("ID").Value
                                                  + "=>" + item.Attribute("Padrao").Value
                                                  + "=>" + xa.Name
                                                  + "=>" + xa.Value);
                            }
                            else
                            {
                                try
                                {
                                    NFe.UI.aaaa xxx  = new NFe.UI.aaaa();
                                    var         nome = xxx.nome(servico, Convert.ToInt32(item.Attribute("ID").Value), "");

                                    var proxy = ConfiguracaoApp.DefinirWS(servico, 0,
                                                                          Convert.ToInt32(item.Attribute("ID").Value),
                                                                          (int)taHomologacao,
                                                                          (int)NFe.Components.TipoEmissao.teNormal,
                                                                          padrao,
                                                                          string.Empty);

                                    if (nome != proxy.NomeClasseWS)
                                    {
                                        Console.WriteLine("srv:" + servico.ToString()
                                                          + "\r\nPadrao:" + item.Attribute("Padrao").Value
                                                          + "\r\nMunic:" + item.Attribute("ID").Value
                                                          + "\r\nC#:" + nome + " X wsdl:" + proxy.NomeClasseWS +
                                                          " Tag:" + xa.Name + "\r\n" + proxy.ArquivoWSDL + "\r\n----");
                                    }
                                }
                                catch (Exception ex)
                                {
                                    Console.WriteLine("====\r\n" + xa.Value + "\r\n" + ex.Message);
                                }
                                //Console.WriteLine(NomeClasseWSNFSe(servico, padrao) + "==>" + proxy.NomeClasseWS);
                            }
                        }
                    }
                }
            }
            else
            {
                XElement axml = XElement.Load(NFe.Components.Propriedade.NomeArqXMLWebService);
                var      s    = (from p in axml.Descendants(NFe.Components.NFeStrConstants.Estado)
                                 where (string)p.Attribute(NFe.Components.NFeStrConstants.UF) != "XX"
                                 select p);
                foreach (var item in s)
                {
                    //Console.WriteLine(item.Element(NFe.Components.NFeStrConstants.LocalHomologacao).ToString());
                    var x = XElement.Parse(item.Element(NFe.Components.NFeStrConstants.LocalHomologacao).ToString()).Elements();
                    foreach (var xa in x)
                    {
                        if (!string.IsNullOrEmpty(xa.Value))
                        {
                            //Console.WriteLine(xa.Name + " => " + xa.Value);
                            servico = Servicos.Nulo;
                            string versao = "3.10";
                            switch (xa.Name.ToString())
                            {
                            case "CTeRecepcaoEvento":
                                servico = Servicos.RecepcaoEventoCTe;
                                versao  = NFe.ConvertTxt.versoes.VersaoXMLCTeEvento;
                                break;

                            case "CTeRecepcao":
                                servico = Servicos.EnviarLoteCTe;
                                versao  = NFe.ConvertTxt.versoes.VersaoXMLCTe;
                                break;

                            case "CTeRetRecepcao":
                                servico = Servicos.PedidoSituacaoLoteCTe;
                                break;

                            case "CTeInutilizacao":
                                servico = Servicos.InutilizarNumerosCTe;
                                versao  = NFe.ConvertTxt.versoes.VersaoXMLCTeInut;
                                break;

                            case "CTeConsulta":
                                servico = Servicos.PedidoConsultaSituacaoCTe;
                                break;

                            case "CTeStatusServico":
                                servico = Servicos.ConsultaStatusServicoCTe;
                                versao  = NFe.ConvertTxt.versoes.VersaoXMLCTeStatusServico;
                                break;

                            case "CTeConsultaCadastro": break;

                            case "NFeRecepcao":
                                servico = Servicos.EnviarLoteNfe; break;

                            case "NFeRetRecepcao": servico = Servicos.PedidoSituacaoLoteNFe; break;

                            case "NFeInutilizacao":
                                versao  = NFe.ConvertTxt.versoes.VersaoXMLInut;
                                servico = Servicos.InutilizarNumerosNFe; break;

                            case "NFeConsulta": servico = Servicos.PedidoConsultaSituacaoNFe; break;

                            case "NFeStatusServico":
                                servico = Servicos.ConsultaStatusServicoNFe;
                                versao  = NFe.ConvertTxt.versoes.VersaoXMLStatusServico;
                                break;

                            case "NFeConsultaCadastro":
                                servico = Servicos.ConsultaCadastroContribuinte;
                                versao  = NFe.ConvertTxt.versoes.VersaoXMLConsCad;
                                break;

                            case "NFeRecepcaoEvento":
                                servico = Servicos.RecepcaoEvento;
                                versao  = NFe.ConvertTxt.versoes.VersaoXMLEvento;
                                break;

                            case "NFeConsultaNFeDest":
                                versao  = NFe.ConvertTxt.versoes.VersaoXMLEnvConsultaNFeDest;
                                servico = Servicos.ConsultaNFDest;
                                break;

                            case "NFeDownload": servico = Servicos.DownloadNFe; break;

                            case "NFeManifDest":
                                servico = Servicos.EnviarManifDest;
                                versao  = NFe.ConvertTxt.versoes.VersaoXMLEvento;
                                break;

                            case "NFeAutorizacao": servico = Servicos.EnviarLoteNfeZip2; break;

                            case "NFeRetAutorizacao": servico = Servicos.PedidoSituacaoLoteNFe2; break;

                            case "MDFeRecepcao": servico = Servicos.EnviarLoteMDFe;
                                versao = NFe.ConvertTxt.versoes.VersaoXMLMDFe;
                                break;

                            case "MDFeRetRecepcao":
                                servico = Servicos.PedidoSituacaoLoteMDFe;
                                versao  = NFe.ConvertTxt.versoes.VersaoXMLMDFe;
                                break;

                            case "MDFeConsulta":
                                servico = Servicos.PedidoConsultaSituacaoMDFe;
                                versao  = NFe.ConvertTxt.versoes.VersaoXMLMDFe;
                                break;

                            case "MDFeStatusServico":
                                servico = Servicos.ConsultaStatusServicoMDFe;
                                versao  = NFe.ConvertTxt.versoes.VersaoXMLMDFeStatusServico;
                                break;

                            case "MDFeRecepcaoEvento":
                                servico = Servicos.RecepcaoEventoMDFe;
                                versao  = NFe.ConvertTxt.versoes.VersaoXMLMDFeEvento;
                                break;

                            default:
                                servico = Servicos.Nulo;
                                Console.WriteLine("====>(" + xa.Name.ToString() + ")");
                                break;
                            }
                            if (servico == Servicos.Nulo)
                            {
                                continue;
                            }

                            try
                            {
                                if (xa.Value.Contains("\\DPEC\\"))
                                {
                                    if (xa.Value.Contains("DEPCSCEConsultaRFB"))
                                    {
                                        servico = Servicos.ConsultarDPEC;
                                    }
                                    else
                                    {
                                        servico = Servicos.EnviarDPEC;
                                    }
                                }

                                NFe.UI.aaaa xxx  = new NFe.UI.aaaa();
                                var         nome = xxx.nome(servico, Convert.ToInt16(item.Attribute("ID").Value), versao);

                                foreach (NFe.Components.TipoEmissao temissao in Enum.GetValues(typeof(NFe.Components.TipoEmissao)))
                                {
                                    if (temissao == NFe.Components.TipoEmissao.teNone)
                                    {
                                        continue;
                                    }
                                    if (temissao != NFe.Components.TipoEmissao.teNormal && xa.Value.Contains("\\DPEC\\"))
                                    {
                                        break;
                                    }
                                    if (temissao == TipoEmissao.teDPEC && !xa.Value.Contains("\\DPEC\\"))
                                    {
                                        continue;
                                    }

                                    var proxy = NFe.Settings.ConfiguracaoApp.DefinirWS(servico, 0,
                                                                                       Convert.ToInt16(item.Attribute("ID").Value),
                                                                                       (int)NFe.Components.TipoAmbiente.taHomologacao,
                                                                                       (int)temissao,
                                                                                       versao);

                                    if (!nome.Equals(proxy.NomeClasseWS))
                                    {
                                        Console.WriteLine(versao + ": srv:" + servico.ToString() + "\r\ntpEmis:" + temissao.ToString() +
                                                          "\r\nC#:" + nome + " X wsdl:" + proxy.NomeClasseWS +
                                                          " Tag:" + xa.Name + "\r\n" + proxy.ArquivoWSDL + "\r\n----");
                                    }

                                    if (xa.Name.ToString().StartsWith("NFe") && versao.Equals("3.10"))
                                    {
                                        versao = "2.00";
                                        var aproxy = NFe.Settings.ConfiguracaoApp.DefinirWS(servico, 0,
                                                                                            Convert.ToInt16(item.Attribute("ID").Value),
                                                                                            (int)NFe.Components.TipoAmbiente.taHomologacao,
                                                                                            (int)temissao,
                                                                                            versao);

                                        NFe.UI.aaaa axxx  = new NFe.UI.aaaa();
                                        var         anome = axxx.nome(servico, Convert.ToInt16(item.Attribute("ID").Value), versao);

                                        if (!anome.Equals(aproxy.NomeClasseWS))
                                        {
                                            Console.WriteLine(versao + ": srv:" + servico.ToString() + "\r\ntpEmis:" + temissao.ToString()
                                                              + "\r\nC#:" + anome + " X wsdl:" + aproxy.NomeClasseWS +
                                                              " Tag:" + xa.Name + "\r\n" + aproxy.ArquivoWSDL + "\r\n----");
                                        }
                                    }
                                }
                            }
                            catch (Exception ex)
                            {
                                //Console.WriteLine("====\r\n" + xa.Value + "\r\n" + ex.Message);
                            }
                        }
                    }
                }
            }
            Console.WriteLine("----------------------");
#endif
#endif
        }
Ejemplo n.º 2
0
        private void Form1_Load(object sender, EventArgs e)
        {
            bool error = false;
            try
            {
                //
                //SERVICO: danasa 7/2011
                //servico está instalado e rodando?
                this.servicoInstaladoErodando = Propriedade.ServicoRodando;

                this.tbSeparator1.Visible =
                    this.tbRestartServico.Visible =
                    this.tbPararServico.Visible = this.servicoInstaladoErodando;

                ///
                /// danasa 9-2009
                ///
                this.MinimumSize = new Size(800, 600);
                this.MaximumSize = new Size(800, 600);
                //Trazer minimizado e no systray
                this.notifyIcon1.BalloonTipText = string.Format("Para abrir novamente o {0}, de um duplo clique ou pressione o botão direito do mouse sobre o ícone.", NFe.Components.Propriedade.NomeAplicacao);
                this.notifyIcon1.BalloonTipTitle =
                    this.notifyIcon1.Text = NFe.Components.Propriedade.NomeAplicacao + " - " + NFe.Components.Propriedade.DescricaoAplicacao;
                this.notifyIcon1.Visible = true;
                this.WindowState = FormWindowState.Minimized;
                this.Visible = false;
                this.ShowInTaskbar = false;
                this.notifyIcon1.ShowBalloonTip(6000);

                try
                {
                    //this.uTheme = NFe.Components.EnumHelper.StringToEnum<MetroFramework.MetroThemeStyle>(uninfeDummy.xmlParams.ReadValue(this.Name, "Theme", this.metroStyleManager1.Theme.ToString()));
                    //this.uStyle = NFe.Components.EnumHelper.StringToEnum<MetroFramework.MetroColorStyle>(uninfeDummy.xmlParams.ReadValue(this.Name, "Style", this.metroStyleManager1.Style.ToString()));
                }
                catch { }

                ConfiguracaoApp.StartVersoes();

                _menu = new menu();
                this.Controls.Add(_menu);
                _menu.Dock = DockStyle.Fill;

                switch (NFe.Components.Propriedade.TipoAplicativo)
                {
                    default:
                        this.notifyIcon1.Icon = this.Icon = NFe.UI.Properties.Resources.uninfe_icon;
                        break;

                    case NFe.Components.TipoAplicativo.Nfse:
                        this.notifyIcon1.Icon = this.Icon = NFe.UI.Properties.Resources.uninfse_icon;
                        break;
                }

                this.cmAbrir.Text = "Abrir " + NFe.Components.Propriedade.NomeAplicacao;
                this.cmFechar.Text = "Fechar " + NFe.Components.Propriedade.NomeAplicacao;
                this.cmSobre.Text = "Sobre o " + NFe.Components.Propriedade.NomeAplicacao;
                this.cmManual.Text = "Manual do " + NFe.Components.Propriedade.NomeAplicacao;
                this.cmManual.Enabled = File.Exists(Path.Combine(NFe.Components.Propriedade.PastaExecutavel, NFe.Components.Propriedade.NomeAplicacao + ".pdf"));

                string msg = "";
                NFe.Components.Propriedade.VerificaArquivos(out error, out msg);
                if (error)
                {
                    MetroFramework.MetroMessageBox.Show(this, msg, "", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    Application.Exit();
                    return;
                }

                if (!this.servicoInstaladoErodando)     //danasa 12/8/2011
                    //Definir eventos de controles de execução das thread´s de serviços do UniNFe. Wandrey 26/07/2011
                    new ThreadControlEvents();  //danasa 12/8/2011

                //Executar os serviços do UniNFe em novas threads
                //Tem que ser carregado depois que o formulário da MainForm estiver totalmente carregado para evitar Erros. Wandrey 19/10/2010
                this.ExecutaServicos();
            }
            finally
            {
                if (!error)
                    this.updateControleDoServico();
            }

#if DEBUG

#if verifica_wsdl

            Console.WriteLine("----------------------");
            NFe.Components.Servicos servico = NFe.Components.Servicos.Nulo;
            NFe.Components.PadroesNFSe padrao = PadroesNFSe.NaoIdentificado;

            Console.WriteLine(NFe.Components.Propriedade.NomeArqXMLWebService);

            if (Propriedade.TipoAplicativo == TipoAplicativo.Nfse)
            {
                XElement axml = XElement.Load(NFe.Components.Propriedade.NomeArqXMLWebService);
                var s = (from p in axml.Descendants(NFe.Components.NFeStrConstants.Estado)
                            where (string)p.Attribute(NFe.Components.NFeStrConstants.UF) != "XX"
                            select p);
                foreach (var item in s)
                {
                    NFe.Components.TipoAmbiente taHomologacao = TipoAmbiente.taProducao;
                    var x = XElement.Parse(item.Element(NFe.Components.NFeStrConstants.LocalProducao).ToString()).Elements();
                    foreach (var xa in x)
                    {
                        if (!string.IsNullOrEmpty(xa.Value))
                        {
                            padrao = NFe.Components.EnumHelper.StringToEnum<NFe.Components.PadroesNFSe>(item.Attribute("Padrao").Value);

                            if (padrao == PadroesNFSe.SYSTEMPRO || padrao == PadroesNFSe.IPM || padrao == PadroesNFSe.BETHA)
                                continue;

                            switch(xa.Name.ToString())
                            {
                                case "RecepcionarLoteRps":
                                    servico = NFe.Components.Servicos.RecepcionarLoteRps;
                                    break;
                                case "ConsultarSituacaoLoteRps":
                                    servico = NFe.Components.Servicos.ConsultarSituacaoLoteRps;
                                    break;
                                case "ConsultarNfsePorRps":
                                    servico = NFe.Components.Servicos.ConsultarNfsePorRps;
                                    break;
                                case "ConsultarNfse":
                                    servico = NFe.Components.Servicos.ConsultarNfse;
                                    break;
                                case "ConsultarLoteRps":
                                    servico = NFe.Components.Servicos.ConsultarLoteRps;
                                    break;
                                case "CancelarNfse":
                                    servico = NFe.Components.Servicos.CancelarNfse;
                                    break;
                                case "ConsultarURLNfseSerie":
                                    servico = Servicos.ConsultarURLNfseSerie;
                                    break;
                                case "ConsultarURLNfse":
                                    servico = Servicos.ConsultarURLNfse;
                                    break;
                                default:
                                    Console.WriteLine("====>(" + xa.Name.ToString()+")");
                                    break;
                            }
                            if (servico == Servicos.Nulo)
                            {
                                Console.WriteLine("=========================================="
                                    + " => " + item.Attribute("ID").Value
                                                        + "=>" + item.Attribute("Padrao").Value
                                                        + "=>" + xa.Name
                                                        + "=>" + xa.Value);
                            }
                            else
                            {
                                try
                                {
                                    NFe.UI.aaaa xxx = new NFe.UI.aaaa();
                                    var nome = xxx.nome(servico, Convert.ToInt32(item.Attribute("ID").Value), "");

                                    var proxy = ConfiguracaoApp.DefinirWS(servico, 0,
                                        Convert.ToInt32(item.Attribute("ID").Value),
                                        (int)taHomologacao,
                                        (int)NFe.Components.TipoEmissao.teNormal,
                                        padrao,
                                        string.Empty);

                                    if (nome != proxy.NomeClasseWS)
                                        Console.WriteLine("srv:" + servico.ToString()
                                                    + "\r\nPadrao:"+item.Attribute("Padrao").Value
                                                    + "\r\nMunic:" + item.Attribute("ID").Value
                                                    + "\r\nC#:" + nome + " X wsdl:" + proxy.NomeClasseWS +
                                                    " Tag:" + xa.Name + "\r\n" + proxy.ArquivoWSDL + "\r\n----");
                                }
                                catch (Exception ex)
                                {
                                    Console.WriteLine("====\r\n" + xa.Value + "\r\n" + ex.Message);
                                }
                                //Console.WriteLine(NomeClasseWSNFSe(servico, padrao) + "==>" + proxy.NomeClasseWS);
                            }
                        }
                    }
                }
            }
            else
            {
                XElement axml = XElement.Load(NFe.Components.Propriedade.NomeArqXMLWebService);
                var s = (from p in axml.Descendants(NFe.Components.NFeStrConstants.Estado)
                            where (string)p.Attribute(NFe.Components.NFeStrConstants.UF) != "XX"
                            select p);
                foreach (var item in s)
                {
                    //Console.WriteLine(item.Element(NFe.Components.NFeStrConstants.LocalHomologacao).ToString());
                    var x = XElement.Parse(item.Element(NFe.Components.NFeStrConstants.LocalHomologacao).ToString()).Elements();
                    foreach (var xa in x)
                    {
                        if (!string.IsNullOrEmpty(xa.Value))
                        {
                            //Console.WriteLine(xa.Name + " => " + xa.Value);
                            servico = Servicos.Nulo;
                            string versao = "3.10";
                            switch (xa.Name.ToString())
                            {
                                case "CTeRecepcaoEvento":
                                    servico = Servicos.RecepcaoEventoCTe;
                                    versao = NFe.ConvertTxt.versoes.VersaoXMLCTeEvento;
                                    break;
                                case "CTeRecepcao":
                                    servico = Servicos.EnviarLoteCTe;
                                    versao = NFe.ConvertTxt.versoes.VersaoXMLCTe;
                                    break;
                                case "CTeRetRecepcao":
                                    servico = Servicos.PedidoSituacaoLoteCTe;
                                    break;
                                case "CTeInutilizacao":
                                    servico = Servicos.InutilizarNumerosCTe;
                                    versao = NFe.ConvertTxt.versoes.VersaoXMLCTeInut;
                                    break;
                                case "CTeConsulta":
                                    servico = Servicos.PedidoConsultaSituacaoCTe;
                                    break;
                                case "CTeStatusServico":
                                    servico = Servicos.ConsultaStatusServicoCTe;
                                    versao = NFe.ConvertTxt.versoes.VersaoXMLCTeStatusServico;
                                    break;
                                case "CTeConsultaCadastro": break;

                                case "NFeRecepcao":
                                    servico = Servicos.EnviarLoteNfe; break;
                                case "NFeRetRecepcao": servico = Servicos.PedidoSituacaoLoteNFe; break;
                                case "NFeInutilizacao":
                                    versao = NFe.ConvertTxt.versoes.VersaoXMLInut;
                                    servico = Servicos.InutilizarNumerosNFe; break;
                                case "NFeConsulta": servico = Servicos.PedidoConsultaSituacaoNFe; break;
                                case "NFeStatusServico":
                                    servico = Servicos.ConsultaStatusServicoNFe;
                                    versao = NFe.ConvertTxt.versoes.VersaoXMLStatusServico;
                                    break;
                                case "NFeConsultaCadastro":
                                    servico = Servicos.ConsultaCadastroContribuinte;
                                    versao = NFe.ConvertTxt.versoes.VersaoXMLConsCad;
                                    break;
                                case "NFeRecepcaoEvento":
                                    servico = Servicos.RecepcaoEvento;
                                    versao = NFe.ConvertTxt.versoes.VersaoXMLEvento;
                                    break;
                                case "NFeConsultaNFeDest":
                                    versao = NFe.ConvertTxt.versoes.VersaoXMLEnvConsultaNFeDest;
                                    servico = Servicos.ConsultaNFDest;
                                    break;
                                case "NFeDownload": servico = Servicos.DownloadNFe; break;
                                case "NFeManifDest":
                                    servico = Servicos.EnviarManifDest;
                                    versao = NFe.ConvertTxt.versoes.VersaoXMLEvento;
                                    break;
                                case "NFeAutorizacao": servico = Servicos.EnviarLoteNfeZip2; break;
                                case "NFeRetAutorizacao": servico = Servicos.PedidoSituacaoLoteNFe2; break;

                                case "MDFeRecepcao": servico = Servicos.EnviarLoteMDFe;
                                    versao = NFe.ConvertTxt.versoes.VersaoXMLMDFe;
                                    break;
                                case "MDFeRetRecepcao":
                                    servico = Servicos.PedidoSituacaoLoteMDFe;
                                    versao = NFe.ConvertTxt.versoes.VersaoXMLMDFe;
                                    break;
                                case "MDFeConsulta":
                                    servico = Servicos.PedidoConsultaSituacaoMDFe;
                                    versao = NFe.ConvertTxt.versoes.VersaoXMLMDFe;
                                    break;
                                case "MDFeStatusServico":
                                    servico = Servicos.ConsultaStatusServicoMDFe;
                                    versao = NFe.ConvertTxt.versoes.VersaoXMLMDFeStatusServico;
                                    break;
                                case "MDFeRecepcaoEvento":
                                    servico = Servicos.RecepcaoEventoMDFe;
                                    versao = NFe.ConvertTxt.versoes.VersaoXMLMDFeEvento;
                                    break;

                                default:
                                    servico = Servicos.Nulo;
                                    Console.WriteLine("====>(" + xa.Name.ToString() + ")");
                                    break;
                            }
                            if (servico == Servicos.Nulo) continue;

                            try
                            {
                                NFe.UI.aaaa xxx = new NFe.UI.aaaa();
                                var nome = xxx.nome(servico, Convert.ToInt16(item.Attribute("ID").Value), versao);

                                foreach (NFe.Components.TipoEmissao temissao in Enum.GetValues(typeof(NFe.Components.TipoEmissao)))
                                {
                                    if (temissao == NFe.Components.TipoEmissao.teNone) continue;

                                    var proxy = NFe.Settings.ConfiguracaoApp.DefinirWS(servico, 0,
                                        Convert.ToInt16(item.Attribute("ID").Value),
                                        (int)NFe.Components.TipoAmbiente.taHomologacao,
                                        (int)temissao,
                                        versao);

                                    if (!nome.Equals(proxy.NomeClasseWS))
                                        Console.WriteLine(versao + ": srv:" + servico.ToString() + "\r\ntpEmis:" + temissao.ToString() +
                                                            "\r\nC#:" + nome + " X wsdl:" + proxy.NomeClasseWS +
                                                            " Tag:" + xa.Name + "\r\n" + proxy.ArquivoWSDL + "\r\n----");

                                    if (xa.Name.ToString().StartsWith("NFe") && versao.Equals("3.10"))
                                    {
                                        versao = "2.00";
                                        var aproxy = NFe.Settings.ConfiguracaoApp.DefinirWS(servico, 0,
                                            Convert.ToInt16(item.Attribute("ID").Value),
                                            (int)NFe.Components.TipoAmbiente.taHomologacao,
                                            (int)temissao,
                                            versao);

                                        NFe.UI.aaaa axxx = new NFe.UI.aaaa();
                                        var anome = axxx.nome(servico, Convert.ToInt16(item.Attribute("ID").Value), versao);

                                        if (!anome.Equals(aproxy.NomeClasseWS))
                                            Console.WriteLine(versao + ": srv:" + servico.ToString() + "\r\ntpEmis:" + temissao.ToString()
                                                        + "\r\nC#:" + anome + " X wsdl:" + aproxy.NomeClasseWS +
                                                        " Tag:" + xa.Name + "\r\n" + aproxy.ArquivoWSDL + "\r\n----");
                                    }
                                }
                            }
                            catch (Exception ex)
                            {
                                //Console.WriteLine("====\r\n" + xa.Value + "\r\n" + ex.Message);
                            }
                        }
                    }
                }
            }
            Console.WriteLine("----------------------");
#endif

#endif
        }