Ejemplo n.º 1
0
        public override void Execute()
        {
            int emp = Empresas.FindEmpresaByThread();

            try
            {
                dadosPedSit = new DadosPedSit();
                //Ler o XML para pegar parâmetros de envio
                PedSit(emp, dadosPedSit);// NomeArquivoXML);

                //Definir o objeto do WebService
                WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, dadosPedSit.cUF, dadosPedSit.tpAmb, dadosPedSit.tpEmis);

                //Criar objetos das classes dos serviços dos webservices do SEFAZ
                object oConsulta = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);//NomeClasseWS(Servico, dadosPedSit.cUF));
                object oCabecMsg = wsProxy.CriarObjeto(NomeClasseCabecWS(dadosPedSit.cUF, Servico));

                //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg
                wsProxy.SetProp(oCabecMsg, NFe.Components.TpcnResources.cUF.ToString(), dadosPedSit.cUF.ToString());
                wsProxy.SetProp(oCabecMsg, NFe.Components.TpcnResources.versaoDados.ToString(), NFe.ConvertTxt.versoes.VersaoXMLMDFePedSit);

                //Invocar o método que envia o XML para o SEFAZ
                oInvocarObj.Invocar(wsProxy,
                                    oConsulta,
                                    wsProxy.NomeMetodoWS[0],//NomeMetodoWS(Servico, dadosPedSit.cUF),
                                    oCabecMsg, this);

                //Efetuar a leitura do retorno da situação para ver se foi autorizada ou não
                //Na versão 1 não posso gerar o -procNfe, ou vou ter que tratar a estrutura do XML de acordo com a versão, a consulta na versão 1 é somente para obter o resultado mesmo.
                LerRetornoSitMDFe(dadosPedSit.chNFe);

                //Gerar o retorno para o ERP
                oGerarXML.XmlRetorno(Propriedade.ExtEnvio.PedSit_XML, Propriedade.ExtRetorno.Sit_XML, this.vStrXmlRetorno);
            }
            catch (Exception ex)
            {
                try
                {
                    TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.ExtEnvio.PedSit_XML, Propriedade.ExtRetorno.Sit_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 09/03/2010
                }
            }
            finally
            {
                try
                {
                    Functions.DeletarArquivo(NomeArquivoXML);
                }
                catch
                {
                    //Se falhou algo na hora de deletar o XML de pedido da consulta da situação da NFe, infelizmente
                    //não posso fazser mais nada, o UniNFe vai tentar mantar o arquivo novamente para o webservice, pois ainda não foi excluido.
                    //Wandrey 22/03/2010
                }
            }
        }
        /// <summary>
        /// Executa o serviço solicitado
        /// </summary>
        public override void Execute()
        {
            int emp = Empresas.FindEmpresaByThread();

            try
            {
                dadosPedSta = new DadosPedSta();
                //Ler o XML para pegar parâmetros de envio
                PedSta(emp, dadosPedSta);

                //Definir o objeto do WebService
                WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, dadosPedSta.cUF, dadosPedSta.tpAmb, dadosPedSta.tpEmis, 0);
                System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(dadosPedSta.cUF, dadosPedSta.tpAmb, dadosPedSta.tpEmis, Servico);

                //Criar objetos das classes dos serviços dos webservices do SEFAZ
                var statusServico = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);
                var cabecMsg      = wsProxy.CriarObjeto(NomeClasseCabecWS(dadosPedSta.cUF, Servico));

                //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg
                wsProxy.SetProp(cabecMsg, TpcnResources.cUF.ToString(), dadosPedSta.cUF.ToString());
                wsProxy.SetProp(cabecMsg, TpcnResources.versaoDados.ToString(), dadosPedSta.versao);

                //Invocar o método que envia o XML para o SEFAZ
                oInvocarObj.Invocar(wsProxy, statusServico, wsProxy.NomeMetodoWS[0], cabecMsg, this,
                                    Propriedade.Extensao(Propriedade.TipoEnvio.PedSta).EnvioXML,
                                    Propriedade.Extensao(Propriedade.TipoEnvio.PedSta).RetornoXML,
                                    true,
                                    securityProtocolType);
            }
            catch (Exception ex)
            {
                try
                {
                    //Gravar o arquivo de erro de retorno para o ERP, caso ocorra
                    TFunctions.GravarArqErroServico(NomeArquivoXML,
                                                    Propriedade.Extensao(Propriedade.TipoEnvio.PedSta).EnvioXML,
                                                    Propriedade.ExtRetorno.Sta_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 09/03/2010
                }
            }
            finally
            {
                try
                {
                    //Deletar o arquivo de solicitação do serviço
                    Functions.DeletarArquivo(NomeArquivoXML);
                }
                catch
                {
                    //Se falhou algo na hora de deletar o XML de solicitação do serviço,
                    //infelizmente não posso fazer mais nada, o UniNFe vai tentar mandar
                    //o arquivo novamente para o webservice
                    //Wandrey 09/03/2010
                }
            }
        }
Ejemplo n.º 3
0
        public override void Execute()
        {
            int emp = Empresas.FindEmpresaByThread();

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

            try
            {
                #region Parte do código que envia o XML de pedido de consulta do recibo
                dadosPedRec = new DadosPedRecClass();
                PedRec(emp, NomeArquivoXML);

                //Definir o objeto do WebService
                WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, dadosPedRec.cUF, dadosPedRec.tpAmb, dadosPedRec.tpEmis);

                //Criar objetos das classes dos serviços dos webservices do SEFAZ
                var oRepRecepcao = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);//NomeClasseWS(Servico, dadosPedRec.cUF));
                var oCabecMsg    = wsProxy.CriarObjeto(NomeClasseCabecWS(dadosPedRec.cUF, Servico));

                //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg
                wsProxy.SetProp(oCabecMsg, NFe.Components.TpcnResources.cUF.ToString(), dadosPedRec.cUF.ToString());
                wsProxy.SetProp(oCabecMsg, NFe.Components.TpcnResources.versaoDados.ToString(), NFe.ConvertTxt.versoes.VersaoXMLMDFePedRec);

                //Invocar o método que envia o XML para o SEFAZ
                oInvocarObj.Invocar(wsProxy,
                                    oRepRecepcao,
                                    wsProxy.NomeMetodoWS[0],//NomeMetodoWS(Servico, dadosPedRec.cUF),
                                    oCabecMsg, this);
                #endregion

                #region Parte do código que trata o XML de retorno da consulta do recibo
                //Efetuar a leituras das notas do lote para ver se foi autorizada ou não
                LerRetornoLoteMDFe();

                //Gravar o XML retornado pelo WebService do SEFAZ na pasta de retorno para o ERP
                //Tem que ser feito neste ponto, pois somente aqui terminamos todo o processo
                //Wandrey 18/06/2009
                oGerarXML.XmlRetorno(Propriedade.ExtEnvio.PedRec_XML, Propriedade.ExtRetorno.ProRec_XML, vStrXmlRetorno);
                #endregion
            }
            catch (Exception ex)
            {
                try
                {
                    TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.ExtEnvio.PedRec_XML, Propriedade.ExtRetorno.ProRec_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.
                    //Pois ocorreu algum erro de rede, hd, permissão das pastas, etc. Wandrey 22/03/2010
                }
            }
            finally
            {
                //Deletar o arquivo de solicitação do serviço
                Functions.DeletarArquivo(NomeArquivoXML);
            }
        }
Ejemplo n.º 4
0
        public override void Execute()
        {
            int emp = Empresas.FindEmpresaByThread();

            try
            {
                dadosPedInut = new DadosPedInut(emp);
                PedInut(emp);

                //Definir o objeto do WebService
                WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, dadosPedInut.cUF, dadosPedInut.tpAmb, dadosPedInut.tpEmis, 0);
                System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(dadosPedInut.cUF, dadosPedInut.tpAmb, dadosPedInut.tpEmis, Servico);

                //Criar objetos das classes dos serviços dos webservices do SEFAZ
                object oInutilizacao = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);//NomeClasseWS(Servico, dadosPedInut.cUF));
                object oCabecMsg     = wsProxy.CriarObjeto(NomeClasseCabecWS(dadosPedInut.cUF, Servico));

                //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg
                wsProxy.SetProp(oCabecMsg, TpcnResources.cUF.ToString(), dadosPedInut.cUF.ToString());
                wsProxy.SetProp(oCabecMsg, TpcnResources.versaoDados.ToString(), dadosPedInut.versao);

                //Criar objeto da classe de assinatura digita
                AssinaturaDigital oAD = new AssinaturaDigital();

                //Assinar o XML
                oAD.Assinar(ConteudoXML, emp, Convert.ToInt32(dadosPedInut.cUF));

                //Invocar o método que envia o XML para o SEFAZ
                oInvocarObj.Invocar(wsProxy,
                                    oInutilizacao,
                                    wsProxy.NomeMetodoWS[0],//NomeMetodoWS(Servico, dadosPedInut.cUF),
                                    oCabecMsg,
                                    this,
                                    Propriedade.Extensao(Propriedade.TipoEnvio.PedInu).EnvioXML,
                                    Propriedade.Extensao(Propriedade.TipoEnvio.PedInu).RetornoXML,
                                    true,
                                    securityProtocolType);

                //Ler o retorno do webservice
                this.LerRetornoInut();
            }
            catch (Exception ex)
            {
                try
                {
                    //Gravar o arquivo de erro de retorno para o ERP, caso ocorra
                    TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedInu).EnvioXML,
                                                    Propriedade.ExtRetorno.Inu_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 09/03/2010
                }
            }
        }
Ejemplo n.º 5
0
        public override void Execute()
        {
            int emp = Empresas.FindEmpresaByThread();

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

            try
            {
                dadosPedSta = new DadosPedSta();
                //Ler o XML para pegar parâmetros de envio
                PedSta(emp, dadosPedSta);//NomeArquivoXML);

                //Definir o objeto do WebService
                WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, dadosPedSta.cUF, dadosPedSta.tpAmb, dadosPedSta.tpEmis);

                //Criar objetos das classes dos serviços dos webservices do SEFAZ
                var oStatusServico = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);
                var oCabecMsg      = wsProxy.CriarObjeto(NomeClasseCabecWS(dadosPedSta.cUF, Servico, dadosPedSta.tpEmis));

                //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg
                wsProxy.SetProp(oCabecMsg, TpcnResources.cUF.ToString(), dadosPedSta.cUF.ToString());
                wsProxy.SetProp(oCabecMsg, NFe.Components.TpcnResources.versaoDados.ToString(), NFe.ConvertTxt.versoes.VersaoXMLCTeStatusServico);

                //Invocar o método que envia o XML para o SEFAZ
                oInvocarObj.Invocar(wsProxy, oStatusServico, wsProxy.NomeMetodoWS[0], oCabecMsg, this, "-ped-sta", "-sta");
            }
            catch (Exception ex)
            {
                try
                {
                    //Gravar o arquivo de erro de retorno para o ERP, caso ocorra
                    TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.ExtEnvio.PedSta_XML, Propriedade.ExtRetorno.Sta_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 09/03/2010
                }
            }
            finally
            {
                try
                {
                    //Deletar o arquivo de solicitação do serviço
                    Functions.DeletarArquivo(NomeArquivoXML);
                }
                catch
                {
                    //Se falhou algo na hora de deletar o XML de solicitação do serviço,
                    //infelizmente não posso fazer mais nada, o UniNFe vai tentar mandar
                    //o arquivo novamente para o webservice
                    //Wandrey 09/03/2010
                }
            }
        }
Ejemplo n.º 6
0
        public override void Execute(Empresa empresa)
        {
            //Definir o serviço que será executado para a classe
            Servico = Servicos.ConsultarURLNfse;

            oDadosPedURLNfse = new DadosPedSitNfse(empresa);
            //Ler o XML para pegar parâmetros de envio
            PedURLNfse(NomeArquivoXML);

            //Criar objetos das classes dos serviços dos webservices do SEFAZ
            WebServiceProxy wsProxy    = null;
            object          pedURLNfse = null;
            string          cabecMsg   = "";
            PadroesNFSe     padraoNFSe = Functions.PadraoNFSe(/*ler.*/ oDadosPedURLNfse.cMunicipio);

            switch (padraoNFSe)
            {
            case PadroesNFSe.ISSNET:
            case PadroesNFSe.GIF:
                wsProxy    = ConfiguracaoApp.DefinirWS(Servico, empresa, oDadosPedURLNfse.cMunicipio, oDadosPedURLNfse.tpAmb, oDadosPedURLNfse.tpEmis);
                pedURLNfse = wsProxy.CriarObjeto(NomeClasseWS(Servico, oDadosPedURLNfse.cMunicipio));
                break;

            default:
                throw new Exception("Não foi possível detectar o padrão da NFS-e.");
            }

            //Assinar o XML
            AssinaturaDigital ad = new AssinaturaDigital();

            ad.Assinar(NomeArquivoXML, empresa, Convert.ToInt32(oDadosPedURLNfse.cMunicipio));

            //Invocar o método que envia o XML para o SEFAZ
            oInvocarObj.InvocarNFSe(wsProxy, pedURLNfse, NomeMetodoWS(Servico, oDadosPedURLNfse.cMunicipio, empresa.tpAmb), cabecMsg, this, "-ped-urlnfse", "-urlnfse", padraoNFSe, Servico, empresa);
        }
Ejemplo n.º 7
0
        public override void Execute()
        {
            int emp = Empresas.FindEmpresaByThread();

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

                dadosXML = new DadosPedSitNfse(emp);

                //Criar objetos das classes dos serviços dos webservices do SEFAZ
                PadroesNFSe     padraoNFSe   = Functions.PadraoNFSe(dadosXML.cMunicipio);
                WebServiceProxy wsProxy      = null;
                object          pedSubstNfse = null;

                if (IsUtilizaCompilacaoWs(padraoNFSe))
                {
                    wsProxy      = ConfiguracaoApp.DefinirWS(Servico, emp, dadosXML.cMunicipio, dadosXML.tpAmb, dadosXML.tpEmis, padraoNFSe, dadosXML.cMunicipio);
                    pedSubstNfse = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);
                }
                string cabecMsg = "";

                switch (padraoNFSe)
                {
                case PadroesNFSe.AVMB_ASTEN:
                    Servico = GetTipoServicoSincrono(Servico, NomeArquivoXML, 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 (dadosXML.tpAmb == 2)
                    {
                        pedSubstNfse = new Components.HPelotasRS.INfseservice();
                    }
                    else
                    {
                        pedSubstNfse = 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.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;

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

                    pedSubstNfse = dadosXML.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, pedSubstNfse);
                    break;
#endif

                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;

                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.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;

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

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

                //Assinar o XML
                AssinaturaDigital ad = new AssinaturaDigital();
                ad.Assinar(NomeArquivoXML, emp, dadosXML.cMunicipio);

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

                ///
                /// grava o arquivo no FTP
                string filenameFTP = Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                  Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedSubstNfse).EnvioXML) +
                                                  Propriedade.Extensao(Propriedade.TipoEnvio.PedSubstNfse).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.PedSubstNfse).EnvioXML,
                                                    Propriedade.Extensao(Propriedade.TipoEnvio.PedSubstNfse).RetornoERR, 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.Extensao(Propriedade.TipoEnvio.PedSubstNfse).RetornoERR);
                }
            }
            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
                }
            }
        }
Ejemplo n.º 8
0
        public override void Execute()
        {
            int emp = Empresas.FindEmpresaByThread();

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

            try
            {
                Int32 tpAmb = Empresas.Configuracoes[emp].AmbienteCodigo;
                Int32 cUF   = Empresas.Configuracoes[emp].UnidadeFederativaCodigo;

                XmlDocument doc = new XmlDocument();
                doc.Load(this.NomeArquivoXML);
                foreach (XmlNode consSitNFeNode in doc.GetElementsByTagName("consMDFeNaoEnc"))
                {
                    XmlElement consSitNFeElemento = (XmlElement)consSitNFeNode;

                    tpAmb = Convert.ToInt32("0" + Functions.LerTag(consSitNFeElemento, NFe.Components.TpcnResources.tpAmb.ToString(), false));
                }

                //Definir o objeto do WebService
                WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, cUF, tpAmb);

                //Criar objetos das classes dos serviços dos webservices do SEFAZ
                var oServico = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);
                var cabecMsg = wsProxy.CriarObjeto(NomeClasseCabecWS(cUF, Servico));

                //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg
                wsProxy.SetProp(cabecMsg, NFe.Components.TpcnResources.cUF.ToString(), cUF.ToString());
                wsProxy.SetProp(cabecMsg, NFe.Components.TpcnResources.versaoDados.ToString(), NFe.ConvertTxt.versoes.VersaoXMLMDFeConsNaoEnc);

                //Invocar o método que envia o XML para o SEFAZ
                oInvocarObj.Invocar(wsProxy, oServico, wsProxy.NomeMetodoWS[0], cabecMsg, this,
                                    Propriedade.ExtEnvio.MDFeConsNaoEnc.Replace(".xml", ""),
                                    Propriedade.ExtRetorno.MDFeConsNaoEnc.Replace(".xml", ""));
            }
            catch (Exception ex)
            {
                try
                {
                    //Gravar o arquivo de erro de retorno para o ERP, caso ocorra
                    TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.ExtEnvio.MDFeConsNaoEnc, Propriedade.ExtRetorno.MDFeConsNaoEnc_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 09/03/2010
                }
            }
            finally
            {
                try
                {
                    //Deletar o arquivo de solicitação do serviço
                    Functions.DeletarArquivo(NomeArquivoXML);
                }
                catch
                {
                    //Se falhou algo na hora de deletar o XML de solicitação do serviço,
                    //infelizmente não posso fazer mais nada, o UniNFe vai tentar mandar
                    //o arquivo novamente para o webservice
                    //Wandrey 09/03/2010
                }
            }
        }
Ejemplo n.º 9
0
        public override void Execute()
        {
            int emp = Empresas.FindEmpresaByThread();

            try
            {
                dadosConsCad = new DadosConsCad();
                //Ler o XML para pegar parâmetros de envio
                ConsCad(NomeArquivoXML);

                if (this.vXmlNfeDadosMsgEhXML)  //danasa 12-9-2009
                {
                    //Definir o objeto do WebService
                    WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, dadosConsCad.cUF, dadosConsCad.tpAmb, (int)NFe.Components.TipoEmissao.teNormal, dadosConsCad.versao);

                    //Criar objetos das classes dos serviços dos webservices do SEFAZ
                    object oConsCad  = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);
                    object oCabecMsg = wsProxy.CriarObjeto(NomeClasseCabecWS(dadosConsCad.cUF, Servico));

                    //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg
                    wsProxy.SetProp(oCabecMsg, NFe.Components.TpcnResources.cUF.ToString(), dadosConsCad.cUF.ToString());
                    wsProxy.SetProp(oCabecMsg, NFe.Components.TpcnResources.versaoDados.ToString(), this.dadosConsCad.versao);

                    new AssinaturaDigital().CarregarPIN(emp, NomeArquivoXML, Servico);

                    //Invocar o método que envia o XML para o SEFAZ
                    oInvocarObj.Invocar(wsProxy,
                                        oConsCad,
                                        wsProxy.NomeMetodoWS[0],
                                        oCabecMsg,
                                        this,
                                        NFe.Components.Propriedade.ExtEnvio.ConsCad_XML.Replace(".xml", ""),
                                        NFe.Components.Propriedade.ExtRetorno.ConsCad_XML.Replace(".xml", ""));//"-cons-cad", "-ret-cons-cad");
                }
                else
                {
                    string f = Path.GetFileNameWithoutExtension(NomeArquivoXML) + ".xml";

                    if (NomeArquivoXML.IndexOf(Empresas.Configuracoes[emp].PastaValidar, StringComparison.InvariantCultureIgnoreCase) >= 0)
                    {
                        f = Path.Combine(Empresas.Configuracoes[emp].PastaValidar, f);
                    }
                    //Gerar o XML da consulta cadastro do contribuinte a partir do TXT gerado pelo ERP
                    GravarXml(f);
                }
            }
            catch (Exception ex)
            {
                string ExtRet = string.Empty;

                if (this.vXmlNfeDadosMsgEhXML) //Se for XML
                {
                    ExtRet = Propriedade.ExtEnvio.ConsCad_XML;
                }
                else //Se for TXT
                {
                    ExtRet = Propriedade.ExtEnvio.ConsCad_TXT;
                }

                try
                {
                    //Gravar o arquivo de erro de retorno para o ERP, caso ocorra
                    TFunctions.GravarArqErroServico(NomeArquivoXML, ExtRet, Propriedade.ExtRetorno.ConsCad_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 09/03/2010
                }
            }
            finally
            {
                try
                {
                    //Deletar o arquivo de solicitação do serviço
                    Functions.DeletarArquivo(NomeArquivoXML);
                }
                catch
                {
                    //Se falhou algo na hora de deletar o XML de solicitação do serviço,
                    //infelizmente não posso fazer mais nada, o UniNFe vai tentar mandar
                    //o arquivo novamente para o webservice
                    //Wandrey 09/03/2010
                }
            }
        }
Ejemplo n.º 10
0
        public override void Execute()
        {
            int emp = Empresas.FindEmpresaByThread();

            try
            {
                dadosPedSta = new DadosPedSta();
                //Ler o XML para pegar parâmetros de envio
                PedSta(emp, dadosPedSta);

                if (vXmlNfeDadosMsgEhXML)  //danasa 12-9-2009
                {
                    //Definir o objeto do WebService
                    WebServiceProxy wsProxy =
                        ConfiguracaoApp.DefinirWS(Servico,
                                                  emp,
                                                  dadosPedSta.cUF,
                                                  dadosPedSta.tpAmb,
                                                  dadosPedSta.tpEmis,
                                                  dadosPedSta.versao,
                                                  dadosPedSta.mod,
                                                  0);

                    System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(dadosPedSta.cUF, dadosPedSta.tpAmb, dadosPedSta.tpEmis, Servico);

                    //Criar objetos das classes dos serviços dos webservices do SEFAZ
                    var oStatusServico = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);

                    object oCabecMsg = null;
                    if (dadosPedSta.versao != "4.00")
                    {
                        oCabecMsg = wsProxy.CriarObjeto(NomeClasseCabecWS(dadosPedSta.cUF, Servico));
                        wsProxy.SetProp(oCabecMsg, TpcnResources.cUF.ToString(), dadosPedSta.cUF.ToString());
                        wsProxy.SetProp(oCabecMsg, TpcnResources.versaoDados.ToString(), dadosPedSta.versao);
                    }

                    new AssinaturaDigital().CarregarPIN(emp, NomeArquivoXML, Servico);

                    //Invocar o método que envia o XML para o SEFAZ
                    oInvocarObj.Invocar(wsProxy,
                                        oStatusServico,
                                        wsProxy.NomeMetodoWS[0],
                                        oCabecMsg, this,
                                        Propriedade.Extensao(Propriedade.TipoEnvio.PedSta).EnvioXML,
                                        Propriedade.Extensao(Propriedade.TipoEnvio.PedSta).RetornoXML,
                                        true,
                                        securityProtocolType);
                }
                else
                {
                    string f = Path.GetFileNameWithoutExtension(NomeArquivoXML) + ".xml";

                    if (NomeArquivoXML.IndexOf(Empresas.Configuracoes[emp].PastaValidar, StringComparison.InvariantCultureIgnoreCase) >= 0)
                    {
                        f = Path.Combine(Empresas.Configuracoes[emp].PastaValidar, f);
                    }
                    // Gerar o XML de solicitacao de situacao do servico a partir do TXT gerado pelo ERP
                    oGerarXML.StatusServicoNFe(f, dadosPedSta.tpAmb, dadosPedSta.tpEmis, dadosPedSta.cUF, dadosPedSta.versao);
                }
            }
            catch (Exception ex)
            {
                var extRet = vXmlNfeDadosMsgEhXML ? Propriedade.Extensao(Propriedade.TipoEnvio.PedSta).EnvioXML :
                             Propriedade.Extensao(Propriedade.TipoEnvio.PedSta).EnvioTXT;

                try
                {
                    //Gravar o arquivo de erro de retorno para o ERP, caso ocorra
                    TFunctions.GravarArqErroServico(NomeArquivoXML, extRet, Propriedade.ExtRetorno.Sta_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 09/03/2010
                }
            }
            finally
            {
                try
                {
                    //Deletar o arquivo de solicitação do serviço
                    Functions.DeletarArquivo(NomeArquivoXML);
                }
                catch
                {
                    //Se falhou algo na hora de deletar o XML de solicitação do serviço,
                    //infelizmente não posso fazer mais nada, o UniNFe vai tentar mandar
                    //o arquivo novamente para o webservice
                    //Wandrey 09/03/2010
                }
            }
        }
Ejemplo n.º 11
0
        public override void Execute()
        {
            switch (Servico)
            {
            case Servicos.DFeEnviar:
                ExtEnvioDFe      = Propriedade.Extensao(Propriedade.TipoEnvio.EnvDFe).EnvioXML;
                ExtEnvioDFeTXT   = Propriedade.Extensao(Propriedade.TipoEnvio.EnvDFe).EnvioTXT;
                ExtRetornoDFe    = Propriedade.Extensao(Propriedade.TipoEnvio.EnvDFe).RetornoXML;
                ExtRetEnvDFe_ERR = Propriedade.ExtRetorno.retEnvDFe_ERR;
                break;

            case Servicos.CTeDistribuicaoDFe:
                ExtEnvioDFe      = Propriedade.Extensao(Propriedade.TipoEnvio.EnvDFeCTe).EnvioXML;
                ExtEnvioDFeTXT   = Propriedade.Extensao(Propriedade.TipoEnvio.EnvDFeCTe).EnvioTXT;
                ExtRetornoDFe    = Propriedade.Extensao(Propriedade.TipoEnvio.EnvDFeCTe).RetornoXML;
                ExtRetEnvDFe_ERR = Propriedade.ExtRetorno.retEnvDFeCTe_ERR;
                break;
            }

            int        emp         = Empresas.FindEmpresaByThread();
            distDFeInt _distDFeInt = new distDFeInt();

            try
            {
                if (!this.vXmlNfeDadosMsgEhXML)
                {
                    ///versao|1.00
                    ///tpAmb|1
                    ///cUFAutor|35
                    ///CNPJ|
                    /// ou
                    ///CPF|
                    ///ultNSU|123456789012345
                    /// ou
                    ///NSU|123456789012345
                    List <string> cLinhas = Functions.LerArquivo(NomeArquivoXML);
                    Functions.PopulateClasse(_distDFeInt, cLinhas);

                    string f = Path.GetFileNameWithoutExtension(NomeArquivoXML) + ".xml";

                    if (NomeArquivoXML.IndexOf(Empresas.Configuracoes[emp].PastaValidar, StringComparison.InvariantCultureIgnoreCase) >= 0)
                    {
                        f = Path.Combine(Empresas.Configuracoes[emp].PastaValidar, f);
                    }
                    // Gerar o XML de envio de DFe a partir do TXT gerado pelo ERP
                    oGerarXML.RecepcaoDFe(f, _distDFeInt);
                }
                else
                {
                    XmlNodeList consdistDFeIntList = ConteudoXML.GetElementsByTagName("distDFeInt");

                    foreach (XmlNode consdistDFeIntNode in consdistDFeIntList)
                    {
                        XmlElement consdistDFeIntElemento = (XmlElement)consdistDFeIntNode;
                        Functions.PopulateClasse(_distDFeInt, consdistDFeIntElemento);
                    }

                    //Definir o objeto do WebService
                    WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servico,
                                                                        emp,
                                                                        991,
                                                                        _distDFeInt.tpAmb, 0);

                    System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(991, _distDFeInt.tpAmb, 1, Servico);

                    object oConsNFDestEvento = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);

                    //Invocar o método que envia o XML para o SEFAZ
                    oInvocarObj.Invocar(wsProxy,
                                        oConsNFDestEvento,
                                        wsProxy.NomeMetodoWS[0],
                                        null,
                                        this,
                                        ExtEnvioDFe,
                                        ExtRetornoDFe,
                                        true,
                                        securityProtocolType);

                    LeRetornoDFe(emp, ConteudoXML);
                }
            }
            catch (Exception ex)
            {
                WriteLogError(ex);
            }
            finally
            {
                try
                {
                    //Deletar o arquivo de solicitação do serviço
                    Functions.DeletarArquivo(NomeArquivoXML);
                }
                catch
                {
                }
            }
        }
Ejemplo n.º 12
0
        public override void Execute()
        {
            int emp = Empresas.FindEmpresaByThread();

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

                int tpEmis    = Empresas.Configuracoes[emp].tpEmis;
                int tpAmb     = Empresas.Configuracoes[emp].AmbienteCodigo;
                int municipio = Empresas.Configuracoes[emp].UnidadeFederativaCodigo;

                PadroesNFSe     padraoNFSe            = Functions.PadraoNFSe(municipio);
                WebServiceProxy wsProxy               = null;
                object          consDadosCadastroCfse = null;

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

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

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

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

                    ///
                    /// grava o arquivo no FTP
                    string filenameFTP = Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                      Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.ConsDadosCadCFSe).EnvioXML) + Propriedade.Extensao(Propriedade.TipoEnvio.ConsDadosCadCFSe).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.ConsDadosCadCFSe).EnvioXML, Propriedade.Extensao(Propriedade.TipoEnvio.ConsDadosCadCFSe).RetornoERR, 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
                }
            }
        }
Ejemplo n.º 13
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.EmiteNF(NomeArquivoXML, true);

                    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.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>";
                    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:
                    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);
                    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.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)
                    {
                        pedCanNfse = 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.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.ELOTECH:

                    #region EloTech

                    EloTech elotech = new EloTech((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);

                    elotech.CancelarNfse(NomeArquivoXML);
                    break;

                    #endregion EloTech

                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 = @"
                                    <![CDATA[<?xml version=""1.0""?> <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.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,
                                               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)
                    {
                        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;

                    #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

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

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

                    softplan.CancelarNfse(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, 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)
            {
                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
                }
            }
            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
                }
            }
        }
Ejemplo n.º 14
0
        public override void Execute()
        {
            int emp = Empresas.FindEmpresaByThread();

            try
            {
                oDadosenvDownload = new DadosenvDownload();
                EnvDownloadNFe(emp, NomeArquivoXML);

                if (vXmlNfeDadosMsgEhXML)
                {
                    //Definir o objeto do WebService
                    WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, Convert.ToInt32(oDadosenvDownload.chNFe.Substring(0, 2)), oDadosenvDownload.tpAmb, 0);
                    System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(Convert.ToInt32(oDadosenvDownload.chNFe.Substring(0, 2)), oDadosenvDownload.tpAmb, (int)TipoEmissao.teNormal, Servico);

                    //Criar objetos das classes dos serviços dos webservices do SEFAZ
                    object oDownloadEvento = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);
                    object oCabecMsg       = wsProxy.CriarObjeto(NomeClasseCabecWS(Convert.ToInt32(oDadosenvDownload.chNFe.Substring(0, 2)), Servico));

                    //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg
                    wsProxy.SetProp(oCabecMsg, TpcnResources.cUF.ToString(), oDadosenvDownload.chNFe.Substring(0, 2));
                    wsProxy.SetProp(oCabecMsg, TpcnResources.versaoDados.ToString(), ConvertTxt.versoes.VersaoXMLEnvDownload);

                    //Invocar o método que envia o XML para o SEFAZ
                    oInvocarObj.Invocar(wsProxy,
                                        oDownloadEvento,
                                        wsProxy.NomeMetodoWS[0],
                                        oCabecMsg,
                                        this,
                                        Propriedade.Extensao(Propriedade.TipoEnvio.EnvDownload).EnvioXML,
                                        Propriedade.Extensao(Propriedade.TipoEnvio.EnvDownload).RetornoXML,
                                        false,
                                        securityProtocolType);
                    //Ler o retorno
                    LerRetornoDownloadNFe(emp);

                    //Gravar o xml de retorno para o ERP. Não pode gravar antes de extrair os downloads, para que o ERP saiba quando realmente terminou. Wandrey 03/04/2013
                    oGerarXML.XmlRetorno(Propriedade.Extensao(Propriedade.TipoEnvio.EnvDownload).EnvioXML,
                                         Propriedade.Extensao(Propriedade.TipoEnvio.EnvDownload).RetornoXML, vStrXmlRetorno);
                }
                else
                {
                    // Gerar o XML de eventos a partir do TXT gerado pelo ERP
                    oGerarXML.EnvioDownloadNFe(Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.EnvDownload).EnvioTXT) +
                                               Propriedade.Extensao(Propriedade.TipoEnvio.EnvDownload).EnvioXML, oDadosenvDownload);
                }
            }
            catch (Exception ex)
            {
                try
                {
                    var ExtRet = vXmlNfeDadosMsgEhXML ? Propriedade.Extensao(Propriedade.TipoEnvio.EnvDownload).EnvioXML :
                                 Propriedade.Extensao(Propriedade.TipoEnvio.EnvDownload).EnvioTXT;
                    //Gravar o arquivo de erro de retorno para o ERP, caso ocorra
                    TFunctions.GravarArqErroServico(NomeArquivoXML, ExtRet, Propriedade.ExtRetorno.retDownload_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 09/03/2010
                }
            }
            finally
            {
                try
                {
                    Functions.DeletarArquivo(NomeArquivoXML);
                }
                catch
                {
                    //Se falhou algo na hora de deletar o XML de evento, 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 09/03/2010
                }
            }
        }
Ejemplo n.º 15
0
        public override void Execute()
        {
            int emp = Empresas.FindEmpresaByThread();

            ///
            /// extensao permitida: PedSitNfseRps = "-ped-sitnfserps.xml";
            ///
            /// Definir o serviço que será executado para a classe
            Servico = Servicos.NFSeConsultarPorRps;

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

                //Ler o XML para pegar parâmetros de envio
                LerXML ler = new LerXML();
                ler.PedSitNfseRps(NomeArquivoXML);

                //Criar objetos das classes dos serviços dos webservices do SEFAZ
                PadroesNFSe     padraoNFSe = Functions.PadraoNFSe(ler.oDadosPedSitNfseRps.cMunicipio);
                WebServiceProxy wsProxy    = null;
                object          pedLoteRps = null;
                if (IsUtilizaCompilacaoWs(padraoNFSe, Servico, ler.oDadosPedSitNfseRps.cMunicipio))
                {
                    wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, ler.oDadosPedSitNfseRps.cMunicipio, ler.oDadosPedSitNfseRps.tpAmb, ler.oDadosPedSitNfseRps.tpEmis, padraoNFSe, ler.oDadosPedSitNfseRps.cMunicipio);
                    if (wsProxy != null)
                    {
                        pedLoteRps = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);
                    }
                }

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

                string cabecMsg = "";
                switch (padraoNFSe)
                {
                case PadroesNFSe.GINFES:
                    switch (ler.oDadosPedSitNfseRps.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

                    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,
                                                                                                        ler.oDadosPedSitNfseRps.cMunicipio,
                                                                                                        Empresas.Configuracoes[emp].UsuarioWS,
                                                                                                        Empresas.Configuracoes[emp].SenhaWS,
                                                                                                        ConfiguracaoApp.ProxyUsuario,
                                                                                                        ConfiguracaoApp.ProxySenha,
                                                                                                        ConfiguracaoApp.ProxyServidor);

                        betha.ConsultarNfsePorRps(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.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.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.IIBRASIL:
                    cabecMsg = "<cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"2.04\"><versaoDados>2.04</versaoDados></cabecalho>";
                    break;

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

                    fiorilli.ConsultarNfsePorRps(NomeArquivoXML);
                    break;

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

                    simpliss.ConsultarNfsePorRps(NomeArquivoXML);
                    break;

                case PadroesNFSe.EGOVERNE:

                    #region E-Governe

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

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

                    egoverne.ConsultarNfsePorRps(NomeArquivoXML);

                    #endregion E-Governe

                    break;

                case PadroesNFSe.EL:

                    #region E&L

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

                    el.ConsultarNfsePorRps(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,
                                                       ler.oDadosPedSitNfseRps.cMunicipio,
                                                       ConfiguracaoApp.ProxyUsuario,
                                                       ConfiguracaoApp.ProxySenha,
                                                       ConfiguracaoApp.ProxyServidor);

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

                    govdig.ConsultarNfsePorRps(NomeArquivoXML);
                    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 versao=\"2.01\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"<versaoDados>2.01</versaoDados></cabecalho>";
                    break;

                case PadroesNFSe.FISSLEX:
                    FISSLEX fisslex = new FISSLEX((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                                  Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                  ler.oDadosPedSitNfseRps.cMunicipio,
                                                  Empresas.Configuracoes[emp].UsuarioWS,
                                                  Empresas.Configuracoes[emp].SenhaWS,
                                                  ConfiguracaoApp.ProxyUsuario,
                                                  ConfiguracaoApp.ProxySenha,
                                                  ConfiguracaoApp.ProxyServidor);

                    fisslex.ConsultarNfsePorRps(NomeArquivoXML);
                    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.CONAM:
                    throw new NFe.Components.Exceptions.ServicoInexistenteException();

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

                    if (ler.oDadosPedSitNfseRps.tpAmb == 1)
                    {
                        pedLoteRps = 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.");
                    }

                    break;

                case PadroesNFSe.METROPOLIS:

                    #region METROPOLIS

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

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

                    metropolis.ConsultarNfsePorRps(NomeArquivoXML);
                    break;

                    #endregion METROPOLIS

                case PadroesNFSe.MEMORY:

                    #region Memory

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

                    memory.ConsultarNfsePorRps(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 (ler.oDadosPedSitNfseRps.tpAmb == 1)
                    //    pedLoteRps = new Components.PCorumbaMS.NfseWSService();
                    //else
                    //    pedLoteRps = new Components.HCorumbaMS.NfseWSService();

                    break;

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

                    if (ler.oDadosPedSitNfseRps.tpAmb == 1)
                    {
                        switch (ler.oDadosPedSitNfseRps.cMunicipio)
                        {
                        case 5211800:
                            pedLoteRps = new Components.PJaraguaGO.nfseWS();
                            break;

                        case 5220454:
                            pedLoteRps = new Components.PSenadorCanedoGO.nfseWS();
                            break;
                        }
                    }
                    else
                    {
                        throw new Exception("Este município não dispõe de ambiente de homologação para envio de NFS-e em teste.");
                    }
                    break;

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

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

                        pronin.ConsultarNfsePorRps(NomeArquivoXML);
                    }
                    break;

                case PadroesNFSe.COPLAN:
                    Coplan coplan = new Coplan((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                               Empresas.Configuracoes[emp].PastaXmlRetorno,
                                               ler.oDadosPedSitNfseRps.cMunicipio,
                                               ConfiguracaoApp.ProxyUsuario,
                                               ConfiguracaoApp.ProxySenha,
                                               ConfiguracaoApp.ProxyServidor,
                                               Empresas.Configuracoes[emp].X509Certificado);

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

                    coplan.ConsultarNfsePorRps(NomeArquivoXML);
                    break;

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

                    tinus.ConsultarNfsePorRps(NomeArquivoXML);
                    break;

                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.MANAUS_AM:
                    cabecMsg = "<cabecalho versao=\"201001\"><versaoDados>V2010</versaoDados></cabecalho>";
                    break;

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

                    if (ler.oDadosPedSitNfseRps.tpAmb == 2)
                    {
                        pedLoteRps = new Components.HJoinvilleSC.Servicos();
                    }
                    else
                    {
                        pedLoteRps = 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 (ler.oDadosPedSitNfseRps.tpAmb == 2)
                    {
                        pedLoteRps = new Components.HPelotasRS.INfseservice();
                    }
                    else
                    {
                        pedLoteRps = 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);

                    pedLoteRps = ler.oDadosPedSitNfseRps.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, pedLoteRps);
                    break;
#endif

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

                case PadroesNFSe.MEGASOFT:
                    cabecMsg = "<cabecalho versao=\"1.00\" xmlns=\"http://megasoftarrecadanet.com.br/xsd/nfse_v01.xsd\"><versaoDados>1.00</versaoDados></cabecalho>";
                    break;

                case PadroesNFSe.SIMPLE:

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

                    simple.ConsultarNfsePorRps(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.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.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;

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

                case PadroesNFSe.VERSATECNOLOGIA:

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

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

                    versa.ConsultarNfsePorRps(NomeArquivoXML);
                    break;
                }

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

                    //Invocar o método que envia o XML para o SEFAZ
                    oInvocarObj.InvocarNFSe(wsProxy, pedLoteRps, NomeMetodoWS(Servico, ler.oDadosPedSitNfseRps.cMunicipio), cabecMsg, this,
                                            Propriedade.Extensao(Propriedade.TipoEnvio.PedSitNFSeRps).EnvioXML,   //"-ped-sitnfserps",
                                            Propriedade.Extensao(Propriedade.TipoEnvio.PedSitNFSeRps).RetornoXML, //"-sitnfserps",
                                            padraoNFSe, Servico, securityProtocolType);

                    ///
                    /// grava o arquivo no FTP
                    string filenameFTP = Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                      Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedSitNFSeRps).EnvioXML) + Propriedade.Extensao(Propriedade.TipoEnvio.PedSitNFSeRps).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.PedSitNFSeRps).EnvioXML, Propriedade.ExtRetorno.SitNfseRps_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.SitNfseRps_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
                }
            }
        }
Ejemplo n.º 16
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
                }
            }
        }
Ejemplo n.º 17
0
        public override void Execute()
        {
            int emp = Empresas.FindEmpresaByThread();

            try
            {
                //Ler o XML para pegar parâmetros de envio
                EnvEvento(emp, dadosEnvEvento);

                string currentEvento = dadosEnvEvento.eventos[0].tpEvento;
                // mudei para aqui caso haja erro e qdo for gravar o arquivo de erro precisamos saber qual o servico
                switch (NFe.Components.EnumHelper.StringToEnum <NFe.ConvertTxt.tpEventos>(currentEvento))
                {
                case ConvertTxt.tpEventos.tpEvCancelamentoNFe:
                    Servico = Servicos.EventoCancelamento;
                    break;

                case ConvertTxt.tpEventos.tpEvCCe:
                    Servico = Servicos.EventoCCe;
                    break;

                case ConvertTxt.tpEventos.tpEvEPEC:
                    Servico = Servicos.EventoEPEC;
                    break;

                case ConvertTxt.tpEventos.tpEvPedProrrogacao_ICMS_1:
                case ConvertTxt.tpEventos.tpEvPedProrrogacao_ICMS_2:
                case ConvertTxt.tpEventos.tpEvCancPedProrrogacao_ICMS_1:
                case ConvertTxt.tpEventos.tpEvCancPedProrrogacao_ICMS_2:
                case ConvertTxt.tpEventos.tpEvFiscoRespCancPedProrrogacao_ICMS_1:
                case ConvertTxt.tpEventos.tpEvFiscoRespCancPedProrrogacao_ICMS_2:
                case ConvertTxt.tpEventos.tpEvFiscoRespPedProrrogacao_ICMS_1:
                case ConvertTxt.tpEventos.tpEvFiscoRespPedProrrogacao_ICMS_2:
                    Servico = Servicos.EventoRecepcao;
                    break;

                default:
                    Servico = Servicos.EventoManifestacaoDest;
                    break;
                }
                ValidaEvento(emp, dadosEnvEvento);

                //Pegar o estado da chave, pois na cOrgao pode vir o estado 91 - Wandreuy 22/08/2012
                int cOrgao = dadosEnvEvento.eventos[0].cOrgao;
                //vai pegar o ambiente da Chave da Nfe autorizada p/ corrigir tpEmis
                int tpEmis   = this.dadosEnvEvento.eventos[0].tpEmis; //Convert.ToInt32(this.dadosEnvEvento.eventos[0].chNFe.Substring(34, 1));
                int ufParaWS = cOrgao;

                //Se o cOrgao for igual a 91 tenho que mudar a ufParaWS para que na hora de buscar o WSDL para conectar ao serviço, ele consiga encontrar. Wandrey 23/01/2013
                if (cOrgao == 91)
                {
                    ufParaWS = Convert.ToInt32(dadosEnvEvento.eventos[0].chNFe.Substring(0, 2));
                }

                switch (Servico)
                {
                case Servicos.EventoCancelamento:
                    switch ((NFe.Components.TipoEmissao)tpEmis)
                    {
                    case NFe.Components.TipoEmissao.teSVCAN:
                    case NFe.Components.TipoEmissao.teSVCRS:
                    case NFe.Components.TipoEmissao.teSVCSP:
                    case NFe.Components.TipoEmissao.teNormal:
                        //Se a nota fiscal foi emitida em ambiente NORMAL, o cancelamento tem que ir para o ambiente normal ou gera uma rejeição. Wandrey 15/02/2013
                        break;

                    default:
                        //Os demais tipos de emissão tem que sempre ir para o ambiente NORMAL. Wandrey 22/02/2013
                        tpEmis = (int)NFe.Components.TipoEmissao.teNormal;
                        break;
                    }
                    break;

                case Servicos.EventoCCe:
                    //CCe só existe no ambiente Normal. Wandrey 22/04/2013
                    tpEmis = (int)NFe.Components.TipoEmissao.teNormal;
                    break;
                }

                if (vXmlNfeDadosMsgEhXML)
                {
                    //Definir o objeto do WebService
                    WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(
                        Servico,
                        emp,
                        ufParaWS,
                        dadosEnvEvento.eventos[0].tpAmb,
                        tpEmis,
                        string.Empty,
                        dadosEnvEvento.eventos[0].mod);
                    System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(ufParaWS, dadosEnvEvento.eventos[0].tpAmb, tpEmis, PadroesNFSe.NaoIdentificado, Servico);

                    //Criar objetos das classes dos serviços dos webservices do SEFAZ
                    object oRecepcaoEvento = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);
                    object oCabecMsg       = wsProxy.CriarObjeto(NomeClasseCabecWS(cOrgao, Servico));
                    string xmlExtEnvio     = string.Empty;
                    string xmlExtRetorno   = string.Empty;

                    wsProxy.SetProp(oCabecMsg, NFe.Components.TpcnResources.cUF.ToString(), cOrgao.ToString());
                    wsProxy.SetProp(oCabecMsg, NFe.Components.TpcnResources.versaoDados.ToString(), NFe.ConvertTxt.versoes.VersaoXMLEvento);

                    if (novaNomenclatura)
                    {
                        xmlExtEnvio   = Propriedade.Extensao(Propriedade.TipoEnvio.PedEve).EnvioXML.Replace(".xml", "");
                        xmlExtRetorno = Propriedade.Extensao(Propriedade.TipoEnvio.PedEve).RetornoXML.Replace(".xml", "");
                    }
                    else
                    {
                        switch (Servico)
                        {
                        case Servicos.EventoCCe:
                            xmlExtEnvio   = Propriedade.Extensao(Propriedade.TipoEnvio.EnvCCe).EnvioXML.Replace(".xml", "");
                            xmlExtRetorno = Propriedade.Extensao(Propriedade.TipoEnvio.EnvCCe).RetornoXML.Replace(".xml", "");
                            break;

                        case Servicos.EventoCancelamento:
                            xmlExtEnvio   = Propriedade.Extensao(Propriedade.TipoEnvio.EnvCancelamento).EnvioXML.Replace(".xml", "");
                            xmlExtRetorno = Propriedade.Extensao(Propriedade.TipoEnvio.EnvCancelamento).RetornoXML.Replace(".xml", "");
                            break;

                        default:
                            xmlExtEnvio   = Propriedade.Extensao(Propriedade.TipoEnvio.EnvManifestacao).EnvioXML.Replace(".xml", "");
                            xmlExtRetorno = Propriedade.Extensao(Propriedade.TipoEnvio.EnvManifestacao).RetornoXML.Replace(".xml", "");
                            break;
                        }
                    }

                    //Criar objeto da classe de assinatura digital
                    AssinaturaDigital oAD = new AssinaturaDigital();

                    //Assinar o XML
                    oAD.Assinar(NomeArquivoXML, emp, cOrgao);

                    oInvocarObj.Invocar(wsProxy, oRecepcaoEvento, wsProxy.NomeMetodoWS[0], oCabecMsg, this, xmlExtEnvio, xmlExtRetorno, true, securityProtocolType);

                    //Ler o retorno
                    LerRetornoEvento(emp);
                }
                else
                {
                    // Gerar o XML de eventos a partir do TXT gerado pelo ERP
                    string xmlFileExt    = string.Empty;
                    string xmlFileExtTXT = string.Empty;
                    if (novaNomenclatura)
                    {
                        xmlFileExt    = Propriedade.Extensao(Propriedade.TipoEnvio.PedEve).EnvioXML;
                        xmlFileExtTXT = Propriedade.Extensao(Propriedade.TipoEnvio.PedEve).EnvioTXT;
                    }
                    else
                    {
                        switch (Servico)
                        {
                        case Servicos.EventoCCe:
                            xmlFileExt    = Propriedade.Extensao(Propriedade.TipoEnvio.EnvCCe).EnvioXML;
                            xmlFileExtTXT = Propriedade.Extensao(Propriedade.TipoEnvio.EnvCCe).EnvioTXT;
                            break;

                        case Servicos.EventoCancelamento:
                            xmlFileExt    = Propriedade.Extensao(Propriedade.TipoEnvio.EnvCancelamento).EnvioXML;
                            xmlFileExtTXT = Propriedade.Extensao(Propriedade.TipoEnvio.EnvCancelamento).EnvioTXT;
                            break;

                        default:
                            xmlFileExt    = Propriedade.Extensao(Propriedade.TipoEnvio.EnvManifestacao).EnvioXML;
                            xmlFileExtTXT = Propriedade.Extensao(Propriedade.TipoEnvio.EnvManifestacao).EnvioTXT;
                            break;
                        }
                    }
                    string f = Functions.ExtrairNomeArq(NomeArquivoXML, xmlFileExtTXT) + xmlFileExt;

                    if (NomeArquivoXML.IndexOf(Empresas.Configuracoes[emp].PastaValidar, StringComparison.InvariantCultureIgnoreCase) >= 0)
                    {
                        f = Path.Combine(Empresas.Configuracoes[emp].PastaValidar, f);
                    }
                    oGerarXML.EnvioEvento(f, dadosEnvEvento);
                }
            }
            catch (Exception ex)
            {
                try
                {
                    //Gravar o arquivo de erro de retorno para o ERP, caso ocorra
                    string ExtRet     = string.Empty;
                    string ExtRetorno = string.Empty;

                    if (novaNomenclatura)
                    {
                        ExtRet = vXmlNfeDadosMsgEhXML ? Propriedade.Extensao(Propriedade.TipoEnvio.PedEve).EnvioXML :
                                 Propriedade.Extensao(Propriedade.TipoEnvio.PedEve).EnvioTXT;
                        ExtRetorno = Propriedade.ExtRetorno.Eve_ERR;
                    }
                    else
                    {
                        if (Servico == Servicos.Nulo)
                        {
                            // pode ter vindo de um txt e houve erro
                            if (NomeArquivoXML.ToLower().EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.EnvCCe).EnvioXML) ||
                                NomeArquivoXML.ToLower().EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.EnvCCe).EnvioTXT))
                            {
                                Servico = Servicos.EventoCCe;
                            }
                            else
                            if (NomeArquivoXML.ToLower().EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.EnvManifestacao).EnvioXML) ||
                                NomeArquivoXML.ToLower().EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.EnvManifestacao).EnvioTXT))
                            {
                                Servico = Servicos.EventoManifestacaoDest;
                            }
                            else
                            if (NomeArquivoXML.ToLower().EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.EnvCancelamento).EnvioXML) ||
                                NomeArquivoXML.ToLower().EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.EnvCancelamento).EnvioTXT))
                            {
                                Servico = Servicos.EventoCancelamento;
                            }
                        }

                        switch (Servico)
                        {
                        case Servicos.EventoCCe:
                            ExtRet = vXmlNfeDadosMsgEhXML ? Propriedade.Extensao(Propriedade.TipoEnvio.EnvCCe).EnvioXML :
                                     Propriedade.Extensao(Propriedade.TipoEnvio.EnvCCe).EnvioTXT;
                            ExtRetorno = Propriedade.ExtRetorno.retEnvCCe_ERR;
                            break;

                        case Servicos.EventoCancelamento:
                            ExtRet = vXmlNfeDadosMsgEhXML ? Propriedade.Extensao(Propriedade.TipoEnvio.EnvCancelamento).EnvioXML :
                                     Propriedade.Extensao(Propriedade.TipoEnvio.EnvCancelamento).EnvioTXT;
                            ExtRetorno = Propriedade.ExtRetorno.retCancelamento_ERR;
                            break;

                        case Servicos.EventoManifestacaoDest:
                            ExtRet = vXmlNfeDadosMsgEhXML ? Propriedade.Extensao(Propriedade.TipoEnvio.EnvManifestacao).EnvioXML :
                                     Propriedade.Extensao(Propriedade.TipoEnvio.EnvManifestacao).EnvioTXT;
                            ExtRetorno = Propriedade.ExtRetorno.retManifestacao_ERR;
                            break;

                        default:
                            throw new Exception("Nao pode identificar o tipo de serviço para o arquivo: " + NomeArquivoXML);
                        }
                    }

                    if (ExtRetorno != string.Empty)
                    {
                        TFunctions.GravarArqErroServico(NomeArquivoXML, ExtRet, ExtRetorno, 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 09/03/2010
                }
            }
            finally
            {
                try
                {
                    Functions.DeletarArquivo(NomeArquivoXML);
                }
                catch
                {
                    //Se falhou algo na hora de deletar o XML de evento, 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 09/03/2010
                }
            }
        }
Ejemplo n.º 18
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
                }
            }
        }
Ejemplo n.º 19
0
        public override void Execute()
        {
            int emp = Empresas.FindEmpresaByThread();

            try
            {
                dadosRec = new DadosRecClass();
                FluxoNfe fluxoNfe = new FluxoNfe();
                LerXML   lerXml   = new LerXML();

                //Ler o XML de Lote para pegar o número do lote que está sendo enviado
                lerXml.Mdfe(ConteudoXML);

                var idLote = lerXml.oDadosNfe.idLote;

                //Definir o objeto do WebService
                WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, Convert.ToInt32(lerXml.oDadosNfe.cUF), Convert.ToInt32(lerXml.oDadosNfe.tpAmb), Convert.ToInt32(lerXml.oDadosNfe.tpEmis), 0);
                System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(Convert.ToInt32(lerXml.oDadosNfe.cUF), Convert.ToInt32(lerXml.oDadosNfe.tpAmb), Convert.ToInt32(lerXml.oDadosNfe.tpEmis), Servico);

                //Criar objetos das classes dos serviços dos webservices do SEFAZ
                object oRecepcao = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);
                var    oCabecMsg = wsProxy.CriarObjeto(NomeClasseCabecWS(Convert.ToInt32(lerXml.oDadosNfe.cUF), Servico));

                //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg
                wsProxy.SetProp(oCabecMsg, TpcnResources.cUF.ToString(), lerXml.oDadosNfe.cUF);
                wsProxy.SetProp(oCabecMsg, TpcnResources.versaoDados.ToString(), lerXml.oDadosNfe.versao);

                //
                //XML neste ponto o MDFe já está assinado, pois foi assinado, validado e montado o lote para envio por outro serviço.
                //Fica aqui somente este lembrete. Wandrey 16/03/2010
                //

                //Invocar o método que envia o XML para o SEFAZ
                oInvocarObj.Invocar(wsProxy,
                                    oRecepcao,
                                    wsProxy.NomeMetodoWS[0],
                                    oCabecMsg, this,
                                    Propriedade.Extensao(Propriedade.TipoEnvio.EnvLot).EnvioXML,
                                    Propriedade.ExtRetorno.Rec,
                                    true,
                                    securityProtocolType);

                #region Parte que trata o retorno do lote, ou seja, o número do recibo

                Recibo(vStrXmlRetorno, emp);

                if (dadosRec.cStat == "103") //Lote recebido com sucesso
                {
                    if (dadosRec.tMed > 0)
                    {
                        Thread.Sleep(dadosRec.tMed * 1000);
                    }

                    //Atualizar o número do recibo no XML de controle do fluxo de notas enviadas
                    fluxoNfe.AtualizarTag(lerXml.oDadosNfe.chavenfe, FluxoNfe.ElementoEditavel.tMed, (dadosRec.tMed + 2).ToString());
                    fluxoNfe.AtualizarTagRec(idLote, dadosRec.nRec);
                    XmlDocument         xmlPedRec       = oGerarXML.XmlPedRecMDFe(dadosRec.nRec, dadosRec.versao, emp);
                    TaskMDFeRetRecepcao mdfeRetRecepcao = new TaskMDFeRetRecepcao(xmlPedRec);
                    mdfeRetRecepcao.Execute();
                }
                else if (Convert.ToInt32(dadosRec.cStat) > 200 ||
                         Convert.ToInt32(dadosRec.cStat) == 108 || //Verifica se o servidor de processamento está paralisado momentaneamente. Wandrey 13/04/2012
                         Convert.ToInt32(dadosRec.cStat) == 109)   //Verifica se o servidor de processamento está paralisado sem previsão. Wandrey 13/04/2012
                {
                    //Se o status do retorno do lote for maior que 200 ou for igual a 108 ou 109,
                    //vamos ter que excluir a nota do fluxo, porque ela foi rejeitada pelo SEFAZ
                    //Primeiro vamos mover o xml da nota da pasta EmProcessamento para pasta de XML´s com erro e depois tira ela do fluxo
                    //Wandrey 30/04/2009
                    oAux.MoveArqErro(Empresas.Configuracoes[emp].PastaXmlEnviado + "\\" + PastaEnviados.EmProcessamento.ToString() + "\\" + fluxoNfe.LerTag(lerXml.oDadosNfe.chavenfe, FluxoNfe.ElementoFixo.ArqNFe));
                    fluxoNfe.ExcluirNfeFluxo(lerXml.oDadosNfe.chavenfe);
                }

                //Deleta o arquivo de lote
                Functions.DeletarArquivo(NomeArquivoXML);

                #endregion Parte que trata o retorno do lote, ou seja, o número do recibo
            }
            catch (ExceptionEnvioXML ex)
            {
                //Ocorreu algum erro no exato momento em que tentou enviar o XML para o SEFAZ, vou ter que tratar
                //para ver se o XML chegou lá ou não, se eu consegui pegar o número do recibo de volta ou não, etc.
                //E ver se vamos tirar o XML do Fluxo ou finalizar ele com a consulta situação da NFe

                try
                {
                    //Gravar o arquivo de erro de retorno para o ERP, caso ocorra
                    TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.EnvLot).EnvioXML, Propriedade.ExtRetorno.Rec_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 16/03/2010
                }
            }
            catch (ExceptionSemInternet ex)
            {
                try
                {
                    //Gravar o arquivo de erro de retorno para o ERP, caso ocorra
                    TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.EnvLot).EnvioXML, Propriedade.ExtRetorno.Rec_ERR, ex, false);
                }
                catch
                {
                    //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada.
                    //Wandrey 16/03/2010
                }
            }
            catch (Exception ex)
            {
                try
                {
                    //Gravar o arquivo de erro de retorno para o ERP, caso ocorra
                    TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.EnvLot).EnvioXML, Propriedade.ExtRetorno.Rec_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 16/03/2010
                }
            }
        }
Ejemplo n.º 20
0
        public override void Execute()
        {
            int emp = Empresas.FindEmpresaByThread();

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

            try
            {
                oDadosPedNfsePNG = new DadosPedSitNfse(emp);
                //Ler o XML para pegar parâmetros de envio
                PedNFSePNG(NomeArquivoXML);

                //Criar objetos das classes dos serviços dos webservices do SEFAZ
                PadroesNFSe     padraoNFSe = Functions.PadraoNFSe(oDadosPedNfsePNG.cMunicipio);
                WebServiceProxy wsProxy    = ConfiguracaoApp.DefinirWS(Servico, emp, oDadosPedNfsePNG.cMunicipio, oDadosPedNfsePNG.tpAmb, oDadosPedNfsePNG.tpEmis, padraoNFSe);
                object          pedNfsePNG = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);
                string          cabecMsg   = "";

                //Assinar o XML
                AssinaturaDigital ad = new AssinaturaDigital();
                ad.Assinar(NomeArquivoXML, emp, Convert.ToInt32(oDadosPedNfsePNG.cMunicipio));

                //Invocar o método que envia o XML para o SEFAZ
                oInvocarObj.InvocarNFSe(wsProxy, pedNfsePNG, NomeMetodoWS(Servico, oDadosPedNfsePNG.cMunicipio), cabecMsg, this, "-ped-nfsepng", "-nfsepng", padraoNFSe, Servico);

                ///
                /// grava o arquivo no FTP
                string filenameFTP = Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                  Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.ExtEnvio.PedNFSePNG) + Propriedade.ExtRetorno.NFSePNG);
                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.ExtEnvio.PedNFSePNG, Propriedade.ExtRetorno.NFSePNG_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
                }
            }
        }
Ejemplo n.º 21
0
        public override void Execute()
        {
            int emp = Empresas.FindEmpresaByThread();

            ///
            /// extensao permitida:  PedSitNfse = "-ped-sitnfse.xml"
            ///
            /// Definir o serviço que será executado para a classe
            Servico = Servicos.NFSeConsultar;

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

                oDadosPedSitNfse = new DadosPedSitNfse(emp);

                //Ler o XML para pegar parâmetros de envio
                PedSitNfse(NomeArquivoXML);

                //Criar objetos das classes dos serviços dos webservices do SEFAZ
                PadroesNFSe     padraoNFSe = Functions.PadraoNFSe(oDadosPedSitNfse.cMunicipio);
                WebServiceProxy wsProxy    = null;
                object          pedLoteRps = null;
                if (IsUtilizaCompilacaoWs(padraoNFSe, Servico, oDadosPedSitNfse.cMunicipio))
                {
                    wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, oDadosPedSitNfse.cMunicipio, oDadosPedSitNfse.tpAmb, oDadosPedSitNfse.tpEmis, padraoNFSe, oDadosPedSitNfse.cMunicipio);
                    if (wsProxy != null)
                    {
                        pedLoteRps = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);
                    }
                }

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

                string cabecMsg = "";
                switch (padraoNFSe)
                {
                case PadroesNFSe.GINFES:
                    switch (oDadosPedSitNfse.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.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,
                                                                                                        oDadosPedSitNfse.cMunicipio,
                                                                                                        Empresas.Configuracoes[emp].UsuarioWS,
                                                                                                        Empresas.Configuracoes[emp].SenhaWS,
                                                                                                        ConfiguracaoApp.ProxyUsuario,
                                                                                                        ConfiguracaoApp.ProxySenha,
                                                                                                        ConfiguracaoApp.ProxyServidor);

                        betha.ConsultarNfse(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.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.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);
                    AssinaturaDigital ad = new AssinaturaDigital();
                    ad.Assinar(NomeArquivoXML, emp, oDadosPedSitNfse.cMunicipio);
                    syspro.ConsultarNfse(NomeArquivoXML);
                    break;

                case PadroesNFSe.SIGCORP_SIGISS:
                    SigCorp sigCorp = new SigCorp((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                                  Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                  oDadosPedSitNfse.cMunicipio);
                    sigCorp.ConsultarNfse(NomeArquivoXML);
                    break;

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

                    simpliss.ConsultarNfse(NomeArquivoXML);
                    break;

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

                    conam.ConsultarNfse(NomeArquivoXML);
                    break;

                case PadroesNFSe.RLZ_INFORMATICA:
                    Rlz_Informatica rlz = new Rlz_Informatica((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                                              Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                              oDadosPedSitNfse.cMunicipio);

                    rlz.ConsultarNfse(NomeArquivoXML);
                    break;

                case PadroesNFSe.EGOVERNE:

                    #region E-Governe

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

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

                    egoverne.ConsultarNfse(NomeArquivoXML);

                    #endregion E-Governe

                    break;

                case PadroesNFSe.EL:

                    #region E&L

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

                    el.ConsultarNfse(NomeArquivoXML);
                    break;

                    #endregion E&L

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

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

                    govdig.ConsultarNfse(NomeArquivoXML);
                    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.FISSLEX:
                    FISSLEX fisslex = new FISSLEX((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                                  Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                  oDadosPedSitNfse.cMunicipio,
                                                  Empresas.Configuracoes[emp].UsuarioWS,
                                                  Empresas.Configuracoes[emp].SenhaWS,
                                                  ConfiguracaoApp.ProxyUsuario,
                                                  ConfiguracaoApp.ProxySenha,
                                                  ConfiguracaoApp.ProxyServidor);

                    fisslex.ConsultarNfse(NomeArquivoXML);
                    break;

                case PadroesNFSe.MGM:

                    #region MGM

                    MGM mgm = new MGM((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                      Empresas.Configuracoes[emp].PastaXmlRetorno,
                                      oDadosPedSitNfse.cMunicipio,
                                      Empresas.Configuracoes[emp].UsuarioWS,
                                      Empresas.Configuracoes[emp].SenhaWS);
                    mgm.ConsultarNfse(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,
                                                  oDadosPedSitNfse.cMunicipio,
                                                  Empresas.Configuracoes[emp].UsuarioWS,
                                                  Empresas.Configuracoes[emp].SenhaWS,
                                                  ConfiguracaoApp.ProxyUsuario,
                                                  ConfiguracaoApp.ProxySenha,
                                                  ConfiguracaoApp.ProxyServidor);

                    consist.ConsultarNfse(NomeArquivoXML);
                    break;

                    #endregion Consist

                case PadroesNFSe.METROPOLIS:

                    #region METROPOLIS

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

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

                    metropolis.ConsultarNfse(NomeArquivoXML);
                    break;

                    #endregion METROPOLIS

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

                    if (oDadosPedSitNfse.tpAmb == 1)
                    {
                        pedLoteRps = 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.");
                    }

                    break;

                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,
                                               oDadosPedSitNfse.cMunicipio,
                                               Empresas.Configuracoes[emp].UsuarioWS,
                                               Empresas.Configuracoes[emp].SenhaWS,
                                               ConfiguracaoApp.ProxyUsuario,
                                               ConfiguracaoApp.ProxySenha,
                                               ConfiguracaoApp.ProxyServidor);

                    memory.ConsultarNfse(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 (oDadosPedSitNfse.tpAmb == 1)
                    //    pedLoteRps = new Components.PCorumbaMS.NfseWSService();
                    //else
                    //    pedLoteRps = new Components.HCorumbaMS.NfseWSService();

                    break;

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

                    fiorilli.ConsultarNfse(NomeArquivoXML);
                    break;

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

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

                        pronin.ConsultarNfse(NomeArquivoXML);
                    }
                    break;

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

                case PadroesNFSe.COPLAN:
                    Coplan coplan = new Coplan((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                               Empresas.Configuracoes[emp].PastaXmlRetorno,
                                               oDadosPedSitNfse.cMunicipio,
                                               ConfiguracaoApp.ProxyUsuario,
                                               ConfiguracaoApp.ProxySenha,
                                               ConfiguracaoApp.ProxyServidor,
                                               Empresas.Configuracoes[emp].X509Certificado);

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

                    coplan.ConsultarNfse(NomeArquivoXML);
                    break;

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

                    tinus.ConsultarNfse(NomeArquivoXML);
                    break;

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

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

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

                    softplan.ConsultarNfse(NomeArquivoXML);
                    break;
                }

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

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

                    ///
                    /// grava o arquivo no FTP
                    string filenameFTP = Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                      Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedSitNFSe).EnvioXML) + Propriedade.Extensao(Propriedade.TipoEnvio.PedSitNFSe).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.PedSitNFSe).EnvioXML, Propriedade.ExtRetorno.SitNfse_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
                }
            }
        }
Ejemplo n.º 22
0
        public override void Execute()
        {
            int emp = Empresas.FindEmpresaByThread();

            try
            {
                dadosRec = new DadosRecClass();
                FluxoNfe oFluxoNfe = new FluxoNfe();
                LerXML   oLer      = new LerXML();

                //Ler o XML de Lote para pegar o número do lote que está sendo enviado
                oLer.Nfe(NomeArquivoXML);

                if (oLer.oDadosNfe.versao != "2.00")
                {
                    Servico = Servicos.NFeEnviarLote2;
                }

                var idLote = oLer.oDadosNfe.idLote;

                //Definir o objeto do WebService
                WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp,
                                                                    Convert.ToInt32(oLer.oDadosNfe.cUF),
                                                                    Convert.ToInt32(oLer.oDadosNfe.tpAmb),
                                                                    Convert.ToInt32(oLer.oDadosNfe.tpEmis),
                                                                    oLer.oDadosNfe.versao,
                                                                    oLer.oDadosNfe.mod);
                System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(Convert.ToInt32(oLer.oDadosNfe.cUF), Convert.ToInt32(oLer.oDadosNfe.tpAmb), Convert.ToInt32(oLer.oDadosNfe.tpEmis), PadroesNFSe.NaoIdentificado, Servico);

                if (Empresas.Configuracoes[emp].CompactarNfe && oLer.oDadosNfe.versao != "2.00" && wsProxy.NomeMetodoWS.Length == 2)
                {
                    Servico = Servicos.NFeEnviarLoteZip2;
                }

                //Criar objetos das classes dos serviços dos webservices do SEFAZ
                object oRecepcao = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);
                var    oCabecMsg = wsProxy.CriarObjeto(NomeClasseCabecWS(Convert.ToInt32(oLer.oDadosNfe.cUF), Servico));

                //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg
                wsProxy.SetProp(oCabecMsg, NFe.Components.TpcnResources.cUF.ToString(), oLer.oDadosNfe.cUF);
                wsProxy.SetProp(oCabecMsg, NFe.Components.TpcnResources.versaoDados.ToString(), oLer.oDadosNfe.versao);

                //XML neste ponto a NFe já está assinada, pois foi assinada, validada e montado o lote para envio por outro serviço.
                //Fica aqui somente este lembrete. Wandrey 16/03/2010

                // Envio de NFe Compactada - Renan 29/04/2014
                if (Servico == Servicos.NFeEnviarLoteZip2)
                {
                    FileInfo dadosArquivo = new FileInfo(NomeArquivoXML);
                    TFunctions.CompressXML(dadosArquivo);
                }

                string nOperacao = wsProxy.NomeMetodoWS[(Servico == Servicos.NFeEnviarLoteZip2) ? 1 : 0];

                //Invocar o método que envia o XML para o SEFAZ
                if (Empresas.Configuracoes[emp].IndSinc && oLer.oDadosNfe.versao != "2.00" && oLer.oDadosNfe.indSinc)
                {
                    //Não posso gerar o arquivo na pasta de retorno através do método Invocar, por isso não estou colocando os dois ultimos parâmetros com a definição dos prefixos dos arquivos. O arquivo de retorno no processo síncrono deve acontecer somente depois de finalizado o processo da nota, ou gera problemas. Wandrey 11/06/2015
                    oInvocarObj.Invocar(wsProxy,
                                        oRecepcao,
                                        nOperacao,
                                        oCabecMsg,
                                        this,
                                        Propriedade.Extensao(Propriedade.TipoEnvio.EnvLot).EnvioXML,
                                        Propriedade.Extensao(Propriedade.TipoEnvio.PedRec).RetornoXML,
                                        false,
                                        securityProtocolType);

                    Protocolo(vStrXmlRetorno);
                }
                else
                {
                    oInvocarObj.Invocar(wsProxy,
                                        oRecepcao,
                                        nOperacao,
                                        oCabecMsg,
                                        this,
                                        Propriedade.Extensao(Propriedade.TipoEnvio.EnvLot).EnvioXML,
                                        Propriedade.ExtRetorno.Rec,
                                        true,
                                        securityProtocolType);

                    Recibo(vStrXmlRetorno);
                }

                if (dadosRec.cStat == "104") //Lote processado - Processo da NFe Síncrono - Wandrey 13/03/2014
                {
                    FinalizarNFeSincrono(vStrXmlRetorno, emp);

                    oGerarXML.XmlRetorno(Propriedade.Extensao(Propriedade.TipoEnvio.EnvLot).EnvioXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedRec).RetornoXML, vStrXmlRetorno);
                }
                else if (dadosRec.cStat == "103") //Lote recebido com sucesso - Processo da NFe Assíncrono
                {
                    //Atualizar o número do recibo no XML de controle do fluxo de notas enviadas
                    oFluxoNfe.AtualizarTag(oLer.oDadosNfe.chavenfe, FluxoNfe.ElementoEditavel.tMed, dadosRec.tMed.ToString());
                    oFluxoNfe.AtualizarTagRec(idLote, dadosRec.nRec);
                }
                else if (Convert.ToInt32(dadosRec.cStat) > 200 ||
                         Convert.ToInt32(dadosRec.cStat) == 108 || //Verifica se o servidor de processamento está paralisado momentaneamente. Wandrey 13/04/2012
                         Convert.ToInt32(dadosRec.cStat) == 109)   //Verifica se o servidor de processamento está paralisado sem previsão. Wandrey 13/04/2012
                {
                    if (Empresas.Configuracoes[emp].IndSinc && oLer.oDadosNfe.versao != "2.00" && oLer.oDadosNfe.indSinc)
                    {
                        // OPS!!! Processo sincrono rejeição da SEFAZ, temos que gravar o XML para o ERP, pois no processo síncrono isso não pode ser feito dentro do método Invocar
                        oGerarXML.XmlRetorno(Propriedade.Extensao(Propriedade.TipoEnvio.EnvLot).EnvioXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedRec).RetornoXML /*.ExtRetorno.ProRec_XML*/, vStrXmlRetorno);
                    }
                    //Se o status do retorno do lote for maior que 200 ou for igual a 108 ou 109,
                    //vamos ter que excluir a nota do fluxo, porque ela foi rejeitada pelo SEFAZ
                    //Primeiro vamos mover o xml da nota da pasta EmProcessamento para pasta de XML´s com erro e depois a tira do fluxo
                    //Wandrey 30/04/2009
                    oAux.MoveArqErro(Empresas.Configuracoes[emp].PastaXmlEnviado + "\\" + PastaEnviados.EmProcessamento.ToString() + "\\" + oFluxoNfe.LerTag(oLer.oDadosNfe.chavenfe, FluxoNfe.ElementoFixo.ArqNFe));
                    oFluxoNfe.ExcluirNfeFluxo(oLer.oDadosNfe.chavenfe);
                }

                //Deleta o arquivo de lote
                Functions.DeletarArquivo(NomeArquivoXML);

                // Envio de NFe Compactada - Renan 29/04/2014
                if (Servico == Servicos.NFeEnviarLoteZip2)
                {
                    Functions.DeletarArquivo(NomeArquivoXML + ".gz");
                }
            }
            catch (ExceptionEnvioXML ex)
            {
                TrataException(emp, ex);
            }
            catch (ExceptionSemInternet ex)
            {
                TrataException(emp, ex);
            }
            catch (Exception ex)
            {
                TrataException(emp, ex);
            }
        }
Ejemplo n.º 23
0
        public override void Execute()
        {
            int emp = Empresas.FindEmpresaByThread();

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

            try
            {
                oDadosPedSitLoteRps = new DadosPedSitLoteRps(emp);
                //Ler o XML para pegar parâmetros de envio
                //LerXML ler = new LerXML();
                PedSitLoteRps(NomeArquivoXML);

                //Definir o objeto do WebService

                //Criar objetos das classes dos serviços dos webservices do SEFAZ
                PadroesNFSe     padraoNFSe    = Functions.PadraoNFSe(oDadosPedSitLoteRps.cMunicipio);
                WebServiceProxy wsProxy       = null;
                object          pedSitLoteRps = null;

                if (padraoNFSe != PadroesNFSe.SIMPLISS)
                {
                    wsProxy       = ConfiguracaoApp.DefinirWS(Servico, emp, oDadosPedSitLoteRps.cMunicipio, oDadosPedSitLoteRps.tpAmb, oDadosPedSitLoteRps.tpEmis, padraoNFSe);
                    pedSitLoteRps = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);
                }

                string cabecMsg = "";
                switch (padraoNFSe)
                {
                case PadroesNFSe.GINFES:
                    if (oDadosPedSitLoteRps.cMunicipio == 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>";
                    }
                    else
                    {
                        cabecMsg = "<ns2:cabecalho versao=\"3\" xmlns:ns2=\"http://www.ginfes.com.br/cabecalho_v03.xsd\"><versaoDados>3</versaoDados></ns2:cabecalho>";
                    }
                    break;

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

                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.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 xmlns=\"http://iss.pontagrossa.pr.gov.br/Arquivos/nfse.xsd\" versao=\"1.00\"><versaoDados >1.00</versaoDados ></cabecalho>";
                    break;

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

                    simpliss.ConsultarSituacaoLoteRps(NomeArquivoXML);
                    break;

                case PadroesNFSe.EGOVERNE:
                    #region E-Governe
                    EGoverne egoverne = new EGoverne((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                                     Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                     oDadosPedSitLoteRps.cMunicipio,
                                                     ConfiguracaoApp.ProxyUsuario,
                                                     ConfiguracaoApp.ProxySenha,
                                                     ConfiguracaoApp.ProxyServidor,
                                                     Empresas.Configuracoes[emp].X509Certificado);

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

                    egoverne.ConsultarSituacaoLoteRps(NomeArquivoXML);
                    break;
                    #endregion
                }
                if (padraoNFSe != PadroesNFSe.IPM &&
                    padraoNFSe != PadroesNFSe.SIMPLISS)
                {
                    //Assinar o XML
                    AssinaturaDigital ad = new AssinaturaDigital();
                    ad.Assinar(NomeArquivoXML, emp, oDadosPedSitLoteRps.cMunicipio);

                    //Invocar o método que envia o XML para o SEFAZ
                    oInvocarObj.InvocarNFSe(wsProxy, pedSitLoteRps, NomeMetodoWS(Servico, oDadosPedSitLoteRps.cMunicipio), cabecMsg, this, "-ped-sitloterps", "-sitloterps", padraoNFSe, Servico);

                    ///
                    /// grava o arquivo no FTP
                    string filenameFTP = Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                      Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.ExtEnvio.PedSitLoteRps) + Propriedade.ExtRetorno.SitLoteRps);
                    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.ExtEnvio.PedSitLoteRps, Propriedade.ExtRetorno.SitLoteRps_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
                }
            }
        }
Ejemplo n.º 24
0
        public override void Execute(Empresa empresa)
        {
            //Definir o serviço que será executado para a classe
            Servico = Servicos.RecepcionarLoteRps;

            oDadosEnvLoteRps = new DadosEnvLoteRps(empresa);
            //Ler o XML para pegar parâmetros de envio
            //LerXML ler = new LerXML();
            /*ler.*/
            EnvLoteRps(empresa, NomeArquivoXML);

            //Criar objetos das classes dos serviços dos webservices do SEFAZ
            WebServiceProxy wsProxy = null;
            object envLoteRps = null;
            string cabecMsg = "";
            //PadroesNFSe padraoNFSe = Functions.PadraoNFSe(/*ler.*/oDadosPedSitLoteRps.cMunicipio);
            PadroesNFSe padraoNFSe = Functions.PadraoNFSe(/*ler.*/oDadosEnvLoteRps.cMunicipio);
            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
                    // Resgatar o caminho para salvar o xml de retorno
                    IPM ipm = new IPM(empresa.UsuarioWS, empresa.SenhaWS, 7483, this.SalvarXmlRetornoEm);
                    ipm.EmitirNF(NomeArquivoXML, (TpAmb)empresa.tpAmb);
                    break;

                case PadroesNFSe.GINFES:
                    wsProxy = ConfiguracaoApp.DefinirWS(Servico, empresa, /*ler.*/oDadosEnvLoteRps.cMunicipio, /*ler.*/oDadosEnvLoteRps.tpAmb, /*ler.*/oDadosEnvLoteRps.tpEmis);
                    envLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, /*ler.*/oDadosEnvLoteRps.cMunicipio));
                    cabecMsg = "<ns2:cabecalho versao=\"3\" xmlns:ns2=\"http://www.ginfes.com.br/cabecalho_v03.xsd\"><versaoDados>3</versaoDados></ns2:cabecalho>";
                    break;

                case PadroesNFSe.BETHA:
                    wsProxy = new WebServiceProxy(empresa.X509Certificado);
                    wsProxy.Betha = new Betha();
                    break;

                case PadroesNFSe.THEMA:
                    wsProxy = ConfiguracaoApp.DefinirWS(Servico, empresa, /*ler.*/oDadosEnvLoteRps.cMunicipio, /*ler.*/oDadosEnvLoteRps.tpAmb, /*ler.*/oDadosEnvLoteRps.tpEmis);
                    envLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, /*ler.*/oDadosEnvLoteRps.cMunicipio));
                    break;

                case PadroesNFSe.CANOAS_RS:
                    wsProxy = ConfiguracaoApp.DefinirWS(Servico, empresa, /*ler.*/oDadosEnvLoteRps.cMunicipio, /*ler.*/oDadosEnvLoteRps.tpAmb, /*ler.*/oDadosEnvLoteRps.tpEmis);
                    envLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, /*ler.*/oDadosEnvLoteRps.cMunicipio));
                    cabecMsg = "<cabecalho versao=\"201001\"><versaoDados>V2010</versaoDados></cabecalho>";
                    break;

                case PadroesNFSe.ISSNET:
                    wsProxy = ConfiguracaoApp.DefinirWS(Servico, empresa, oDadosEnvLoteRps.cMunicipio, oDadosEnvLoteRps.tpAmb, oDadosEnvLoteRps.tpEmis);
                    envLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, oDadosEnvLoteRps.cMunicipio));
                    break;

                case PadroesNFSe.ISSONLINE:
                    wsProxy = ConfiguracaoApp.DefinirWS(Servico, empresa, oDadosEnvLoteRps.cMunicipio, oDadosEnvLoteRps.tpAmb, oDadosEnvLoteRps.tpEmis);
                    envLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, oDadosEnvLoteRps.cMunicipio));
                    break;

                case PadroesNFSe.BLUMENAU_SC:
                    wsProxy = ConfiguracaoApp.DefinirWS(Servico, empresa, oDadosEnvLoteRps.cMunicipio, oDadosEnvLoteRps.tpAmb, oDadosEnvLoteRps.tpEmis);
                    envLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, oDadosEnvLoteRps.cMunicipio));
                    #region Encriptar tag <Assinatura>
                    EncryptAssinatura(empresa);
                    #endregion

                    break;

                case PadroesNFSe.BHISS:
                    wsProxy = ConfiguracaoApp.DefinirWS(Servico, empresa, oDadosEnvLoteRps.cMunicipio, oDadosEnvLoteRps.tpAmb, oDadosEnvLoteRps.tpEmis);
                    envLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, oDadosEnvLoteRps.cMunicipio));
                    cabecMsg = "<cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"1.00\"><versaoDados >1.00</versaoDados ></cabecalho>";
                    break;

                case PadroesNFSe.GIF:
                    wsProxy = ConfiguracaoApp.DefinirWS(Servico, empresa, /*ler.*/oDadosEnvLoteRps.cMunicipio, /*ler.*/oDadosEnvLoteRps.tpAmb, /*ler.*/oDadosEnvLoteRps.tpEmis, padraoNFSe);
                    envLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, /*ler.*/oDadosEnvLoteRps.cMunicipio));
                    break;

                case PadroesNFSe.DUETO:
                    wsProxy = ConfiguracaoApp.DefinirWS(Servico, empresa, /*ler.*/oDadosEnvLoteRps.cMunicipio, /*ler.*/oDadosEnvLoteRps.tpAmb, /*ler.*/oDadosEnvLoteRps.tpEmis, padraoNFSe);
                    envLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, /*ler.*/oDadosEnvLoteRps.cMunicipio));
                    break;

                case PadroesNFSe.WEBISS:
                    wsProxy = ConfiguracaoApp.DefinirWS(Servico, empresa, /*ler.*/oDadosEnvLoteRps.cMunicipio, /*ler.*/oDadosEnvLoteRps.tpAmb, /*ler.*/oDadosEnvLoteRps.tpEmis, padraoNFSe);
                    envLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, /*ler.*/oDadosEnvLoteRps.cMunicipio));
                    cabecMsg = "<cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"1.00\"><versaoDados >1.00</versaoDados ></cabecalho>";
                    break;

                case PadroesNFSe.PAULISTANA:
                    wsProxy = ConfiguracaoApp.DefinirWS(Servico, empresa, oDadosEnvLoteRps.cMunicipio, oDadosEnvLoteRps.tpAmb, oDadosEnvLoteRps.tpEmis);
                    envLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, oDadosEnvLoteRps.cMunicipio));
                    #region Encriptar tag <Assinatura>
                    EncryptAssinatura(empresa);
                    #endregion
                    break;

                case PadroesNFSe.SALVADOR_BA:
                    wsProxy = ConfiguracaoApp.DefinirWS(Servico, empresa, /*ler.*/oDadosEnvLoteRps.cMunicipio, /*ler.*/oDadosEnvLoteRps.tpAmb, /*ler.*/oDadosEnvLoteRps.tpEmis, padraoNFSe);
                    envLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, /*ler.*/oDadosEnvLoteRps.cMunicipio));
                    break;

                case PadroesNFSe.PORTOVELHENSE:
                    wsProxy = ConfiguracaoApp.DefinirWS(Servico, empresa, /*ler.*/oDadosEnvLoteRps.cMunicipio, /*ler.*/oDadosEnvLoteRps.tpAmb, /*ler.*/oDadosEnvLoteRps.tpEmis);
                    envLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, /*ler.*/oDadosEnvLoteRps.cMunicipio));
                    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.PRONIN:
                    wsProxy = ConfiguracaoApp.DefinirWS(Servico, empresa, /*ler.*/oDadosEnvLoteRps.cMunicipio, /*ler.*/oDadosEnvLoteRps.tpAmb, /*ler.*/oDadosEnvLoteRps.tpEmis, padraoNFSe);
                    envLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, /*ler.*/oDadosEnvLoteRps.cMunicipio));
                    break;

                default:
                    throw new Exception("Não foi possível detectar o padrão da NFS-e.");
            }

            if (padraoNFSe != PadroesNFSe.IPM)
            {
                //Assinar o XML
                AssinaturaDigital ad = new AssinaturaDigital();
                ad.Assinar(NomeArquivoXML, empresa, Convert.ToInt32(/*ler.*/oDadosEnvLoteRps.cMunicipio));

                //Invocar o método que envia o XML para o SEFAZ
                oInvocarObj.InvocarNFSe(wsProxy, envLoteRps, NomeMetodoWS(Servico, /*ler.*/oDadosEnvLoteRps.cMunicipio, empresa.tpAmb), cabecMsg, this, "-env-loterps", "-ret-loterps", padraoNFSe, Servico, empresa);
            }
        }
Ejemplo n.º 25
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))
                {
                    wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, oDadosEnvLoteRps.cMunicipio, oDadosEnvLoteRps.tpAmb, oDadosEnvLoteRps.tpEmis, padraoNFSe);
                    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(Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, oDadosEnvLoteRps.cMunicipio, Empresas.Configuracoes[emp].PastaXmlRetorno);

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

                    ipm.EmitirNF(NomeArquivoXML, (TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo);
                    break;

                case PadroesNFSe.GINFES:
                    if (oDadosEnvLoteRps.cMunicipio == 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>";
                    }
                    else
                    {
                        cabecMsg = "<ns2:cabecalho versao=\"3\" xmlns:ns2=\"http://www.ginfes.com.br/cabecalho_v03.xsd\"><versaoDados>3</versaoDados></ns2:cabecalho>";
                    }
                    break;

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

                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.WEBISS:
                    cabecMsg = "<cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"1.00\"><versaoDados >1.00</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.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 xmlns=\"http://iss.pontagrossa.pr.gov.br/Arquivos/nfse.xsd\" versao=\"1.00\"><versaoDados >1.00</versaoDados ></cabecalho>";
                    Servico  = GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.FINTEL);
                    break;

                case PadroesNFSe.ACTCON:
                    cabecMsg = "<cabecalho><versaoDados>2.01</versaoDados></cabecalho>";
                    Servico  = GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.ACTCON);
                    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

                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

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


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

                    fiorilli.EmiteNF(NomeArquivoXML);
                    break;
                    #endregion

                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

                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

                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

                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

                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

                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

                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

                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

                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


                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

                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
                    break;

                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

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

                if (IsInvocar(padraoNFSe))
                {
                    //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,    //"-env-loterps",
                                            Propriedade.Extensao(Propriedade.TipoEnvio.EnvLoteRps).RetornoXML,  //"-ret-loterps",
                                            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
                }
            }
        }
        public override void Execute()
        {
            int emp = Empresas.FindEmpresaByThread();

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

                dadosXML = new DadosPedSitNfse(emp);

                //Criar objetos das classes dos serviços dos webservices do SEFAZ
                PadroesNFSe     padraoNFSe           = Functions.PadraoNFSe(dadosXML.cMunicipio);
                WebServiceProxy wsProxy              = null;
                object          pedConsNfseRecebidas = null;

                if (IsUtilizaCompilacaoWs(padraoNFSe))
                {
                    wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, dadosXML.cMunicipio, dadosXML.tpAmb, dadosXML.tpEmis, padraoNFSe, dadosXML.cMunicipio);
                    pedConsNfseRecebidas = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);
                }
                string cabecMsg = "";

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

                    if (dadosXML.tpAmb == 1)
                    {
                        pedConsNfseRecebidas = 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.");
                    }

                    break;
                }

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

                //Assinar o XML
                AssinaturaDigital ad = new AssinaturaDigital();
                ad.Assinar(NomeArquivoXML, emp, dadosXML.cMunicipio);

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

                ///
                /// grava o arquivo no FTP
                string filenameFTP = Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                  Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedSitNFSeRec).EnvioXML) +
                                                  Propriedade.Extensao(Propriedade.TipoEnvio.PedSitNFSeRec).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.PedSitNFSeRec).EnvioXML,
                                                    Propriedade.Extensao(Propriedade.TipoEnvio.PedSitNFSeRec).RetornoERR, 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.Extensao(Propriedade.TipoEnvio.PedSitNFSeRec).RetornoERR);
                }
            }
            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
                }
            }
        }
Ejemplo n.º 27
0
        public override void Execute(Empresa empresa)
        {
            //Definir o serviço que será executado para a classe
            Servico = Servicos.ConsultarNfse;

            oDadosPedSitNfse = new DadosPedSitNfse(empresa);
            //Ler o XML para pegar parâmetros de envio
            //LerXML ler = new LerXML();
            /*ler.*/
            PedSitNfse(NomeArquivoXML);

            //Criar objetos das classes dos serviços dos webservices do SEFAZ
            WebServiceProxy wsProxy = null;
            object pedLoteRps = null;
            string cabecMsg = "";
            PadroesNFSe padraoNFSe = Functions.PadraoNFSe(/*ler.*/oDadosPedSitNfse.cMunicipio);
            switch (padraoNFSe)
            {
                case PadroesNFSe.GINFES:
                    wsProxy = ConfiguracaoApp.DefinirWS(Servico, empresa, /*ler.*/oDadosPedSitNfse.cMunicipio, /*ler.*/oDadosPedSitNfse.tpAmb, /*ler.*/oDadosPedSitNfse.tpEmis);
                    pedLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, /*ler.*/oDadosPedSitNfse.cMunicipio));
                    cabecMsg = "<ns2:cabecalho versao=\"3\" xmlns:ns2=\"http://www.ginfes.com.br/cabecalho_v03.xsd\"><versaoDados>3</versaoDados></ns2:cabecalho>";
                    break;

                case PadroesNFSe.BETHA:
                    wsProxy = new WebServiceProxy(empresa.X509Certificado);
                    wsProxy.Betha = new Betha();
                    break;

                case PadroesNFSe.THEMA:
                    wsProxy = ConfiguracaoApp.DefinirWS(Servico, empresa, /*ler.*/oDadosPedSitNfse.cMunicipio, /*ler.*/oDadosPedSitNfse.tpAmb, /*ler.*/oDadosPedSitNfse.tpEmis);
                    pedLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, /*ler.*/oDadosPedSitNfse.cMunicipio));
                    break;

                case PadroesNFSe.CANOAS_RS:
                    wsProxy = ConfiguracaoApp.DefinirWS(Servico, empresa, /*ler.*/oDadosPedSitNfse.cMunicipio, /*ler.*/oDadosPedSitNfse.tpAmb, /*ler.*/oDadosPedSitNfse.tpEmis);
                    pedLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, /*ler.*/oDadosPedSitNfse.cMunicipio));
                    cabecMsg = "<cabecalho versao=\"201001\"><versaoDados>V2010</versaoDados></cabecalho>";
                    break;

                case PadroesNFSe.ISSNET:
                    wsProxy = ConfiguracaoApp.DefinirWS(Servico, empresa, oDadosPedSitNfse.cMunicipio, oDadosPedSitNfse.tpAmb, oDadosPedSitNfse.tpEmis);
                    pedLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, oDadosPedSitNfse.cMunicipio));
                    break;

                case PadroesNFSe.BLUMENAU_SC:
                    wsProxy = ConfiguracaoApp.DefinirWS(Servico, empresa, oDadosPedSitNfse.cMunicipio, oDadosPedSitNfse.tpAmb, oDadosPedSitNfse.tpEmis);
                    pedLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, oDadosPedSitNfse.cMunicipio));
                    break;

                case PadroesNFSe.BHISS:
                    wsProxy = ConfiguracaoApp.DefinirWS(Servico, empresa, oDadosPedSitNfse.cMunicipio, oDadosPedSitNfse.tpAmb, oDadosPedSitNfse.tpEmis);
                    pedLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, oDadosPedSitNfse.cMunicipio));
                    cabecMsg = "<cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"1.00\"><versaoDados >1.00</versaoDados ></cabecalho>";
                    break;

                case PadroesNFSe.GIF:
                    wsProxy = ConfiguracaoApp.DefinirWS(Servico, empresa, oDadosPedSitNfse.cMunicipio, oDadosPedSitNfse.tpAmb, oDadosPedSitNfse.tpEmis);
                    pedLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, oDadosPedSitNfse.cMunicipio));
                    break;

                case PadroesNFSe.DUETO:
                    wsProxy = ConfiguracaoApp.DefinirWS(Servico, empresa, oDadosPedSitNfse.cMunicipio, oDadosPedSitNfse.tpAmb, oDadosPedSitNfse.tpEmis, padraoNFSe);
                    pedLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, oDadosPedSitNfse.cMunicipio));
                    break;

                case PadroesNFSe.WEBISS:
                    wsProxy = ConfiguracaoApp.DefinirWS(Servico, empresa, oDadosPedSitNfse.cMunicipio, oDadosPedSitNfse.tpAmb, oDadosPedSitNfse.tpEmis, padraoNFSe);
                    pedLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, oDadosPedSitNfse.cMunicipio));
                    cabecMsg = "<cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"1.00\"><versaoDados >1.00</versaoDados ></cabecalho>";
                    break;

                case PadroesNFSe.PAULISTANA:
                    wsProxy = ConfiguracaoApp.DefinirWS(Servico, empresa, oDadosPedSitNfse.cMunicipio, oDadosPedSitNfse.tpAmb, oDadosPedSitNfse.tpEmis);
                    pedLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, oDadosPedSitNfse.cMunicipio));
                    break;

                case PadroesNFSe.SALVADOR_BA:
                    wsProxy = ConfiguracaoApp.DefinirWS(Servico, empresa, oDadosPedSitNfse.cMunicipio, oDadosPedSitNfse.tpAmb, oDadosPedSitNfse.tpEmis, padraoNFSe);
                    pedLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, oDadosPedSitNfse.cMunicipio));
                    break;

                case PadroesNFSe.PORTOVELHENSE:
                    wsProxy = ConfiguracaoApp.DefinirWS(Servico, empresa, oDadosPedSitNfse.cMunicipio, oDadosPedSitNfse.tpAmb, oDadosPedSitNfse.tpEmis, padraoNFSe);
                    pedLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, oDadosPedSitNfse.cMunicipio));
                    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.PRONIN:
                    wsProxy = ConfiguracaoApp.DefinirWS(Servico, empresa, oDadosPedSitNfse.cMunicipio, oDadosPedSitNfse.tpAmb, oDadosPedSitNfse.tpEmis, padraoNFSe);
                    pedLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, oDadosPedSitNfse.cMunicipio));
                    break;

                default:
                    throw new Exception("Não foi possível detectar o padrão da NFS-e.");
            }
            if (padraoNFSe != PadroesNFSe.IPM)
            {
                //Assinar o XML
                AssinaturaDigital ad = new AssinaturaDigital();
                ad.Assinar(NomeArquivoXML, empresa, Convert.ToInt32(/*ler.*/oDadosPedSitNfse.cMunicipio));

                //Invocar o método que envia o XML para o SEFAZ
                oInvocarObj.InvocarNFSe(wsProxy, pedLoteRps, NomeMetodoWS(Servico, /*ler.*/oDadosPedSitNfse.cMunicipio, empresa.tpAmb), cabecMsg, this, "-ped-sitnfse", "-sitnfse", padraoNFSe, Servico, empresa);
            }
        }
Ejemplo n.º 28
0
        public override void Execute()
        {
            int emp = Empresas.FindEmpresaByThread();

            Servico = Servicos.NFeConsultaNFDest;

            try
            {
                oDadosConsultaNFeDest = new DadosConsultaNFeDest();
                //Ler o XML para pegar parâmetros de envio
                EnvConsultaNFeDest(emp, NomeArquivoXML);

                if (vXmlNfeDadosMsgEhXML)
                {
                    int cUF = Empresas.Configuracoes[emp].UnidadeFederativaCodigo;

                    //Definir o objeto do WebService
                    WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, cUF, oDadosConsultaNFeDest.tpAmb);
                    System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(cUF, oDadosConsultaNFeDest.tpAmb, (int)TipoEmissao.teNormal, PadroesNFSe.NaoIdentificado, Servico);

                    object oConsNFDestEvento = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);
                    object oCabecMsg         = wsProxy.CriarObjeto(NomeClasseCabecWS(cUF, Servico));

                    //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg
                    wsProxy.SetProp(oCabecMsg, NFe.Components.TpcnResources.cUF.ToString(), cUF.ToString());
                    wsProxy.SetProp(oCabecMsg, NFe.Components.TpcnResources.versaoDados.ToString(), NFe.ConvertTxt.versoes.VersaoXMLEnvConsultaNFeDest);

                    //Invocar o método que envia o XML para o SEFAZ
                    oInvocarObj.Invocar(wsProxy,
                                        oConsNFDestEvento,
                                        wsProxy.NomeMetodoWS[0],
                                        oCabecMsg,
                                        this,
                                        Propriedade.Extensao(Propriedade.TipoEnvio.ConsNFeDest).EnvioXML,
                                        Propriedade.Extensao(Propriedade.TipoEnvio.ConsNFeDest).RetornoXML,
                                        true,
                                        securityProtocolType);

                    //Ler o retorno
                    this.LerRetornoConsultaNFeDest(emp);
                }
                else
                {
                    string f = Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.ConsNFeDest).EnvioTXT) + Propriedade.Extensao(Propriedade.TipoEnvio.ConsNFeDest).EnvioXML;

                    if (NomeArquivoXML.IndexOf(Empresas.Configuracoes[emp].PastaValidar, StringComparison.InvariantCultureIgnoreCase) >= 0)
                    {
                        f = Path.Combine(Empresas.Configuracoes[emp].PastaValidar, f);
                    }
                    // Gerar o XML de eventos a partir do TXT gerado pelo ERP
                    oGerarXML.EnvioConsultaNFeDest(f, oDadosConsultaNFeDest);
                }
            }
            catch (Exception ex)
            {
                try
                {
                    var ExtRet = vXmlNfeDadosMsgEhXML ? Propriedade.Extensao(Propriedade.TipoEnvio.ConsNFeDest).EnvioXML :
                                 Propriedade.Extensao(Propriedade.TipoEnvio.ConsNFeDest).EnvioTXT;
                    //Gravar o arquivo de erro de retorno para o ERP, caso ocorra
                    TFunctions.GravarArqErroServico(NomeArquivoXML, ExtRet, Propriedade.ExtRetorno.retConsNFeDest_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 09/03/2010
                }
            }
            finally
            {
                try
                {
                    Functions.DeletarArquivo(NomeArquivoXML);
                }
                catch
                {
                    //Se falhou algo na hora de deletar o XML de evento, 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 09/03/2010
                }
            }
        }
Ejemplo n.º 29
0
        public void Execute(int emp)
        {
            try
            {
                #region Parte do código que envia o XML de pedido de consulta do recibo

                dadosPedRec = new DadosPedRecClass();
                PedRec(emp);

                //Definir o objeto do WebService
                WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, dadosPedRec.cUF, dadosPedRec.tpAmb, dadosPedRec.tpEmis, 0);
                System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(dadosPedRec.cUF, dadosPedRec.tpAmb, dadosPedRec.tpEmis, Servico);

                //Criar objetos das classes dos serviços dos webservices do SEFAZ
                var oRepRecepcao = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);
                var oCabecMsg    = wsProxy.CriarObjeto(NomeClasseCabecWS(dadosPedRec.cUF, Servico, dadosPedRec.tpEmis));

                //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg
                wsProxy.SetProp(oCabecMsg, TpcnResources.cUF.ToString(), dadosPedRec.cUF.ToString());
                wsProxy.SetProp(oCabecMsg, TpcnResources.versaoDados.ToString(), dadosPedRec.versao);

                //Invocar o método que envia o XML para o SEFAZ
                oInvocarObj.Invocar(wsProxy,
                                    oRepRecepcao,
                                    wsProxy.NomeMetodoWS[0],
                                    oCabecMsg,
                                    this,
                                    Propriedade.Extensao(Propriedade.TipoEnvio.PedRec).EnvioXML,
                                    Propriedade.Extensao(Propriedade.TipoEnvio.PedRec).RetornoXML,
                                    false,
                                    securityProtocolType);

                #endregion Parte do código que envia o XML de pedido de consulta do recibo

                #region Parte do código que trata o XML de retorno da consulta do recibo

                //Efetuar a leituras das notas do lote para ver se foi autorizada ou não
                LerRetornoLoteCTe(emp);

                //Gravar o XML retornado pelo WebService do SEFAZ na pasta de retorno para o ERP
                //Tem que ser feito neste ponto, pois somente aqui terminamos todo o processo
                //Wandrey 18/06/2009
                oGerarXML.XmlRetorno(Propriedade.Extensao(Propriedade.TipoEnvio.PedRec).EnvioXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedRec).RetornoXML, vStrXmlRetorno);

                #endregion Parte do código que trata o XML de retorno da consulta do recibo
            }
            catch (Exception ex)
            {
                try
                {
                    TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedRec).EnvioXML, Propriedade.ExtRetorno.ProRec_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.
                    //Pois ocorreu algum erro de rede, hd, permissão das pastas, etc. Wandrey 22/03/2010
                }
            }
            finally
            {
                //Deletar o arquivo de solicitação do serviço
                Functions.DeletarArquivo(NomeArquivoXML);
            }
        }
Ejemplo n.º 30
0
        public override void Execute()
        {
            int emp = Empresas.FindEmpresaByThread();

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

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

                oDadosPedNfsePDF = new DadosPedSitNfse(emp);

                //Criar objetos das classes dos serviços dos webservices do municipio
                PadroesNFSe     padraoNFSe = Functions.PadraoNFSe(oDadosPedNfsePDF.cMunicipio);
                WebServiceProxy wsProxy    = ConfiguracaoApp.DefinirWS(Servico, emp, oDadosPedNfsePDF.cMunicipio, oDadosPedNfsePDF.tpAmb, oDadosPedNfsePDF.tpEmis, padraoNFSe, oDadosPedNfsePDF.cMunicipio);
                object          pedNfsePNG = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);
                string          cabecMsg   = "";

                switch (padraoNFSe)
                {
                case PadroesNFSe.PRODATA:
                    cabecMsg = "<cabecalho><versaoDados>2.01</versaoDados></cabecalho>";
                    break;
                }

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

                //Assinar o XML
                AssinaturaDigital ad = new AssinaturaDigital();
                ad.Assinar(NomeArquivoXML, emp, Convert.ToInt32(oDadosPedNfsePDF.cMunicipio));

                //Invocar o método que envia o XML para o municipio
                oInvocarObj.InvocarNFSe(wsProxy, pedNfsePNG, NomeMetodoWS(Servico, oDadosPedNfsePDF.cMunicipio), cabecMsg, this,
                                        Propriedade.Extensao(Propriedade.TipoEnvio.PedNFSePDF).EnvioXML,
                                        Propriedade.Extensao(Propriedade.TipoEnvio.PedNFSePDF).RetornoXML,
                                        padraoNFSe, Servico, securityProtocolType);

                ConvertBase64ToPDF(emp, padraoNFSe);

                /// grava o arquivo no FTP
                string filenameFTP = Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                  Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedNFSePDF).EnvioXML) +
                                                  Propriedade.Extensao(Propriedade.TipoEnvio.PedNFSePDF).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.PedNFSePDF).EnvioXML,
                                                    Propriedade.ExtRetorno.NFSePDF_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.NFSePDF_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
                }
            }
        }
Ejemplo n.º 31
0
        public override void Execute()
        {
            int        emp         = Empresas.FindEmpresaByThread();
            distDFeInt _distDFeInt = new distDFeInt();

            Servico = Servicos.DFeEnviar;
            try
            {
                if (!this.vXmlNfeDadosMsgEhXML)
                {
                    ///versao|1.00
                    ///tpAmb|1
                    ///cUFAutor|35
                    ///CNPJ|
                    /// ou
                    ///CPF|
                    ///ultNSU|123456789012345
                    /// ou
                    ///NSU|123456789012345
                    List <string> cLinhas = Functions.LerArquivo(this.NomeArquivoXML);
                    Functions.PopulateClasse(_distDFeInt, cLinhas);

                    string f = System.IO.Path.GetFileNameWithoutExtension(NomeArquivoXML) + ".xml";

                    if (NomeArquivoXML.IndexOf(Empresas.Configuracoes[emp].PastaValidar, StringComparison.InvariantCultureIgnoreCase) >= 0)
                    {
                        f = Path.Combine(Empresas.Configuracoes[emp].PastaValidar, f);
                    }
                    // Gerar o XML de envio de DFe a partir do TXT gerado pelo ERP
                    oGerarXML.RecepcaoDFe(f, _distDFeInt);
                }
                else
                {
                    XmlDocument doc = new XmlDocument();
                    doc.Load(this.NomeArquivoXML);

                    XmlNodeList consdistDFeIntList = doc.GetElementsByTagName("distDFeInt");

                    foreach (XmlNode consdistDFeIntNode in consdistDFeIntList)
                    {
                        XmlElement consdistDFeIntElemento = (XmlElement)consdistDFeIntNode;
                        Functions.PopulateClasse(_distDFeInt, consdistDFeIntElemento);
                    }

                    //Definir o objeto do WebService
                    WebServiceProxy wsProxy =
                        ConfiguracaoApp.DefinirWS(Servico,
                                                  emp,
                                                  991,
                                                  _distDFeInt.tpAmb);

                    object oConsNFDestEvento = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);

                    //Invocar o método que envia o XML para o SEFAZ
                    oInvocarObj.Invocar(wsProxy,
                                        oConsNFDestEvento,
                                        wsProxy.NomeMetodoWS[0],
                                        null,
                                        this,
                                        Propriedade.ExtEnvio.EnvDFe_XML.Replace(".xml", ""),
                                        Propriedade.ExtRetorno.retEnvDFe_XML.Replace(".xml", ""));

                    LeRetornoDFe(emp, doc);
                }
            }
            catch (Exception ex)
            {
                WriteLogError(ex);
            }
            finally
            {
                try
                {
                    //Deletar o arquivo de solicitação do serviço
                    Functions.DeletarArquivo(NomeArquivoXML);
                }
                catch
                {
                }
            }
        }
Ejemplo n.º 32
0
        public override void Execute()
        {
            int emp = Empresas.FindEmpresaByThread();

            try
            {
                dadosPedSit = new DadosPedSit();
                PedSit(emp, dadosPedSit);

                if (vXmlNfeDadosMsgEhXML)
                {
                    //Definir o objeto do WebService
                    WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, dadosPedSit.cUF, dadosPedSit.tpAmb, dadosPedSit.tpEmis, dadosPedSit.versao, dadosPedSit.mod, 0);
                    System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(dadosPedSit.cUF, dadosPedSit.tpAmb, dadosPedSit.tpEmis, Servico);

                    //Criar objetos das classes dos serviços dos webservices do SEFAZ
                    object oConsulta = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);

                    object oCabecMsg = null;
                    if (dadosPedSit.versao != "4.00")
                    {
                        oCabecMsg = wsProxy.CriarObjeto(NomeClasseCabecWS(dadosPedSit.cUF, Servico));
                        wsProxy.SetProp(oCabecMsg, TpcnResources.cUF.ToString(), dadosPedSit.cUF.ToString());
                        wsProxy.SetProp(oCabecMsg, TpcnResources.versaoDados.ToString(), dadosPedSit.versao);
                    }

                    new AssinaturaDigital().CarregarPIN(emp, NomeArquivoXML, Servico);

                    //Invocar o método que envia o XML para o SEFAZ
                    oInvocarObj.Invocar(wsProxy, oConsulta, wsProxy.NomeMetodoWS[0], oCabecMsg, this,
                                        Propriedade.Extensao(Propriedade.TipoEnvio.PedSit).EnvioXML,
                                        Propriedade.Extensao(Propriedade.TipoEnvio.PedSit).RetornoXML,
                                        false,
                                        securityProtocolType);

                    //Efetuar a leitura do retorno da situação para ver se foi autorizada ou não
                    //Na versão 1 não posso gerar o -procNfe, ou vou ter que tratar a estrutura do XML de acordo com a versão, a consulta na versão 1 é somente para obter o resultado mesmo.
                    LerRetornoSitNFe(dadosPedSit.chNFe);

                    //Gerar o retorno para o ERP
                    oGerarXML.XmlRetorno(Propriedade.Extensao(Propriedade.TipoEnvio.PedSit).EnvioXML,
                                         Propriedade.Extensao(Propriedade.TipoEnvio.PedSit).RetornoXML, this.vStrXmlRetorno);
                }
                else
                {
                    string f = Path.GetFileNameWithoutExtension(NomeArquivoXML) + ".xml";

                    if (NomeArquivoXML.IndexOf(Empresas.Configuracoes[emp].PastaValidar, StringComparison.InvariantCultureIgnoreCase) >= 0)
                    {
                        f = Path.Combine(Empresas.Configuracoes[emp].PastaValidar, f);
                    }
                    oGerarXML.Consulta(TipoAplicativo.Nfe, f,
                                       dadosPedSit.tpAmb,
                                       dadosPedSit.tpEmis,
                                       dadosPedSit.chNFe,
                                       dadosPedSit.versao);
                }
            }
            catch (Exception ex)
            {
                string ExtEnvio = string.Empty;

                if (this.vXmlNfeDadosMsgEhXML) //Se for XML
                {
                    ExtEnvio = Propriedade.Extensao(Propriedade.TipoEnvio.PedSit).EnvioXML;
                }
                else //Se for TXT
                {
                    ExtEnvio = Propriedade.Extensao(Propriedade.TipoEnvio.PedSit).EnvioTXT;
                }

                try
                {
                    TFunctions.GravarArqErroServico(NomeArquivoXML, ExtEnvio, Propriedade.ExtRetorno.Sit_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 09/03/2010
                }
            }
            finally
            {
                try
                {
                    Functions.DeletarArquivo(NomeArquivoXML);
                }
                catch
                {
                    //Se falhou algo na hora de deletar o XML de pedido da consulta da situação da NFe, infelizmente
                    //não posso fazser mais nada, o UniNFe vai tentar mantar o arquivo novamente para o webservice, pois ainda não foi excluido.
                    //Wandrey 22/03/2010
                }
            }
        }