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

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

            try
            {
                //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 (padraoNFSe != PadroesNFSe.SIMPLISS)
                {
                    wsProxy    = ConfiguracaoApp.DefinirWS(Servico, emp, ler.oDadosPedSitNfseRps.cMunicipio, ler.oDadosPedSitNfseRps.tpAmb, ler.oDadosPedSitNfseRps.tpEmis, padraoNFSe);;
                    pedLoteRps = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);
                }

                string cabecMsg = "";
                switch (padraoNFSe)
                {
                case PadroesNFSe.GINFES:
                    if (ler.oDadosPedSitNfseRps.cMunicipio == 4125506)     //São José dos Pinhais - PR
                    {
                        cabecMsg = "<ns2:cabecalho versao=\"3\" xmlns:ns2=\"http://nfe.sjp.pr.gov.br/cabecalho_v03.xsd\"><versaoDados>3</versaoDados></ns2:cabecalho>";
                    }
                    else
                    {
                        cabecMsg = "<ns2:cabecalho versao=\"3\" xmlns:ns2=\"http://www.ginfes.com.br/cabecalho_v03.xsd\"><versaoDados>3</versaoDados></ns2:cabecalho>";
                    }
                    break;

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

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

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

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

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

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

                    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
                }

                if (base.IsUtilizaCompilacaoWs(padraoNFSe))
                {
                    //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, "-ped-loterps", "-loterps", padraoNFSe, Servico);

                    ///
                    /// grava o arquivo no FTP
                    string filenameFTP = Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                      Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.ExtEnvio.PedLoteRps) + Propriedade.ExtRetorno.LoteRps);
                    if (File.Exists(filenameFTP))
                    {
                        new GerarXML(emp).XmlParaFTP(emp, filenameFTP);
                    }
                }
            }
            catch (Exception ex)
            {
                try
                {
                    //Gravar o arquivo de erro de retorno para o ERP, caso ocorra
                    TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.ExtEnvio.PedLoteRps, 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
                }
            }
        }
        public override void Execute(Empresa empresa)
        {
            //Definir o serviço que será executado para a classe
            Servico = Servicos.ConsultarNfsePorRps;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                case PadroesNFSe.PORTOVELHENSE:
                    wsProxy = ConfiguracaoApp.DefinirWS(Servico, empresa, ler.oDadosPedSitNfseRps.cMunicipio, ler.oDadosPedSitNfseRps.tpAmb, ler.oDadosPedSitNfseRps.tpEmis, padraoNFSe);
                    pedLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, ler.oDadosPedSitNfseRps.cMunicipio));
                    cabecMsg = "<cabecalho versao=\"2.00\" xmlns:ns2=\"http://www.w3.org/2000/09/xmldsig#\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\"><versaoDados>2.00</versaoDados></cabecalho>";
                    break;

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

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

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

                //Invocar o método que envia o XML para o SEFAZ
                oInvocarObj.InvocarNFSe(wsProxy, pedLoteRps, NomeMetodoWS(Servico, ler.oDadosPedSitNfseRps.cMunicipio, empresa.tpAmb), cabecMsg, this, "-ped-sitnfserps", "-sitnfserps", padraoNFSe, Servico, empresa);
            }
        }
Exemplo n.º 3
0
        public override void Execute(Empresa empresa)
        {
            //Definir o serviço que será executado para a classe
            Servico = Servicos.ConsultarNfsePorRps;

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

            ler.PedSitNfseRps(NomeArquivoXML, empresa);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            case PadroesNFSe.PORTOVELHENSE:
                wsProxy    = ConfiguracaoApp.DefinirWS(Servico, empresa, ler.oDadosPedSitNfseRps.cMunicipio, ler.oDadosPedSitNfseRps.tpAmb, ler.oDadosPedSitNfseRps.tpEmis, padraoNFSe);
                pedLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, ler.oDadosPedSitNfseRps.cMunicipio));
                cabecMsg   = "<cabecalho versao=\"2.00\" xmlns:ns2=\"http://www.w3.org/2000/09/xmldsig#\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\"><versaoDados>2.00</versaoDados></cabecalho>";
                break;

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

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

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

                //Invocar o método que envia o XML para o SEFAZ
                oInvocarObj.InvocarNFSe(wsProxy, pedLoteRps, NomeMetodoWS(Servico, ler.oDadosPedSitNfseRps.cMunicipio, empresa.tpAmb), cabecMsg, this, "-ped-sitnfserps", "-sitnfserps", padraoNFSe, Servico, empresa);
            }
        }
Exemplo n.º 4
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;
                }

                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)
            {
                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
                }
            }
            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
                }
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// Busca no WebService da NFe a situação da nota fiscal enviada
        /// </summary>
        /// <remarks>
        /// Atualiza a propriedade this.vNfeRetorno da classe com o conteúdo
        /// XML com o retorno que foi dado do serviço do WebService.
        /// No caso do RetRecepcao se tudo estiver correto retorna um XML
        /// dizendo que o lote foi processado ou não e se as notas foram 
        /// autorizadas ou não.
        /// Se der algum erro ele grava um arquivo txt com o erro em questão.
        /// </remarks>
        /// <example>
        /// oUniNfe.vXmlNfeDadosMsg = "c:\teste-ped-rec.xml";
        /// oUniNfe.RetRecepcao();
        /// this.textBox_xmlretorno.Text = oUniNfe.vNfeRetorno;
        /// //
        /// //
        /// //O conteúdo de retorno vai ser algo mais ou menos assim:
        /// //
        /// //<?xml version="1.0" encoding="UTF-8"?>
        /// //   <retEnviNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.10">
        /// //      <tpAmb>2</tpAmb>
        /// //      <verAplic>1.10</verAplic>
        /// //      <cStat>103</cStat>
        /// //      <xMotivo>Lote recebido com sucesso</xMotivo>
        /// //      <cUF>51</cUF>
        /// //      <infRec>
        /// //         <nRec>510000000106704</nRec>
        /// //         <dhRecbto>2008-06-12T10:49:30</dhRecbto>
        /// //         <tMed>2</tMed>
        /// //      </infRec>
        /// //   </retEnviNFe>
        /// </example>
        /// <by>Wandrey Mundin Ferreira</by>
        /// <date>04/06/2008</date>        
        public override void RetRecepcao()
        {
            int emp = new FindEmpresaThread(Thread.CurrentThread).Index;
            //Definir o serviço que será executado para a classe
            Servico = Servicos.PedidoSituacaoLoteNFe;

            try
            {
                #region Parte do código que envia o XML de pedido de consulta do recibo
                var oLer = new LerXML();
                oLer.PedRec(NomeArquivoXML);

                //Definir o objeto do WebService
                WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servicos.PedidoSituacaoLoteNFe, emp, oLer.oDadosPedRec.cUF, oLer.oDadosPedRec.tpAmb, oLer.oDadosPedRec.tpEmis);

                //Criar objetos das classes dos serviços dos webservices do SEFAZ
                var oCancelamento = wsProxy.CriarObjeto("NfeRetRecepcao2");
                var oCabecMsg = wsProxy.CriarObjeto("nfeCabecMsg");

                //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg
                wsProxy.SetProp(oCabecMsg, "cUF", oLer.oDadosPedRec.cUF.ToString());
                wsProxy.SetProp(oCabecMsg, "versaoDados", ConfiguracaoApp.VersaoXMLPedRec);

                //Invocar o método que envia o XML para o SEFAZ
                oInvocarObj.Invocar(wsProxy, oCancelamento, "nfeRetRecepcao2", oCabecMsg, this);
                #endregion

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

                //Gravar o XML retornado pelo WebService do SEFAZ na pasta de retorno para o ERP
                //Tem que ser feito neste ponto, pois somente aqui terminamos todo o processo
                //Wandrey 18/06/2009
                oGerarXML.XmlRetorno(ExtXml.PedRec, ExtXmlRet.ProRec, vStrXmlRetorno);
                #endregion
            }
            catch (Exception ex)
            {
                try
                {
                    oAux.GravarArqErroServico(NomeArquivoXML, ExtXml.PedRec, ExtXmlRet.ProRec_ERR, ex);
                }
                catch
                {
                    //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada.
                    //Pois ocorreu algum erro de rede, hd, permissão das pastas, etc. Wandrey 22/03/2010
                }
            }
            finally
            {
                //Deletar o arquivo de solicitação do serviço
                oAux.DeletarArquivo(NomeArquivoXML);
            }
        }
Exemplo n.º 6
0
        /// <summary>
        /// Ler o retorno da consulta situação da nota fiscal e de acordo com o status ele trata as notas enviadas se ainda não foram tratadas
        /// </summary>
        /// <param name="ChaveNFe">Chave da NFe que está sendo consultada</param>
        /// <remarks>
        /// Autor: Wandrey Mundin Ferreira
        /// Data: 16/06/2010
        /// </remarks>
        protected override void LerRetornoSit(string ChaveNFe)
        {
            int emp = new FindEmpresaThread(Thread.CurrentThread).Index;

            LerXML oLerXml = new LerXML();
            MemoryStream msXml = Auxiliar.StringXmlToStream(this.vStrXmlRetorno);

            FluxoNfe oFluxoNfe = new FluxoNfe();

            try
            {
                XmlDocument doc = new XmlDocument();
                doc.Load(msXml);

                #region Distribuicao de Eventos

                oGerarXML.XmlDistEvento(emp, this.vStrXmlRetorno);    //<<<danasa 6-2011

                #endregion

                XmlNodeList retConsSitList = doc.GetElementsByTagName("retConsSitNFe");

                foreach (XmlNode retConsSitNode in retConsSitList)
                {
                    XmlElement retConsSitElemento = (XmlElement)retConsSitNode;

                    //Definir a chave da NFe a ser pesquisada
                    string strChaveNFe = "NFe" + ChaveNFe;

                    //Definir o nome do arquivo da NFe e seu caminho
                    string strNomeArqNfe = oFluxoNfe.LerTag(strChaveNFe, FluxoNfe.ElementoFixo.ArqNFe);

                    if (string.IsNullOrEmpty(strNomeArqNfe))
                    {
                        if (string.IsNullOrEmpty(strChaveNFe))
                            throw new Exception("LerRetornoSit(): Não pode obter o nome do arquivo");

                        strNomeArqNfe = strChaveNFe.Substring(3) + ExtXml.Nfe;
                    }

                    string strArquivoNFe = Empresa.Configuracoes[emp].PastaEnviado + "\\" + PastaEnviados.EmProcessamento.ToString() + "\\" + strNomeArqNfe;

                    //Pegar o status de retorno da NFe que está sendo consultada a situação
                    var cStatCons = string.Empty;
                    if (retConsSitElemento.GetElementsByTagName("cStat")[0] != null)
                    {
                        cStatCons = retConsSitElemento.GetElementsByTagName("cStat")[0].InnerText;
                    }

                    switch (cStatCons)
                    {
                        #region Rejeições do XML de consulta da situação da NFe (Não é a nfe que foi rejeitada e sim o XML de consulta da situação da nfe)
                        case "280": //A-Certificado transmissor inválido
                        case "281": //A-Validade do certificado
                        case "283": //A-Verifica a cadeia de Certificação
                        case "286": //A-LCR do certificado de Transmissor
                        case "284": //A-Certificado do Transmissor revogado
                        case "285": //A-Certificado Raiz difere da "IPC-Brasil"
                        case "282": //A-Falta a extensão de CNPJ no Certificado
                        case "214": //B-Tamanho do XML de dados superior a 500 Kbytes
                        case "243": //B-XML de dados mal formatado
                        case "108": //B-Verifica se o Serviço está paralisado momentaneamente
                        case "109": //B-Verifica se o serviço está paralisado sem previsão
                        case "242": //C-Elemento nfeCabecMsg inexistente no SOAP Header
                        case "409": //C-Campo cUF inexistente no elemento nfeCabecMsg do SOAP Header
                        case "410": //C-Campo versaoDados inexistente no elemento nfeCabecMsg do SOAP
                        case "411": //C-Campo versaoDados inexistente no elemento nfeCabecMsg do SOAP
                        case "238": //C-Versão dos Dados informada é superior à versão vigente
                        case "239": //C-Versão dos Dados não suportada
                        case "215": //D-Verifica schema XML da área de dados
                        case "516": //D-Em caso de falha de schema, verificar se existe a tag raiz esperada para mensagem
                        case "517": //D-Em caso de falha de Schema, verificar se existe o atributo versão para a tag raiz da mensagem
                        case "545": //D-Em caso de falha de schema, verificar se o conteúdo do atributo versão difere do conteúdo da versaoDados informado no SOAPHeader
                        case "404": //D-Verifica o uso de prefixo no namespace
                        case "402": //D-XML utiliza codificação diferente de UTF-8
                        case "252": //J-Tipo do ambiente da NF-e difere do ambiente do web service
                        case "226": //J-UF da chave de acesso difere da UF do web service
                            break;
                        #endregion

                        #region Nota fiscal rejeitada
                        case "217": //J-NFe não existe na base de dados do SEFAZ
                            goto case "TirarFluxo";

                        case "562": //J-Verificar se o campo "Código Numérico" informado na chave de acesso é diferente do existente no BD
                            goto case "TirarFluxo";

                        case "561": //J-Verificar se campo MM (mês) informado na Chave de Acesso é diferente do existente no BD
                            goto case "TirarFluxo";
                        #endregion

                        #region Nota fiscal autorizada
                        case "100": //Autorizado o uso da NFe
                            XmlNodeList infConsSitList = retConsSitElemento.GetElementsByTagName("infProt");
                            if (infConsSitList != null)
                            {
                                foreach (XmlNode infConsSitNode in infConsSitList)
                                {
                                    XmlElement infConsSitElemento = (XmlElement)infConsSitNode;

                                    //Pegar o Status do Retorno da consulta situação
                                    string strStat = oAux.LerTag(infConsSitElemento, "cStat").Replace(";", "");

                                    switch (strStat)
                                    {
                                        case "100":
                                            //O retorno da consulta situação a posição das tag´s é diferente do que vem 
                                            //na consulta do recibo, assim sendo tenho que montar esta parte do XML manualmente
                                            //para que fique um XML de distribuição válido. Wandrey 07/10/2009
                                            string atributoId = string.Empty;
                                            if (infConsSitElemento.GetAttribute("Id").Length != 0)
                                            {
                                                atributoId = " Id=\"" + infConsSitElemento.GetAttribute("Id") + "\"";
                                            }

                                            string strProtNfe = "<protNFe versao=\"" + ConfiguracaoApp.VersaoXMLNFe + "\">" +
                                                "<infProt" + atributoId + ">" +
                                                "<tpAmb>" + oAux.LerTag(infConsSitElemento, "tpAmb", false) + "</tpAmb>" +
                                                "<verAplic>" + oAux.LerTag(infConsSitElemento, "verAplic", false) + "</verAplic>" +
                                                "<chNFe>" + oAux.LerTag(infConsSitElemento, "chNFe", false) + "</chNFe>" +
                                                "<dhRecbto>" + oAux.LerTag(infConsSitElemento, "dhRecbto", false) + "</dhRecbto>" +
                                                "<nProt>" + oAux.LerTag(infConsSitElemento, "nProt", false) + "</nProt>" +
                                                "<digVal>" + oAux.LerTag(infConsSitElemento, "digVal", false) + "</digVal>" +
                                                "<cStat>" + oAux.LerTag(infConsSitElemento, "cStat", false) + "</cStat>" +
                                                "<xMotivo>" + oAux.LerTag(infConsSitElemento, "xMotivo", false) + "</xMotivo>" +
                                                "</infProt>" +
                                                "</protNFe>";

                                            //Definir o nome do arquivo -procNfe.xml                                               
                                            string strArquivoNFeProc = Empresa.Configuracoes[emp].PastaEnviado + "\\" +
                                                                        PastaEnviados.EmProcessamento.ToString() + "\\" +
                                                                        oAux.ExtrairNomeArq(strArquivoNFe, ExtXml.Nfe) + ExtXmlRet.ProcNFe;

                                            //Se existir o strArquivoNfe, tem como eu fazer alguma coisa, se ele não existir
                                            //Não tenho como fazer mais nada. Wandrey 08/10/2009
                                            if (File.Exists(strArquivoNFe))
                                            {
                                                //Ler o XML para pegar a data de emissão para criar a pasta dos XML´s autorizados
                                                oLerXml.Nfe(strArquivoNFe);

                                                //Verificar se a -nfe.xml existe na pasta de autorizados
                                                bool NFeJaNaAutorizada = oAux.EstaAutorizada(strArquivoNFe, oLerXml.oDadosNfe.dEmi, ExtXml.Nfe);

                                                //Verificar se o -procNfe.xml existe na past de autorizados
                                                bool procNFeJaNaAutorizada = oAux.EstaAutorizada(strArquivoNFe, oLerXml.oDadosNfe.dEmi, ExtXmlRet.ProcNFe);

                                                //Se o XML de distribuição não estiver na pasta de autorizados
                                                if (!procNFeJaNaAutorizada)
                                                {
                                                    if (!File.Exists(strArquivoNFeProc))
                                                    {
                                                        oGerarXML.XmlDistNFe(strArquivoNFe, strProtNfe);
                                                    }
                                                }

                                                //Se o XML de distribuição não estiver ainda na pasta de autorizados
                                                if (!procNFeJaNaAutorizada)
                                                {
                                                    //Move a nfeProc da pasta de NFE em processamento para a NFe Autorizada
                                                    oAux.MoverArquivo(strArquivoNFeProc, PastaEnviados.Autorizados, oLerXml.oDadosNfe.dEmi);
                                                }

                                                //Se a NFe não existir ainda na pasta de autorizados
                                                if (!NFeJaNaAutorizada)
                                                {
                                                    //Mover a NFE da pasta de NFE em processamento para NFe Autorizada
                                                    oAux.MoverArquivo(strArquivoNFe, PastaEnviados.Autorizados, oLerXml.oDadosNfe.dEmi);
                                                }
                                                else
                                                {
                                                    //Se já estiver na pasta de autorizados, vou somente excluir ela da pasta de XML´s em processamento
                                                    oAux.DeletarArquivo(strArquivoNFe);
                                                }

                                                //Disparar a geração/impressçao do UniDanfe. 03/02/2010 - Wandrey
                                                oAux.ExecutaUniDanfe(strNomeArqNfe, oLerXml.oDadosNfe.dEmi);
                                            }

                                            if (File.Exists(strArquivoNFeProc))
                                            {
                                                //Se já estiver na pasta de autorizados, vou somente excluir ela da pasta de XML´s em processamento
                                                oAux.DeletarArquivo(strArquivoNFeProc);
                                            }

                                            break;

                                        case "301":
                                            //Ler o XML para pegar a data de emissão para criar a psta dos XML´s Denegados
                                            oLerXml.Nfe(strArquivoNFe);

                                            //Move a NFE da pasta de NFE em processamento para NFe Denegadas
                                            if (!oAux.EstaDenegada(strArquivoNFe, oLerXml.oDadosNfe.dEmi))
                                            {
                                                oAux.MoverArquivo(strArquivoNFe, PastaEnviados.Denegados, oLerXml.oDadosNfe.dEmi);
                                            }

                                            break;

                                        case "302":
                                            goto case "301";

                                        case "110": //Uso Denegado
                                            goto case "301";

                                        default:
                                            //Mover o XML da NFE a pasta de XML´s com erro
                                            oAux.MoveArqErro(strArquivoNFe);
                                            break;
                                    }

                                    //Deletar a NFE do arquivo de controle de fluxo
                                    oFluxoNfe.ExcluirNfeFluxo(strChaveNFe);
                                }
                            }
                            break;
                        #endregion

                        #region Nota fiscal cancelada
                        case "101": //Cancelamento Homologado ou Nfe Cancelada
                            goto case "100";
                        #endregion

                        #region Nota fiscal Denegada
                        case "110": //NFe Denegada
                            goto case "100";

                        case "301": //NFe Denegada
                            goto case "100";

                        case "302": //NFe Denegada
                            goto case "100";
                        #endregion

                        #region Conteúdo para retirar a nota fiscal do fluxo
                        case "TirarFluxo":
                            //Mover o XML da NFE a pasta de XML´s com erro
                            oAux.MoveArqErro(strArquivoNFe);

                            //Deletar a NFE do arquivo de controle de fluxo
                            oFluxoNfe.ExcluirNfeFluxo(strChaveNFe);
                            break;
                        #endregion

                        default:
                            break;
                    }
                }
            }
            catch (Exception ex)
            {
                throw (ex);
            }
        }
Exemplo n.º 7
0
        /// <summary>
        /// Envia o XML de inutilização de numeração de notas fiscais
        /// </summary>
        /// <remarks>
        /// Atualiza a propriedade this.vNfeRetorno da classe com o conteúdo
        /// XML com o retorno que foi dado do serviço do WebService.
        /// No caso da Inutilização se tudo estiver correto retorna um XML
        /// dizendo se foi inutilizado corretamente ou não.
        /// Se der algum erro ele grava um arquivo txt com o erro em questão.
        /// </remarks>
        /// <example>
        /// oUniNfe.vXmlNfeDadosMsg = "c:\teste-ped-sit.xml";
        /// oUniNfe.Inutilizacao();
        /// this.textBox_xmlretorno.Text = oUniNfe.vNfeRetorno;
        /// //
        /// //
        /// //O conteúdo de retorno vai ser algo mais ou menos assim:
        /// //
        /// //<?xml version="1.0" encoding="UTF-8" ?> 
        /// //<retInutNFe xmlns="http://www.portalfiscal.inf.br/nfe" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.portalfiscal.inf.br/nfe retInutNFe_v1.07.xsd" versao="1.07">
        /// //   <infInut>
        /// //      <tpAmb>2</tpAmb> 
        /// //      <verAplic>1.10</verAplic> 
        /// //      <cStat>102</cStat> 
        /// //      <xMotivo>Inutilizacao de numero homologado</xMotivo> 
        /// //      <cUF>51</cUF> 
        /// //      <ano>08</ano> 
        /// //      <CNPJ>12345678901234</CNPJ> 
        /// //      <mod>55</mod> 
        /// //      <serie>1</serie> 
        /// //      <nNFIni>101</nNFIni> 
        /// //      <nNFFin>101</nNFFin> 
        /// //      <dhRecbto>2008-07-01T16:47:11</dhRecbto> 
        /// //      <nProt>151080000197712</nProt> 
        /// //   </infInut>
        /// //</retInutNFe>
        /// </example>
        /// <by>Wandrey Mundin Ferreira</by>
        /// <date>03/04/2009</date>
        public override void Inutilizacao()
        {
            int emp = new FindEmpresaThread(Thread.CurrentThread).Index;

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

            try
            {
                //Ler o XML para pegar parâmetros de envio
                LerXML oLer = new LerXML();
                oLer.PedInut(NomeArquivoXML);

                if (this.vXmlNfeDadosMsgEhXML)  //danasa 12-9-2009
                {
                    //Definir o objeto do WebService
                    WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servicos.InutilizarNumerosNFe, emp, oLer.oDadosPedInut.cUF, oLer.oDadosPedInut.tpAmb, oLer.oDadosPedInut.tpEmis);

                    //Criar objetos das classes dos serviços dos webservices do SEFAZ
                    object oInutilizacao = wsProxy.CriarObjeto("NfeInutilizacao2");
                    object oCabecMsg = wsProxy.CriarObjeto("nfeCabecMsg");

                    //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg
                    wsProxy.SetProp(oCabecMsg, "cUF", oLer.oDadosPedInut.cUF.ToString());
                    wsProxy.SetProp(oCabecMsg, "versaoDados", ConfiguracaoApp.VersaoXMLInut);

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

                    //Assinar o XML
                    oAD.Assinar(NomeArquivoXML, "infInut", Empresa.Configuracoes[emp].X509Certificado);

                    //Invocar o método que envia o XML para o SEFAZ
                    oInvocarObj.Invocar(wsProxy, oInutilizacao, "nfeInutilizacaoNF2", oCabecMsg, this, "-ped-inu", "-inu");

                    //Ler o retorno do webservice
                    this.LerRetornoInut();
                }
                else
                {
                    oGerarXML.Inutilizacao(Path.GetFileNameWithoutExtension(NomeArquivoXML) + ".xml",
                        oLer.oDadosPedInut.tpAmb,
                        oLer.oDadosPedInut.tpEmis,
                        oLer.oDadosPedInut.cUF,
                        oLer.oDadosPedInut.ano,
                        oLer.oDadosPedInut.CNPJ,
                        oLer.oDadosPedInut.mod,
                        oLer.oDadosPedInut.serie,
                        oLer.oDadosPedInut.nNFIni,
                        oLer.oDadosPedInut.nNFFin,
                        oLer.oDadosPedInut.xJust);
                }

            }
            catch (Exception ex)
            {
                string ExtRet = string.Empty;

                if (this.vXmlNfeDadosMsgEhXML) //Se for XML
                    ExtRet = ExtXml.PedInu;
                else //Se for TXT
                    ExtRet = ExtXml.PedInu_TXT;

                try
                {
                    //Gravar o arquivo de erro de retorno para o ERP, caso ocorra
                    oAux.GravarArqErroServico(NomeArquivoXML, ExtRet, ExtXmlRet.Inu_ERR, ex);
                }
                catch
                {
                    //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada.
                    //Wandrey 09/03/2010
                }
            }
            finally
            {
                try
                {
                    if (!this.vXmlNfeDadosMsgEhXML) //Se for o TXT para ser transformado em XML, vamos excluir o TXT depois de gerado o XML
                        oAux.DeletarArquivo(NomeArquivoXML);
                }
                catch
                {
                    //Se falhou algo na hora de deletar o XML de inutilização, infelizmente não posso 
                    //fazer mais nada. Com certeza o uninfe sendo restabelecido novamente vai tentar enviar o mesmo 
                    //xml de inutilização para o SEFAZ. Este erro pode ocorrer por falha no HD, rede, Permissão de pastas, etc. Wandrey 23/03/2010
                }
            }
        }
        private const int _Minutos = 10;  //10 minutos?

        public NFeEmProcessamento()
        {
            int emp = new FindEmpresaThread(Thread.CurrentThread).Index;

            if (Empresa.Configuracoes[emp].UltimaVerificacaoEmProcessamento.Year > 1)
            {
                ///
                /// executa de 10x10 minutos para evitar ter que acessar o HD sem necessidade
                ///
                DateTime dCheck = Empresa.Configuracoes[emp].UltimaVerificacaoEmProcessamento.AddMinutes(_Minutos);
                if (dCheck > DateTime.Now)
                {
                    return;
                }
            }

            Empresa.Configuracoes[emp].UltimaVerificacaoEmProcessamento = DateTime.Now;
            this.oAux = new Auxiliar();

            try
            {
                ///
                /// le todos os arquivos que estão na pasta em processamento
                ///
                string[] files = Directory.GetFiles(Empresa.Configuracoes[emp].PastaEnviado + "\\" + PastaEnviados.EmProcessamento.ToString(),
                                                    "*" + ExtXml.Nfe,
                                                    SearchOption.TopDirectoryOnly);
                ///
                /// considera os arquivos em que a data do ultimo acesso é superior a 10 minutos
                ///
                DateTime UltimaData = DateTime.Now.AddMinutes(-_Minutos);

                foreach (string file in files)
                {
                    if (!Auxiliar.FileInUse(file))
                    {
                        FileInfo fi = new FileInfo(file);

                        //usar a última data de acesso, e não a data de criação
                        if (fi.LastWriteTime <= UltimaData)
                        {
                            if (this.oLerXml == null)
                            {
                                this.oLerXml   = new LerXML();
                                this.oGerarXml = new GerarXML(emp);
                                this.fluxo     = new FluxoNfe();
                            }

                            try
                            {
                                //Ler a NFe
                                oLerXml.Nfe(file);

                                //Verificar se o -nfe.xml existe na pasta de autorizados
                                bool NFeJaNaAutorizada = oAux.EstaAutorizada(file, oLerXml.oDadosNfe.dEmi, ExtXml.Nfe);

                                //Verificar se o -procNfe.xml existe na past de autorizados
                                bool procNFeJaNaAutorizada = oAux.EstaAutorizada(file, oLerXml.oDadosNfe.dEmi, ExtXmlRet.ProcNFe);

                                //Se um dos XML´s não estiver na pasta de autorizadas ele força finalizar o processo da NFe.
                                if (!NFeJaNaAutorizada || !procNFeJaNaAutorizada)
                                {
                                    //Verificar se a NFe está no fluxo, se não estiver vamos incluir ela para que funcione
                                    //a rotina de gerar o -procNFe.xml corretamente. Wandrey 21/10/2009
                                    if (!fluxo.NfeExiste(oLerXml.oDadosNfe.chavenfe))
                                    {
                                        fluxo.InserirNfeFluxo(oLerXml.oDadosNfe.chavenfe, oAux.ExtrairNomeArq(file, ExtXml.Nfe) + ExtXml.Nfe);
                                    }

                                    //gera um -ped-sit.xml mesmo sendo autorizada ou denegada, pois assim sendo, o ERP precisaria dele
                                    string vArquivoSit = oLerXml.oDadosNfe.chavenfe.Substring(3);

                                    oGerarXml.Consulta(vArquivoSit + ExtXml.PedSit,
                                                       Convert.ToInt32(oLerXml.oDadosNfe.tpAmb),
                                                       Convert.ToInt32(oLerXml.oDadosNfe.tpEmis),
                                                       oLerXml.oDadosNfe.chavenfe.Substring(3));
                                }
                                else
                                {
                                    //Move o XML da pasta em processamento para a pasta de XML´s com erro (-nfe.xml)
                                    oAux.MoveArqErro(file);

                                    //Move o XML da pasta em processamento para a pasta de XML´s com erro (-procNFe.xml)
                                    oAux.MoveArqErro(Empresa.Configuracoes[emp].PastaEnviado + "\\" + PastaEnviados.EmProcessamento.ToString() + "\\" + oAux.ExtrairNomeArq(file, ExtXml.Nfe) + ExtXmlRet.ProcNFe);

                                    //Tirar a nota fiscal do fluxo
                                    fluxo.ExcluirNfeFluxo(oLerXml.oDadosNfe.chavenfe);
                                }
                            }
                            catch (Exception ex)
                            {
                                ///
                                /// grava o arquivo com extensao .ERR
                                ///
                                oAux.GravarArqErroERP(Path.GetFileNameWithoutExtension(file) + ".err", ex.Message);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                ///
                /// grava o arquivo generico
                ///
                oAux.GravarArqErroERP(string.Format(InfoApp.NomeArqERRUniNFe, DateTime.Now.ToString("yyyyMMddThhmmss")), ex.Message);
            }
        }
Exemplo n.º 9
0
        /// <summary>
        /// Envia o XML de consulta da situação da nota fiscal
        /// </summary>
        /// <remarks>
        /// Atualiza a propriedade this.vNfeRetorno da classe com o conteúdo
        /// XML com o retorno que foi dado do serviço do WebService.
        /// No caso da Consulta se tudo estiver correto retorna um XML
        /// com a situação da nota fiscal (Se autorizada ou não).
        /// Se der algum erro ele grava um arquivo txt com o erro em questão.
        /// </remarks>
        /// <example>
        /// oUniNfe.vXmlNfeDadosMsg = "c:\teste-ped-sit.xml";
        /// oUniNfe.Consulta();
        /// this.textBox_xmlretorno.Text = oUniNfe.vNfeRetorno;
        /// //
        /// //
        /// //O conteúdo de retorno vai ser algo mais ou menos assim:
        /// //
        /// //<?xml version="1.0" encoding="UTF-8" ?>
        /// //   <retConsSitNFe versao="1.07" xmlns="http://www.portalfiscal.inf.br/nfe">
        /// //      <infProt>
        /// //         <tpAmb>2</tpAmb>
        /// //         <verAplic>1.10</verAplic>
        /// //         <cStat>100</cStat>
        /// //         <xMotivo>Autorizado o uso da NF-e</xMotivo>
        /// //         <cUF>51</cUF>
        /// //         <chNFe>51080612345678901234550010000001041671821888</chNFe>
        /// //         <dhRecbto>2008-06-27T15:01:48</dhRecbto>
        /// //         <nProt>151080000194296</nProt>
        /// //         <digVal>WHM/TzTvF+LrdUwtwvk26qgsko0=</digVal>
        /// //      </infProt>
        /// //   </retConsSitNFe>
        /// </example>
        /// <by>Wandrey Mundin Ferreira</by>
        /// <date>04/06/2008</date>
        public override void Consulta()
        {
            int emp = new FindEmpresaThread(Thread.CurrentThread).Index;

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

            try
            {
                //Ler o XML para pegar parâmetros de envio
                LerXML oLer = new LerXML();
                oLer.PedSit(NomeArquivoXML);

                if (vXmlNfeDadosMsgEhXML)
                {
                    //Definir o objeto do WebService
                    WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servicos.PedidoConsultaSituacaoNFe, emp, oLer.oDadosPedSit.cUF, oLer.oDadosPedSit.tpAmb, oLer.oDadosPedSit.tpEmis, oLer.oDadosPedSit.versaoNFe);

                    //Criar objetos das classes dos serviços dos webservices do SEFAZ
                    if (oLer.oDadosPedSit.versaoNFe == 1)
                    {
                        object oConsulta = null;
                        if (oLer.oDadosPedSit.cUF == 41)
                            oConsulta = wsProxy.CriarObjeto("NfeConsultaService");
                        else
                            oConsulta = wsProxy.CriarObjeto("NfeConsulta");

                        //Invocar o método que envia o XML para o SEFAZ
                        oInvocarObj.Invocar(wsProxy, oConsulta, "nfeConsultaNF", this);
                    }
                    else
                    {
                        object oConsulta = wsProxy.CriarObjeto("NfeConsulta2");
                        object oCabecMsg = wsProxy.CriarObjeto("nfeCabecMsg");

                        //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg
                        wsProxy.SetProp(oCabecMsg, "cUF", oLer.oDadosPedSit.cUF.ToString());
                        wsProxy.SetProp(oCabecMsg, "versaoDados", oLer.oDadosPedSit.versaoNFe == 201 ? "2.01" : ConfiguracaoApp.VersaoXMLPedSit);

                        //Invocar o método que envia o XML para o SEFAZ
                        oInvocarObj.Invocar(wsProxy, oConsulta, "nfeConsultaNF2", oCabecMsg, this);
                    }

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

                    //Gerar o retorno para o ERP
                    oGerarXML.XmlRetorno(ExtXml.PedSit, ExtXmlRet.Sit, this.vStrXmlRetorno);
                }
                else
                {
                    oGerarXML.Consulta(Path.GetFileNameWithoutExtension(NomeArquivoXML) + ".xml",
                                        oLer.oDadosPedSit.tpAmb,
                                        oLer.oDadosPedSit.tpEmis,
                                        oLer.oDadosPedSit.chNFe);
                }
            }
            catch (Exception ex)
            {
                string ExtRet = string.Empty;

                if (this.vXmlNfeDadosMsgEhXML) //Se for XML
                    ExtRet = ExtXml.PedSit;
                else //Se for TXT
                    ExtRet = ExtXml.PedSit_TXT;

                try
                {
                    oAux.GravarArqErroServico(NomeArquivoXML, ExtRet, ExtXmlRet.Sit_ERR, ex);
                }
                catch
                {
                    //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada.
                    //Wandrey 09/03/2010
                }

            }
            finally
            {
                try
                {
                    oAux.DeletarArquivo(NomeArquivoXML);
                }
                catch
                {
                    //Se falhou algo na hora de deletar o XML de pedido da consulta da situação da NFe, infelizmente
                    //não posso fazser mais nada, o UniNFe vai tentar mantar o arquivo novamente para o webservice, pois ainda não foi excluido.
                    //Wandrey 22/03/2010
                }
            }
        }
Exemplo n.º 10
0
        /// <summary>
        /// Envia o XML de consulta do cadastro do contribuinte para o web-service do sefaz
        /// </summary>
        /// <remark>
        /// Como retorno, o método atualiza a propriedade this.vNfeRetorno da classe 
        /// com o conteúdo do retorno do WebService.
        /// No caso do consultaCadastro se tudo estiver correto retorna um XML
        /// com o resultado da consulta
        /// Se der algum erro ele grava um arquivo txt com a extensão .ERR com o conteúdo do erro
        /// </remark>
        /// <example>
        /// oUniNfe.vUF = 51; //Setar o Estado que é para efetuar a consulta
        /// oUniNfe.vXmlNfeDadosMsg = "c:\00000000000000-cons-cad.xml";
        /// oUniNfe.ConsultaCadastro();
        /// this.textBox_xmlretorno.Text = oUniNfe.vNfeRetorno;
        /// //
        /// //O conteúdo de retorno vai ser algo mais ou menos assim:
        /// //
        /// //<retConsCad xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.01">
        /// //   <infCons>
        /// //      <verAplic>SP_NFE_PL_005c</verAplic>
        /// //      <cStat>111</cStat>
        /// //      <xMotivo>Consulta cadastro com uma ocorrência</xMotivo>
        /// //      <UF>SP</UF>
        /// //      <CNPJ>00000000000000</CNPJ>
        /// //      <dhCons>2009-01-29T10:36:33</dhCons>
        /// //      <cUF>35</cUF>
        /// //      <infCad>
        /// //         <IE>000000000000</IE>
        /// //         <CPF />
        /// //         <CNPJ>00000000000000</CNPJ>
        /// //         <UF>SP</UF>
        /// //         <cSit>1</cSit>
        /// //         <xNome>EMPRESA DE TESTE PARA AVALIACAO DO SERVICO</xNome>
        /// //      </infCad>
        /// //   </infCons>
        /// //</retConsCad>
        /// </example>
        /// <by>
        /// Wandrey Mundin Ferreira
        /// </by>
        /// <date>
        /// 15/01/2009
        /// </date>
        public override void ConsultaCadastro()
        {
            int emp = new FindEmpresaThread(Thread.CurrentThread).Index;

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

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

                if (this.vXmlNfeDadosMsgEhXML)  //danasa 12-9-2009
                {
                    //Definir o objeto do WebService
                    WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servicos.ConsultaCadastroContribuinte, emp, oLer.oDadosConsCad.cUF, oLer.oDadosConsCad.tpAmb, TipoEmissao.teNormal);

                    //Criar objetos das classes dos serviços dos webservices do SEFAZ
                    object oConsCad = wsProxy.CriarObjeto("CadConsultaCadastro2");                                                           
                    object oCabecMsg = wsProxy.CriarObjeto("nfeCabecMsg");

                    //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg
                    wsProxy.SetProp(oCabecMsg, "cUF", oLer.oDadosConsCad.cUF.ToString());
                    wsProxy.SetProp(oCabecMsg, "versaoDados", ConfiguracaoApp.VersaoXMLConsCad);

                    string cMetodo = "consultaCadastro2";
                    switch (oLer.oDadosConsCad.cUF)
                    {
                        case 52:
                            cMetodo = "cadConsultaCadastro2";
                            goto default;

                        default:
                            break;
                    }

                    //Invocar o método que envia o XML para o SEFAZ
                    oInvocarObj.Invocar(wsProxy, oConsCad, cMetodo, oCabecMsg, this, "-cons-cad", "-ret-cons-cad");
                }
                else
                {
                    //Gerar o XML da consulta cadastro do contribuinte a partir do TXT gerado pelo ERP
                    oGerarXML.ConsultaCadastro(Path.GetFileNameWithoutExtension(NomeArquivoXML) + ".xml",
                                               oLer.oDadosConsCad.UF,
                                               oLer.oDadosConsCad.CNPJ,
                                               oLer.oDadosConsCad.IE,
                                               oLer.oDadosConsCad.CPF);
                }
            }
            catch (Exception ex)
            {
                string ExtRet = string.Empty;

                if (this.vXmlNfeDadosMsgEhXML) //Se for XML
                    ExtRet = ExtXml.ConsCad;
                else //Se for TXT
                    ExtRet = ExtXml.ConsCad_TXT;

                try
                {
                    //Gravar o arquivo de erro de retorno para o ERP, caso ocorra
                    oAux.GravarArqErroServico(NomeArquivoXML, ExtRet, ExtXmlRet.ConsCad_ERR, ex);
                }
                catch
                {
                    //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada.
                    //Wandrey 09/03/2010
                }
            }
            finally
            {
                try
                {
                    //Deletar o arquivo de solicitação do serviço
                    oAux.DeletarArquivo(NomeArquivoXML);
                }
                catch
                {
                    //Se falhou algo na hora de deletar o XML de solicitação do serviço, 
                    //infelizmente não posso fazer mais nada, o UniNFe vai tentar mandar 
                    //o arquivo novamente para o webservice
                    //Wandrey 09/03/2010
                }
            }
        }
Exemplo n.º 11
0
        /// <summary>
        /// RecepcaoEvento
        /// </summary>
        public override void RecepcaoEvento()   //<<<danasa 6-2011
        {
            int emp = new FindEmpresaThread(Thread.CurrentThread).Index;

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

            try
            {
                //Ler o XML para pegar parâmetros de envio
                LerXML oLer = new LerXML();
                oLer.EnvEvento(emp, NomeArquivoXML);

                if (vXmlNfeDadosMsgEhXML)
                {
                    //Definir o objeto do WebService
                    WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servicos.EnviarCCe, 
                        emp,
                        Empresa.Configuracoes[emp].UFCod,   //oLer.oDadosEnvEvento.eventos[0].cOrgao, 
                        Empresa.Configuracoes[emp].tpAmb,   //oLer.oDadosEnvEvento.eventos[0].tpAmb, 
                        1);

                    //Criar objetos das classes dos serviços dos webservices do SEFAZ
                    object oRecepcaoEvento = wsProxy.CriarObjeto("RecepcaoEvento");
                    object oCabecMsg = wsProxy.CriarObjeto("nfeCabecMsg");

                    //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg
                    wsProxy.SetProp(oCabecMsg, "cUF", Empresa.Configuracoes[emp].UFCod/*oLer.oDadosEnvEvento.eventos[0].cOrgao*/.ToString());
                    wsProxy.SetProp(oCabecMsg, "versaoDados", ConfiguracaoApp.VersaoXMLEnvCCe);

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

                    //Assinar o XML
                    oAD.Assinar(NomeArquivoXML, "infEvento", Empresa.Configuracoes[emp].X509Certificado);

                    //Invocar o método que envia o XML para o SEFAZ
                    oInvocarObj.Invocar(wsProxy, oRecepcaoEvento, "nfeRecepcaoEvento", oCabecMsg, this, ExtXml.EnvCCe.Replace(".xml",""), ExtXmlRet.retEnvCCe.Replace(".xml",""));

                    //Ler o retorno
                    LerRetornoEvento(emp);
                }
                else
                {
                    // Gerar o XML de eventos a partir do TXT gerado pelo ERP
                    oGerarXML.EnvioEvento(Path.GetFileNameWithoutExtension(NomeArquivoXML) + ExtXml.EnvCCe, oLer.oDadosEnvEvento);
                }
            }
            catch (Exception ex)
            {
                try
                {
                    var ExtRet = vXmlNfeDadosMsgEhXML ? ExtXml.EnvCCe : ExtXml.EnvCCe_TXT;
                    //Gravar o arquivo de erro de retorno para o ERP, caso ocorra
                    oAux.GravarArqErroServico(NomeArquivoXML, ExtRet, ExtXmlRet.retEnvCCe_ERR, ex);
                }
                catch
                {
                    //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada.
                    //Wandrey 09/03/2010
                }
            }
            finally
            {
                try
                {
                    oAux.DeletarArquivo(NomeArquivoXML);
                }
                catch
                {
                    //Se falhou algo na hora de deletar o XML de evento, infelizmente
                    //não posso fazer mais nada, o UniNFe vai tentar mandar o arquivo novamente para o webservice, pois ainda não foi excluido.
                    //Wandrey 09/03/2010
                }
            }
        }
Exemplo n.º 12
0
        /// <summary>
        /// Envia o XML de consulta do registro do DPEC para o SCE (Sistema de Contingência Eletronica)
        /// </summary>
        /// <remarks>
        /// Autor: Wandrey Mundin Ferreira
        /// Data: 19/10/2010
        /// </remarks>
        public override void ConsultaDPEC()
        {
            //           throw new NotImplementedException();
            int emp = new FindEmpresaThread(Thread.CurrentThread).Index;

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

            try
            {
                //Ler o XML para pegar parâmetros de envio
                LerXML oLer = new LerXML();
                oLer.ConsDPEC(emp, NomeArquivoXML);

                if (vXmlNfeDadosMsgEhXML)  //danasa 12-9-2009
                {
                    //Definir o objeto do WebService
                    WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servicos.ConsultarDPEC, emp, 0, oLer.dadosConsDPEC.tpAmb, oLer.dadosConsDPEC.tpEmis);

                    //Criar objetos das classes dos serviços dos webservices do SEFAZ
                    object oRecepcaoDPEC = wsProxy.CriarObjeto("SCEConsultaRFB");
                    object oCabecMsg = wsProxy.CriarObjeto("sceCabecMsg");

                    //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg
                    wsProxy.SetProp(oCabecMsg, "versaoDados", ConfiguracaoApp.VersaoXMLConsDPEC);

                    //Invocar o método que envia o XML para o SEFAZ
                    oInvocarObj.Invocar(wsProxy, oRecepcaoDPEC, "sceConsultaDPEC", oCabecMsg, this);

                    //Ler o retorno
                    LerRetConsDPEC(emp);

                    //Gravar o XML retornado pelo WebService do SEFAZ na pasta de retorno para o ERP
                    //Tem que ser feito neste ponto, pois somente aqui terminamos todo o processo
                    oGerarXML.XmlRetorno(ExtXml.ConsDPEC, ExtXmlRet.retConsDPEC, vStrXmlRetorno);
                }
                else
                {
                    // Gerar o XML de solicitacao de situacao do servico a partir do TXT gerado pelo ERP
                    oGerarXML.ConsultaDPEC(Path.GetFileNameWithoutExtension(NomeArquivoXML) + ".xml", oLer.dadosConsDPEC);
                }
            }
            catch (Exception ex)
            {
                var ExtRet = vXmlNfeDadosMsgEhXML ? ExtXml.ConsDPEC : ExtXml.ConsDPEC_TXT;

                try
                {
                    //Gravar o arquivo de erro de retorno para o ERP, caso ocorra
                    oAux.GravarArqErroServico(NomeArquivoXML, ExtRet, ExtXmlRet.retConsDPEC_ERR, ex);
                }
                catch
                {
                    //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada.
                    //Wandrey 09/03/2010
                }
            }
            finally
            {
                try
                {
                    oAux.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 09/03/2010
                }
            }
        }
Exemplo n.º 13
0
        /// <summary>
        /// Verificar o status do Serviço da NFe do SEFAZ em questão
        /// </summary>
        /// <remark>
        /// Como retorno, o método atualiza a propriedade this.vNfeRetorno da classe 
        /// com o conteúdo do retorno do WebService.
        /// No caso do StatusServico se tudo estiver correto retorna um XML
        /// dizendo que o serviço está em operação
        /// Se der algum erro ele grava um arquivo txt com a extensão .ERR com o conteúdo do erro
        /// </remark>
        /// <example>
        /// oUniNfe.vUF = 51; //Setar o Estado que é para ser verificado o status do serviço
        /// oUniNfe.vXmlNfeDadosMsg = "c:\pedstatus.xml";
        /// oUniNfe.StatusServico();
        /// this.textBox_xmlretorno.Text = oUniNfe.vNfeRetorno;
        /// //
        /// //O conteúdo de retorno vai ser algo mais ou menos assim:
        /// //
        /// // <?xml version="1.0" encoding="UTF-8"?>
        /// //   <retConsStatServ xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.07">
        /// //      <tpAmb>2</tpAmb>
        /// //      <verAplic>1.10</verAplic>
        /// //      <cStat>107</cStat>
        /// //      <xMotivo>Servico em Operacao</xMotivo>
        /// //      <cUF>51</cUF>
        /// //      <dhRecbto>2008-06-12T11:16:55</dhRecbto>
        /// //      <tMed>2</tMed>
        /// //   </retConsStatServ>
        /// </example>
        /// <by>
        /// Wandrey Mundin Ferreira
        /// </by>
        /// <date>
        /// 01/04/2008
        /// </date>
        public override void StatusServico()
        {
            int emp = new FindEmpresaThread(Thread.CurrentThread).Index;

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

            try
            {
                //Ler o XML para pegar parâmetros de envio
                var oLer = new LerXML();
                oLer.PedSta(NomeArquivoXML);

                if (vXmlNfeDadosMsgEhXML)  //danasa 12-9-2009
                {
                    //Definir o objeto do WebService
                    WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servicos.PedidoConsultaStatusServicoNFe, emp, oLer.oDadosPedSta.cUF, oLer.oDadosPedSta.tpAmb, oLer.oDadosPedSta.tpEmis);
                    
                    //Criar objetos das classes dos serviços dos webservices do SEFAZ
                    var oStatusServico = wsProxy.CriarObjeto("NfeStatusServico2");
                    var oCabecMsg = wsProxy.CriarObjeto("nfeCabecMsg");

                    //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg
                    wsProxy.SetProp(oCabecMsg, "cUF", oLer.oDadosPedSta.cUF.ToString());
                    wsProxy.SetProp(oCabecMsg, "versaoDados", ConfiguracaoApp.VersaoXMLStatusServico);

                    //Invocar o método que envia o XML para o SEFAZ
                    oInvocarObj.Invocar(wsProxy, oStatusServico, "nfeStatusServicoNF2", oCabecMsg, this, "-ped-sta", "-sta");
                }
                else
                {
                    // Gerar o XML de solicitacao de situacao do servico a partir do TXT gerado pelo ERP
                    oGerarXML.StatusServico(Path.GetFileNameWithoutExtension(NomeArquivoXML) + ".xml",
                                            oLer.oDadosPedSta.tpAmb,
                                            oLer.oDadosPedSta.tpEmis,
                                            oLer.oDadosPedSta.cUF);
                }
            }
            catch (Exception ex)
            {
                var extRet = vXmlNfeDadosMsgEhXML ? ExtXml.PedSta : ExtXml.PedSta_TXT;

                try
                {
                    //Gravar o arquivo de erro de retorno para o ERP, caso ocorra
                    oAux.GravarArqErroServico(NomeArquivoXML, extRet, ExtXmlRet.Sta_ERR, ex);
                }
                catch
                {
                    //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada.
                    //Wandrey 09/03/2010
                }
            }
            finally
            {
                try
                {
                    //Deletar o arquivo de solicitação do serviço
                    oAux.DeletarArquivo(NomeArquivoXML);
                }
                catch
                {
                    //Se falhou algo na hora de deletar o XML de solicitação do serviço, 
                    //infelizmente não posso fazer mais nada, o UniNFe vai tentar mandar 
                    //o arquivo novamente para o webservice
                    //Wandrey 09/03/2010
                }
            }
        }
Exemplo n.º 14
0
    /// <summary>
    ///
    /// </summary>
    private void CriarWizard()
    {
        //DataTable dtRespostas = null;
        //DataTable dtPerguntas = null;
        Wizard         wz   = new Wizard();
        WizardStepBase step = new WizardStep();
        DataView       dvRespostas;

        if (nivel == 0) //Junior
        {
            LerXML.LerXMLPergResp(Server.MapPath("../../xmls/NIVELAMENTO JUNIOR.test"), false, out dtPerguntas, out dtRespostas);
        }
        else if (nivel == 1) //Adolescente
        {
            LerXML.LerXMLPergResp(Server.MapPath("../../xmls/NIVELAMENTO ADOLESCENTE.test"), false, out dtPerguntas, out dtRespostas);
        }
        else //Adulto
        {
            LerXML.LerXMLPergResp(Server.MapPath("../../xmls/NIVELAMENTO ADULTO.test"), false, out dtPerguntas, out dtRespostas);
        }

        Int16 nrPergunta = 1;

        qtdPerguntas            = dtPerguntas.Rows.Count;
        lblNrQuestoesExame.Text = "Questão de 1 a " + qtdPerguntas.ToString();

        //Perguntas do Exame lidas do XML
        foreach (DataRow drPerguntas in dtPerguntas.Rows)
        {
            Pergunta pergunta = new Pergunta(drPerguntas["Perguntas"].ToString(), drPerguntas["Pictures"].ToString());

            //Respostas da Perguntas do Exame
            dvRespostas           = new DataView(dtRespostas);
            dvRespostas.RowFilter = "NumeroPergunta = " + nrPergunta;
            foreach (DataRowView drvRespostas in dvRespostas)
            {
                pergunta.AddResposta(drvRespostas["Respostas"].ToString(), Convert.ToBoolean(drvRespostas["Gabarito"]));
            }

            //Cria cada um dos Steps com a Pergunta e suas respectivas respostas
            CriaWizardStep(nrPergunta, qtdPerguntas, pergunta, out step);

            wz.WizardSteps.Add(step);

            nrPergunta++;
        }

        WizardStep fstep = new WizardStep()
        {
            ID = "final"
        };
        Label lblFinish = new Label();

        lblFinish.ID   = "lblFinish";
        fstep.StepType = WizardStepType.Finish;
        fstep.Controls.Add(lblFinish);
        wz.WizardSteps.Add(fstep);

        //Configurações do Wizard
        wz.ActiveStepIndex = 0;
        wz.ID = "Wizard1";
        wz.EnableViewState       = true;
        wz.Height                = Unit.Pixel(315);
        wz.Width                 = Unit.Pixel(670);
        wz.BackColor             = Color.Silver;
        wz.BorderColor           = ColorTranslator.FromHtml("#999999");
        wz.BorderStyle           = BorderStyle.Solid;
        wz.BorderWidth           = new Unit("1px");
        wz.Font.Name             = "Verdana";
        wz.SideBarStyle.CssClass = "sideBar";
        wz.StepStyle.CssClass    = "stepStyle";
        wz.HeaderStyle.CssClass  = "headerStyle";
        wz.HeaderText            = "Exame de Nivelamento";

        wz.StartNextButtonText      = "Próximo >>";
        wz.FinishCompleteButtonText = "Encerrar Exame";
        wz.FinishPreviousButtonText = "<< Anterior";
        wz.StepNextButtonText       = "Próximo >>";
        wz.StepPreviousButtonText   = "<< Anterior";

        wz.NextButtonClick     += new WizardNavigationEventHandler(Wizard1_NextButtonClick);
        wz.PreviousButtonClick += new WizardNavigationEventHandler(Wizard1_PreviousButtonClick);
        wz.FinishButtonClick   += new WizardNavigationEventHandler(Wizard1_FinishButtonClick);

        this.pnlExame.Controls.Add(wz);
    }
Exemplo n.º 15
0
        /// <summary>
        /// Efetua a leitura do XML de retorno do processamento do lote de notas fiscais e 
        /// atualiza o arquivo de fluxo e envio de notas
        /// </summary>
        /// <by>Wandrey Mundin Ferreira</by>
        /// <date>20/04/2009</date>
        protected override void LerRetornoLote()
        {
            int emp = new FindEmpresaThread(Thread.CurrentThread).Index;
            var oLerXml = new LerXML();
            var msXml = Auxiliar.StringXmlToStream(vStrXmlRetorno);

            var fluxoNFe = new FluxoNfe();

            try
            {
                var doc = new XmlDocument();
                doc.Load(msXml);

                var retConsReciNFeList = doc.GetElementsByTagName("retConsReciNFe");

                foreach (XmlNode retConsReciNFeNode in retConsReciNFeList)
                {
                    var retConsReciNFeElemento = (XmlElement)retConsReciNFeNode;

                    //Pegar o número do recibo do lote enviado
                    var nRec = string.Empty;
                    if (retConsReciNFeElemento.GetElementsByTagName("nRec")[0] != null)
                    {
                        nRec = retConsReciNFeElemento.GetElementsByTagName("nRec")[0].InnerText;
                    }

                    //Pegar o status de retorno do lote enviado
                    var cStatLote = string.Empty;
                    if (retConsReciNFeElemento.GetElementsByTagName("cStat")[0] != null)
                    {
                        cStatLote = retConsReciNFeElemento.GetElementsByTagName("cStat")[0].InnerText;
                    }

                    switch (cStatLote)
                    {
                        #region Rejeições do XML de consulta do recibo (Não é o lote que foi rejeitado e sim o XML de consulta do recibo)
                        case "280": //A-Certificado transmissor inválido
                        case "281": //A-Validade do certificado
                        case "283": //A-Verifica a cadeia de Certificação
                        case "286": //A-LCR do certificado de Transmissor
                        case "284": //A-Certificado do Transmissor revogado
                        case "285": //A-Certificado Raiz difere da "IPC-Brasil"
                        case "282": //A-Falta a extensão de CNPJ no Certificado
                        case "214": //B-Tamanho do XML de dados superior a 500 Kbytes
                        case "243": //B-XML de dados mal formatado
                        case "108": //B-Verifica se o Serviço está paralisado momentaneamente
                        case "109": //B-Verifica se o serviço está paralisado sem previsão
                        case "242": //C-Elemento nfeCabecMsg inexistente no SOAP Header
                        case "409": //C-Campo cUF inexistente no elemento nfeCabecMsg do SOAP Header
                        case "410": //C-Campo versaoDados inexistente no elemento nfeCabecMsg do SOAP
                        case "411": //C-Campo versaoDados inexistente no elemento nfeCabecMsg do SOAP
                        case "238": //C-Versão dos Dados informada é superior à versão vigente
                        case "239": //C-Versão dos Dados não suportada
                        case "215": //D-Verifica schema XML da área de dados
                        case "516": //D-Em caso de falha de schema, verificar se existe a tag raiz esperada para mensagem
                        case "517": //D-Em caso de falha de Schema, verificar se existe o atributo versão para a tag raiz da mensagem
                        case "545": //D-Em caso de falha de schema, verificar se o conteúdo do atributo versão difere do conteúdo da versaoDados informado no SOAPHeader
                        case "404": //D-Verifica o uso de prefixo no namespace
                        case "402": //D-XML utiliza codificação diferente de UTF-8
                        case "252": //E-Tipo do ambiente da NF-e difere do ambiente do web service
                        case "248": //E-UF do recibo difere da UF do Web Service
                        case "553": //E-Tipo autorizador do recibo diverge do órgão autorizador
                        case "223": //E-CNPJ do transmissor do lote difere do CNPJ do transmissor da consulta
                            break;
                        #endregion

                        #region Lote ainda está sendo processado
                        case "105": //E-Verifica se o lote não está na fila de resposta, mas está na fila de entrada (Lote em processamento)
                            //Ok vou aguardar o ERP gerar uma nova consulta para encerrar o fluxo da nota
                            break;
                        #endregion

                        #region Lote não foi localizado pelo recibo que está sendo consultado
                        case "106": //E-Verifica se o lote não está na fila de saída, nem na fila de entrada (Lote não encontrado)
                            //No caso do lote não encontrado através do recibo, o ERP vai ter que consultar a situação da NFe para encerrar ela
                            //Vou somente excluir ela do fluxo para não ficar consultando o recibo que não existe
                            if (nRec != string.Empty)
                            {
                                fluxoNFe.ExcluirNfeFluxoRec(nRec.Trim());
                            }
                            break;
                        #endregion

                        #region Lote foi processado, agora tenho que tratar as notas fiscais dele
                        case "104": //Lote processado
                            var protNFeList = retConsReciNFeElemento.GetElementsByTagName("protNFe");

                            foreach (XmlNode protNFeNode in protNFeList)
                            {
                                var protNFeElemento = (XmlElement)protNFeNode;

                                var strProtNfe = protNFeElemento.OuterXml;

                                var infProtList = protNFeElemento.GetElementsByTagName("infProt");

                                foreach (XmlNode infProtNode in infProtList)
                                {
                                    var infProtElemento = (XmlElement)infProtNode;

                                    var strChaveNFe = string.Empty;
                                    var strStat = string.Empty;

                                    if (infProtElemento.GetElementsByTagName("chNFe")[0] != null)
                                    {
                                        strChaveNFe = "NFe" + infProtElemento.GetElementsByTagName("chNFe")[0].InnerText;
                                    }

                                    if (infProtElemento.GetElementsByTagName("cStat")[0] != null)
                                    {
                                        strStat = infProtElemento.GetElementsByTagName("cStat")[0].InnerText;
                                    }

                                    //Definir o nome do arquivo da NFe e seu caminho
                                    var strNomeArqNfe = fluxoNFe.LerTag(strChaveNFe, FluxoNfe.ElementoFixo.ArqNFe);

                                    // danasa 8-2009
                                    // se por algum motivo o XML não existir no "Fluxo", então o arquivo tem que existir
                                    // na pasta "EmProcessamento" assinada.
                                    if (string.IsNullOrEmpty(strNomeArqNfe))
                                    {
                                        if (string.IsNullOrEmpty(strChaveNFe))
                                            throw new Exception("LerRetornoLote(): Não pode obter o nome do arquivo");

                                        strNomeArqNfe = strChaveNFe.Substring(3) + ExtXml.Nfe;
                                    }
                                    var strArquivoNFe = Empresa.Configuracoes[emp].PastaEnviado + "\\" + PastaEnviados.EmProcessamento.ToString() + "\\" + strNomeArqNfe;

                                    //Atualizar a Tag de status da NFe no fluxo para que se ocorrer alguma falha na exclusão eu tenha esta campo para ter uma referencia em futuras consultas
                                    fluxoNFe.AtualizarTag(strChaveNFe, FluxoNfe.ElementoEditavel.cStat, strStat);

                                    //Atualizar a tag da data e hora da ultima consulta do recibo
                                    fluxoNFe.AtualizarDPedRec(nRec, DateTime.Now);

                                    switch (strStat)
                                    {
                                        case "100": //NFe Autorizada
                                            if (File.Exists(strArquivoNFe))
                                            {
                                                //Juntar o protocolo com a NFE já copiando para a pasta de autorizadas
                                                oGerarXML.XmlDistNFe(strArquivoNFe, strProtNfe);
                                                var strArquivoNFeProc = Empresa.Configuracoes[emp].PastaEnviado + "\\" +
                                                                        PastaEnviados.EmProcessamento.ToString() + "\\" +
                                                                        oAux.ExtrairNomeArq(strNomeArqNfe, ExtXml.Nfe) + ExtXmlRet.ProcNFe;

                                                //Ler o XML para pegar a data de emissão para criar a pasta dos XML´s autorizados
                                                oLerXml.Nfe(strArquivoNFe);

                                                //Mover a nfePRoc da pasta de NFE em processamento para a NFe Autorizada
                                                //Para envitar falhar, tenho que mover primeiro o XML de distribuição (-procnfe.xml) para
                                                //depois mover o da nfe (-nfe.xml), pois se ocorrer algum erro, tenho como reconstruir o senário, 
                                                //assim sendo não inverta as posições. Wandrey 08/10/2009
                                                oAux.MoverArquivo(strArquivoNFeProc, PastaEnviados.Autorizados, oLerXml.oDadosNfe.dEmi);

                                                //Mover a NFE da pasta de NFE em processamento para NFe Autorizada
                                                //Para envitar falhar, tenho que mover primeiro o XML de distribuição (-procnfe.xml) para 
                                                //depois mover o da nfe (-nfe.xml), pois se ocorrer algum erro, tenho como reconstruir o senário.
                                                //assim sendo não inverta as posições. Wandrey 08/10/2009
                                                oAux.MoverArquivo(strArquivoNFe, PastaEnviados.Autorizados, oLerXml.oDadosNfe.dEmi);

                                                //Disparar a geração/impressçao do UniDanfe. 03/02/2010 - Wandrey
                                                oAux.ExecutaUniDanfe(strNomeArqNfe, oLerXml.oDadosNfe.dEmi);
                                            }
                                            break;

                                        case "301": //NFe Denegada - Problemas com o emitente
                                            //Ler o XML para pegar a data de emissão para criar a pasta dos XML´s Denegados
                                            oLerXml.Nfe(strArquivoNFe);

                                            //Mover a NFE da pasta de NFE em processamento para NFe Denegadas
                                            oAux.MoverArquivo(strArquivoNFe, PastaEnviados.Denegados, oLerXml.oDadosNfe.dEmi);
                                            break;

                                        case "302": //NFe Denegada - Problemas com o destinatário
                                            goto case "301";

                                        case "110": //NFe Denegada - Não sei quando ocorre este, mas descobrir ele no manual então estou incluindo. Wandrey 20/10/2009
                                            goto case "301";

                                        default: //NFe foi rejeitada
                                            //Mover o XML da NFE a pasta de XML´s com erro
                                            oAux.MoveArqErro(strArquivoNFe);
                                            break;
                                    }

                                    //Deletar a NFE do arquivo de controle de fluxo
                                    fluxoNFe.ExcluirNfeFluxo(strChaveNFe);
                                    break;
                                }
                            }
                            break;
                        #endregion

                        #region Qualquer outro tipo de status que não for os acima relacionados, vai tirar a nota fiscal do fluxo.
                        default:
                            //Qualquer outro tipo de rejeião vou tirar todas as notas do lote do fluxo, pois se o lote foi rejeitado, todas as notas fiscais também foram
                            //De acordo com o manual de integração se o status do lote não for 104, tudo foi rejeitado. Wandrey 20/07/2010

                            //Vou retirar as notas do fluxo pelo recibo
                            if (nRec != string.Empty)
                            {
                                fluxoNFe.ExcluirNfeFluxoRec(nRec.Trim());
                            }

                            break;
                        #endregion
                    }
                }
            }
            catch (Exception ex)
            {
                throw (ex);
            }
        }
Exemplo n.º 16
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))
                {
                    wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, ler.oDadosPedSitNfseRps.cMunicipio, ler.oDadosPedSitNfseRps.tpAmb, ler.oDadosPedSitNfseRps.tpEmis, padraoNFSe);;
                    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:
                    if (ler.oDadosPedSitNfseRps.cMunicipio == 4125506)     //São José dos Pinhais - PR
                    {
                        cabecMsg = "<ns2:cabecalho versao=\"3\" xmlns:ns2=\"http://nfe.sjp.pr.gov.br/cabecalho_v03.xsd\"><versaoDados>3</versaoDados></ns2:cabecalho>";
                    }
                    else
                    {
                        cabecMsg = "<ns2:cabecalho versao=\"3\" xmlns:ns2=\"http://www.ginfes.com.br/cabecalho_v03.xsd\"><versaoDados>3</versaoDados></ns2:cabecalho>";
                    }
                    break;

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

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

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

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

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


                    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

                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

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

                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
                }

                if (base.IsInvocar(padraoNFSe, Servico))
                {
                    //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
                }
            }
        }
Exemplo n.º 17
0
        /// <summary>
        /// Envia o XML de cancelamento de nota fiscal
        /// </summary>
        /// <remarks>
        /// Atualiza a propriedade this.vNfeRetorno da classe com o conteúdo
        /// XML com o retorno que foi dado do serviço do WebService.
        /// No caso do Cancelamento se tudo estiver correto retorna um XML
        /// dizendo se foi cancelado corretamente ou não.
        /// Se der algum erro ele grava um arquivo txt com o erro em questão.
        /// </remarks>
        /// <example>
        /// oUniNfe.vXmlNfeDadosMsg = "c:\teste-ped-sit.xml";
        /// oUniNfe.Consulta();//
        /// this.textBox_xmlretorno.Text = oUniNfe.vNfeRetorno;
        /// //
        /// //O conteúdo de retorno vai ser algo mais ou menos assim:
        /// //
        /// //<?xml version="1.0" encoding="UTF-8" ?> 
        /// //<retCancNFe xmlns="http://www.portalfiscal.inf.br/nfe" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.portalfiscal.inf.br/nfe retCancNFe_v1.07.xsd" versao="1.07">
        /// //   <infCanc>
        /// //      <tpAmb>2</tpAmb> 
        /// //      <verAplic>1.10</verAplic> 
        /// //      <cStat>101</cStat> 
        /// //      <xMotivo>Cancelamento de NF-e homologado</xMotivo> 
        /// //      <cUF>51</cUF> 
        /// //      <chNFe>51080612345678901234550010000001041671821888</chNFe> 
        /// //      <dhRecbto>2008-07-01T16:37:22</dhRecbto> 
        /// //      <nProt>151080000197648</nProt> 
        /// //   </infCanc>
        /// //</retCancNFe>
        /// </example>
        /// <by>Wandrey Mundin Ferreira</by>
        /// <date>01/07/2008</date>
        public override void Cancelamento()
        {
            int emp = new FindEmpresaThread(Thread.CurrentThread).Index;

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

            try
            {
                //Ler o XML para pegar parâmetros de envio
                LerXML oLer = new LerXML();
                oLer.PedCanc(NomeArquivoXML);

                if (this.vXmlNfeDadosMsgEhXML)
                {
                    //Definir o objeto do WebService
                    WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servicos.CancelarNFe, emp, oLer.oDadosPedCanc.cUF, oLer.oDadosPedCanc.tpAmb, oLer.oDadosPedCanc.tpEmis);

                    //Criar objetos das classes dos serviços dos webservices do SEFAZ
                    object oCancelamento = wsProxy.CriarObjeto("NfeCancelamento2");
                    object oCabecMsg = wsProxy.CriarObjeto("nfeCabecMsg");

                    //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg
                    wsProxy.SetProp(oCabecMsg, "cUF", oLer.oDadosPedCanc.cUF.ToString());
                    wsProxy.SetProp(oCabecMsg, "versaoDados", ConfiguracaoApp.VersaoXMLCanc);

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

                    //Assinar o XML
                    oAD.Assinar(NomeArquivoXML, "infCanc", Empresa.Configuracoes[emp].X509Certificado);

                    //Invocar o método que envia o XML para o SEFAZ
                    oInvocarObj.Invocar(wsProxy, oCancelamento, "nfeCancelamentoNF2", oCabecMsg, this, "-ped-can", "-can");

                    //Ler o retorno do webservice
                    this.LerRetornoCanc();
                }
                else
                {
                    //Gerar o XML de solicitação de cancelamento de uma NFe a partir do TXT Gerado pelo ERP
                    oGerarXML.Cancelamento(Path.GetFileNameWithoutExtension(NomeArquivoXML) + ".xml",
                        oLer.oDadosPedCanc.tpAmb,
                        oLer.oDadosPedCanc.tpEmis,
                        oLer.oDadosPedCanc.chNFe,
                        oLer.oDadosPedCanc.nProt,
                        oLer.oDadosPedCanc.xJust);
                }
            }
            catch (Exception ex)
            {
                string ExtRet = string.Empty;

                if (this.vXmlNfeDadosMsgEhXML) //Se for XML
                    ExtRet = ExtXml.PedCan;
                else //Se for TXT
                    ExtRet = ExtXml.PedCan_TXT;

                try
                {
                    //Gravar o arquivo de erro de retorno para o ERP, caso ocorra
                    oAux.GravarArqErroServico(NomeArquivoXML, ExtRet, ExtXmlRet.Can_ERR, ex);
                }
                catch
                {
                    //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada.
                    //Wandrey 09/03/2010
                }
            }
            finally
            {
                try
                {
                    if (!this.vXmlNfeDadosMsgEhXML) //Se for o TXT para ser transformado em XML, vamos excluir o TXT depois de gerado o XML
                        oAux.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 09/03/2010
                }
            }
        }
Exemplo n.º 18
0
        public override void Execute()
        {
            int emp = Empresas.FindEmpresaByThread();

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

            try
            {
                //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))
                {
                    wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, ler.oDadosPedSitNfseRps.cMunicipio, ler.oDadosPedSitNfseRps.tpAmb, ler.oDadosPedSitNfseRps.tpEmis, padraoNFSe); ;
                    pedLoteRps = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);
                }

                string cabecMsg = "";
                switch (padraoNFSe)
                {
                    case PadroesNFSe.GINFES:
                        if (ler.oDadosPedSitNfseRps.cMunicipio == 4125506) //São José dos Pinhais - PR  
                            cabecMsg = "<ns2:cabecalho versao=\"3\" xmlns:ns2=\"http://nfe.sjp.pr.gov.br/cabecalho_v03.xsd\"><versaoDados>3</versaoDados></ns2:cabecalho>";
                        else
                            cabecMsg = "<ns2:cabecalho versao=\"3\" xmlns:ns2=\"http://www.ginfes.com.br/cabecalho_v03.xsd\"><versaoDados>3</versaoDados></ns2:cabecalho>";
                        break;

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

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

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

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

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


                        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

                    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

                    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.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><versaoDados>2.01</versaoDados></cabecalho>";
                        break;

                }

                if (base.IsUtilizaCompilacaoWs(padraoNFSe, Servico))
                {
                    //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, "-ped-loterps", "-loterps", padraoNFSe, Servico);

                    ///
                    /// grava o arquivo no FTP
                    string filenameFTP = Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                      Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.ExtEnvio.PedLoteRps) + Propriedade.ExtRetorno.LoteRps);
                    if (File.Exists(filenameFTP))
                        new GerarXML(emp).XmlParaFTP(emp, filenameFTP);
                }

            }
            catch (Exception ex)
            {
                try
                {
                    //Gravar o arquivo de erro de retorno para o ERP, caso ocorra
                    TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.ExtEnvio.PedLoteRps, 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
                }
            }
        }
Exemplo n.º 19
0
        /// <summary>
        /// Envia o XML de lote de nota fiscal pra o SEFAZ em questão
        /// </summary>
        /// <remarks>
        /// Atualiza a propriedade this.vNfeRetorno da classe com o conteúdo
        /// XML com o retorno que foi dado do serviço do WebService.
        /// No caso do Recepcao se tudo estiver correto retorna um XML
        /// dizendo que a(s) nota(s) foram recebidas com sucesso.
        /// Se der algum erro ele grava um arquivo txt com o erro em questão.
        /// </remarks>
        /// <example>
        /// oUniNfe.vXmlNfeDadosMsg = "c:\nfe.xml";
        /// oUniNfe.Recepcao();
        /// this.textBox_xmlretorno.Text = oUniNfe.vNfeRetorno;
        /// //
        /// //
        /// //O conteúdo de retorno vai ser algo mais ou menos assim:
        /// //
        /// //<?xml version="1.0" encoding="UTF-8"?>
        /// //   <retEnviNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.10">
        /// //      <tpAmb>2</tpAmb>
        /// //      <verAplic>1.10</verAplic>
        /// //      <cStat>103</cStat>
        /// //      <xMotivo>Lote recebido com sucesso</xMotivo>
        /// //      <cUF>51</cUF>
        /// //      <infRec>
        /// //         <nRec>510000000106704</nRec>
        /// //         <dhRecbto>2008-06-12T10:49:30</dhRecbto>
        /// //         <tMed>2</tMed>
        /// //      </infRec>
        /// //   </retEnviNFe>
        /// </example>
        /// <by>Wandrey Mundin Ferreira</by>
        /// <date>04/06/2008</date>
        public override void Recepcao()
        {
            int emp = new FindEmpresaThread(Thread.CurrentThread).Index;
            //Definir o serviço que será executado para a classe
            Servico = Servicos.EnviarLoteNfe;

            FluxoNfe oFluxoNfe = new FluxoNfe();
            LerXML oLer = new LerXML();

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

                var idLote = oLer.oDadosNfe.idLote;

                //Definir o objeto do WebService
                WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servicos.EnviarLoteNfe, emp, Convert.ToInt32(oLer.oDadosNfe.cUF), Convert.ToInt32(oLer.oDadosNfe.tpAmb), Convert.ToInt32(oLer.oDadosNfe.tpEmis));
                
                //Criar objetos das classes dos serviços dos webservices do SEFAZ
                object oRecepcao = oRecepcao = wsProxy.CriarObjeto("NfeRecepcao2");
                var oCabecMsg = wsProxy.CriarObjeto("nfeCabecMsg");

                //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg
                wsProxy.SetProp(oCabecMsg, "cUF", oLer.oDadosNfe.cUF);
                wsProxy.SetProp(oCabecMsg, "versaoDados", ConfiguracaoApp.VersaoXMLNFe);

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

                //Invocar o método que envia o XML para o SEFAZ
                oInvocarObj.Invocar(wsProxy, oRecepcao, "nfeRecepcaoLote2", oCabecMsg, this, "-env-lot", "-rec");
                #endregion

                #region Parte que trata o retorno do lote, ou seja, o número do recibo
                //Ler o XML de retorno com o recibo do lote enviado
                var oLerRecibo = new LerXML();
                oLerRecibo.Recibo(vStrXmlRetorno);

                if (oLerRecibo.oDadosRec.cStat == "103") //Lote recebido com sucesso
                {
                    //Atualizar o número do recibo no XML de controle do fluxo de notas enviadas
                    oFluxoNfe.AtualizarTag(oLer.oDadosNfe.chavenfe, FluxoNfe.ElementoEditavel.tMed, oLerRecibo.oDadosRec.tMed.ToString());
                    oFluxoNfe.AtualizarTagRec(idLote, oLerRecibo.oDadosRec.nRec);
                }
                else if (Convert.ToInt32(oLerRecibo.oDadosRec.cStat) > 200)
                {
                    //Se o status do retorno do lote for maior que 200, 
                    //vamos ter que excluir a nota do fluxo, porque ela foi rejeitada pelo SEFAZ
                    //Primeiro vamos mover o xml da nota da pasta EmProcessamento para pasta de XML´s com erro e depois tira ela do fluxo
                    //Wandrey 30/04/2009
                    oAux.MoveArqErro(Empresa.Configuracoes[emp].PastaEnviado + "\\" + PastaEnviados.EmProcessamento.ToString() + "\\" + oFluxoNfe.LerTag(oLer.oDadosNfe.chavenfe, FluxoNfe.ElementoFixo.ArqNFe));
                    oFluxoNfe.ExcluirNfeFluxo(oLer.oDadosNfe.chavenfe);
                }

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

                //TODO: V3.0 - Tratar o problema de não conseguir pegar o recibo exatamente neste ponto

                try
                {
                    //Gravar o arquivo de erro de retorno para o ERP, caso ocorra
                    oAux.GravarArqErroServico(NomeArquivoXML, ExtXml.EnvLot, ExtXmlRet.Rec_ERR, ex);
                }
                catch
                {
                    //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada.
                    //Wandrey 16/03/2010
                }
            }
            catch (ExceptionSemInternet ex)
            {
                try
                {
                    //Gravar o arquivo de erro de retorno para o ERP, caso ocorra
                    oAux.GravarArqErroServico(NomeArquivoXML, ExtXml.EnvLot, ExtXmlRet.Rec_ERR, ex, false);
                }
                catch
                {
                    //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada.
                    //Wandrey 16/03/2010
                }
            }
            catch (Exception ex)
            {
                try
                {
                    //Gravar o arquivo de erro de retorno para o ERP, caso ocorra
                    oAux.GravarArqErroServico(NomeArquivoXML, ExtXml.EnvLot, ExtXmlRet.Rec_ERR, ex);
                }
                catch
                {
                    //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada.
                    //Wandrey 16/03/2010
                }
            }
        }