コード例 #1
0
        private void vaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (Empresa.Configuracoes.Count <= 0)
            {
                MessageBox.Show("É necessário cadastrar e configurar as empresas que serão gerenciadas pelo aplicativo.", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            using (ValidarXML oValidarXML = new ValidarXML())
            {
                oValidarXML.ShowInTaskbar = true;
                oValidarXML.MinimizeBox   = true;
                oValidarXML.ShowDialog();
            }
        }
コード例 #2
0
        /// <summary>
        /// Metodo responsável por invocar o serviço do WebService do SEFAZ
        /// </summary>
        /// <param name="wsProxy">Objeto da classe construida do WSDL</param>
        /// <param name="servicoWS">Objeto da classe de envio do XML</param>
        /// <param name="metodo">Método da classe de envio do XML que faz o envio</param>
        /// <param name="cabecMsg">Objeto da classe de cabecalho do serviço</param>
        /// <param name="servicoNFe">Objeto do Serviço de envio da NFE do UniNFe</param>
        /// <param name="finalArqEnvio">string do final do arquivo a ser enviado. Sem a extensão ".xml"</param>
        /// <param name="finalArqRetorno">string do final do arquivo a ser gravado com o conteúdo do retorno. Sem a extensão ".xml"</param>
        /// <param name="gravaRetorno">Grava o arquivo de retorno para o ERP na execução deste método?</param>
        public void Invocar(WebServiceProxy wsProxy,
                            object servicoWS,
                            string metodo,
                            object cabecMsg,
                            object servicoNFe,
                            string finalArqEnvio,
                            string finalArqRetorno,
                            bool gravaRetorno,
                            SecurityProtocolType securityProtocolType)
        {
            int emp = Empresas.FindEmpresaByThread();

            finalArqEnvio   = Functions.ExtractExtension(finalArqEnvio);
            finalArqRetorno = Functions.ExtractExtension(finalArqRetorno);

            XmlDocument docXML = new XmlDocument();

            // Definir o tipo de serviço da NFe
            Type typeServicoNFe = servicoNFe.GetType();

            Servicos servico = (Servicos)wsProxy.GetProp(servicoNFe, NFeStrConstants.Servico);

            docXML = (XmlDocument)(typeServicoNFe.InvokeMember("ConteudoXML", System.Reflection.BindingFlags.GetField, null, servicoNFe, null));

            // Resgatar o nome do arquivo XML a ser enviado para o webservice
            string XmlNfeDadosMsg = (string)(typeServicoNFe.InvokeMember("NomeArquivoXML", System.Reflection.BindingFlags.GetProperty, null, servicoNFe, null));

            // Exclui o Arquivo de Erro
            Functions.DeletarArquivo(Empresas.Configuracoes[emp].PastaXmlRetorno + "\\" + Functions.ExtrairNomeArq(XmlNfeDadosMsg, finalArqEnvio + ".xml") + finalArqRetorno + ".err");

            if (docXML == null)
            {
                docXML.Load(XmlNfeDadosMsg);
            }

            // Validar o Arquivo XML
            switch (servico)
            {
            case Servicos.NFeEnviarLote:
            case Servicos.NFeEnviarLoteZip:
            case Servicos.CTeEnviarLote:
            case Servicos.MDFeEnviarLote:
                //XML de NFe, CTe e MDFe, na montagem do lote eu valido o XML antes, como o lote quem monta é o XML entendo que não está montando errado, sendo assim, não vou validar novamente o XML para ganhar desempenho. Wandrey 18/09/2016
                break;

            default:
                ValidarXML validar             = new ValidarXML(docXML, Empresas.Configuracoes[emp].UnidadeFederativaCodigo, false);
                string     cResultadoValidacao = validar.ValidarArqXML(docXML, XmlNfeDadosMsg);
                if (cResultadoValidacao != "")
                {
                    throw new Exception(cResultadoValidacao);
                }
                break;
            }

            // Definir Proxy
            if (ConfiguracaoApp.Proxy)
            {
                wsProxy.SetProp(servicoWS, "Proxy", Proxy.DefinirProxy(ConfiguracaoApp.ProxyServidor, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyPorta, ConfiguracaoApp.DetectarConfiguracaoProxyAuto));
            }

            // Limpa a variável de retorno
            XmlNode XmlRetorno = null;
            string  strRetorno = string.Empty;

            //Vou mudar o timeout para evitar que demore a resposta e o uninfe aborte antes de recebe-la. Wandrey 17/09/2009
            //Isso talvez evite de não conseguir o número do recibo se o serviço do SEFAZ estiver lento.
            wsProxy.SetProp(servicoWS, "Timeout", 60000);

            if (cabecMsg != null)
            {
                switch (servico)
                {
                case Servicos.MDFePedidoConsultaSituacao:
                case Servicos.MDFePedidoSituacaoLote:
                case Servicos.MDFeEnviarLote:
                case Servicos.MDFeConsultaStatusServico:
                case Servicos.MDFeRecepcaoEvento:
                case Servicos.MDFeConsultaNaoEncerrado:
                    wsProxy.SetProp(servicoWS, "mdfeCabecMsgValue", cabecMsg);
                    break;

                case Servicos.CTeInutilizarNumeros:
                case Servicos.CTePedidoConsultaSituacao:
                case Servicos.CTePedidoSituacaoLote:
                case Servicos.CTeEnviarLote:
                case Servicos.CTeRecepcaoEvento:
                case Servicos.CTeConsultaStatusServico:
                case Servicos.CteRecepcaoOS:
                    if (wsProxy.GetProp(cabecMsg, TpcnResources.cUF.ToString()).ToString() == "50")     //Mato Grosso do Sul fugiu o padrão nacional
                    {
                        try
                        {
                            wsProxy.SetProp(servicoWS, "cteCabecMsg", cabecMsg);
                        }
                        catch     //Se der erro é pq não está no ambiente normal então tem que ser o nome padrão pois Mato Grosso do Sul fugiu o padrão nacional.
                        {
                            wsProxy.SetProp(servicoWS, "cteCabecMsgValue", cabecMsg);
                        }
                    }
                    else
                    {
                        wsProxy.SetProp(servicoWS, "cteCabecMsgValue", cabecMsg);
                    }
                    break;

                case Servicos.CTeDistribuicaoDFe:
                case Servicos.DFeEnviar:
                    break;

                case Servicos.LMCAutorizacao:
                    break;

                default:
                    wsProxy.SetProp(servicoWS, "nfeCabecMsgValue", cabecMsg);
                    break;
                }
            }

            //Definir novamente o protocolo de segurança, pois é uma propriedade estática e o seu valor pode ser alterado antes do envio. Wandrey 03/05/2016
            ServicePointManager.SecurityProtocol = securityProtocolType;

            // Envio da NFe Compactada - Renan
            if (servico == Servicos.NFeEnviarLoteZip)
            {
                string encodedData = TFunctions.CompressXML(docXML);

                XmlRetorno = wsProxy.InvokeXML(servicoWS, metodo, new object[] { encodedData });
            }
            else
            {
                XmlRetorno = wsProxy.InvokeXML(servicoWS, metodo, new object[] { docXML });
            }

            if (XmlRetorno == null)
            {
                throw new Exception("Erro de envio da solicitação do serviço: " + servico.ToString());
            }

            typeServicoNFe.InvokeMember("vStrXmlRetorno", System.Reflection.BindingFlags.SetProperty, null, servicoNFe, new object[] { XmlRetorno.OuterXml });

            // Registra o retorno de acordo com o status obtido
            if (gravaRetorno)
            {
                typeServicoNFe.InvokeMember("XmlRetorno", System.Reflection.BindingFlags.InvokeMethod, null, servicoNFe, new Object[] { finalArqEnvio + ".xml", finalArqRetorno + ".xml" });
            }
        }
コード例 #3
0
        /// <summary>
        /// Metodo responsável por invocar o serviço do WebService do SEFAZ
        /// </summary>
        /// <param name="wsProxy">Objeto da classe construida do WSDL</param>
        /// <param name="servicoWS">Objeto da classe de envio do XML</param>
        /// <param name="metodo">Método da classe de envio do XML que faz o envio</param>
        /// <param name="cabecMsg">Objeto da classe de cabecalho do serviço</param>
        /// <param name="servicoNFe">Objeto do Serviço de envio da NFE do UniNFe</param>
        /// <param name="finalArqEnvio">string do final do arquivo a ser enviado. Sem a extensão ".xml"</param>
        /// <param name="finalArqRetorno">string do final do arquivo a ser gravado com o conteúdo do retorno. Sem a extensão ".xml"</param>
        /// <remarks>
        /// Autor: Wandrey Mundin Ferreira
        /// Data: 17/03/2010
        /// </remarks>
        public void InvocarNFSe(WebServiceProxy wsProxy,
                                object servicoWS,
                                string metodo,
                                string cabecMsg,
                                object servicoNFe,
                                string finalArqEnvio,
                                string finalArqRetorno,
                                PadroesNFSe padraoNFSe,
                                Servicos servicoNFSe,
                                SecurityProtocolType securityProtocolType)
        {
            int emp = Empresas.FindEmpresaByThread();

            finalArqEnvio   = Functions.ExtractExtension(finalArqEnvio);
            finalArqRetorno = Functions.ExtractExtension(finalArqRetorno);

            XmlDocument docXML = new XmlDocument();

            // Definir o tipo de serviço da NFe
            Type typeServicoNFe = servicoNFe.GetType();

            // Resgatar o nome do arquivo XML a ser enviado para o webservice
            string XmlNfeDadosMsg = (string)(typeServicoNFe.InvokeMember("NomeArquivoXML", System.Reflection.BindingFlags.GetProperty, null, servicoNFe, null));

            // Exclui o Arquivo de Erro
            Functions.DeletarArquivo(Empresas.Configuracoes[emp].PastaXmlRetorno + "\\" + Functions.ExtrairNomeArq(XmlNfeDadosMsg, finalArqEnvio + ".xml") + finalArqRetorno + ".err");

            // Validar o Arquivo XML
            ValidarXML validar             = new ValidarXML(XmlNfeDadosMsg, Empresas.Configuracoes[emp].UnidadeFederativaCodigo, false);
            string     cResultadoValidacao = validar.ValidarArqXML(XmlNfeDadosMsg);

            if (cResultadoValidacao != "")
            {
                switch (padraoNFSe)
                {
                case PadroesNFSe.SMARAPD:
                    break;

                default:
                    throw new Exception(cResultadoValidacao);
                }
            }

            //Definir novamente o protocolo de segurança, pois é uma propriedade estática e o seu valor pode ser alterado antes do envio. Wandrey 03/05/2016
            ServicePointManager.SecurityProtocol = securityProtocolType;

            // Montar o XML de Lote de envio de Notas fiscais
            docXML.Load(XmlNfeDadosMsg);

            // Definir Proxy
            if (ConfiguracaoApp.Proxy && wsProxy != null)
            {
                switch (padraoNFSe)
                {
                case PadroesNFSe.BETHA:
                    wsProxy.Betha.Proxy = Proxy.DefinirProxy(ConfiguracaoApp.ProxyServidor, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyPorta, ConfiguracaoApp.DetectarConfiguracaoProxyAuto);
                    break;

                default:
                    wsProxy.SetProp(servicoWS, "Proxy", Proxy.DefinirProxy(ConfiguracaoApp.ProxyServidor, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyPorta, ConfiguracaoApp.DetectarConfiguracaoProxyAuto));
                    break;
                }
            }

            // Limpa a variável de retorno
            string strRetorno = string.Empty;

            //Vou mudar o timeout para evitar que demore a resposta e o uninfe aborte antes de recebe-la. Wandrey 17/09/2009
            //Isso talvez evite de não conseguir o número do recibo se o serviço do SEFAZ estiver lento.
            if (wsProxy != null)
            {
                switch (padraoNFSe)
                {
                case PadroesNFSe.NOTAINTELIGENTE:
                case PadroesNFSe.BETHA:
                    break;

                default:
                    wsProxy.SetProp(servicoWS, "Timeout", 120000);
                    break;
                }
            }

            //Invocar o membro
            switch (padraoNFSe)
            {
                #region Padrão BETHA

            case PadroesNFSe.BETHA:
                switch (metodo)
                {
                case "ConsultarSituacaoLoteRps":
                    strRetorno = wsProxy.Betha.ConsultarSituacaoLoteRps(docXML, Empresas.Configuracoes[emp].AmbienteCodigo);
                    break;

                case "ConsultarLoteRps":
                    strRetorno = wsProxy.Betha.ConsultarLoteRps(docXML, Empresas.Configuracoes[emp].AmbienteCodigo);
                    break;

                case "CancelarNfse":
                    strRetorno = wsProxy.Betha.CancelarNfse(docXML, Empresas.Configuracoes[emp].AmbienteCodigo);
                    break;

                case "ConsultarNfse":
                    strRetorno = wsProxy.Betha.ConsultarNfse(docXML, Empresas.Configuracoes[emp].AmbienteCodigo);
                    break;

                case "ConsultarNfsePorRps":
                    strRetorno = wsProxy.Betha.ConsultarNfsePorRps(docXML, Empresas.Configuracoes[emp].AmbienteCodigo);
                    break;

                case "RecepcionarLoteRps":
                    strRetorno = wsProxy.Betha.RecepcionarLoteRps(docXML, Empresas.Configuracoes[emp].AmbienteCodigo);
                    break;
                }
                break;

                #endregion Padrão BETHA

                #region NOTAINTELIGENTE

            case PadroesNFSe.NOTAINTELIGENTE:
                //NFe.Components.PClaudioMG.api_portClient wsClaudio = (NFe.Components.PClaudioMG.api_portClient)servicoWS;

                switch (servicoNFSe)
                {
                case Servicos.NFSeRecepcionarLoteRps:
                    //strRetorno = wsClaudio.RecepcionarLoteRps(docXML.OuterXml.ToString());
                    break;
                }
                //strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { docXML.OuterXml.ToString() });
                break;

                #endregion NOTAINTELIGENTE

                #region Padrão ISSONLINE

            case PadroesNFSe.ISSONLINE_ASSESSORPUBLICO:
                int    operacao;
                string senhaWs = Functions.GetMD5Hash(Empresas.Configuracoes[emp].SenhaWS);

                switch (servicoNFSe)
                {
                case Servicos.NFSeRecepcionarLoteRps:
                    operacao = 1;
                    break;

                case Servicos.NFSeCancelar:
                    operacao = 2;
                    break;

                default:
                    operacao = 3;
                    break;
                }

                strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { Convert.ToSByte(operacao), Empresas.Configuracoes[emp].UsuarioWS, senhaWs, docXML.OuterXml });
                break;

                #endregion Padrão ISSONLINE

                #region Padrão Blumenau-SC

            case PadroesNFSe.BLUMENAU_SC:
                strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { 1, docXML.OuterXml });
                break;

                #endregion Padrão Blumenau-SC

                #region Padrão Paulistana

            case PadroesNFSe.PAULISTANA:
                strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { 1, docXML.OuterXml });
                break;

                #endregion Padrão Paulistana

                #region TECNOSISTEMAS

            case PadroesNFSe.TECNOSISTEMAS:
                strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { docXML.OuterXml, cabecMsg.ToString() });
                break;

                #endregion TECNOSISTEMAS

                #region SMARAPD

            case PadroesNFSe.SMARAPD:
                if (metodo == "nfdEntradaCancelar")
                {
                    strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { Empresas.Configuracoes[emp].UsuarioWS,
                                                                                     TFunctions.EncryptSHA1(Empresas.Configuracoes[emp].SenhaWS),
                                                                                     docXML.OuterXml });
                }
                else if (metodo == "nfdSaida")
                {
                    strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { Empresas.Configuracoes[emp].UsuarioWS,
                                                                                     TFunctions.EncryptSHA1(Empresas.Configuracoes[emp].SenhaWS),
                                                                                     Empresas.Configuracoes[emp].UnidadeFederativaCodigo.ToString(),
                                                                                     docXML.OuterXml });
                }
                else if (metodo == "urlNfd")
                {
                    strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { Convert.ToInt32(docXML.GetElementsByTagName("codigoMunicipio")[0].InnerText),
                                                                                     Convert.ToInt32(docXML.GetElementsByTagName("numeroNfd")[0].InnerText),
                                                                                     Convert.ToInt32(docXML.GetElementsByTagName("serieNfd")[0].InnerText),
                                                                                     docXML.GetElementsByTagName("inscricaoMunicipal")[0].InnerText });
                }
                else
                {
                    strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { Empresas.Configuracoes[emp].UsuarioWS,
                                                                                     TFunctions.EncryptSHA1(Empresas.Configuracoes[emp].SenhaWS),
                                                                                     Empresas.Configuracoes[emp].UnidadeFederativaCodigo,
                                                                                     docXML.OuterXml });
                }
                break;

                #endregion SMARAPD

                #region ISSWEB

            case PadroesNFSe.ISSWEB:
                string versao = docXML.DocumentElement.GetElementsByTagName("Versao")[0].InnerText;
                string cnpj   = docXML.DocumentElement.GetElementsByTagName("CNPJCPFPrestador")[0].InnerText;
                strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { cnpj, docXML.OuterXml, versao });
                break;

                #endregion ISSWEB

                #region NA_INFORMATICA

            case PadroesNFSe.NA_INFORMATICA:
                switch (servicoNFSe)
                {
                    #region Recepcionar Lote RPS - Assíncrono

                case Servicos.NFSeRecepcionarLoteRps:
                    //if (Empresas.Configuracoes[emp].AmbienteCodigo == (int)TipoAmbiente.taProducao)
                    //{
                    //    ((Components.PCorumbaMS.NfseWSService)servicoWS).ClientCertificates.Add(Empresas.Configuracoes[emp].X509Certificado);
                    //    Components.PCorumbaMS.RecepcionarLoteRps dadosEnvio = new Components.PCorumbaMS.RecepcionarLoteRps();
                    //    Components.PCorumbaMS.RecepcionarLoteRpsResponse dadosRetorno = new Components.PCorumbaMS.RecepcionarLoteRpsResponse();
                    //    dadosEnvio.EnviarLoteRpsEnvio = docXML.OuterXml.ToString();
                    //    dadosRetorno = ((Components.PCorumbaMS.NfseWSService)servicoWS).RecepcionarLoteRps(dadosEnvio);
                    //    strRetorno = dadosRetorno.EnviarLoteRpsResposta;
                    //}
                    //else
                    //{
                    //    ((Components.HCorumbaMS.NfseWSService)servicoWS).ClientCertificates.Add(Empresas.Configuracoes[emp].X509Certificado);
                    //    Components.HCorumbaMS.RecepcionarLoteRps dadosEnvio = new Components.HCorumbaMS.RecepcionarLoteRps();
                    //    Components.HCorumbaMS.RecepcionarLoteRpsResponse dadosRetorno = new Components.HCorumbaMS.RecepcionarLoteRpsResponse();
                    //    dadosEnvio.EnviarLoteRpsEnvio = docXML.OuterXml.ToString();
                    //    dadosRetorno = ((Components.HCorumbaMS.NfseWSService)servicoWS).RecepcionarLoteRps(dadosEnvio);
                    //    strRetorno = dadosRetorno.EnviarLoteRpsResposta;
                    //}
                    break;

                    #endregion Recepcionar Lote RPS - Assíncrono

                    #region Recepcionar Lote RPS - Síncrono

                case Servicos.NFSeRecepcionarLoteRpsSincrono:
                    //if (Empresas.Configuracoes[emp].AmbienteCodigo == (int)TipoAmbiente.taProducao)
                    //{
                    //    ((Components.PCorumbaMS.NfseWSService)servicoWS).ClientCertificates.Add(Empresas.Configuracoes[emp].X509Certificado);
                    //    Components.PCorumbaMS.RecepcionarLoteRpsSincrono dadosEnvio = new Components.PCorumbaMS.RecepcionarLoteRpsSincrono();
                    //    Components.PCorumbaMS.RecepcionarLoteRpsSincronoResponse dadosRetorno = new Components.PCorumbaMS.RecepcionarLoteRpsSincronoResponse();
                    //    dadosEnvio.EnviarLoteRpsSincronoEnvio = docXML.OuterXml.ToString();
                    //    dadosRetorno = ((Components.PCorumbaMS.NfseWSService)servicoWS).RecepcionarLoteRpsSincrono(dadosEnvio);
                    //    strRetorno = dadosRetorno.EnviarLoteRpsSincronoResposta;
                    //}
                    //else
                    //{
                    //    ((Components.HCorumbaMS.NfseWSService)servicoWS).ClientCertificates.Add(Empresas.Configuracoes[emp].X509Certificado);
                    //    Components.HCorumbaMS.RecepcionarLoteRpsSincrono dadosEnvio = new Components.HCorumbaMS.RecepcionarLoteRpsSincrono();
                    //    Components.HCorumbaMS.RecepcionarLoteRpsSincronoResponse dadosRetorno = new Components.HCorumbaMS.RecepcionarLoteRpsSincronoResponse();
                    //    dadosEnvio.EnviarLoteRpsSincronoEnvio = docXML.OuterXml.ToString();
                    //    dadosRetorno = ((Components.HCorumbaMS.NfseWSService)servicoWS).RecepcionarLoteRpsSincrono(dadosEnvio);
                    //    strRetorno = dadosRetorno.EnviarLoteRpsSincronoResposta;
                    //}
                    break;

                    #endregion Recepcionar Lote RPS - Síncrono

                    #region Cancelar RPS

                case Servicos.NFSeCancelar:
                    //if (Empresas.Configuracoes[emp].AmbienteCodigo == (int)TipoAmbiente.taProducao)
                    //{
                    //    ((Components.PCorumbaMS.NfseWSService)servicoWS).ClientCertificates.Add(Empresas.Configuracoes[emp].X509Certificado);
                    //    Components.PCorumbaMS.CancelarNfse dadosEnvio = new Components.PCorumbaMS.CancelarNfse();
                    //    Components.PCorumbaMS.CancelarNfseResponse dadosRetorno = new Components.PCorumbaMS.CancelarNfseResponse();
                    //    dadosEnvio.CancelarNfseEnvio = docXML.OuterXml.ToString();
                    //    dadosRetorno = ((Components.PCorumbaMS.NfseWSService)servicoWS).CancelarNfse(dadosEnvio);
                    //    strRetorno = dadosRetorno.CancelarNfseResposta;
                    //}
                    //else
                    //{
                    //    ((Components.HCorumbaMS.NfseWSService)servicoWS).ClientCertificates.Add(Empresas.Configuracoes[emp].X509Certificado);
                    //    Components.HCorumbaMS.CancelarNfse dadosEnvio = new Components.HCorumbaMS.CancelarNfse();
                    //    Components.HCorumbaMS.CancelarNfseResponse dadosRetorno = new Components.HCorumbaMS.CancelarNfseResponse();
                    //    dadosEnvio.CancelarNfseEnvio = docXML.OuterXml.ToString();
                    //    dadosRetorno = ((Components.HCorumbaMS.NfseWSService)servicoWS).CancelarNfse(dadosEnvio);
                    //    strRetorno = dadosRetorno.CancelarNfseResposta;
                    //}
                    break;

                    #endregion Cancelar RPS

                    #region Consultar Lote RPS

                case Servicos.NFSeConsultarLoteRps:
                    //if (Empresas.Configuracoes[emp].AmbienteCodigo == (int)TipoAmbiente.taProducao)
                    //{
                    //    ((Components.PCorumbaMS.NfseWSService)servicoWS).ClientCertificates.Add(Empresas.Configuracoes[emp].X509Certificado);
                    //    Components.PCorumbaMS.ConsultarLoteRps dadosEnvio = new Components.PCorumbaMS.ConsultarLoteRps();
                    //    Components.PCorumbaMS.ConsultarLoteRpsResponse dadosRetorno = new Components.PCorumbaMS.ConsultarLoteRpsResponse();
                    //    dadosEnvio.ConsultarLoteRpsEnvio = docXML.OuterXml.ToString();
                    //    dadosRetorno = ((Components.PCorumbaMS.NfseWSService)servicoWS).ConsultarLoteRps(dadosEnvio);
                    //    strRetorno = dadosRetorno.ConsultarLoteRpsResposta;
                    //}
                    //else
                    //{
                    //    ((Components.HCorumbaMS.NfseWSService)servicoWS).ClientCertificates.Add(Empresas.Configuracoes[emp].X509Certificado);
                    //    Components.HCorumbaMS.ConsultarLoteRps dadosEnvio = new Components.HCorumbaMS.ConsultarLoteRps();
                    //    Components.HCorumbaMS.ConsultarLoteRpsResponse dadosRetorno = new Components.HCorumbaMS.ConsultarLoteRpsResponse();
                    //    dadosEnvio.ConsultarLoteRpsEnvio = docXML.OuterXml.ToString();
                    //    dadosRetorno = ((Components.HCorumbaMS.NfseWSService)servicoWS).ConsultarLoteRps(dadosEnvio);
                    //    strRetorno = dadosRetorno.ConsultarLoteRpsResposta;
                    //}
                    break;

                    #endregion Consultar Lote RPS

                    #region Consulta Situação Nfse

                case Servicos.NFSeConsultar:
                    //if (Empresas.Configuracoes[emp].AmbienteCodigo == (int)TipoAmbiente.taProducao)
                    //{
                    //    ((Components.PCorumbaMS.NfseWSService)servicoWS).ClientCertificates.Add(Empresas.Configuracoes[emp].X509Certificado);
                    //    Components.PCorumbaMS.ConsultarNfsePorFaixa dadosEnvio = new Components.PCorumbaMS.ConsultarNfsePorFaixa();
                    //    Components.PCorumbaMS.ConsultarNfsePorFaixaResponse dadosRetorno = new Components.PCorumbaMS.ConsultarNfsePorFaixaResponse();
                    //    dadosEnvio.ConsultarNfsePorFaixaEnvio = docXML.OuterXml.ToString();
                    //    dadosRetorno = ((Components.PCorumbaMS.NfseWSService)servicoWS).ConsultarNfsePorFaixa(dadosEnvio);
                    //    strRetorno = dadosRetorno.ConsultarNfsePorFaixaResposta;
                    //}
                    //else
                    //{
                    //    ((Components.HCorumbaMS.NfseWSService)servicoWS).ClientCertificates.Add(Empresas.Configuracoes[emp].X509Certificado);
                    //    Components.HCorumbaMS.ConsultarNfsePorFaixa dadosEnvio = new Components.HCorumbaMS.ConsultarNfsePorFaixa();
                    //    Components.HCorumbaMS.ConsultarNfsePorFaixaResponse dadosRetorno = new Components.HCorumbaMS.ConsultarNfsePorFaixaResponse();
                    //    dadosEnvio.ConsultarNfsePorFaixaEnvio = docXML.OuterXml.ToString();
                    //    dadosRetorno = ((Components.HCorumbaMS.NfseWSService)servicoWS).ConsultarNfsePorFaixa(dadosEnvio);
                    //    strRetorno = dadosRetorno.ConsultarNfsePorFaixaResposta;
                    //}
                    break;

                    #endregion Consulta Situação Nfse

                    #region Consulta Situação Nfse por RPS

                case Servicos.NFSeConsultarPorRps:
                    //if (Empresas.Configuracoes[emp].AmbienteCodigo == (int)TipoAmbiente.taProducao)
                    //{
                    //    ((Components.PCorumbaMS.NfseWSService)servicoWS).ClientCertificates.Add(Empresas.Configuracoes[emp].X509Certificado);
                    //    Components.PCorumbaMS.ConsultarNfsePorRps dadosEnvio = new Components.PCorumbaMS.ConsultarNfsePorRps();
                    //    Components.PCorumbaMS.ConsultarNfsePorRpsResponse dadosRetorno = new Components.PCorumbaMS.ConsultarNfsePorRpsResponse();
                    //    dadosEnvio.ConsultarNfsePorRpsEnvio = docXML.OuterXml.ToString();
                    //    dadosRetorno = ((Components.PCorumbaMS.NfseWSService)servicoWS).ConsultarNfsePorRps(dadosEnvio);
                    //    strRetorno = dadosRetorno.ConsultarNfsePorRpsResposta;
                    //}
                    //else
                    //{
                    //    ((Components.HCorumbaMS.NfseWSService)servicoWS).ClientCertificates.Add(Empresas.Configuracoes[emp].X509Certificado);
                    //    Components.HCorumbaMS.ConsultarNfsePorRps dadosEnvio = new Components.HCorumbaMS.ConsultarNfsePorRps();
                    //    Components.HCorumbaMS.ConsultarNfsePorRpsResponse dadosRetorno = new Components.HCorumbaMS.ConsultarNfsePorRpsResponse();
                    //    dadosEnvio.ConsultarNfsePorRpsEnvio = docXML.OuterXml.ToString();
                    //    dadosRetorno = ((Components.HCorumbaMS.NfseWSService)servicoWS).ConsultarNfsePorRps(dadosEnvio);
                    //    strRetorno = dadosRetorno.ConsultarNfsePorRpsResposta;
                    //}
                    break;

                    #endregion Consulta Situação Nfse por RPS
                }
                break;

                #endregion NA_INFORMATICA

                #region ABASE

            case PadroesNFSe.ABASE:
                if (servicoNFSe == Servicos.NFSeConsultarPorRps)
                {
                    goto default;
                }
                else
                {
                    XmlNode xmlRetorno = wsProxy.InvokeXML(servicoWS, metodo, new object[] { cabecMsg.ToString(), docXML.OuterXml });
                    strRetorno = xmlRetorno.OuterXml;
                }
                break;

                #endregion ABASE

            case PadroesNFSe.LEXSOM:
                XmlNode result = wsProxy.InvokeXML(servicoWS, metodo, new object[] { docXML });
                strRetorno = result.OuterXml;
                break;

            default:

                #region Demais padrões

                if (string.IsNullOrEmpty(cabecMsg))
                {
                    strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { docXML.OuterXml });
                }
                else
                {
                    strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { cabecMsg.ToString(), docXML.OuterXml });
                }
                break;

                #endregion Demais padrões
            }

            #region gerar arquivos assinados(somente debug)

#if DEBUG
            string path = Application.StartupPath + "\\teste_assintura\\";

            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }

            StreamWriter sw = new StreamWriter(path + "nfseMsg_assinado.xml", true);
            sw.Write(docXML.OuterXml);
            sw.Close();

            StreamWriter sw2 = new StreamWriter(path + "cabecMsg_assinado.xml", true);
            sw2.Write(cabecMsg.ToString());
            sw2.Close();
#endif

            #endregion gerar arquivos assinados(somente debug)

            //Atualizar o atributo do serviço da Nfe com o conteúdo retornado do webservice do sefaz
            typeServicoNFe.InvokeMember("vStrXmlRetorno", System.Reflection.BindingFlags.SetProperty, null, servicoNFe, new object[] { strRetorno });

            // Registra o retorno de acordo com o status obtido
            if (finalArqEnvio != string.Empty && finalArqRetorno != string.Empty)
            {
                typeServicoNFe.InvokeMember("XmlRetorno", System.Reflection.BindingFlags.InvokeMethod, null, servicoNFe, new Object[] { finalArqEnvio + ".xml", finalArqRetorno + ".xml" });
            }
        }
コード例 #4
0
        private void CmdCancela_Click(object sender, EventArgs e)
        {
            if ((DateTime.Now - p.datadigitacao).TotalHours > 24)
            {
                MessageBox.Show("Prazo de Cancelamento Superior ao Previsto na Legislação.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }

            if (p.conddoc == "C")
            {
                MessageBox.Show("NF-e já cancelada.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }

            if (cboMotivo.Text.Trim().Length < 15)
            {
                MessageBox.Show("Minimo de 15 caracteres!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }

            this.Cursor = Cursors.WaitCursor;

            StreamWriter  Grava;
            GerarXML      geraxml    = new GerarXML();
            AssinarXML    assinar    = new AssinarXML();
            ValidarXML    validar    = new ValidarXML();
            TransmitirXML transmitir = new TransmitirXML();
            XMLDao        xmldao     = new XMLDao();

            string retValidar    = string.Empty;
            string xMotivo       = cboMotivo.Text;
            string retTransmitir = string.Empty;

            txtResultado.Text = string.Empty;

            try
            {
                //Gerando xml
                xmlCanc = geraxml.CancelamentoNFe(p, xMotivo);

                //Assinando xml
                xmlCanc_Assinado = assinar.AssinaXML(xmlCanc.InnerXml, "infEvento", Certificado.getInstance.oCertificado);
            }
            catch (Exception ex)
            {
                Log_Exception.Monta_ArquivoLog(ex);

                MessageBox.Show("Erro ao assinar: " + ex.Message, "Mensagem", MessageBoxButtons.OK);
                this.Cursor = Cursors.Default;
                return;
            }

            try
            {
                //Validando o xml assinado
                retValidar = validar.Valida(xmlCanc_Assinado, "Canc");
            }
            catch (Exception ex)
            {
                Log_Exception.Monta_ArquivoLog(ex);

                MessageBox.Show("Erro ao Validar: " + ex.Message, "Mensagem", MessageBoxButtons.OK);
                this.Cursor = Cursors.Default;
                return;
            }


            if (retValidar == string.Empty)
            {
                try
                {
                    //Recebendo xml de retorno da transmissão
                    retTransmitir = transmitir.XML_CancelamentoNFCe4(xmlCanc_Assinado, p.nfiscal, Certificado.getInstance.oCertificado);

                    if (retTransmitir.Substring(0, 4) != "Erro")
                    {
                        XmlDocument xmlRetorno = new XmlDocument();
                        xmlRetorno.LoadXml(retTransmitir);

                        //Lote processado
                        if (xmlRetorno.GetElementsByTagName("cStat")[0].InnerText == "128")
                        {
                            //Evento registrado e vinculado a NFC-e
                            if (xmlRetorno.GetElementsByTagName("cStat")[1].InnerText == "135")
                            {
                                try
                                {
                                    p.xml.numdoc     = p.numdoc;
                                    p.xml.data       = DateTime.Now;
                                    p.xml.arquivoXML = xmlRetorno.InnerXml;
                                    p.xml.Modelo     = p.modelo;
                                    p.xml.statNFCe   = "135";


                                    if (!string.IsNullOrEmpty(Controle.getInstance.caminho_XMLCancelado))
                                    {
                                        //Salva o arquivo XML na pasta
                                        Grava = File.CreateText(Controle.getInstance.caminho_XMLCancelado + @"\110111-" + p.chave + "-1-procEventoNfe.xml");
                                        Grava.Write(p.xml.arquivoXML);
                                        Grava.Close();
                                    }

                                    //Salva arquivo XML no Banco SQL (NFe)
                                    if (xmldao.Grava_XML(p.xml))
                                    {
                                        //Atualizando o status do pedido para cancelada (135)
                                        (new PedidoDao()).Update_StatNFCe_CondDoc(p.numdoc, p.xml.statNFCe);


                                        var db = new Database("stringConexao");

                                        try
                                        {
                                            db.BeginTransaction();

                                            foreach (PedidoItem pItem in p.lstPedidoItem)
                                            {
                                                db.Update("UPDATE produto " +
                                                          "SET Estoque = Estoque + " + pItem.qtditens * 1 +
                                                          ",ValorVnd = ValorVnd + " + (pItem.valitens * -1).ToString().Replace(",", ".") +
                                                          " WHERE CodPro = " + pItem.codpro);
                                            }

                                            //Boleta cancelada
                                            db.Update("UPDATE Boleta set condicao = 2 where numdoc = " + p.numdoc);


                                            db.CompleteTransaction();
                                        }
                                        catch (Exception)
                                        {
                                            db.AbortTransaction();
                                            MessageBox.Show("Houve um erro inesperado ao atualizar o estoque e cancelar as boletas, informe imediatamente ao administrador do sistema!", "Mensagem de erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                            return;
                                        }


                                        txtResultado.AppendText("Pedido cancelado com sucesso!");
                                        txtResultado.ForeColor = Color.Green;
                                    }
                                    else
                                    {
                                        txtResultado.AppendText("Pedido cancelado com sucesso, porém houve um erro ao salvar o arquivo XML no banco de dados, informe ao administrador do sistema!");
                                        txtResultado.ForeColor = Color.Green;
                                    }
                                }
                                catch (Exception ex)
                                {
                                    Log_Exception.Monta_ArquivoLog(ex);

                                    txtResultado.AppendText("Pedido cancelado com sucesso, porém houve um erro inesperado, informe ao administrador do sistema!");
                                    txtResultado.ForeColor = Color.Green;
                                }
                            }
                            else
                            {
                                txtResultado.AppendText("Erro ao cancelar (002): " + xmlRetorno.GetElementsByTagName("xMotivo")[1].InnerText + Environment.NewLine);
                                txtResultado.ForeColor = Color.Maroon;
                                this.Cursor            = Cursors.Default;
                                return;
                            }
                        }
                        else
                        {
                            txtResultado.AppendText("Erro ao cancelar (001): " + xmlRetorno.GetElementsByTagName("xMotivo")[0].InnerText + Environment.NewLine);
                            txtResultado.ForeColor = Color.Maroon;
                            this.Cursor            = Cursors.Default;
                            return;
                        }
                    }
                    else
                    {
                        txtResultado.AppendText("Erro ao transmitir (001): " + retTransmitir + Environment.NewLine);
                        txtResultado.ForeColor = Color.Maroon;
                        this.Cursor            = Cursors.Default;
                        return;
                    }
                }
                catch (Exception ex)
                {
                    Log_Exception.Monta_ArquivoLog(ex);

                    MessageBox.Show("Erro ao Transmitir XML: " + ex.Message, "Mensagem", MessageBoxButtons.OK);
                    this.Cursor = Cursors.Default;
                    return;
                }
            }
            else
            {
                txtResultado.AppendText("Erro na validação do XML: " + retValidar + Environment.NewLine);
                txtResultado.ForeColor = Color.Maroon;
                this.Cursor            = Cursors.Default;
                return;
            }

            this.Cursor = Cursors.Default;
        }
コード例 #5
0
        /// <summary>
        /// Metodo responsável por invocar o serviço do WebService do SEFAZ
        /// </summary>
        /// <param name="oWSProxy">Objeto da classe construida do WSDL</param>
        /// <param name="oServicoWS">Objeto da classe de envio do XML</param>
        /// <param name="cMetodo">Método da classe de envio do XML que faz o envio</param>
        /// <param name="cabecMsg">Objeto da classe de cabecalho do serviço</param>
        /// <param name="oServicoNFe">Objeto do Serviço de envio da NFE do UniNFe</param>
        /// <param name="cFinalArqEnvio">string do final do arquivo a ser enviado. Sem a extensão ".xml"</param>
        /// <param name="cFinalArqRetorno">string do final do arquivo a ser gravado com o conteúdo do retorno. Sem a extensão ".xml"</param>
        /// <remarks>
        /// Autor: Wandrey Mundin Ferreira
        /// Data: 17/03/2010
        /// </remarks>
        public void InvocarNFSe(WebServiceProxy oWSProxy,
                                object oServicoWS,
                                string cMetodo,
                                string cabecMsg,
                                object oServicoNFe,
                                string cFinalArqEnvio,
                                string cFinalArqRetorno,
                                PadroesNFSe padraoNFSe,
                                Servicos servicoNFSe,
                                Core.Empresa empresa)
        {
            XmlDocument docXML = new XmlDocument();

            // Definir o tipo de serviço da NFe
            Type typeServicoNFe = oServicoNFe.GetType();

            // Resgatar o nome do arquivo XML a ser enviado para o webservice
            string XmlNfeDadosMsg = (string)(typeServicoNFe.InvokeMember("NomeArquivoXML", System.Reflection.BindingFlags.GetProperty, null, oServicoNFe, null));

            // Resgatar o caminho para salvar o xml de retorno
            string caminhoSalvarXmlRetorno = (string)(typeServicoNFe.InvokeMember("SalvarXmlRetornoEm", System.Reflection.BindingFlags.GetProperty, null, oServicoNFe, null));

            // Validar o Arquivo XML
            ValidarXML validar             = new ValidarXML(XmlNfeDadosMsg, empresa.CodigoMunicipio);
            string     cResultadoValidacao = validar.ValidarArqXML(XmlNfeDadosMsg);

            if (cResultadoValidacao != "")
            {
                throw new Exception(cResultadoValidacao);
            }

            // Montar o XML de Lote de envio de Notas fiscais
            docXML.Load(XmlNfeDadosMsg);

            // Definir Proxy
            if (ConfiguracaoApp.Proxy)
            {
                if (padraoNFSe != PadroesNFSe.BETHA)
                {
                    oWSProxy.SetProp(oServicoWS, "Proxy", Proxy.DefinirProxy(ConfiguracaoApp.ProxyServidor, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyPorta));
                }
                else
                {
                    oWSProxy.Betha.Proxy = Proxy.DefinirProxy(ConfiguracaoApp.ProxyServidor, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyPorta);
                }
            }

            // Limpa a variável de retorno
            string strRetorno = string.Empty;

            //Vou mudar o timeout para evitar que demore a resposta e o uninfe aborte antes de recebe-la. Wandrey 17/09/2009
            //Isso talvez evite de não conseguir o número do recibo se o serviço do SEFAZ estiver lento.
            if (padraoNFSe != PadroesNFSe.BETHA)
            {
                oWSProxy.SetProp(oServicoWS, "Timeout", 60000);
            }

            //Invocar o membro
            switch (padraoNFSe)
            {
                #region Padrão BETHA
            case PadroesNFSe.BETHA:
                switch (cMetodo)
                {
                case "ConsultarSituacaoLoteRps":
                    strRetorno = oWSProxy.Betha.ConsultarSituacaoLoteRps(docXML, empresa.tpAmb);
                    break;

                case "ConsultarLoteRps":
                    strRetorno = oWSProxy.Betha.ConsultarLoteRps(docXML, empresa.tpAmb);
                    break;

                case "CancelarNfse":
                    strRetorno = oWSProxy.Betha.CancelarNfse(docXML, empresa.tpAmb);
                    break;

                case "ConsultarNfse":
                    strRetorno = oWSProxy.Betha.ConsultarNfse(docXML, empresa.tpAmb);
                    break;

                case "ConsultarNfsePorRps":
                    strRetorno = oWSProxy.Betha.ConsultarNfsePorRps(docXML, empresa.tpAmb);
                    break;

                case "RecepcionarLoteRps":
                    strRetorno = oWSProxy.Betha.RecepcionarLoteRps(docXML, empresa.tpAmb);
                    break;
                }
                break;
                #endregion

                #region Padrão ISSONLINE
            case PadroesNFSe.ISSONLINE:
                int    operacao;
                string senhaWs = Functions.GetMD5Hash(empresa.SenhaWS);

                switch (servicoNFSe)
                {
                case Servicos.RecepcionarLoteRps:
                    operacao = 1;
                    break;

                case Servicos.CancelarNfse:
                    operacao = 2;
                    break;

                default:
                    operacao = 3;
                    break;
                }

                strRetorno = oWSProxy.InvokeStr(oServicoWS, cMetodo, new object[] { Convert.ToSByte(operacao), empresa.UsuarioWS, senhaWs, docXML.OuterXml });
                break;
                #endregion

                #region Padrão Blumenau-SC
            case PadroesNFSe.BLUMENAU_SC:
                strRetorno = oWSProxy.InvokeStr(oServicoWS, cMetodo, new object[] { 1, docXML.OuterXml });
                break;
                #endregion

                #region Padrão Paulistana
            case PadroesNFSe.PAULISTANA:
                strRetorno = oWSProxy.InvokeStr(oServicoWS, cMetodo, new object[] { 1, docXML.OuterXml });
                break;
                #endregion

                #region Demais padrões
            case PadroesNFSe.GINFES:
            case PadroesNFSe.THEMA:
            case PadroesNFSe.SALVADOR_BA:
            case PadroesNFSe.CANOAS_RS:
            case PadroesNFSe.ISSNET:
            case PadroesNFSe.DUETO:
            default:
                if (string.IsNullOrEmpty(cabecMsg))
                {
                    strRetorno = oWSProxy.InvokeStr(oServicoWS, cMetodo, new object[] { docXML.OuterXml });
                }
                else
                {
                    strRetorno = oWSProxy.InvokeStr(oServicoWS, cMetodo, new object[] { cabecMsg.ToString(), docXML.OuterXml });
                }

                break;
                #endregion
            }

            //Atualizar o atributo do serviço da Nfe com o conteúdo retornado do webservice do sefaz
            typeServicoNFe.InvokeMember("vStrXmlRetorno", System.Reflection.BindingFlags.SetProperty, null, oServicoNFe, new object[] { strRetorno });

            // Registra o retorno de acordo com o status obtido
            if (cFinalArqEnvio != string.Empty && cFinalArqRetorno != string.Empty)
            {
                typeServicoNFe.InvokeMember("XmlRetorno", System.Reflection.BindingFlags.InvokeMethod, null, oServicoNFe, new Object[] { cFinalArqEnvio + ".xml", caminhoSalvarXmlRetorno });
            }
        }
コード例 #6
0
        public override void Execute()
        {
            int emp = Empresas.FindEmpresaByThread();

            //Definir o serviço que será executado para a classe
            Servico = Servicos.NFSeCancelar;

            try
            {
                Functions.DeletarArquivo(Empresas.Configuracoes[emp].PastaXmlRetorno + "\\" +
                                         Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedCanNFSe).EnvioXML) + Propriedade.ExtRetorno.CanNfse_ERR);
                Functions.DeletarArquivo(Empresas.Configuracoes[emp].PastaXmlErro + "\\" + NomeArquivoXML);

                oDadosPedCanNfse = new DadosPedCanNfse(emp);

                //Ler o XML para pegar parâmetros de envio
                PedCanNfse(emp, NomeArquivoXML);
                PadroesNFSe     padraoNFSe = Functions.PadraoNFSe(oDadosPedCanNfse.cMunicipio);
                WebServiceProxy wsProxy    = null;
                object          pedCanNfse = null;

                //Criar objetos das classes dos serviços dos webservices do SEFAZ
                if (IsUtilizaCompilacaoWs(padraoNFSe))
                {
                    wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, oDadosPedCanNfse.cMunicipio, oDadosPedCanNfse.tpAmb, oDadosPedCanNfse.tpEmis, padraoNFSe, oDadosPedCanNfse.cMunicipio);
                    if (wsProxy != null)
                    {
                        pedCanNfse = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);
                    }
                }
                System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(oDadosPedCanNfse.cMunicipio, oDadosPedCanNfse.tpAmb, oDadosPedCanNfse.tpEmis, padraoNFSe, Servico);

                string cabecMsg = "";
                switch (padraoNFSe)
                {
                case PadroesNFSe.IPM:

                    //código da cidade da receita federal, este arquivo pode ser encontrado em ~\uninfe\doc\Codigos_Cidades_Receita_Federal.xls</para>
                    //O código da cidade está hardcoded pois ainda está sendo usado apenas para campo mourão
                    IPM ipm = new IPM((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                      Empresas.Configuracoes[emp].PastaXmlRetorno,
                                      Empresas.Configuracoes[emp].UsuarioWS,
                                      Empresas.Configuracoes[emp].SenhaWS,
                                      oDadosPedCanNfse.cMunicipio);

                    if (ConfiguracaoApp.Proxy)
                    {
                        ipm.Proxy = Proxy.DefinirProxy(ConfiguracaoApp.ProxyServidor, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyPorta);
                    }

                    ipm.CancelarNfse(NomeArquivoXML);

                    break;

                case PadroesNFSe.ABASE:
                    cabecMsg = "<cabecalho xmlns=\"http://nfse.abase.com.br/nfse.xsd\" versao =\"1.00\"><versaoDados>1.00</versaoDados></cabecalho>";
                    break;

                case PadroesNFSe.GINFES:
                    cabecMsg = "";     //Cancelamento ainda tá na versão 2.0 então não tem o cabecMsg
                    break;

                case PadroesNFSe.BETHA:

                    #region Betha

                    ConteudoXML.PreserveWhitespace = false;
                    ConteudoXML.Load(NomeArquivoXML);

                    if (!ConteudoXML.DocumentElement.Name.Contains("e:"))
                    {
                        padraoNFSe = PadroesNFSe.BETHA202;
                        Components.Betha.NewVersion.Betha betha = new Components.Betha.NewVersion.Betha((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                                                                                        Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                                                                        oDadosPedCanNfse.cMunicipio,
                                                                                                        Empresas.Configuracoes[emp].UsuarioWS,
                                                                                                        Empresas.Configuracoes[emp].SenhaWS,
                                                                                                        ConfiguracaoApp.ProxyUsuario,
                                                                                                        ConfiguracaoApp.ProxySenha,
                                                                                                        ConfiguracaoApp.ProxyServidor);

                        AssinaturaDigital signbetha = new AssinaturaDigital();
                        signbetha.Assinar(NomeArquivoXML, emp, 202);

                        betha.CancelarNfse(NomeArquivoXML);
                    }
                    else
                    {
                        wsProxy       = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado);
                        wsProxy.Betha = new Betha();
                    }
                    break;

                    #endregion Betha

                case PadroesNFSe.ABACO:
                case PadroesNFSe.CANOAS_RS:
                    cabecMsg = "<cabecalho versao=\"201001\"><versaoDados>V2010</versaoDados></cabecalho>";
                    break;

                case PadroesNFSe.BHISS:
                    cabecMsg = "<cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"1.00\"><versaoDados >1.00</versaoDados ></cabecalho>";
                    break;

                case PadroesNFSe.WEBISS:
                    cabecMsg = "<cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"1.00\"><versaoDados >1.00</versaoDados ></cabecalho>";
                    break;

                case PadroesNFSe.WEBISS_202:
                    cabecMsg = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"2.02\"><versaoDados>2.02</versaoDados></cabecalho>";
                    break;

                case PadroesNFSe.PAULISTANA:
                    wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado);

                    if (oDadosPedCanNfse.tpAmb == 1)
                    {
                        pedCanNfse = new NFe.Components.PSaoPauloSP.LoteNFe();
                    }
                    else
                    {
                        throw new Exception("Município de São Paulo-SP não dispõe de ambiente de homologação para envio de NFS-e em teste.");
                    }

                    EncryptAssinatura();
                    break;

                case PadroesNFSe.DSF:
                    if (oDadosPedCanNfse.cMunicipio == 3549904)
                    {
                        cabecMsg = "<cabecalho versao=\"3\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\"><versaoDados>3</versaoDados></cabecalho>";
                    }
                    else
                    {
                        EncryptAssinatura();
                    }
                    break;

                case PadroesNFSe.TECNOSISTEMAS:
                    cabecMsg = "<?xml version=\"1.0\" encoding=\"utf-8\"?><cabecalho xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" versao=\"20.01\" xmlns=\"http://www.nfse-tecnos.com.br/nfse.xsd\"><versaoDados>20.01</versaoDados></cabecalho>";
                    break;

                case PadroesNFSe.FINTEL:
                    cabecMsg = "<cabecalho versao=\"2.02\" xmlns=\"http://iss.irati.pr.gov.br/Arquivos/nfseV202.xsd\"><versaoDados>2.02</versaoDados></cabecalho>";
                    break;

                case PadroesNFSe.SYSTEMPRO:
                    SystemPro syspro = new SystemPro((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                                     Empresas.Configuracoes[emp].PastaXmlRetorno, Empresas.Configuracoes[emp].X509Certificado, oDadosPedCanNfse.cMunicipio);
                    AssinaturaDigital ad = new AssinaturaDigital();
                    ad.Assinar(NomeArquivoXML, emp, oDadosPedCanNfse.cMunicipio);

                    syspro.CancelarNfse(NomeArquivoXML);
                    break;

                case PadroesNFSe.SIGCORP_SIGISS:
                    SigCorp sigcorp = new SigCorp((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                                  Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                  oDadosPedCanNfse.cMunicipio);
                    sigcorp.CancelarNfse(NomeArquivoXML);
                    break;

                case PadroesNFSe.SIGCORP_SIGISS_203:
                    cabecMsg = "<cabecalho versao=\"2.03\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\"><versaoDados>2.03</versaoDados></cabecalho>";
                    break;

                case PadroesNFSe.METROPOLIS:

                    #region METROPOLIS

                    Metropolis metropolis = new Metropolis((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                                           Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                           oDadosPedCanNfse.cMunicipio,
                                                           ConfiguracaoApp.ProxyUsuario,
                                                           ConfiguracaoApp.ProxySenha,
                                                           ConfiguracaoApp.ProxyServidor,
                                                           Empresas.Configuracoes[emp].X509Certificado);

                    AssinaturaDigital metropolisdig = new AssinaturaDigital();
                    metropolisdig.Assinar(NomeArquivoXML, emp, oDadosPedCanNfse.cMunicipio);

                    metropolis.CancelarNfse(NomeArquivoXML);
                    break;

                    #endregion METROPOLIS

                case PadroesNFSe.FIORILLI:
                    Fiorilli fiorilli = new Fiorilli((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                                     Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                     oDadosPedCanNfse.cMunicipio,
                                                     Empresas.Configuracoes[emp].UsuarioWS,
                                                     Empresas.Configuracoes[emp].SenhaWS,
                                                     ConfiguracaoApp.ProxyUsuario,
                                                     ConfiguracaoApp.ProxySenha,
                                                     ConfiguracaoApp.ProxyServidor,
                                                     Empresas.Configuracoes[emp].X509Certificado);

                    AssinaturaDigital ass = new AssinaturaDigital();
                    ass.Assinar(NomeArquivoXML, emp, oDadosPedCanNfse.cMunicipio);

                    fiorilli.CancelarNfse(NomeArquivoXML);
                    break;

                case PadroesNFSe.SIMPLISS:
                    SimplISS simpliss = new SimplISS((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                                     Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                     oDadosPedCanNfse.cMunicipio,
                                                     Empresas.Configuracoes[emp].UsuarioWS,
                                                     Empresas.Configuracoes[emp].SenhaWS,
                                                     ConfiguracaoApp.ProxyUsuario,
                                                     ConfiguracaoApp.ProxySenha,
                                                     ConfiguracaoApp.ProxyServidor);

                    AssinaturaDigital sing = new AssinaturaDigital();
                    sing.Assinar(NomeArquivoXML, emp, oDadosPedCanNfse.cMunicipio);

                    simpliss.CancelarNfse(NomeArquivoXML);
                    break;

                case PadroesNFSe.CONAM:
                    Conam conam = new Conam((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                            Empresas.Configuracoes[emp].PastaXmlRetorno,
                                            oDadosPedCanNfse.cMunicipio,
                                            Empresas.Configuracoes[emp].UsuarioWS,
                                            Empresas.Configuracoes[emp].SenhaWS);

                    conam.CancelarNfse(NomeArquivoXML);
                    break;

                case PadroesNFSe.EGOVERNE:

                    #region E-Governe

                    EGoverne egoverne = new EGoverne((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                                     Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                     oDadosPedCanNfse.cMunicipio,
                                                     ConfiguracaoApp.ProxyUsuario,
                                                     ConfiguracaoApp.ProxySenha,
                                                     ConfiguracaoApp.ProxyServidor,
                                                     Empresas.Configuracoes[emp].X509Certificado);

                    AssinaturaDigital assegov = new AssinaturaDigital();
                    assegov.Assinar(NomeArquivoXML, emp, oDadosPedCanNfse.cMunicipio);

                    egoverne.CancelarNfse(NomeArquivoXML);

                    #endregion E-Governe

                    break;

                case PadroesNFSe.COPLAN:

                    #region Coplan

                    Coplan coplan = new Coplan((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                               Empresas.Configuracoes[emp].PastaXmlRetorno,
                                               oDadosPedCanNfse.cMunicipio,
                                               ConfiguracaoApp.ProxyUsuario,
                                               ConfiguracaoApp.ProxySenha,
                                               ConfiguracaoApp.ProxyServidor,
                                               Empresas.Configuracoes[emp].X509Certificado);

                    AssinaturaDigital assCoplan = new AssinaturaDigital();
                    assCoplan.Assinar(NomeArquivoXML, emp, oDadosPedCanNfse.cMunicipio);

                    coplan.CancelarNfse(NomeArquivoXML);
                    break;

                    #endregion Coplan

                case PadroesNFSe.EL:

                    #region E&L

                    EL el = new EL((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                   Empresas.Configuracoes[emp].PastaXmlRetorno,
                                   oDadosPedCanNfse.cMunicipio,
                                   Empresas.Configuracoes[emp].UsuarioWS,
                                   Empresas.Configuracoes[emp].SenhaWS,
                                   (ConfiguracaoApp.Proxy ? ConfiguracaoApp.ProxyUsuario : ""),
                                   (ConfiguracaoApp.Proxy ? ConfiguracaoApp.ProxySenha : ""),
                                   (ConfiguracaoApp.Proxy ? ConfiguracaoApp.ProxyServidor : ""));

                    el.CancelarNfse(NomeArquivoXML);

                    #endregion E&L

                    break;

                case PadroesNFSe.GOVDIGITAL:
                    GovDigital govdig = new GovDigital((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                                       Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                       Empresas.Configuracoes[emp].X509Certificado,
                                                       oDadosPedCanNfse.cMunicipio,
                                                       ConfiguracaoApp.ProxyUsuario,
                                                       ConfiguracaoApp.ProxySenha,
                                                       ConfiguracaoApp.ProxyServidor);

                    AssinaturaDigital adgovdig = new AssinaturaDigital();
                    adgovdig.Assinar(NomeArquivoXML, emp, oDadosPedCanNfse.cMunicipio);

                    govdig.CancelarNfse(NomeArquivoXML);
                    break;

                case PadroesNFSe.BSITBR:
                    wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado);

                    if (oDadosPedCanNfse.tpAmb == 1)
                    {
                        switch (oDadosPedCanNfse.cMunicipio)
                        {
                        case 5211800:
                            pedCanNfse = new Components.PJaraguaGO.nfseWS();
                            break;

                        case 5220454:
                            pedCanNfse = new Components.PSenadorCanedoGO.nfseWS();
                            break;
                        }
                    }
                    else
                    {
                        switch (oDadosPedCanNfse.cMunicipio)
                        {
                        case 5211800:         //Jaraguá - GO
                            throw new Exception("Município de Jaraguá-GO não dispõe de ambiente de homologação para envio de NFS-e em teste.");

                        case 5220454:         //Senador Canedo - GO
                            throw new Exception("Município de Senador Canedo-GO não dispõe de ambiente de homologação para envio de NFS-e em teste.");
                        }
                    }
                    break;

                case PadroesNFSe.EQUIPLANO:
                    cabecMsg = "1";
                    break;

                case PadroesNFSe.PORTALFACIL_ACTCON_202:
                    cabecMsg = "<cabecalho><versaoDados>2.02</versaoDados></cabecalho>";
                    break;

                case PadroesNFSe.PORTALFACIL_ACTCON:
                case PadroesNFSe.PRODATA:
                    cabecMsg = "<cabecalho><versaoDados>2.01</versaoDados></cabecalho>";
                    break;

                case PadroesNFSe.MGM:

                    #region MGM

                    MGM mgm = new MGM((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                      Empresas.Configuracoes[emp].PastaXmlRetorno,
                                      oDadosPedCanNfse.cMunicipio,
                                      Empresas.Configuracoes[emp].UsuarioWS,
                                      Empresas.Configuracoes[emp].SenhaWS);
                    mgm.CancelarNfse(NomeArquivoXML);
                    break;

                    #endregion MGM

                case PadroesNFSe.NATALENSE:
                    cabecMsg = "<cabecalho xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" versao=\"1\" xmlns=\"http://www.abrasf.org.br/ABRASF/arquivos/nfse.xsd\"><versaoDados>1</versaoDados></cabecalho>";
                    break;

                case PadroesNFSe.CONSIST:

                    #region Consist

                    Consist consist = new Consist((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                                  Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                  oDadosPedCanNfse.cMunicipio,
                                                  Empresas.Configuracoes[emp].UsuarioWS,
                                                  Empresas.Configuracoes[emp].SenhaWS,
                                                  ConfiguracaoApp.ProxyUsuario,
                                                  ConfiguracaoApp.ProxySenha,
                                                  ConfiguracaoApp.ProxyServidor);

                    consist.CancelarNfse(NomeArquivoXML);
                    break;

                    #endregion Consist

                case PadroesNFSe.MEMORY:

                    #region Memory

                    Memory memory = new Memory((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                               Empresas.Configuracoes[emp].PastaXmlRetorno,
                                               oDadosPedCanNfse.cMunicipio,
                                               Empresas.Configuracoes[emp].UsuarioWS,
                                               Empresas.Configuracoes[emp].SenhaWS,
                                               ConfiguracaoApp.ProxyUsuario,
                                               ConfiguracaoApp.ProxySenha,
                                               ConfiguracaoApp.ProxyServidor);

                    memory.CancelarNfse(NomeArquivoXML);
                    break;

                    #endregion Memory

                case PadroesNFSe.CAMACARI_BA:
                    cabecMsg = "<cabecalho><versaoDados>2.01</versaoDados><versao>2.01</versao></cabecalho>";
                    break;

                case PadroesNFSe.NA_INFORMATICA:
                    wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado);

                    //if (oDadosPedCanNfse.tpAmb == 1)
                    //    pedCanNfse = new Components.PCorumbaMS.NfseWSService();
                    //else
                    //    pedCanNfse = new Components.HCorumbaMS.NfseWSService();

                    break;

                case PadroesNFSe.PRONIN:
                    if (oDadosPedCanNfse.cMunicipio == 4109401 ||
                        oDadosPedCanNfse.cMunicipio == 3131703 ||
                        oDadosPedCanNfse.cMunicipio == 4303004 ||
                        oDadosPedCanNfse.cMunicipio == 3556602 ||
                        oDadosPedCanNfse.cMunicipio == 3512803 ||
                        oDadosPedCanNfse.cMunicipio == 4323002 ||
                        oDadosPedCanNfse.cMunicipio == 3505807 ||
                        oDadosPedCanNfse.cMunicipio == 3530300 ||
                        oDadosPedCanNfse.cMunicipio == 4308904 ||
                        oDadosPedCanNfse.cMunicipio == 4118501 ||
                        oDadosPedCanNfse.cMunicipio == 3554300 ||
                        oDadosPedCanNfse.cMunicipio == 3542404 ||
                        oDadosPedCanNfse.cMunicipio == 5005707 ||
                        oDadosPedCanNfse.cMunicipio == 4314423 ||
                        oDadosPedCanNfse.cMunicipio == 3511102 ||
                        oDadosPedCanNfse.cMunicipio == 3535804 ||
                        oDadosPedCanNfse.cMunicipio == 4306932)
                    {
                        Pronin pronin = new Pronin((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                                   Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                   oDadosPedCanNfse.cMunicipio,
                                                   ConfiguracaoApp.ProxyUsuario,
                                                   ConfiguracaoApp.ProxySenha,
                                                   ConfiguracaoApp.ProxyServidor,
                                                   Empresas.Configuracoes[emp].X509Certificado);

                        AssinaturaDigital assPronin = new AssinaturaDigital();
                        assPronin.Assinar(NomeArquivoXML, emp, oDadosPedCanNfse.cMunicipio);

                        pronin.CancelarNfse(NomeArquivoXML);
                    }
                    break;

                case PadroesNFSe.EGOVERNEISS:

                    #region EGoverne ISS

                    EGoverneISS egoverneiss = new EGoverneISS((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                                              Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                              oDadosPedCanNfse.cMunicipio,
                                                              Empresas.Configuracoes[emp].UsuarioWS,
                                                              Empresas.Configuracoes[emp].SenhaWS,
                                                              ConfiguracaoApp.ProxyUsuario,
                                                              ConfiguracaoApp.ProxySenha,
                                                              ConfiguracaoApp.ProxyServidor);

                    egoverneiss.CancelarNfse(NomeArquivoXML);
                    break;

                    #endregion EGoverne ISS

                case PadroesNFSe.BAURU_SP:
                    Bauru_SP bauru_SP = new Bauru_SP((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                                     Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                     oDadosPedCanNfse.cMunicipio);
                    bauru_SP.CancelarNfse(NomeArquivoXML);
                    break;

                case PadroesNFSe.SMARAPD:
                    if (Empresas.Configuracoes[emp].UnidadeFederativaCodigo == 3201308)     //Município de Cariacica-ES
                    {
                        throw new Exception("Município de Cariacica-ES não permite cancelamento de NFS-e via webservice.");
                    }
                    break;

                case PadroesNFSe.SMARAPD_204:
                    cabecMsg = "<cabecalho versao=\"2.04\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\"><versaoDados>2.04</versaoDados></cabecalho>";
                    break;

                    #region Tinus

                case PadroesNFSe.TINUS:
                    Tinus tinus = new Tinus((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                            Empresas.Configuracoes[emp].PastaXmlRetorno,
                                            oDadosPedCanNfse.cMunicipio,
                                            ConfiguracaoApp.ProxyUsuario,
                                            ConfiguracaoApp.ProxySenha,
                                            ConfiguracaoApp.ProxyServidor,
                                            Empresas.Configuracoes[emp].X509Certificado);

                    AssinaturaDigital tinusAss = new AssinaturaDigital();
                    tinusAss.Assinar(NomeArquivoXML, emp, oDadosPedCanNfse.cMunicipio);

                    tinus.CancelarNfse(NomeArquivoXML);
                    break;

                    #endregion Tinus

                    #region SH3

                case PadroesNFSe.SH3:
                    cabecMsg = "<cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"1.00\"><versaoDados >1.00</versaoDados ></cabecalho>";
                    break;

                    #endregion SH3

#if _fw46
                    #region SOFTPLAN

                case PadroesNFSe.SOFTPLAN:
                    Components.SOFTPLAN.SOFTPLAN softplan = new Components.SOFTPLAN.SOFTPLAN((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                                                                             Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                                                             Empresas.Configuracoes[emp].TokenNFse,
                                                                                             Empresas.Configuracoes[emp].TokenNFSeExpire,
                                                                                             Empresas.Configuracoes[emp].UsuarioWS,
                                                                                             Empresas.Configuracoes[emp].SenhaWS,
                                                                                             Empresas.Configuracoes[emp].ClientID,
                                                                                             Empresas.Configuracoes[emp].ClientSecret);

                    AssinaturaDigital softplanAssinatura = new AssinaturaDigital();
                    softplanAssinatura.Assinar(NomeArquivoXML, emp, oDadosPedCanNfse.cMunicipio);

                    // Validar o Arquivo XML
                    ValidarXML softplanValidar = new ValidarXML(NomeArquivoXML, Empresas.Configuracoes[emp].UnidadeFederativaCodigo, false);
                    string     validacao       = softplanValidar.ValidarArqXML(NomeArquivoXML);
                    if (validacao != "")
                    {
                        throw new Exception(validacao);
                    }

                    if (ConfiguracaoApp.Proxy)
                    {
                        softplan.Proxy = Proxy.DefinirProxy(ConfiguracaoApp.ProxyServidor, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyPorta);
                    }

                    AssinaturaDigital softplanAss = new AssinaturaDigital();
                    softplanAss.Assinar(NomeArquivoXML, emp, oDadosPedCanNfse.cMunicipio, AlgorithmType.Sha256);

                    softplan.CancelarNfse(NomeArquivoXML);

                    if (Empresas.Configuracoes[emp].TokenNFse != softplan.Token)
                    {
                        Empresas.Configuracoes[emp].SalvarConfiguracoesNFSeSoftplan(softplan.Usuario,
                                                                                    softplan.Senha,
                                                                                    softplan.ClientID,
                                                                                    softplan.ClientSecret,
                                                                                    softplan.Token,
                                                                                    softplan.TokenExpire,
                                                                                    Empresas.Configuracoes[emp].CNPJ);
                    }

                    break;

                    #endregion SOFTPLAN
#endif

                case PadroesNFSe.INTERSOL:
                    cabecMsg = "<?xml version=\"1.0\" encoding=\"utf-8\"?><p:cabecalho versao=\"1\" xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\" xmlns:p=\"http://ws.speedgov.com.br/cabecalho_v1.xsd\" xmlns:p1=\"http://ws.speedgov.com.br/tipos_v1.xsd\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://ws.speedgov.com.br/cabecalho_v1.xsd cabecalho_v1.xsd \"><versaoDados>1</versaoDados></p:cabecalho>";
                    break;

                case PadroesNFSe.JOINVILLE_SC:
                    wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado);

                    if (oDadosPedCanNfse.tpAmb == 2)
                    {
                        pedCanNfse = new Components.HJoinvilleSC.Servicos();
                    }
                    else
                    {
                        pedCanNfse = new Components.PJoinvilleSC.Servicos();
                    }
                    break;

                case PadroesNFSe.AVMB_ASTEN:
                    cabecMsg = "<cabecalho versao=\"2.02\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\"><versaoDados>2.02</versaoDados></cabecalho>";
                    wsProxy  = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado);

                    if (oDadosPedCanNfse.tpAmb == 2)
                    {
                        pedCanNfse = new Components.HPelotasRS.INfseservice();
                    }
                    else
                    {
                        pedCanNfse = new Components.PPelotasRS.INfseservice();
                    }
                    break;

                case PadroesNFSe.EMBRAS:
                    cabecMsg = "<cabecalho versao=\"2.02\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\"><versaoDados>2.02</versaoDados></cabecalho>";
                    break;

                case PadroesNFSe.MODERNIZACAO_PUBLICA:
                    cabecMsg = "<cabecalho xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"2.02\"><versaoDados>2.02</versaoDados></cabecalho>";
                    break;

                case PadroesNFSe.E_RECEITA:
                    cabecMsg = "<cabecalho xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"2.02\"><versaoDados>2.02</versaoDados></cabecalho>";
                    break;

                case PadroesNFSe.TIPLAN_203:
                case PadroesNFSe.INDAIATUBA_SP:
                    cabecMsg = "<cabecalho versao=\"2.03\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\"><versaoDados>2.03</versaoDados></cabecalho>";
                    break;

#if _fw46
                case PadroesNFSe.ADM_SISTEMAS:
                    cabecMsg = "<cabecalho versao=\"2.01\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\"><versaoDados>2.01</versaoDados></cabecalho>";
                    wsProxy  = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado);

                    pedCanNfse = oDadosPedCanNfse.tpAmb == 1 ?
                                 new Components.PAmargosaBA.InfseClient(GetBinding(), new EndpointAddress("https://demo.saatri.com.br/servicos/nfse.svc")) :
                                 new Components.HAmargosaBA.InfseClient(GetBinding(), new EndpointAddress("https://homologa-demo.saatri.com.br/servicos/nfse.svc")) as object;

                    SignUsingCredentials(emp, pedCanNfse);
                    break;
#endif

                case PadroesNFSe.PUBLIC_SOFT:
                    if (oDadosPedCanNfse.cMunicipio.Equals(2610707))
                    {
                        cabecMsg = "N9M=";
                    }
                    break;

                case PadroesNFSe.SIMPLE:

                    Simple simple = new Simple((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                               Empresas.Configuracoes[emp].PastaXmlRetorno,
                                               oDadosPedCanNfse.cMunicipio,
                                               ConfiguracaoApp.ProxyUsuario,
                                               ConfiguracaoApp.ProxySenha,
                                               ConfiguracaoApp.ProxyServidor,
                                               Empresas.Configuracoes[emp].X509Certificado);

                    simple.CancelarNfse(NomeArquivoXML);
                    break;


                case PadroesNFSe.SISPMJP:
                    cabecMsg = "<cabecalho versao=\"2.02\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\" ><versaoDados>2.02</versaoDados></cabecalho>";
                    break;

                case PadroesNFSe.D2TI:
                    cabecMsg = "<cabecalhoCancelamentoNfseLote xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://www.ctaconsult.com/nfse\"><versao>1.00</versao><ambiente>2</ambiente></cabecalhoCancelamentoNfseLote>";
                    break;

                case PadroesNFSe.VERSATECNOLOGIA:

                    VersaTecnologia versa = new VersaTecnologia((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                                                Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                                oDadosPedCanNfse.cMunicipio,
                                                                ConfiguracaoApp.ProxyUsuario,
                                                                ConfiguracaoApp.ProxySenha,
                                                                ConfiguracaoApp.ProxyServidor,
                                                                Empresas.Configuracoes[emp].X509Certificado);

                    AssinaturaDigital assVersa = new AssinaturaDigital();
                    assVersa.Assinar(NomeArquivoXML, emp, oDadosPedCanNfse.cMunicipio);

                    versa.CancelarNfse(NomeArquivoXML);

                    break;

                case PadroesNFSe.IIBRASIL:
                    cabecMsg = "<cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"2.04\"><versaoDados>2.04</versaoDados></cabecalho>";
                    //wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado);

                    //if (oDadosPedCanNfse.tpAmb == 2)
                    //{
                    //    pedCanNfse = new Components.HLimeiraSP.NfseWSService();
                    //}
                    //else
                    //{
                    //    throw new Exception("Município de São Paulo-SP não dispõe de ambiente de homologação para envio de NFS-e em teste.");
                    //}

                    break;
                }

                if (IsInvocar(padraoNFSe, Servico, Empresas.Configuracoes[emp].UnidadeFederativaCodigo))
                {
                    //Assinar o XML
                    AssinaturaDigital ad = new AssinaturaDigital();

                    ad.Assinar(NomeArquivoXML, emp, oDadosPedCanNfse.cMunicipio);

                    //Invocar o método que envia o XML para o SEFAZ
                    oInvocarObj.InvocarNFSe(wsProxy, pedCanNfse, NomeMetodoWS(Servico, oDadosPedCanNfse.cMunicipio), cabecMsg, this,
                                            Propriedade.Extensao(Propriedade.TipoEnvio.PedCanNFSe).EnvioXML,    //"-ped-cannfse",
                                            Propriedade.Extensao(Propriedade.TipoEnvio.PedCanNFSe).RetornoXML,  //"-cannfse",
                                            padraoNFSe, Servico, securityProtocolType);

                    /// grava o arquivo no FTP
                    string filenameFTP = Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                      Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedCanNFSe).EnvioXML) + Propriedade.Extensao(Propriedade.TipoEnvio.PedCanNFSe).RetornoXML);
                    if (File.Exists(filenameFTP))
                    {
                        new GerarXML(emp).XmlParaFTP(emp, filenameFTP);
                    }
                }
            }
            catch (Exception ex)
            {
                var strErro        = ex.HResult.ToString();
                var strMesagemErro = ex.Message;

                try
                {
                    //Gravar o arquivo de erro de retorno para o ERP, caso ocorra
                    TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedCanNFSe).EnvioXML, Propriedade.ExtRetorno.CanNfse_ERR, ex);
                }
                catch
                {
                    //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada.
                    //Wandrey 31/08/2011
                    RetornoErroERP.GeraArquivoErroERP(NomeArquivoXML, strErro, strMesagemErro, Propriedade.ExtRetorno.CanNfse_ERR);
                }
            }
            finally
            {
                try
                {
                    Functions.DeletarArquivo(NomeArquivoXML);
                }
                catch
                {
                    //Se falhou algo na hora de deletar o XML de cancelamento de NFe, infelizmente
                    //não posso fazer mais nada, o UniNFe vai tentar mandar o arquivo novamente para o webservice, pois ainda não foi excluido.
                    //Wandrey 31/08/2011
                }
            }
        }
コード例 #7
0
ファイル: InvocarObjeto.cs プロジェクト: tassio1125/Nfe
        /// <summary>
        /// Metodo responsável por invocar o serviço do WebService do SEFAZ
        /// </summary>
        /// <param name="oWSProxy">Objeto da classe construida do WSDL</param>
        /// <param name="oServicoWS">Objeto da classe de envio do XML</param>
        /// <param name="cMetodo">Método da classe de envio do XML que faz o envio</param>
        /// <param name="cabecMsg">Objeto da classe de cabecalho do serviço</param>
        /// <param name="oServicoNFe">Objeto do Serviço de envio da NFE do UniNFe</param>
        /// <param name="cFinalArqEnvio">string do final do arquivo a ser enviado. Sem a extensão ".xml"</param>
        /// <param name="cFinalArqRetorno">string do final do arquivo a ser gravado com o conteúdo do retorno. Sem a extensão ".xml"</param>
        /// <remarks>
        /// Autor: Wandrey Mundin Ferreira
        /// Data: 17/03/2010
        /// </remarks>
        public void Invocar(WebServiceProxy oWSProxy,
                            object oServicoWS,
                            string cMetodo,
                            object cabecMsg,
                            object oServicoNFe,
                            string cFinalArqEnvio,
                            string cFinalArqRetorno)
        {
            int emp = Empresas.FindEmpresaByThread();

            XmlDocument docXML = new XmlDocument();

            // Definir o tipo de serviço da NFe
            Type typeServicoNFe = oServicoNFe.GetType();

            Servicos servico = (Servicos)oWSProxy.GetProp(oServicoNFe, NFe.Components.NFeStrConstants.Servico);

            // Resgatar o nome do arquivo XML a ser enviado para o webservice
            string XmlNfeDadosMsg = (string)(typeServicoNFe.InvokeMember("NomeArquivoXML", System.Reflection.BindingFlags.GetProperty, null, oServicoNFe, null));

            // Exclui o Arquivo de Erro
            Functions.DeletarArquivo(Empresas.Configuracoes[emp].PastaXmlRetorno + "\\" + Functions.ExtrairNomeArq(XmlNfeDadosMsg, cFinalArqEnvio + ".xml") + cFinalArqRetorno + ".err");

            // Validar o Arquivo XML
            ValidarXML validar = new ValidarXML(XmlNfeDadosMsg, Empresas.Configuracoes[emp].UnidadeFederativaCodigo);

            string cResultadoValidacao = validar.ValidarArqXML(XmlNfeDadosMsg);

            if (cResultadoValidacao != "")
            {
                throw new Exception(cResultadoValidacao);
            }

            // Montar o XML de Lote de envio de Notas fiscais
            docXML.Load(XmlNfeDadosMsg);

            // Definir Proxy
            if (ConfiguracaoApp.Proxy)
            {
                oWSProxy.SetProp(oServicoWS, "Proxy", Proxy.DefinirProxy(ConfiguracaoApp.ProxyServidor, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyPorta));
            }

            // Limpa a variável de retorno
            XmlNode XmlRetorno = null;
            string  strRetorno = string.Empty;

            //Vou mudar o timeout para evitar que demore a resposta e o uninfe aborte antes de recebe-la. Wandrey 17/09/2009
            //Isso talvez evite de não conseguir o número do recibo se o serviço do SEFAZ estiver lento.
            oWSProxy.SetProp(oServicoWS, "Timeout", 60000);

            //Verificar antes se tem conexão com a internet, se não tiver já gera uma exceção no padrão já esperado pelo ERP
            if (ConfiguracaoApp.ChecarConexaoInternet)
            {
                if (!Functions.IsConnectedToInternet())
                {
                    //Registrar o erro da validação para o sistema ERP
                    throw new ExceptionSemInternet(ErroPadrao.FalhaInternet, "\r\nArquivo: " + XmlNfeDadosMsg);
                }
            }
            //Atribuir conteúdo para uma propriedade da classe NfeStatusServico2
            if (cMetodo.Substring(0, 3).ToLower() == "sce") // DPEC
            {
                oWSProxy.SetProp(oServicoWS, "sceCabecMsgValue", cabecMsg);
            }
            else
            {
                switch (servico)
                {
                case Servicos.MDFePedidoConsultaSituacao:
                case Servicos.MDFePedidoSituacaoLote:
                case Servicos.MDFeEnviarLote:
                case Servicos.MDFeConsultaStatusServico:
                case Servicos.MDFeRecepcaoEvento:
                case Servicos.MDFeConsultaNaoEncerrado:
                    oWSProxy.SetProp(oServicoWS, "mdfeCabecMsgValue", cabecMsg);
                    break;

                case Servicos.CTeInutilizarNumeros:
                case Servicos.CTePedidoConsultaSituacao:
                case Servicos.CTePedidoSituacaoLote:
                case Servicos.CTeEnviarLote:
                case Servicos.CTeRecepcaoEvento:
                case Servicos.CTeConsultaStatusServico:
                    if (oWSProxy.GetProp(cabecMsg, NFe.Components.TpcnResources.cUF.ToString()).ToString() == "50")     //Mato Grosso do Sul fugiu o padrão nacional
                    {
                        try
                        {
                            oWSProxy.SetProp(oServicoWS, "cteCabecMsg", cabecMsg);
                        }
                        catch     //Se der erro é pq não está no ambiente normal então tem que ser o nome padrão pois Mato Grosso do Sul fugiu o padrão nacional.
                        {
                            oWSProxy.SetProp(oServicoWS, "cteCabecMsgValue", cabecMsg);
                        }
                    }
                    else
                    {
                        oWSProxy.SetProp(oServicoWS, "cteCabecMsgValue", cabecMsg);
                    }
                    break;

                case Servicos.DFeEnviar:
                    break;

                    /*default:
                     *      oWSProxy.SetProp(oServicoWS, "nfeCabecMsgValue", cabecMsg);
                     *  break;*/
                }
            }

            // Envio da NFe Compactada - Renan
            if (servico == Servicos.NFeEnviarLoteZip2)
            {
                XmlNfeDadosMsg = XmlNfeDadosMsg + ".gz";
                FileInfo XMLNfeZip   = new FileInfo(XmlNfeDadosMsg);
                string   encodedData = StreamExtensions.ToBase64(XMLNfeZip);
                XmlRetorno = oWSProxy.InvokeXML(oServicoWS, cMetodo, new object[] { encodedData });
            }
            else
            {
                XmlRetorno = oWSProxy.InvokeXML(oServicoWS, cMetodo, new object[] { docXML });
            }

            if (XmlRetorno == null)
            {
                throw new Exception("Erro de envio da solicitação do serviço: " + servico.ToString());
            }

            typeServicoNFe.InvokeMember("vStrXmlRetorno", System.Reflection.BindingFlags.SetProperty, null, oServicoNFe, new object[] { XmlRetorno.OuterXml });

            // Registra o retorno de acordo com o status obtido
            if (cFinalArqEnvio != string.Empty && cFinalArqRetorno != string.Empty)
            {
                typeServicoNFe.InvokeMember("XmlRetorno", System.Reflection.BindingFlags.InvokeMethod, null, oServicoNFe, new Object[] { cFinalArqEnvio + ".xml", cFinalArqRetorno + ".xml" });
            }
        }
コード例 #8
0
ファイル: InvocarObjeto.cs プロジェクト: tassio1125/Nfe
        /// <summary>
        /// Metodo responsável por invocar o serviço do WebService do SEFAZ
        /// </summary>
        /// <param name="oWSProxy">Objeto da classe construida do WSDL</param>
        /// <param name="oServicoWS">Objeto da classe de envio do XML</param>
        /// <param name="cMetodo">Método da classe de envio do XML que faz o envio</param>
        /// <param name="cabecMsg">Objeto da classe de cabecalho do serviço</param>
        /// <param name="oServicoNFe">Objeto do Serviço de envio da NFE do UniNFe</param>
        /// <param name="cFinalArqEnvio">string do final do arquivo a ser enviado. Sem a extensão ".xml"</param>
        /// <param name="cFinalArqRetorno">string do final do arquivo a ser gravado com o conteúdo do retorno. Sem a extensão ".xml"</param>
        /// <remarks>
        /// Autor: Wandrey Mundin Ferreira
        /// Data: 17/03/2010
        /// </remarks>
        public void InvocarNFSe(WebServiceProxy oWSProxy,
                                object oServicoWS,
                                string cMetodo,
                                string cabecMsg,
                                object oServicoNFe,
                                string cFinalArqEnvio,
                                string cFinalArqRetorno,
                                PadroesNFSe padraoNFSe,
                                Servicos servicoNFSe)
        {
            int emp = Empresas.FindEmpresaByThread();

            XmlDocument docXML = new XmlDocument();

            // Definir o tipo de serviço da NFe
            Type typeServicoNFe = oServicoNFe.GetType();

            // Resgatar o nome do arquivo XML a ser enviado para o webservice
            string XmlNfeDadosMsg = (string)(typeServicoNFe.InvokeMember("NomeArquivoXML", System.Reflection.BindingFlags.GetProperty, null, oServicoNFe, null));

            // Exclui o Arquivo de Erro
            Functions.DeletarArquivo(Empresas.Configuracoes[emp].PastaXmlRetorno + "\\" + Functions.ExtrairNomeArq(XmlNfeDadosMsg, cFinalArqEnvio + ".xml") + cFinalArqRetorno + ".err");

            // Validar o Arquivo XML
            ValidarXML validar             = new ValidarXML(XmlNfeDadosMsg, Empresas.Configuracoes[emp].UnidadeFederativaCodigo);
            string     cResultadoValidacao = validar.ValidarArqXML(XmlNfeDadosMsg);

            if (cResultadoValidacao != "")
            {
                switch (padraoNFSe)
                {
                case PadroesNFSe.ISSONLINE4R:
                    break;

                case PadroesNFSe.SMARAPD:
                    break;

                default:
                    throw new Exception(cResultadoValidacao);
                }
            }

            // Montar o XML de Lote de envio de Notas fiscais
            docXML.Load(XmlNfeDadosMsg);

            // Definir Proxy
            if (ConfiguracaoApp.Proxy)
            {
                if (padraoNFSe != PadroesNFSe.BETHA)
                {
                    oWSProxy.SetProp(oServicoWS, "Proxy", Proxy.DefinirProxy(ConfiguracaoApp.ProxyServidor, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyPorta));
                }
                else
                {
                    oWSProxy.Betha.Proxy = Proxy.DefinirProxy(ConfiguracaoApp.ProxyServidor, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyPorta);
                }
            }

            // Limpa a variável de retorno
            string strRetorno = string.Empty;

            //Vou mudar o timeout para evitar que demore a resposta e o uninfe aborte antes de recebe-la. Wandrey 17/09/2009
            //Isso talvez evite de não conseguir o número do recibo se o serviço do SEFAZ estiver lento.
            if (padraoNFSe != PadroesNFSe.BETHA)
            {
                oWSProxy.SetProp(oServicoWS, "Timeout", 120000);
            }

            //Verificar antes se tem conexão com a internet, se não tiver já gera uma exceção no padrão já esperado pelo ERP
            if (ConfiguracaoApp.ChecarConexaoInternet)  //danasa: 12/2013
            {
                if (!Functions.IsConnectedToInternet())
                {
                    //Registrar o erro da validação para o sistema ERP
                    throw new ExceptionSemInternet(ErroPadrao.FalhaInternet, "\r\nArquivo: " + XmlNfeDadosMsg);
                }
            }

            //Invocar o membro
            switch (padraoNFSe)
            {
                #region Padrão BETHA
            case PadroesNFSe.BETHA:
                switch (cMetodo)
                {
                case "ConsultarSituacaoLoteRps":
                    strRetorno = oWSProxy.Betha.ConsultarSituacaoLoteRps(docXML, Empresas.Configuracoes[emp].AmbienteCodigo);
                    break;

                case "ConsultarLoteRps":
                    strRetorno = oWSProxy.Betha.ConsultarLoteRps(docXML, Empresas.Configuracoes[emp].AmbienteCodigo);
                    break;

                case "CancelarNfse":
                    strRetorno = oWSProxy.Betha.CancelarNfse(docXML, Empresas.Configuracoes[emp].AmbienteCodigo);
                    break;

                case "ConsultarNfse":
                    strRetorno = oWSProxy.Betha.ConsultarNfse(docXML, Empresas.Configuracoes[emp].AmbienteCodigo);
                    break;

                case "ConsultarNfsePorRps":
                    strRetorno = oWSProxy.Betha.ConsultarNfsePorRps(docXML, Empresas.Configuracoes[emp].AmbienteCodigo);
                    break;

                case "RecepcionarLoteRps":
                    strRetorno = oWSProxy.Betha.RecepcionarLoteRps(docXML, Empresas.Configuracoes[emp].AmbienteCodigo);
                    break;
                }
                break;
                #endregion

                #region Padrão ISSONLINE
            case PadroesNFSe.ISSONLINE:
                int    operacao;
                string senhaWs = Functions.GetMD5Hash(Empresas.Configuracoes[emp].SenhaWS);

                switch (servicoNFSe)
                {
                case Servicos.NFSeRecepcionarLoteRps:
                    operacao = 1;
                    break;

                case Servicos.NFSeCancelar:
                    operacao = 2;
                    break;

                default:
                    operacao = 3;
                    break;
                }

                strRetorno = oWSProxy.InvokeStr(oServicoWS, cMetodo, new object[] { Convert.ToSByte(operacao), Empresas.Configuracoes[emp].UsuarioWS, senhaWs, docXML.OuterXml });
                break;
                #endregion

                #region Padrão Blumenau-SC
            case PadroesNFSe.BLUMENAU_SC:
                strRetorno = oWSProxy.InvokeStr(oServicoWS, cMetodo, new object[] { 1, docXML.OuterXml });
                break;
                #endregion

                #region Padrão Paulistana
            case PadroesNFSe.PAULISTANA:
                strRetorno = oWSProxy.InvokeStr(oServicoWS, cMetodo, new object[] { 1, docXML.OuterXml });
                break;
                #endregion

                #region Demais padrões
            case PadroesNFSe.TECNOSISTEMAS:
                strRetorno = oWSProxy.InvokeStr(oServicoWS, cMetodo, new object[] { docXML.OuterXml, cabecMsg.ToString() });
                break;

            case PadroesNFSe.SMARAPD:
                if (cMetodo == "nfdEntradaCancelar")
                {
                    strRetorno = oWSProxy.InvokeStr(oServicoWS, cMetodo, new object[] { Empresas.Configuracoes[emp].UsuarioWS,
                                                                                        TFunctions.EncryptSHA1(Empresas.Configuracoes[emp].SenhaWS),
                                                                                        docXML.OuterXml });
                }
                else
                {
                    strRetorno = oWSProxy.InvokeStr(oServicoWS, cMetodo, new object[] { Empresas.Configuracoes[emp].UsuarioWS,
                                                                                        TFunctions.EncryptSHA1(Empresas.Configuracoes[emp].SenhaWS),
                                                                                        Empresas.Configuracoes[emp].UnidadeFederativaCodigo,
                                                                                        docXML.OuterXml });
                }
                break;

            case PadroesNFSe.ISSWEB:
                string versao = docXML.DocumentElement.GetElementsByTagName("Versao")[0].InnerText;
                string cnpj   = docXML.DocumentElement.GetElementsByTagName("CNPJCPFPrestador")[0].InnerText;
                strRetorno = oWSProxy.InvokeStr(oServicoWS, cMetodo, new object[] { cnpj, docXML.OuterXml, versao });
                break;

            case PadroesNFSe.GINFES:
            case PadroesNFSe.THEMA:
            case PadroesNFSe.SALVADOR_BA:
            case PadroesNFSe.CANOAS_RS:
            case PadroesNFSe.ISSNET:
            default:
                if (string.IsNullOrEmpty(cabecMsg))
                {
                    strRetorno = oWSProxy.InvokeStr(oServicoWS, cMetodo, new object[] { docXML.OuterXml });
                }
                else
                {
                    strRetorno = oWSProxy.InvokeStr(oServicoWS, cMetodo, new object[] { cabecMsg.ToString(), docXML.OuterXml });
                }
                break;
                #endregion
            }
            #region gerar arquivos assinados(somente debug)
#if DEBUG
            string path = Application.StartupPath + "\\teste_assintura\\";

            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }

            StreamWriter sw = new StreamWriter(path + "nfseMsg_assinado.xml", true);
            sw.Write(docXML.OuterXml);
            sw.Close();

            StreamWriter sw2 = new StreamWriter(path + "cabecMsg_assinado.xml", true);
            sw2.Write(cabecMsg.ToString());
            sw2.Close();
#endif
            #endregion

            //Atualizar o atributo do serviço da Nfe com o conteúdo retornado do webservice do sefaz
            typeServicoNFe.InvokeMember("vStrXmlRetorno", System.Reflection.BindingFlags.SetProperty, null, oServicoNFe, new object[] { strRetorno });

            // Registra o retorno de acordo com o status obtido
            if (cFinalArqEnvio != string.Empty && cFinalArqRetorno != string.Empty)
            {
                typeServicoNFe.InvokeMember("XmlRetorno", System.Reflection.BindingFlags.InvokeMethod, null, oServicoNFe, new Object[] { cFinalArqEnvio + ".xml", cFinalArqRetorno + ".xml" });
            }
        }
コード例 #9
0
        public override void Execute()
        {
            int emp = Empresas.FindEmpresaByThread();

            //Definir o serviço que será executado para a classe
            Servico = Servicos.NFSeRecepcionarLoteRps;

            try
            {
                Functions.DeletarArquivo(Empresas.Configuracoes[emp].PastaXmlRetorno + "\\" +
                                         Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.EnvLoteRps).EnvioXML) + Propriedade.ExtRetorno.RetEnvLoteRps_ERR);
                Functions.DeletarArquivo(Empresas.Configuracoes[emp].PastaXmlErro + "\\" + NomeArquivoXML);

                oDadosEnvLoteRps = new DadosEnvLoteRps(emp);

                EnvLoteRps(emp, NomeArquivoXML);

                //Criar objetos das classes dos serviços dos webservices do SEFAZ
                PadroesNFSe padraoNFSe = Functions.PadraoNFSe(oDadosEnvLoteRps.cMunicipio);

                WebServiceProxy wsProxy    = null;
                object          envLoteRps = null;

                if (IsUtilizaCompilacaoWs(padraoNFSe, Servico, oDadosEnvLoteRps.cMunicipio))
                {
                    wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, oDadosEnvLoteRps.cMunicipio, oDadosEnvLoteRps.tpAmb, oDadosEnvLoteRps.tpEmis, padraoNFSe, oDadosEnvLoteRps.cMunicipio);
                    if (wsProxy != null)
                    {
                        envLoteRps = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);
                    }
                }

                System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(oDadosEnvLoteRps.cMunicipio, oDadosEnvLoteRps.tpAmb, oDadosEnvLoteRps.tpEmis, padraoNFSe, Servico);

                string cabecMsg = "";
                switch (padraoNFSe)
                {
                case PadroesNFSe.IPM:

                    //código da cidade da receita federal, este arquivo pode ser encontrado em ~\uninfe\doc\Codigos_Cidades_Receita_Federal.xls</para>
                    //O código da cidade está hardcoded pois ainda está sendo usado apenas para campo mourão
                    IPM ipm = new IPM((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                      Empresas.Configuracoes[emp].PastaXmlRetorno,
                                      Empresas.Configuracoes[emp].UsuarioWS,
                                      Empresas.Configuracoes[emp].SenhaWS,
                                      oDadosEnvLoteRps.cMunicipio);

                    if (ConfiguracaoApp.Proxy)
                    {
                        ipm.Proxy = Proxy.DefinirProxy(ConfiguracaoApp.ProxyServidor, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyPorta);
                    }

                    ipm.EmiteNF(NomeArquivoXML, false);
                    break;

                case PadroesNFSe.GINFES:
                    switch (oDadosEnvLoteRps.cMunicipio)
                    {
                    case 2304400:         //Fortaleza - CE
                        cabecMsg = "<ns2:cabecalho versao=\"3\" xmlns:ns2=\"http://www.ginfes.com.br/cabecalho_v03.xsd\"><versaoDados>3</versaoDados></ns2:cabecalho>";
                        break;

                    case 4125506:         //São José dos Pinhais - PR
                        cabecMsg = "<ns2:cabecalho versao=\"3\" xmlns:ns2=\"http://nfe.sjp.pr.gov.br/cabecalho_v03.xsd\"><versaoDados>3</versaoDados></ns2:cabecalho>";
                        break;

                    default:
                        cabecMsg = "<ns2:cabecalho versao=\"3\" xmlns:ns2=\"http://www.ginfes.com.br/cabecalho_v03.xsd\"><versaoDados>3</versaoDados></ns2:cabecalho>";
                        break;
                    }
                    break;

                case PadroesNFSe.ABASE:
                    cabecMsg = "<cabecalho xmlns=\"http://nfse.abase.com.br/nfse.xsd\" versao =\"1.00\"><versaoDados>1.00</versaoDados></cabecalho>";
                    break;

                case PadroesNFSe.BETHA:

                    #region Betha

                    string versao = Functions.GetAttributeXML("LoteRps", "versao", NomeArquivoXML);
                    if (versao.Equals("2.02"))
                    {
                        padraoNFSe = PadroesNFSe.BETHA202;
                        Components.Betha.NewVersion.Betha betha = new Components.Betha.NewVersion.Betha((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                                                                                        Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                                                                        oDadosEnvLoteRps.cMunicipio,
                                                                                                        Empresas.Configuracoes[emp].UsuarioWS,
                                                                                                        Empresas.Configuracoes[emp].SenhaWS,
                                                                                                        ConfiguracaoApp.ProxyUsuario,
                                                                                                        ConfiguracaoApp.ProxySenha,
                                                                                                        ConfiguracaoApp.ProxyServidor);

                        AssinaturaDigital signbetha = new AssinaturaDigital();
                        signbetha.Assinar(NomeArquivoXML, emp, 202);

                        if (GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.BETHA202) == Servicos.NFSeRecepcionarLoteRpsSincrono)
                        {
                            betha.EmiteNFSincrono(NomeArquivoXML);
                        }
                        else
                        {
                            betha.EmiteNF(NomeArquivoXML);
                        }
                    }
                    else
                    {
                        wsProxy       = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado);
                        wsProxy.Betha = new Betha();
                    }
                    break;

                    #endregion Betha

                case PadroesNFSe.ABACO:
                case PadroesNFSe.CANOAS_RS:
                    cabecMsg = "<cabecalho versao=\"201001\"><versaoDados>V2010</versaoDados></cabecalho>";
                    break;

                case PadroesNFSe.BLUMENAU_SC:
                    EncryptAssinatura();
                    break;

                case PadroesNFSe.BHISS:
                    cabecMsg = "<cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"1.00\"><versaoDados >1.00</versaoDados ></cabecalho>";
                    Servico  = GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.BHISS);
                    break;

                case PadroesNFSe.SH3:
                    cabecMsg = "<cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"1.00\"><versaoDados >1.00</versaoDados ></cabecalho>";
                    Servico  = GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.SH3);
                    break;

                case PadroesNFSe.WEBISS:
                    cabecMsg = "<cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"1.00\"><versaoDados >1.00</versaoDados ></cabecalho>";
                    break;

                case PadroesNFSe.WEBISS_202:
                    Servico = GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.WEBISS_202);

                    cabecMsg = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"2.02\"><versaoDados>2.02</versaoDados></cabecalho>";
                    break;

                case PadroesNFSe.PAULISTANA:
                    wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado);

                    if (oDadosEnvLoteRps.tpAmb == 1)
                    {
                        envLoteRps = new Components.PSaoPauloSP.LoteNFe();
                    }
                    else
                    {
                        throw new Exception("Município de São Paulo-SP não dispõe de ambiente de homologação para envio de NFS-e em teste.");
                    }

                    EncryptAssinatura();
                    break;

                case PadroesNFSe.NA_INFORMATICA:
                    Servico = GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.VVISS);

                    wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado);

                    //if (oDadosEnvLoteRps.tpAmb == 1)
                    //    envLoteRps = new Components.PCorumbaMS.NfseWSService();
                    //else
                    //    envLoteRps = new Components.HCorumbaMS.NfseWSService();

                    break;

                case PadroesNFSe.BSITBR:
                    Servico = GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.BSITBR);

                    wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado);

                    if (oDadosEnvLoteRps.tpAmb == 1)
                    {
                        envLoteRps = new Components.PJaraguaGO.nfseWS();
                    }
                    else
                    {
                        throw new Exception("Município de Jaraguá-GO não dispõe de ambiente de homologação para envio de NFS-e em teste.");
                    }
                    break;

                case PadroesNFSe.PORTOVELHENSE:
                    cabecMsg = "<cabecalho versao=\"2.00\" xmlns:ns2=\"http://www.w3.org/2000/09/xmldsig#\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\"><versaoDados>2.00</versaoDados></cabecalho>";
                    break;

                case PadroesNFSe.DSF:
                    EncryptAssinatura();
                    break;

                case PadroesNFSe.TECNOSISTEMAS:
                    cabecMsg = "<?xml version=\"1.0\" encoding=\"utf-8\"?><cabecalho xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" versao=\"20.01\" xmlns=\"http://www.nfse-tecnos.com.br/nfse.xsd\"><versaoDados>20.01</versaoDados></cabecalho>";
                    break;

                case PadroesNFSe.FINTEL:
                    cabecMsg = "<cabecalho versao=\"2.02\" xmlns=\"http://iss.irati.pr.gov.br/Arquivos/nfseV202.xsd\"><versaoDados>2.02</versaoDados></cabecalho>";
                    Servico  = GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.FINTEL);
                    break;

                case PadroesNFSe.PORTALFACIL_ACTCON:
                    cabecMsg = "<cabecalho><versaoDados>2.01</versaoDados></cabecalho>";
                    Servico  = GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.PORTALFACIL_ACTCON);
                    break;

                case PadroesNFSe.PORTALFACIL_ACTCON_202:
                    cabecMsg = "<cabecalho><versaoDados>2.02</versaoDados></cabecalho>";
                    Servico  = GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.PORTALFACIL_ACTCON_202);
                    break;

                case PadroesNFSe.SYSTEMPRO:

                    #region SystemPro

                    SystemPro syspro = new SystemPro((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                                     Empresas.Configuracoes[emp].PastaXmlRetorno, Empresas.Configuracoes[emp].X509Certificado);
                    AssinaturaDigital ad = new AssinaturaDigital();
                    ad.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio);
                    syspro.EmiteNF(NomeArquivoXML);
                    break;

                    #endregion SystemPro

                case PadroesNFSe.SIGCORP_SIGISS:

                    #region SigCorp

                    SigCorp sigcorp = new SigCorp((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                                  Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                  oDadosEnvLoteRps.cMunicipio);
                    sigcorp.EmiteNF(NomeArquivoXML);
                    break;

                    #endregion SigCorp

                case PadroesNFSe.FIORILLI:

                    #region Fiorilli

                    Fiorilli fiorilli = new Fiorilli((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                                     Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                     oDadosEnvLoteRps.cMunicipio,
                                                     Empresas.Configuracoes[emp].UsuarioWS,
                                                     Empresas.Configuracoes[emp].SenhaWS,
                                                     ConfiguracaoApp.ProxyUsuario,
                                                     ConfiguracaoApp.ProxySenha,
                                                     ConfiguracaoApp.ProxyServidor,
                                                     Empresas.Configuracoes[emp].X509Certificado);

                    AssinaturaDigital ass = new AssinaturaDigital();
                    ass.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio);

                    // Validar o Arquivo XML
                    ValidarXML validar      = new ValidarXML(NomeArquivoXML, Empresas.Configuracoes[emp].UnidadeFederativaCodigo, false);
                    string     resValidacao = validar.ValidarArqXML(NomeArquivoXML);
                    if (resValidacao != "")
                    {
                        throw new Exception(resValidacao);
                    }

                    fiorilli.EmiteNF(NomeArquivoXML);
                    break;

                    #endregion Fiorilli

                case PadroesNFSe.SIMPLISS:

                    #region Simpliss

                    SimplISS simpliss = new SimplISS((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                                     Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                     oDadosEnvLoteRps.cMunicipio,
                                                     Empresas.Configuracoes[emp].UsuarioWS,
                                                     Empresas.Configuracoes[emp].SenhaWS,
                                                     ConfiguracaoApp.ProxyUsuario,
                                                     ConfiguracaoApp.ProxySenha,
                                                     ConfiguracaoApp.ProxyServidor);

                    AssinaturaDigital sign = new AssinaturaDigital();
                    sign.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio);

                    simpliss.EmiteNF(NomeArquivoXML);
                    break;

                    #endregion Simpliss

                case PadroesNFSe.CONAM:

                    #region Conam

                    Conam conam = new Conam((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                            Empresas.Configuracoes[emp].PastaXmlRetorno,
                                            oDadosEnvLoteRps.cMunicipio,
                                            Empresas.Configuracoes[emp].UsuarioWS,
                                            Empresas.Configuracoes[emp].SenhaWS);

                    conam.EmiteNF(NomeArquivoXML);
                    break;

                    #endregion Conam

                case PadroesNFSe.RLZ_INFORMATICA:

                    #region RLZ

                    Rlz_Informatica rlz = new Rlz_Informatica((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                                              Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                              oDadosEnvLoteRps.cMunicipio);

                    rlz.EmiteNF(NomeArquivoXML);
                    break;

                    #endregion RLZ

                case PadroesNFSe.EGOVERNE:

                    #region E-Governe

                    EGoverne egoverne = new EGoverne((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                                     Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                     oDadosEnvLoteRps.cMunicipio,
                                                     ConfiguracaoApp.ProxyUsuario,
                                                     ConfiguracaoApp.ProxySenha,
                                                     ConfiguracaoApp.ProxyServidor,
                                                     Empresas.Configuracoes[emp].X509Certificado);

                    AssinaturaDigital assEGovoverne = new AssinaturaDigital();
                    assEGovoverne.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio);

                    egoverne.EmiteNF(NomeArquivoXML);
                    break;

                    #endregion E-Governe

                case PadroesNFSe.EL:

                    #region E&L

                    EL el = new EL((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                   Empresas.Configuracoes[emp].PastaXmlRetorno,
                                   oDadosEnvLoteRps.cMunicipio,
                                   Empresas.Configuracoes[emp].UsuarioWS,
                                   Empresas.Configuracoes[emp].SenhaWS,
                                   (ConfiguracaoApp.Proxy ? ConfiguracaoApp.ProxyUsuario : ""),
                                   (ConfiguracaoApp.Proxy ? ConfiguracaoApp.ProxySenha : ""),
                                   (ConfiguracaoApp.Proxy ? ConfiguracaoApp.ProxyServidor : ""));

                    el.EmiteNF(NomeArquivoXML);
                    break;

                    #endregion E&L

                case PadroesNFSe.GOVDIGITAL:

                    #region GOV-Digital

                    GovDigital govdig = new GovDigital((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                                       Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                       Empresas.Configuracoes[emp].X509Certificado,
                                                       oDadosEnvLoteRps.cMunicipio,
                                                       ConfiguracaoApp.ProxyUsuario,
                                                       ConfiguracaoApp.ProxySenha,
                                                       ConfiguracaoApp.ProxyServidor);

                    AssinaturaDigital adgovdig = new AssinaturaDigital();
                    adgovdig.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio);

                    govdig.EmiteNF(NomeArquivoXML);
                    break;

                    #endregion GOV-Digital

                case PadroesNFSe.EQUIPLANO:
                    cabecMsg = "1";
                    break;

                case PadroesNFSe.NATALENSE:
                    cabecMsg = "<cabecalho xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" versao=\"1\" xmlns=\"http://www.abrasf.org.br/ABRASF/arquivos/nfse.xsd\"><versaoDados>1</versaoDados></cabecalho>";
                    break;

                case PadroesNFSe.PRODATA:
                    cabecMsg = "<cabecalho><versaoDados>2.01</versaoDados></cabecalho>";
                    break;

                case PadroesNFSe.VVISS:
                    Servico = GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.VVISS);
                    break;

                case PadroesNFSe.ELOTECH:

                    #region EloTech

                    EloTech elotech = new EloTech((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                                  Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                  oDadosEnvLoteRps.cMunicipio,
                                                  Empresas.Configuracoes[emp].UsuarioWS,
                                                  Empresas.Configuracoes[emp].SenhaWS,
                                                  ConfiguracaoApp.ProxyUsuario,
                                                  ConfiguracaoApp.ProxySenha,
                                                  ConfiguracaoApp.ProxyServidor,
                                                  Empresas.Configuracoes[emp].X509Certificado);

                    elotech.EmiteNF(NomeArquivoXML);
                    break;

                    #endregion EloTech

                case PadroesNFSe.METROPOLIS:

                    #region METROPOLIS

                    Metropolis metropolis = new Metropolis((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                                           Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                           oDadosEnvLoteRps.cMunicipio,
                                                           ConfiguracaoApp.ProxyUsuario,
                                                           ConfiguracaoApp.ProxySenha,
                                                           ConfiguracaoApp.ProxyServidor,
                                                           Empresas.Configuracoes[emp].X509Certificado);

                    AssinaturaDigital metropolisdig = new AssinaturaDigital();
                    metropolisdig.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio);

                    metropolis.EmiteNF(NomeArquivoXML);
                    break;

                    #endregion METROPOLIS

                case PadroesNFSe.MGM:

                    #region MGM

                    MGM mgm = new MGM((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                      Empresas.Configuracoes[emp].PastaXmlRetorno,
                                      oDadosEnvLoteRps.cMunicipio,
                                      Empresas.Configuracoes[emp].UsuarioWS,
                                      Empresas.Configuracoes[emp].SenhaWS);
                    mgm.EmiteNF(NomeArquivoXML);
                    break;

                    #endregion MGM

                case PadroesNFSe.CONSIST:

                    #region Consist

                    Consist consist = new Consist((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                                  Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                  oDadosEnvLoteRps.cMunicipio,
                                                  Empresas.Configuracoes[emp].UsuarioWS,
                                                  Empresas.Configuracoes[emp].SenhaWS,
                                                  ConfiguracaoApp.ProxyUsuario,
                                                  ConfiguracaoApp.ProxySenha,
                                                  ConfiguracaoApp.ProxyServidor);

                    consist.EmiteNF(NomeArquivoXML);
                    break;

                    #endregion Consist

                case PadroesNFSe.NOTAINTELIGENTE:

                    #region Nota Inteligente

                    wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado);

                    if (oDadosEnvLoteRps.tpAmb == 1)
                    {
                        //envLoteRps = new NFe.Components.PClaudioMG.api_portClient();
                    }
                    else
                    {
                        throw new Exception("Município de São Paulo-SP não dispõe de ambiente de homologação para envio de NFS-e em teste.");
                    }

                    #endregion Nota Inteligente

                    break;

                case PadroesNFSe.COPLAN:

                    #region Coplan

                    Coplan coplan = new Coplan((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                               Empresas.Configuracoes[emp].PastaXmlRetorno,
                                               oDadosEnvLoteRps.cMunicipio,
                                               ConfiguracaoApp.ProxyUsuario,
                                               ConfiguracaoApp.ProxySenha,
                                               ConfiguracaoApp.ProxyServidor,
                                               Empresas.Configuracoes[emp].X509Certificado);

                    AssinaturaDigital assCoplan = new AssinaturaDigital();
                    assCoplan.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio);

                    coplan.EmiteNF(NomeArquivoXML);
                    break;

                    #endregion Coplan

                case PadroesNFSe.FREIRE_INFORMATICA:
                    cabecMsg = "<cabecalho xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"2.02\"><versaoDados>2.02</versaoDados></cabecalho>";
                    break;

                case PadroesNFSe.MEMORY:

                    #region Memory

                    Memory memory = new Memory((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                               Empresas.Configuracoes[emp].PastaXmlRetorno,
                                               oDadosEnvLoteRps.cMunicipio,
                                               Empresas.Configuracoes[emp].UsuarioWS,
                                               Empresas.Configuracoes[emp].SenhaWS,
                                               ConfiguracaoApp.ProxyUsuario,
                                               ConfiguracaoApp.ProxySenha,
                                               ConfiguracaoApp.ProxyServidor);

                    AssinaturaDigital sigMem = new AssinaturaDigital();
                    sigMem.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio);

                    memory.EmiteNF(NomeArquivoXML);
                    break;

                    #endregion Memory

                case PadroesNFSe.CAMACARI_BA:
                    Servico = GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.CAMACARI_BA);

                    cabecMsg = "<cabecalho><versaoDados>2.01</versaoDados><versao>2.01</versao></cabecalho>";
                    break;

                case PadroesNFSe.CARIOCA:
                    Servico = GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.CARIOCA);
                    break;

                case PadroesNFSe.PRONIN:
                    if (oDadosEnvLoteRps.cMunicipio == 4109401 ||
                        oDadosEnvLoteRps.cMunicipio == 3131703 ||
                        oDadosEnvLoteRps.cMunicipio == 4303004)
                    {
                        Pronin pronin = new Pronin((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                                   Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                   oDadosEnvLoteRps.cMunicipio,
                                                   ConfiguracaoApp.ProxyUsuario,
                                                   ConfiguracaoApp.ProxySenha,
                                                   ConfiguracaoApp.ProxyServidor,
                                                   Empresas.Configuracoes[emp].X509Certificado);

                        AssinaturaDigital assPronin = new AssinaturaDigital();
                        assPronin.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio);

                        pronin.EmiteNF(NomeArquivoXML);
                    }
                    break;

                case PadroesNFSe.EGOVERNEISS:

                    #region EGoverne ISS

                    EGoverneISS egoverneiss = new EGoverneISS((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                                              Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                              oDadosEnvLoteRps.cMunicipio,
                                                              Empresas.Configuracoes[emp].UsuarioWS,
                                                              Empresas.Configuracoes[emp].SenhaWS,
                                                              ConfiguracaoApp.ProxyUsuario,
                                                              ConfiguracaoApp.ProxySenha,
                                                              ConfiguracaoApp.ProxyServidor);

                    egoverneiss.EmiteNF(NomeArquivoXML);
                    break;

                    #endregion EGoverne ISS

                case PadroesNFSe.SUPERNOVA:
                    Servico = GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.SUPERNOVA);
                    break;

                case PadroesNFSe.MARINGA_PR:
                    Servico = GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.MARINGA_PR);
                    break;

                case PadroesNFSe.BAURU_SP:

                    #region BAURU_SP

                    Bauru_SP bauru_SP = new Bauru_SP((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                                     Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                     oDadosEnvLoteRps.cMunicipio);
                    bauru_SP.EmiteNF(NomeArquivoXML);
                    break;

                    #endregion BAURU_SP

                    #region Tinus
                case PadroesNFSe.TINUS:
                    Tinus tinus = new Tinus((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                            Empresas.Configuracoes[emp].PastaXmlRetorno,
                                            oDadosEnvLoteRps.cMunicipio,
                                            ConfiguracaoApp.ProxyUsuario,
                                            ConfiguracaoApp.ProxySenha,
                                            ConfiguracaoApp.ProxyServidor,
                                            Empresas.Configuracoes[emp].X509Certificado);

                    AssinaturaDigital tinusAss = new AssinaturaDigital();
                    tinusAss.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio);

                    tinus.EmiteNF(NomeArquivoXML);
                    break;

                    #endregion Tinus

                    #region SOFTPLAN
                case PadroesNFSe.SOFTPLAN:
                    SOFTPLAN softplan = new SOFTPLAN((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                                     Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                     Empresas.Configuracoes[emp].UsuarioWS,
                                                     Empresas.Configuracoes[emp].SenhaWS,
                                                     Empresas.Configuracoes[emp].ClientID,
                                                     Empresas.Configuracoes[emp].ClientSecret);

                    AssinaturaDigital softplanAssinatura = new AssinaturaDigital();
                    softplanAssinatura.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio);

                    // Validar o Arquivo XML
                    ValidarXML softplanValidar = new ValidarXML(NomeArquivoXML, Empresas.Configuracoes[emp].UnidadeFederativaCodigo, false);
                    string     validacao       = softplanValidar.ValidarArqXML(NomeArquivoXML);
                    if (validacao != "")
                    {
                        throw new Exception(validacao);
                    }

                    if (ConfiguracaoApp.Proxy)
                    {
                        softplan.Proxy = Proxy.DefinirProxy(ConfiguracaoApp.ProxyServidor, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyPorta);
                    }

                    AssinaturaDigital softplanAss = new AssinaturaDigital();
                    softplanAss.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio, AlgorithmType.Sha256);

                    softplan.EmiteNF(NomeArquivoXML);
                    break;
                    #endregion SOFTPLAN

                case PadroesNFSe.INTERSOL:
                    cabecMsg = "<?xml version=\"1.0\" encoding=\"utf-8\"?><p:cabecalho versao=\"1\" xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\" xmlns:p=\"http://ws.speedgov.com.br/cabecalho_v1.xsd\" xmlns:p1=\"http://ws.speedgov.com.br/tipos_v1.xsd\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://ws.speedgov.com.br/cabecalho_v1.xsd cabecalho_v1.xsd \"><versaoDados>1</versaoDados></p:cabecalho>";
                    break;
                }

                if (IsInvocar(padraoNFSe, Servico, oDadosEnvLoteRps.cMunicipio))
                {
                    //Assinar o XML
                    AssinaturaDigital ad = new AssinaturaDigital();
                    ad.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio);

                    //Invocar o método que envia o XML para o SEFAZ
                    oInvocarObj.InvocarNFSe(wsProxy, envLoteRps, NomeMetodoWS(Servico, oDadosEnvLoteRps.cMunicipio), cabecMsg, this,
                                            Propriedade.Extensao(Propriedade.TipoEnvio.EnvLoteRps).EnvioXML,
                                            Propriedade.Extensao(Propriedade.TipoEnvio.EnvLoteRps).RetornoXML,
                                            padraoNFSe, Servico, securityProtocolType);

                    ///
                    /// grava o arquivo no FTP
                    string filenameFTP = Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                      Functions.ExtrairNomeArq(NomeArquivoXML,
                                                                               Propriedade.Extensao(Propriedade.TipoEnvio.EnvLoteRps).EnvioXML) + "\\" + Propriedade.Extensao(Propriedade.TipoEnvio.EnvLoteRps).RetornoXML);
                    if (File.Exists(filenameFTP))
                    {
                        new GerarXML(emp).XmlParaFTP(emp, filenameFTP);
                    }
                }
            }
            catch (Exception ex)
            {
                try
                {
                    //Gravar o arquivo de erro de retorno para o ERP, caso ocorra
                    TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.EnvLoteRps).EnvioXML, Propriedade.ExtRetorno.RetEnvLoteRps_ERR, ex);
                }
                catch
                {
                    //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada.
                    //Wandrey 31/08/2011
                }
            }
            finally
            {
                try
                {
                    Functions.DeletarArquivo(NomeArquivoXML);
                }
                catch
                {
                    //Se falhou algo na hora de deletar o XML de cancelamento de NFe, infelizmente
                    //não posso fazer mais nada, o UniNFe vai tentar mandar o arquivo novamente para o webservice, pois ainda não foi excluido.
                    //Wandrey 31/08/2011
                }
            }
        }
コード例 #10
0
        private void cmdInutilizar_Click(object sender, EventArgs e)
        {
            Cursor = Cursors.WaitCursor;

            string retValidar    = string.Empty;
            string retTransmitir = string.Empty;

            txtResultado.Text = string.Empty;

            GerarXML      geraxml    = new GerarXML();
            TransmitirXML transmitir = new TransmitirXML();
            ValidarXML    validarXml = new ValidarXML();
            AssinarXML    assinar    = new AssinarXML();
            StreamWriter  Grava;

            try
            {
                //Gerando xml
                xmlInut = geraxml.InutilizacaoNFe(Convert.ToInt32(txtNFInicial.Text), Convert.ToInt32(txtNFInicial.Text), p.serienfiscal, "Erro interno do sistema", p.modelo);

                //Assinando xml
                xmlInut_Assinado = assinar.AssinaXML(xmlInut.InnerXml, "infInut", Certificado.getInstance.oCertificado);
            }
            catch (Exception ex)
            {
                Log_Exception.Monta_ArquivoLog(ex);

                txtResultado.AppendText("Erro ao assinar XML: " + ex.Message + Environment.NewLine);
                txtResultado.ForeColor = Color.Maroon;
                this.Cursor            = Cursors.Default;
                return;
            }



            try
            {
                // Validando o XML
                retValidar = validarXml.Valida(xmlInut_Assinado, "Inut");
            }
            catch (Exception ex)
            {
                Log_Exception.Monta_ArquivoLog(ex);

                txtResultado.AppendText("Erro ao validar XML: " + ex.Message + Environment.NewLine);
                txtResultado.ForeColor = Color.Maroon;
                this.Cursor            = Cursors.Default;
                return;
            }


            if (retValidar == string.Empty)
            {
                try
                {
                    //Recebendo xml de retorno da transmissão
                    retTransmitir = transmitir.XML_InutilizacaoNFCe4(xmlInut_Assinado, Certificado.getInstance.oCertificado);


                    if (retTransmitir.Substring(0, 4) != "Erro")
                    {
                        XmlDocument retxml = new XmlDocument();
                        retxml.LoadXml(retTransmitir);

                        //Lote Processado
                        if (retxml.GetElementsByTagName("cStat")[0].InnerText == "102")
                        {
                            try
                            {
                                XMLDao xmlDao = new XMLDao();

                                p.xml.numdoc     = p.numdoc;
                                p.xml.data       = DateTime.Now;
                                p.xml.arquivoXML = retxml.InnerXml;
                                p.xml.Modelo     = p.modelo;
                                p.xml.statNFCe   = "102";

                                if (!string.IsNullOrEmpty(Controle.getInstance.caminho_XMLInutilizado))
                                {
                                    //Salvando o arquivo XML na pasta selecionada no FORM Parametros > aba Arquivos
                                    Grava = File.CreateText(Controle.getInstance.caminho_XMLInutilizado + @"\NOTA " + p.nfiscal + " - INUTILIZADA.xml");
                                    Grava.Write(p.xml.arquivoXML);
                                    Grava.Close();
                                }


                                //Atualizando o status do pedido para inutilizada
                                (new PedidoDao()).Update_StatNFCe_CondDoc(p.numdoc, "102");



                                using (var db = new Database("stringConexao"))
                                {
                                    try
                                    {
                                        db.BeginTransaction();

                                        foreach (PedidoItem pItem in p.lstPedidoItem)
                                        {
                                            db.Update("UPDATE produto " +
                                                      "SET Estoque = Estoque + " + pItem.qtditens * 1 +
                                                      ",ValorVnd = ValorVnd + " + (pItem.valitens * -1).ToString().Replace(",", ".") +
                                                      " WHERE CodPro = " + pItem.codpro);
                                        }

                                        //Boleta cancelada
                                        db.Update("UPDATE Boleta set condicao = 2 where numdoc = " + p.numdoc);


                                        db.CompleteTransaction();
                                    }
                                    catch (Exception)
                                    {
                                        db.AbortTransaction();
                                        MessageBox.Show("Houve um erro inesperado ao atualizar o estoque e cancelar as boletas, informe imediatamente ao administrador do sistema!", "Mensagem de erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                        return;
                                    }
                                }


                                txtResultado.AppendText("Nota Fiscal inutilizada com sucesso!");
                                txtResultado.ForeColor = Color.Green;
                            }
                            catch (Exception ex)
                            {
                                Log_Exception.Monta_ArquivoLog(ex);

                                txtResultado.AppendText("Nota Fiscal inutilizada com sucesso, porém houve um erro inesperado, informe ao administrador do sistema!");
                                txtResultado.ForeColor = Color.Maroon;
                            }
                        }
                        else
                        {
                            txtResultado.AppendText("Erro ao transmitir XML (002): " + retxml.GetElementsByTagName("xMotivo")[0].InnerText + Environment.NewLine);
                            txtResultado.ForeColor = Color.Maroon;
                        }
                    }
                    else
                    {
                        txtResultado.AppendText("Erro ao transmitir XML (001): " + retTransmitir + Environment.NewLine);
                        txtResultado.ForeColor = Color.Maroon;
                    }
                }
                catch (Exception ex)
                {
                    Log_Exception.Monta_ArquivoLog(ex);

                    txtResultado.AppendText("Erro ao finalizar XML: " + ex.Message + Environment.NewLine);
                    txtResultado.ForeColor = Color.Maroon;
                }
            }

            this.Cursor = Cursors.Default;
        }
コード例 #11
0
        // ========================================================================
        private bool Gera_NFCe(Pedido pedido)
        {
            var msg = new StringBuilder();

            XmlDocument xmlNFe          = new XmlDocument();
            XmlDocument xmlNFe_Assinado = new XmlDocument();

            GerarXML      gerarXml      = new GerarXML();
            AssinarXML    assinarXml    = new AssinarXML();
            ValidarXML    validarXml    = new ValidarXML();
            TransmitirXML transmitirXml = new TransmitirXML();
            Email         email         = new Email();
            XMLDao        xmlDao        = new XMLDao();

            StreamWriter Grava;

            string retValidar;
            string strProc;
            string strXmlProcNfe;
            string retTransmitir;
            string cStatus_LoteProcessado;
            string cStatus_Autorizado;

            int nPosI;
            int nPosF;

            try
            {
                retTransmitir = string.Empty;
                retValidar    = string.Empty;

                cStatus_LoteProcessado = string.Empty;
                cStatus_Autorizado     = string.Empty;

                try
                {
                    // Gerando o XML
                    xmlNFe = (gerarXml.NFe(pedido));

                    //MensagemSistema("Arquivo Gerado ...", Color.OliveDrab);

                    // Assinando o XML
                    xmlNFe_Assinado = assinarXml.AssinaXML(xmlNFe.InnerXml, "infNFe", Certificado.getInstance.oCertificado);
                }
                catch (Exception ex)
                {
                    MessageBox.Show("** Erro ao ASSINAR XML NFC-e, tente novamente **" + Environment.NewLine + ex.Message, "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return(false);
                }


                try
                {
                    // Validando o XML
                    retValidar = validarXml.Valida(xmlNFe_Assinado, "NFe");

                    //Inserindo a URL QRCode no xml já assinado
                    xmlNFe_Assinado.LoadXml(xmlNFe_Assinado.InnerXml.Replace("</infNFe>", "</infNFe><infNFeSupl><qrCode><![CDATA[" +
                                                                             gerarXml.Gera_Url_QRCode(xmlNFe_Assinado, pedido) + "]]></qrCode><urlChave>http://www4.fazenda.rj.gov.br/consultaNFCe/QRCode</urlChave></infNFeSupl>"));
                }
                catch (Exception ex)
                {
                    //Log_Exception.Monta_ArquivoLog(ex);
                    MessageBox.Show("** Erro ao VALIDAR XML NFC-e **" + Environment.NewLine + ex.Message, "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return(false);
                }

                if (retValidar == string.Empty)
                {
                    try
                    {
                        //MensagemSistema("Enviando a NFC-e", Color.OliveDrab);

                        // Recebendo o XML de retorno da transmissão
                        retTransmitir = transmitirXml.XML_NFCe4(xmlNFe_Assinado, pedido.nfiscal, Certificado.getInstance.oCertificado);

                        if (retTransmitir.Substring(0, 4) != "Erro")
                        {
                            XmlDocument xmlRetorno = new XmlDocument();
                            xmlRetorno.LoadXml(retTransmitir);

                            // Lote processado
                            if (xmlRetorno.GetElementsByTagName("cStat")[0].InnerText == "104")
                            {
                                // Autorizado
                                if (xmlRetorno.GetElementsByTagName("cStat")[1].InnerText == "100")
                                {
                                    try
                                    {
                                        //MensagemSistema("Autorizado o uso da NFC-e", Color.OliveDrab);

                                        pedido.chave     = xmlRetorno.GetElementsByTagName("chNFe")[0].InnerText;
                                        pedido.protocolo = xmlRetorno.GetElementsByTagName("nProt")[0].InnerText;

                                        // Separar somente o conteúdo a partir da tag <protNFe> até </protNFe>
                                        nPosI   = retTransmitir.IndexOf("<protNFe");
                                        nPosF   = retTransmitir.Length - (nPosI + 13);
                                        strProc = retTransmitir.Substring(nPosI, nPosF);

                                        // XML pronto para salvar
                                        strXmlProcNfe = @"<?xml version=""1.0"" encoding=""utf-8"" ?><nfeProc xmlns=""http://www.portalfiscal.inf.br/nfe"" versao=""4.0"">" + xmlNFe_Assinado.InnerXml + strProc + "</nfeProc>";

                                        pedido.xml = new XML
                                        {
                                            numdoc     = pedido.numdoc,
                                            arquivoXML = strXmlProcNfe,
                                            data       = DateTime.Now,
                                            Modelo     = pedido.modelo,
                                            statNFCe   = "100"
                                        };


                                        //Salva arquivo XML no Banco SQL (NFe)
                                        if (xmlDao.Grava_XML(pedido.xml))
                                        {
                                            // Atualizando o pedido com a Chave, Protocolo, e statNFCe
                                            if ((new PedidoDao()).Update_ChaveProtocolo_condDoc_StatNFCe(pedido.numdoc, pedido.chave, pedido.protocolo, pedido.xml.statNFCe))
                                            {
                                                if (GerarXML.str_Ambiente == "1")
                                                {
                                                    if (!string.IsNullOrEmpty(Controle.getInstance.caminho_XMLAutorizado))
                                                    {
                                                        //Salvando o arquivo XML na pasta
                                                        Grava = File.CreateText(Controle.getInstance.caminho_XMLAutorizado.Remove(Controle.getInstance.caminho_XMLAutorizado.Length - 1) + DateTime.Now.Month + @"\" + pedido.chave + "-procNfe.xml");
                                                        Grava.Write(pedido.xml.arquivoXML);
                                                        Grava.Close();
                                                    }
                                                }
                                            }
                                        }
                                    }
                                    catch (Exception ex)
                                    {
                                        MessageBox.Show("** NOTA EMITIDA **, mas houve um erro inesperado" + Environment.NewLine + ex.Message, "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                        return(false);
                                    }
                                }
                                else
                                {
                                    //MessageBox.Show("Erro ao Transmitir(004) XML NFC-e" + Environment.NewLine + xmlRetorno.GetElementsByTagName("xMotivo")[1].InnerText, "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Error);


                                    msg.Append("** NOTA EMITIDA **, mas houve um erro inesperado");
                                    msg.Append(Environment.NewLine);
                                    msg.Append(xmlRetorno.GetElementsByTagName("xMotivo")[1].InnerText);

                                    txtErro.Visible   = true;
                                    btnEmitir.Visible = true;

                                    txtErro.Text = msg.ToString();

                                    msg.Clear();

                                    return(false);
                                }
                            }
                            else
                            {
                                //MessageBox.Show("Erro ao Transmitir(003) XML NFC-e" + Environment.NewLine + xmlRetorno.GetElementsByTagName("xMotivo")[0].InnerText, "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Error);

                                msg.Append("** Erro ao Transmitir(003) XML NFC-e**");
                                msg.Append(Environment.NewLine);
                                msg.Append(xmlRetorno.GetElementsByTagName("xMotivo")[0].InnerText);

                                txtErro.Visible   = true;
                                btnEmitir.Visible = true;

                                txtErro.Text = msg.ToString();

                                msg.Clear();


                                return(false);
                            }
                        }
                        else
                        {
                            //MessageBox.Show("Erro ao Transmitir(002) XML NFC-e" + Environment.NewLine + retTransmitir, "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Error);

                            msg.Append("** Erro ao Transmitir(002) XML NFC-e **");
                            msg.Append(Environment.NewLine);
                            msg.Append(retTransmitir);

                            txtErro.Visible   = true;
                            btnEmitir.Visible = true;

                            txtErro.Text = msg.ToString();

                            msg.Clear();


                            return(false);
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Erro ao Transmitir(001) XML NFC-e" + Environment.NewLine + ex.Message, "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return(false);
                    }
                }
                else
                {
                    MessageBox.Show("Erro ao validar XML NFC-e" + Environment.NewLine + retValidar, "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return(false);
                }
            }
            catch (Exception ex)
            {
                Log_Exception.Monta_ArquivoLog(ex);
                MessageBox.Show("Ocorreu um erro inesperado, informe ao administrador do sistema!" + Environment.NewLine + ex.Message, "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(false);
            }

            return(true);
        }