Пример #1
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
                }
            }
        }
Пример #2
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
                }
            }
        }
Пример #3
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
                }
            }
        }
Пример #4
0
        public override void Execute()
        {
            int emp = Empresas.FindEmpresaByThread();

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

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

                //Ler o XML para pegar parâmetros de envio
                LerXML ler = new LerXML();
                ler.PedSitNfseRps(NomeArquivoXML);
                PadroesNFSe padraoNFSe = Functions.PadraoNFSe(ler.oDadosPedSitNfseRps.cMunicipio);
                //Criar objetos das classes dos serviços dos webservices do SEFAZ
                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, 0);;
                    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.ConsultarLoteRps(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.SIGCORP_SIGISS:
                    SigCorp sigcorp = new SigCorp((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                                  Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                  Convert.ToInt32(ler.oDadosPedSitNfseRps.cMunicipio));
                    sigcorp.ConsultarLoteRps(NomeArquivoXML);
                    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.ConsultarLoteRps(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.ConsultarLoteRps(NomeArquivoXML);
                    break;

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

                    conam.ConsultarLoteRps(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.ConsultarLoteRps(NomeArquivoXML);
                    break;

                    #endregion E-Governe

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

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

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

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

                    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.ConsultarLoteRps(NomeArquivoXML);
                    break;

                    #endregion METROPOLIS

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

                    if (ler.oDadosPedSitNfseRps.tpAmb == 1)
                    {
                        pedLoteRps = 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.PRONIN:
                    if (ler.oDadosPedSitNfseRps.cMunicipio == 4109401 ||
                        ler.oDadosPedSitNfseRps.cMunicipio == 3131703 ||
                        ler.oDadosPedSitNfseRps.cMunicipio == 4303004 ||
                        ler.oDadosPedSitNfseRps.cMunicipio == 4322509)
                    {
                        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.ConsultarLoteRps(NomeArquivoXML);
                    }
                    break;

                case PadroesNFSe.BAURU_SP:
                    Bauru_SP bauru_SP = new Bauru_SP((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo,
                                                     Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                     Convert.ToInt32(ler.oDadosPedSitNfseRps.cMunicipio));
                    bauru_SP.ConsultarLoteRps(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.ConsultarLoteRps(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.ConsultarLoteRps(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;
                }

                if (base.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.PedLoteRps).EnvioXML,   //"-ped-loterps",
                                            Propriedade.Extensao(Propriedade.TipoEnvio.PedLoteRps).RetornoXML, //"-loterps",
                                            padraoNFSe, Servico, securityProtocolType);

                    ///
                    /// grava o arquivo no FTP
                    string filenameFTP = Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                      Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedLoteRps).EnvioXML) + Propriedade.Extensao(Propriedade.TipoEnvio.PedLoteRps).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.PedLoteRps).EnvioXML, Propriedade.ExtRetorno.LoteRps_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
                }
            }
        }
Пример #5
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
                }
            }
        }