protected override void OnLoad(EventArgs e) { base.OnLoad(e); uninfeDummy.ClearControls(this, true, true); foreach (var estado in Propriedade.Estados) { this.edtUF.Items.Add(estado.UF); } this.edtUF.SelectedIndex = 0; var _PadroesDataSource = new List <PadroesDataSource>(); XElement axml = XElement.Load(Propriedade.NomeArqXMLWebService_NFSe); var xs = (from p in axml.Descendants(NFe.Components.NFeStrConstants.Estado) where p.Attribute(NFe.Components.TpcnResources.UF.ToString()).Value == "XX" && p.Attribute(NFe.Components.TpcnResources.ID.ToString()).Value == p.Attribute(NFe.Components.NFeStrConstants.Padrao).Value orderby p.Attribute(NFe.Components.NFeStrConstants.Padrao).Value select p); foreach (var item in xs) { PadroesNFSe type = WebServiceNFSe.GetPadraoFromString(item.Attribute(NFe.Components.NFeStrConstants.Padrao).Value); _PadroesDataSource.Add(new PadroesDataSource { fromType = type.ToString(), fromDescription = EnumHelper.GetEnumItemDescription(type) }); } this.edtPadrao.Sorted = false; this.edtPadrao.DataSource = _PadroesDataSource;// WebServiceNFSe.PadroesNFSeListDataSource.Where(p => p.fromType != PadroesNFSe.NaoIdentificado.ToString()).ToList(); this.edtPadrao.ValueMember = "fromType"; this.edtPadrao.DisplayMember = "fromDescription"; this.edtPadrao.SelectedIndex = 0; }
public override void Execute(Empresa empresa) { //Definir o serviço que será executado para a classe Servico = Servicos.ConsultarURLNfse; oDadosPedURLNfse = new DadosPedSitNfse(empresa); //Ler o XML para pegar parâmetros de envio PedURLNfse(NomeArquivoXML); //Criar objetos das classes dos serviços dos webservices do SEFAZ WebServiceProxy wsProxy = null; object pedURLNfse = null; string cabecMsg = ""; PadroesNFSe padraoNFSe = Functions.PadraoNFSe(/*ler.*/ oDadosPedURLNfse.cMunicipio); switch (padraoNFSe) { case PadroesNFSe.ISSNET: case PadroesNFSe.GIF: wsProxy = ConfiguracaoApp.DefinirWS(Servico, empresa, oDadosPedURLNfse.cMunicipio, oDadosPedURLNfse.tpAmb, oDadosPedURLNfse.tpEmis); pedURLNfse = wsProxy.CriarObjeto(NomeClasseWS(Servico, oDadosPedURLNfse.cMunicipio)); break; default: throw new Exception("Não foi possível detectar o padrão da NFS-e."); } //Assinar o XML AssinaturaDigital ad = new AssinaturaDigital(); ad.Assinar(NomeArquivoXML, empresa, Convert.ToInt32(oDadosPedURLNfse.cMunicipio)); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.InvocarNFSe(wsProxy, pedURLNfse, NomeMetodoWS(Servico, oDadosPedURLNfse.cMunicipio, empresa.tpAmb), cabecMsg, this, "-ped-urlnfse", "-urlnfse", padraoNFSe, Servico, empresa); }
public Municipio(int _cod, string _uf, string _nome, PadroesNFSe _padrao) { this.Nome = _nome; if (!_nome.Trim().EndsWith(" - " + _uf)) this.Nome = _nome.Trim() + " - " + _uf; this.CodigoMunicipio = _cod; this.Padrao = _padrao; this.PadraoStr = _padrao.ToString(); this.UF = _uf; }
/// <summary> /// Converte o retorno em Base64 para PDF e grava o PDF na pasta de retorno com o mesmo nome do retorno em XML, modificando somente a extensão para PDF. /// </summary> /// <param name="emp">Código da empresa</param> /// <param name="padraoNFSe">Padrão da NFSe</param> public void ConvertBase64ToPDF(int emp, PadroesNFSe padraoNFSe) { if (padraoNFSe != PadroesNFSe.GIF) { return; } string arqPDF = Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedNFSePDF).EnvioXML) + Propriedade.Extensao(Propriedade.TipoEnvio.PedNFSePDF).RetornoXML; arqPDF = Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, arqPDF.Replace(".xml", ".pdf")); if (File.Exists(arqPDF)) { File.Delete(arqPDF); } BinaryWriter writer = null; try { string base64BinaryStr = ""; MemoryStream msXml = Functions.StringXmlToStream(vStrXmlRetorno); XmlDocument doc = new XmlDocument(); doc.Load(msXml); switch (padraoNFSe) { case PadroesNFSe.GIF: if (doc.GetElementsByTagName("NFS-ePDF")[0] != null) { base64BinaryStr = doc.GetElementsByTagName("NFS-ePDF")[0].InnerText; } else { throw new Exception("Não foi possível localizar a tag <NFS-ePDF> no xml retornado pela prefeitura, sendo assim, o arquivo PDF da NFS-e não foi gerado."); } break; } byte[] sPDFDecoded = Convert.FromBase64String(base64BinaryStr); writer = new BinaryWriter(File.Open(arqPDF, FileMode.CreateNew)); writer.Write(sPDFDecoded); } finally { if (writer != null) { writer.Close(); } } }
public Municipio(int _cod, string _uf, string _nome, PadroesNFSe _padrao) { this.Nome = _nome; if (!_nome.Trim().EndsWith(" - " + _uf)) { this.Nome = _nome.Trim() + " - " + _uf; } this.CodigoMunicipio = _cod; this.Padrao = _padrao; this.PadraoStr = _padrao.ToString(); this.UF = _uf; }
private static string getURLs(string local, ref PadroesNFSe padrao, int idMunicipio) { /* * tenta ler as URL's do 'WebService.xml' * não encontrando, assume o ID='padrao' e UF='XX' e padrao='padrao' */ if (System.IO.File.Exists(Propriedade.NomeArqXMLWebService_NFSe)) { XElement axml = XElement.Load(Propriedade.NomeArqXMLWebService_NFSe); /// /// primeiro, pesquisa pelo ID /// var s = (from p in axml.Descendants(NFe.Components.NFeStrConstants.Estado) where //(string)p.Attribute(NFe.Components.NFeStrConstants.Padrao) == padrao.ToString() && (string)p.Attribute(NFe.Components.TpcnResources.ID.ToString()) == idMunicipio.ToString() select p); foreach (var item in s) { if (item.Element(local) != null) { /// /// pega o padrao definido no WebService.xml descartando o que constar no UninMunic.xml /// padrao = WebServiceNFSe.GetPadraoFromString(item.Attribute(NFe.Components.NFeStrConstants.Padrao).Value); return(local.Equals(NFe.Components.NFeStrConstants.LocalHomologacao) ? item.FirstNode.ToString() : item.LastNode.ToString()); } } /// /// não encontrei, assume o ID='padrao' e UF='XX' e padrao='padrao' /// PadroesNFSe pdr = padrao; var xs = (from p in axml.Descendants(NFe.Components.NFeStrConstants.Estado) where (string)p.Attribute(NFe.Components.NFeStrConstants.Padrao) == pdr.ToString() && (string)p.Attribute(TpcnResources.UF.ToString()) == "XX" && (string)p.Attribute(NFe.Components.TpcnResources.ID.ToString()) == pdr.ToString() select p); foreach (var item in xs) { if (item.Element(local) != null) { return(local.Equals(NFe.Components.NFeStrConstants.LocalHomologacao) ? item.FirstNode.ToString() : item.LastNode.ToString()); } } } return(""); }
public static PadroesNFSe PadraoNFSe(int municipio) { PadroesNFSe result = PadroesNFSe.NaoIdentificado; foreach (Municipio mun in Propriedade.Municipios) { if (mun.CodigoMunicipio == municipio) { result = mun.Padrao; } } return(result); }
private static string getURLs(string local, ref PadroesNFSe padrao, int idMunicipio) { /* * tenta ler as URL's do 'WebService.xml' * não encontrando, assume o ID='padrao' e UF='XX' e padrao='padrao' */ if (System.IO.File.Exists(Propriedade.NomeArqXMLWebService_NFSe)) { XElement axml = XElement.Load(Propriedade.NomeArqXMLWebService_NFSe); /// /// primeiro, pesquisa pelo ID /// var s = (from p in axml.Descendants(NFe.Components.NFeStrConstants.Estado) where //(string)p.Attribute(NFe.Components.NFeStrConstants.Padrao) == padrao.ToString() && (string)p.Attribute(NFe.Components.TpcnResources.ID.ToString()) == idMunicipio.ToString() select p); foreach (var item in s) { if (item.Element(local) != null) { /// /// pega o padrao definido no WebService.xml descartando o que constar no UninMunic.xml /// padrao = WebServiceNFSe.GetPadraoFromString(item.Attribute(NFe.Components.NFeStrConstants.Padrao).Value); return local.Equals(NFe.Components.NFeStrConstants.LocalHomologacao) ? item.FirstNode.ToString() : item.LastNode.ToString(); } } /// /// não encontrei, assume o ID='padrao' e UF='XX' e padrao='padrao' /// PadroesNFSe pdr = padrao; var xs = (from p in axml.Descendants(NFe.Components.NFeStrConstants.Estado) where (string)p.Attribute(NFe.Components.NFeStrConstants.Padrao) == pdr.ToString() && (string)p.Attribute(TpcnResources.UF.ToString()) == "XX" && (string)p.Attribute(NFe.Components.TpcnResources.ID.ToString()) == pdr.ToString() select p); foreach (var item in xs) { if (item.Element(local) != null) return local.Equals(NFe.Components.NFeStrConstants.LocalHomologacao) ? item.FirstNode.ToString() : item.LastNode.ToString(); } } return ""; }
public WebServiceProxy(string arquivoWSDL, X509Certificate2 Certificado, PadroesNFSe padraoNFSe) { ArquivoWSDL = arquivoWSDL; PadraoNFSe = padraoNFSe; //Definir o certificado digital que será utilizado na conexão com os serviços this.oCertificado = Certificado; //Confirmar a solicitação SSL automaticamente ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CertificateValidation); //Obeter a descrção do serviço (WSDL) this.DescricaoServico(arquivoWSDL); //Gerar e compilar a classe this.GerarClasse(); }
public override void Execute() { int emp = Empresas.FindEmpresaByThread(); //Definir o serviço que será executado para a classe Servico = Servicos.NFSeCancelar; try { Functions.DeletarArquivo(Empresas.Configuracoes[emp].PastaXmlRetorno + "\\" + Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedCanNFSe).EnvioXML) + Propriedade.ExtRetorno.CanNfse_ERR); Functions.DeletarArquivo(Empresas.Configuracoes[emp].PastaXmlErro + "\\" + NomeArquivoXML); oDadosPedCanNfse = new DadosPedCanNfse(emp); //Ler o XML para pegar parâmetros de envio PedCanNfse(emp, NomeArquivoXML); PadroesNFSe padraoNFSe = Functions.PadraoNFSe(oDadosPedCanNfse.cMunicipio); WebServiceProxy wsProxy = null; object pedCanNfse = null; //Criar objetos das classes dos serviços dos webservices do SEFAZ if (IsUtilizaCompilacaoWs(padraoNFSe)) { wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, oDadosPedCanNfse.cMunicipio, oDadosPedCanNfse.tpAmb, oDadosPedCanNfse.tpEmis, padraoNFSe, oDadosPedCanNfse.cMunicipio); if (wsProxy != null) { pedCanNfse = wsProxy.CriarObjeto(wsProxy.NomeClasseWS); } } System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(oDadosPedCanNfse.cMunicipio, oDadosPedCanNfse.tpAmb, oDadosPedCanNfse.tpEmis, padraoNFSe, Servico); string cabecMsg = ""; switch (padraoNFSe) { case PadroesNFSe.IPM: //código da cidade da receita federal, este arquivo pode ser encontrado em ~\uninfe\doc\Codigos_Cidades_Receita_Federal.xls</para> //O código da cidade está hardcoded pois ainda está sendo usado apenas para campo mourão IPM ipm = new IPM((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, oDadosPedCanNfse.cMunicipio); if (ConfiguracaoApp.Proxy) { ipm.Proxy = Proxy.DefinirProxy(ConfiguracaoApp.ProxyServidor, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyPorta); } ipm.EmiteNF(NomeArquivoXML, true); break; case PadroesNFSe.ABASE: cabecMsg = "<cabecalho xmlns=\"http://nfse.abase.com.br/nfse.xsd\" versao =\"1.00\"><versaoDados>1.00</versaoDados></cabecalho>"; break; case PadroesNFSe.GINFES: cabecMsg = ""; //Cancelamento ainda tá na versão 2.0 então não tem o cabecMsg break; case PadroesNFSe.BETHA: #region Betha ConteudoXML.PreserveWhitespace = false; ConteudoXML.Load(NomeArquivoXML); if (!ConteudoXML.DocumentElement.Name.Contains("e:")) { padraoNFSe = PadroesNFSe.BETHA202; Components.Betha.NewVersion.Betha betha = new Components.Betha.NewVersion.Betha((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedCanNfse.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor); AssinaturaDigital signbetha = new AssinaturaDigital(); signbetha.Assinar(NomeArquivoXML, emp, 202); betha.CancelarNfse(NomeArquivoXML); } else { wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado); wsProxy.Betha = new Betha(); } break; #endregion Betha case PadroesNFSe.ABACO: case PadroesNFSe.CANOAS_RS: cabecMsg = "<cabecalho versao=\"201001\"><versaoDados>V2010</versaoDados></cabecalho>"; break; case PadroesNFSe.BLUMENAU_SC: EncryptAssinatura(); break; case PadroesNFSe.BHISS: cabecMsg = "<cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"1.00\"><versaoDados >1.00</versaoDados ></cabecalho>"; break; case PadroesNFSe.WEBISS: cabecMsg = "<cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"1.00\"><versaoDados >1.00</versaoDados ></cabecalho>"; break; case PadroesNFSe.WEBISS_202: cabecMsg = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"2.02\"><versaoDados>2.02</versaoDados></cabecalho>"; break; case PadroesNFSe.PAULISTANA: wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado); if (oDadosPedCanNfse.tpAmb == 1) { pedCanNfse = new NFe.Components.PSaoPauloSP.LoteNFe(); } else { throw new Exception("Município de São Paulo-SP não dispõe de ambiente de homologação para envio de NFS-e em teste."); } EncryptAssinatura(); break; case PadroesNFSe.DSF: EncryptAssinatura(); break; case PadroesNFSe.TECNOSISTEMAS: cabecMsg = "<?xml version=\"1.0\" encoding=\"utf-8\"?><cabecalho xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" versao=\"20.01\" xmlns=\"http://www.nfse-tecnos.com.br/nfse.xsd\"><versaoDados>20.01</versaoDados></cabecalho>"; break; case PadroesNFSe.FINTEL: cabecMsg = "<cabecalho versao=\"2.02\" xmlns=\"http://iss.irati.pr.gov.br/Arquivos/nfseV202.xsd\"><versaoDados>2.02</versaoDados></cabecalho>"; break; case PadroesNFSe.SYSTEMPRO: SystemPro syspro = new SystemPro((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, Empresas.Configuracoes[emp].X509Certificado); AssinaturaDigital ad = new AssinaturaDigital(); ad.Assinar(NomeArquivoXML, emp, oDadosPedCanNfse.cMunicipio); syspro.CancelarNfse(NomeArquivoXML); break; case PadroesNFSe.SIGCORP_SIGISS: SigCorp sigcorp = new SigCorp((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedCanNfse.cMunicipio); sigcorp.CancelarNfse(NomeArquivoXML); break; case PadroesNFSe.METROPOLIS: #region METROPOLIS Metropolis metropolis = new Metropolis((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedCanNfse.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); AssinaturaDigital metropolisdig = new AssinaturaDigital(); metropolisdig.Assinar(NomeArquivoXML, emp, oDadosPedCanNfse.cMunicipio); metropolis.CancelarNfse(NomeArquivoXML); break; #endregion METROPOLIS case PadroesNFSe.FIORILLI: Fiorilli fiorilli = new Fiorilli((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedCanNfse.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); AssinaturaDigital ass = new AssinaturaDigital(); ass.Assinar(NomeArquivoXML, emp, oDadosPedCanNfse.cMunicipio); fiorilli.CancelarNfse(NomeArquivoXML); break; case PadroesNFSe.SIMPLISS: SimplISS simpliss = new SimplISS((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedCanNfse.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor); AssinaturaDigital sing = new AssinaturaDigital(); sing.Assinar(NomeArquivoXML, emp, oDadosPedCanNfse.cMunicipio); simpliss.CancelarNfse(NomeArquivoXML); break; case PadroesNFSe.CONAM: Conam conam = new Conam((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedCanNfse.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS); conam.CancelarNfse(NomeArquivoXML); break; case PadroesNFSe.EGOVERNE: #region E-Governe EGoverne egoverne = new EGoverne((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedCanNfse.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); AssinaturaDigital assegov = new AssinaturaDigital(); assegov.Assinar(NomeArquivoXML, emp, oDadosPedCanNfse.cMunicipio); egoverne.CancelarNfse(NomeArquivoXML); #endregion E-Governe break; case PadroesNFSe.COPLAN: #region Coplan Coplan coplan = new Coplan((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedCanNfse.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); AssinaturaDigital assCoplan = new AssinaturaDigital(); assCoplan.Assinar(NomeArquivoXML, emp, oDadosPedCanNfse.cMunicipio); coplan.CancelarNfse(NomeArquivoXML); break; #endregion Coplan case PadroesNFSe.EL: #region E&L EL el = new EL((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedCanNfse.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, (ConfiguracaoApp.Proxy ? ConfiguracaoApp.ProxyUsuario : ""), (ConfiguracaoApp.Proxy ? ConfiguracaoApp.ProxySenha : ""), (ConfiguracaoApp.Proxy ? ConfiguracaoApp.ProxyServidor : "")); el.CancelarNfse(NomeArquivoXML); #endregion E&L break; case PadroesNFSe.GOVDIGITAL: GovDigital govdig = new GovDigital((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, Empresas.Configuracoes[emp].X509Certificado, oDadosPedCanNfse.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor); AssinaturaDigital adgovdig = new AssinaturaDigital(); adgovdig.Assinar(NomeArquivoXML, emp, oDadosPedCanNfse.cMunicipio); govdig.CancelarNfse(NomeArquivoXML); break; case PadroesNFSe.BSITBR: wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado); if (oDadosPedCanNfse.tpAmb == 1) { pedCanNfse = new Components.PJaraguaGO.nfseWS(); } else { throw new Exception("Município de Jaraguá-GO não dispõe de ambiente de homologação para envio de NFS-e em teste."); } break; case PadroesNFSe.EQUIPLANO: cabecMsg = "1"; break; case PadroesNFSe.PORTALFACIL_ACTCON_202: cabecMsg = "<cabecalho><versaoDados>2.02</versaoDados></cabecalho>"; break; case PadroesNFSe.PORTALFACIL_ACTCON: case PadroesNFSe.PRODATA: cabecMsg = "<cabecalho><versaoDados>2.01</versaoDados></cabecalho>"; break; case PadroesNFSe.ELOTECH: #region EloTech EloTech elotech = new EloTech((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedCanNfse.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); elotech.CancelarNfse(NomeArquivoXML); break; #endregion EloTech case PadroesNFSe.MGM: #region MGM MGM mgm = new MGM((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedCanNfse.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS); mgm.CancelarNfse(NomeArquivoXML); break; #endregion MGM case PadroesNFSe.NATALENSE: cabecMsg = @" <![CDATA[<?xml version=""1.0""?> <cabecalho xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" versao =""1"" xmlns =""http://www.abrasf.org.br/ABRASF/arquivos/nfse.xsd"" > <versaoDados>1</versaoDados></cabecalho> "; break; case PadroesNFSe.CONSIST: #region Consist Consist consist = new Consist((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedCanNfse.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor); consist.CancelarNfse(NomeArquivoXML); break; #endregion Consist case PadroesNFSe.FREIRE_INFORMATICA: cabecMsg = "<cabecalho xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"2.02\"><versaoDados>2.02</versaoDados></cabecalho>"; break; case PadroesNFSe.MEMORY: #region Memory Memory memory = new Memory((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedCanNfse.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor); memory.CancelarNfse(NomeArquivoXML); break; #endregion Memory case PadroesNFSe.CAMACARI_BA: cabecMsg = "<cabecalho><versaoDados>2.01</versaoDados><versao>2.01</versao></cabecalho>"; break; case PadroesNFSe.NA_INFORMATICA: wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado); //if (oDadosPedCanNfse.tpAmb == 1) // pedCanNfse = new Components.PCorumbaMS.NfseWSService(); //else // pedCanNfse = new Components.HCorumbaMS.NfseWSService(); break; case PadroesNFSe.PRONIN: if (oDadosPedCanNfse.cMunicipio == 4109401 || oDadosPedCanNfse.cMunicipio == 3131703 || oDadosPedCanNfse.cMunicipio == 4303004) { Pronin pronin = new Pronin((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedCanNfse.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); AssinaturaDigital assPronin = new AssinaturaDigital(); assPronin.Assinar(NomeArquivoXML, emp, oDadosPedCanNfse.cMunicipio); pronin.CancelarNfse(NomeArquivoXML); } break; case PadroesNFSe.EGOVERNEISS: #region EGoverne ISS EGoverneISS egoverneiss = new EGoverneISS((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedCanNfse.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor); egoverneiss.CancelarNfse(NomeArquivoXML); break; #endregion EGoverne ISS case PadroesNFSe.BAURU_SP: Bauru_SP bauru_SP = new Bauru_SP((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedCanNfse.cMunicipio); bauru_SP.CancelarNfse(NomeArquivoXML); break; case PadroesNFSe.SMARAPD: if (Empresas.Configuracoes[emp].UnidadeFederativaCodigo == 3201308) //Município de Cariacica-ES { throw new Exception("Município de Cariacica-ES não permite cancelamento de NFS-e via webservice."); } break; #region Tinus case PadroesNFSe.TINUS: Tinus tinus = new Tinus((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedCanNfse.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); AssinaturaDigital tinusAss = new AssinaturaDigital(); tinusAss.Assinar(NomeArquivoXML, emp, oDadosPedCanNfse.cMunicipio); tinus.CancelarNfse(NomeArquivoXML); break; #endregion Tinus #region SH3 case PadroesNFSe.SH3: cabecMsg = "<cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"1.00\"><versaoDados >1.00</versaoDados ></cabecalho>"; break; #endregion SH3 #region SOFTPLAN case PadroesNFSe.SOFTPLAN: SOFTPLAN softplan = new SOFTPLAN((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, Empresas.Configuracoes[emp].ClientID, Empresas.Configuracoes[emp].ClientSecret); if (ConfiguracaoApp.Proxy) { softplan.Proxy = Proxy.DefinirProxy(ConfiguracaoApp.ProxyServidor, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyPorta); } softplan.CancelarNfse(NomeArquivoXML); break; #endregion SOFTPLAN case PadroesNFSe.INTERSOL: cabecMsg = "<?xml version=\"1.0\" encoding=\"utf-8\"?><p:cabecalho versao=\"1\" xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\" xmlns:p=\"http://ws.speedgov.com.br/cabecalho_v1.xsd\" xmlns:p1=\"http://ws.speedgov.com.br/tipos_v1.xsd\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://ws.speedgov.com.br/cabecalho_v1.xsd cabecalho_v1.xsd \"><versaoDados>1</versaoDados></p:cabecalho>"; break; } if (IsInvocar(padraoNFSe, Servico, Empresas.Configuracoes[emp].UnidadeFederativaCodigo)) { //Assinar o XML AssinaturaDigital ad = new AssinaturaDigital(); ad.Assinar(NomeArquivoXML, emp, oDadosPedCanNfse.cMunicipio); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.InvocarNFSe(wsProxy, pedCanNfse, NomeMetodoWS(Servico, oDadosPedCanNfse.cMunicipio), cabecMsg, this, Propriedade.Extensao(Propriedade.TipoEnvio.PedCanNFSe).EnvioXML, //"-ped-cannfse", Propriedade.Extensao(Propriedade.TipoEnvio.PedCanNFSe).RetornoXML, //"-cannfse", padraoNFSe, Servico, securityProtocolType); /// /// grava o arquivo no FTP string filenameFTP = Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedCanNFSe).EnvioXML) + Propriedade.Extensao(Propriedade.TipoEnvio.PedCanNFSe).RetornoXML); if (File.Exists(filenameFTP)) { new GerarXML(emp).XmlParaFTP(emp, filenameFTP); } } } catch (Exception ex) { try { //Gravar o arquivo de erro de retorno para o ERP, caso ocorra TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedCanNFSe).EnvioXML, Propriedade.ExtRetorno.CanNfse_ERR, ex); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. //Wandrey 31/08/2011 } } finally { try { Functions.DeletarArquivo(NomeArquivoXML); } catch { //Se falhou algo na hora de deletar o XML de cancelamento de NFe, infelizmente //não posso fazer mais nada, o UniNFe vai tentar mandar o arquivo novamente para o webservice, pois ainda não foi excluido. //Wandrey 31/08/2011 } } }
/// <summary> /// Metodo responsável por invocar o serviço do WebService do SEFAZ /// </summary> /// <param name="wsProxy">Objeto da classe construida do WSDL</param> /// <param name="servicoWS">Objeto da classe de envio do XML</param> /// <param name="metodo">Método da classe de envio do XML que faz o envio</param> /// <param name="cabecMsg">Objeto da classe de cabecalho do serviço</param> /// <param name="servicoNFe">Objeto do Serviço de envio da NFE do UniNFe</param> /// <param name="finalArqEnvio">string do final do arquivo a ser enviado. Sem a extensão ".xml"</param> /// <param name="finalArqRetorno">string do final do arquivo a ser gravado com o conteúdo do retorno. Sem a extensão ".xml"</param> /// <remarks> /// Autor: Wandrey Mundin Ferreira /// Data: 17/03/2010 /// </remarks> public void InvocarNFSe(WebServiceProxy wsProxy, object servicoWS, string metodo, string cabecMsg, object servicoNFe, string finalArqEnvio, string finalArqRetorno, PadroesNFSe padraoNFSe, Servicos servicoNFSe) { int emp = Empresas.FindEmpresaByThread(); XmlDocument docXML = new XmlDocument(); // Definir o tipo de serviço da NFe Type typeServicoNFe = servicoNFe.GetType(); // Resgatar o nome do arquivo XML a ser enviado para o webservice string XmlNfeDadosMsg = (string)(typeServicoNFe.InvokeMember("NomeArquivoXML", System.Reflection.BindingFlags.GetProperty, null, servicoNFe, null)); // Exclui o Arquivo de Erro Functions.DeletarArquivo(Empresas.Configuracoes[emp].PastaXmlRetorno + "\\" + Functions.ExtrairNomeArq(XmlNfeDadosMsg, finalArqEnvio + ".xml") + finalArqRetorno + ".err"); // Validar o Arquivo XML ValidarXML validar = new ValidarXML(XmlNfeDadosMsg, Empresas.Configuracoes[emp].UnidadeFederativaCodigo); string cResultadoValidacao = validar.ValidarArqXML(XmlNfeDadosMsg); if (cResultadoValidacao != "") { switch (padraoNFSe) { case PadroesNFSe.ISSONLINE4R: break; case PadroesNFSe.SMARAPD: break; default: throw new Exception(cResultadoValidacao); } } // Montar o XML de Lote de envio de Notas fiscais docXML.Load(XmlNfeDadosMsg); // Definir Proxy if (ConfiguracaoApp.Proxy) if (padraoNFSe != PadroesNFSe.BETHA) { wsProxy.SetProp(servicoWS, "Proxy", Proxy.DefinirProxy(ConfiguracaoApp.ProxyServidor, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyPorta, ConfiguracaoApp.DetectarConfiguracaoProxyAuto)); } else { wsProxy.Betha.Proxy = Proxy.DefinirProxy(ConfiguracaoApp.ProxyServidor, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyPorta, ConfiguracaoApp.DetectarConfiguracaoProxyAuto); } // Limpa a variável de retorno string strRetorno = string.Empty; //Vou mudar o timeout para evitar que demore a resposta e o uninfe aborte antes de recebe-la. Wandrey 17/09/2009 //Isso talvez evite de não conseguir o número do recibo se o serviço do SEFAZ estiver lento. if (padraoNFSe != PadroesNFSe.BETHA) wsProxy.SetProp(servicoWS, "Timeout", 120000); //Verificar antes se tem conexão com a internet, se não tiver já gera uma exceção no padrão já esperado pelo ERP if (ConfiguracaoApp.ChecarConexaoInternet) //danasa: 12/2013 if (!Functions.IsConnectedToInternet()) { //Registrar o erro da validação para o sistema ERP throw new ExceptionSemInternet(ErroPadrao.FalhaInternet, "\r\nArquivo: " + XmlNfeDadosMsg); } //Invocar o membro switch (padraoNFSe) { #region Padrão BETHA case PadroesNFSe.BETHA: switch (metodo) { case "ConsultarSituacaoLoteRps": strRetorno = wsProxy.Betha.ConsultarSituacaoLoteRps(docXML, Empresas.Configuracoes[emp].AmbienteCodigo); break; case "ConsultarLoteRps": strRetorno = wsProxy.Betha.ConsultarLoteRps(docXML, Empresas.Configuracoes[emp].AmbienteCodigo); break; case "CancelarNfse": strRetorno = wsProxy.Betha.CancelarNfse(docXML, Empresas.Configuracoes[emp].AmbienteCodigo); break; case "ConsultarNfse": strRetorno = wsProxy.Betha.ConsultarNfse(docXML, Empresas.Configuracoes[emp].AmbienteCodigo); break; case "ConsultarNfsePorRps": strRetorno = wsProxy.Betha.ConsultarNfsePorRps(docXML, Empresas.Configuracoes[emp].AmbienteCodigo); break; case "RecepcionarLoteRps": strRetorno = wsProxy.Betha.RecepcionarLoteRps(docXML, Empresas.Configuracoes[emp].AmbienteCodigo); break; } break; #endregion #region Padrão ISSONLINE case PadroesNFSe.ISSONLINE: int operacao; string senhaWs = Functions.GetMD5Hash(Empresas.Configuracoes[emp].SenhaWS); switch (servicoNFSe) { case Servicos.NFSeRecepcionarLoteRps: operacao = 1; break; case Servicos.NFSeCancelar: operacao = 2; break; default: operacao = 3; break; } strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { Convert.ToSByte(operacao), Empresas.Configuracoes[emp].UsuarioWS, senhaWs, docXML.OuterXml }); break; #endregion #region Padrão Blumenau-SC case PadroesNFSe.BLUMENAU_SC: strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { 1, docXML.OuterXml }); break; #endregion #region Padrão Paulistana case PadroesNFSe.PAULISTANA: strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { 1, docXML.OuterXml }); break; #endregion #region Demais padrões case PadroesNFSe.TECNOSISTEMAS: strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { docXML.OuterXml, cabecMsg.ToString() }); break; case PadroesNFSe.SMARAPD: if (metodo == "nfdEntradaCancelar") strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { Empresas.Configuracoes[emp].UsuarioWS, TFunctions.EncryptSHA1(Empresas.Configuracoes[emp].SenhaWS), docXML.OuterXml }); else strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { Empresas.Configuracoes[emp].UsuarioWS, TFunctions.EncryptSHA1(Empresas.Configuracoes[emp].SenhaWS), Empresas.Configuracoes[emp].UnidadeFederativaCodigo, docXML.OuterXml }); break; case PadroesNFSe.ISSWEB: string versao = docXML.DocumentElement.GetElementsByTagName("Versao")[0].InnerText; string cnpj = docXML.DocumentElement.GetElementsByTagName("CNPJCPFPrestador")[0].InnerText; strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { cnpj, docXML.OuterXml, versao }); break; case PadroesNFSe.GINFES: case PadroesNFSe.THEMA: case PadroesNFSe.SALVADOR_BA: case PadroesNFSe.CANOAS_RS: case PadroesNFSe.ISSNET: default: if (string.IsNullOrEmpty(cabecMsg)) strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { docXML.OuterXml }); else strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { cabecMsg.ToString(), docXML.OuterXml }); break; #endregion } #region gerar arquivos assinados(somente debug) #if DEBUG string path = Application.StartupPath + "\\teste_assintura\\"; if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } StreamWriter sw = new StreamWriter(path + "nfseMsg_assinado.xml", true); sw.Write(docXML.OuterXml); sw.Close(); StreamWriter sw2 = new StreamWriter(path + "cabecMsg_assinado.xml", true); sw2.Write(cabecMsg.ToString()); sw2.Close(); #endif #endregion //Atualizar o atributo do serviço da Nfe com o conteúdo retornado do webservice do sefaz typeServicoNFe.InvokeMember("vStrXmlRetorno", System.Reflection.BindingFlags.SetProperty, null, servicoNFe, new object[] { strRetorno }); // Registra o retorno de acordo com o status obtido if (finalArqEnvio != string.Empty && finalArqRetorno != string.Empty) { typeServicoNFe.InvokeMember("XmlRetorno", System.Reflection.BindingFlags.InvokeMethod, null, servicoNFe, new Object[] { finalArqEnvio + ".xml", finalArqRetorno + ".xml" }); } }
/// <summary> /// Definir o webservice que será utilizado para o envio do XML /// </summary> /// <param name="servico">Serviço que será executado</param> /// <param name="emp">Index da empresa que será executado o serviço</param> /// <param name="cUF">Código da UF</param> /// <param name="tpAmb">Código do ambiente que será acessado</param> /// <param name="tpEmis">Tipo de emissão do XML</param> /// <param name="padraoNFSe">Padrão da NFSe</param> /// <param name="versao">Versão do XML</param> /// <param name="mod">Modelo do documento fiscal (55=NFe, 65=NFCe, etc...)</param> /// <returns>Retorna o objeto do WebService</returns> public static WebServiceProxy DefinirWS(Servicos servico, int emp, int cUF, int tpAmb, int tpEmis, PadroesNFSe padraoNFSe, string versao, string mod) { WebServiceProxy wsProxy = null; string key = servico + " " + cUF + " " + tpAmb + " " + tpEmis + (!string.IsNullOrEmpty(versao) ? " " + versao : "") + (!string.IsNullOrEmpty(mod) ? " " + mod : ""); lock (Smf.WebProxy) { if (Empresas.Configuracoes[emp].WSProxy.ContainsKey(key)) { wsProxy = Empresas.Configuracoes[emp].WSProxy[key]; } else { Thread.Sleep(1000); //1 segundo //Definir se é uma configurações específica para NFC-e bool ehNFCe = (mod == "65"); //Definir a URI para conexão com o Webservice string Url = ConfiguracaoApp.DefLocalWSDL(cUF, tpAmb, tpEmis, versao, servico, ehNFCe); wsProxy = new WebServiceProxy(cUF, Url, Empresas.Configuracoes[emp].X509Certificado, padraoNFSe, (tpAmb == (int)NFe.Components.TipoAmbiente.taHomologacao), servico); Empresas.Configuracoes[emp].WSProxy.Add(key, wsProxy); } } return wsProxy; }
/// <summary> /// Metodo responsável por invocar o serviço do WebService do SEFAZ /// </summary> /// <param name="oWSProxy">Objeto da classe construida do WSDL</param> /// <param name="oServicoWS">Objeto da classe de envio do XML</param> /// <param name="cMetodo">Método da classe de envio do XML que faz o envio</param> /// <param name="cabecMsg">Objeto da classe de cabecalho do serviço</param> /// <param name="oServicoNFe">Objeto do Serviço de envio da NFE do UniNFe</param> /// <param name="cFinalArqEnvio">string do final do arquivo a ser enviado. Sem a extensão ".xml"</param> /// <param name="cFinalArqRetorno">string do final do arquivo a ser gravado com o conteúdo do retorno. Sem a extensão ".xml"</param> /// <remarks> /// Autor: Wandrey Mundin Ferreira /// Data: 17/03/2010 /// </remarks> public void InvocarNFSe(WebServiceProxy oWSProxy, object oServicoWS, string cMetodo, string cabecMsg, object oServicoNFe, string cFinalArqEnvio, string cFinalArqRetorno, PadroesNFSe padraoNFSe, Servicos servicoNFSe, Core.Empresa empresa) { XmlDocument docXML = new XmlDocument(); // Definir o tipo de serviço da NFe Type typeServicoNFe = oServicoNFe.GetType(); // Resgatar o nome do arquivo XML a ser enviado para o webservice string XmlNfeDadosMsg = (string)(typeServicoNFe.InvokeMember("NomeArquivoXML", System.Reflection.BindingFlags.GetProperty, null, oServicoNFe, null)); // Resgatar o caminho para salvar o xml de retorno string caminhoSalvarXmlRetorno = (string)(typeServicoNFe.InvokeMember("SalvarXmlRetornoEm", System.Reflection.BindingFlags.GetProperty, null, oServicoNFe, null)); // Validar o Arquivo XML ValidarXML validar = new ValidarXML(XmlNfeDadosMsg, empresa.CodigoMunicipio); string cResultadoValidacao = validar.ValidarArqXML(XmlNfeDadosMsg); if (cResultadoValidacao != "") { throw new Exception(cResultadoValidacao); } // Montar o XML de Lote de envio de Notas fiscais docXML.Load(XmlNfeDadosMsg); // Definir Proxy if (ConfiguracaoApp.Proxy) { if (padraoNFSe != PadroesNFSe.BETHA) { oWSProxy.SetProp(oServicoWS, "Proxy", Proxy.DefinirProxy(ConfiguracaoApp.ProxyServidor, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyPorta)); } else { oWSProxy.Betha.Proxy = Proxy.DefinirProxy(ConfiguracaoApp.ProxyServidor, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyPorta); } } // Limpa a variável de retorno string strRetorno = string.Empty; //Vou mudar o timeout para evitar que demore a resposta e o uninfe aborte antes de recebe-la. Wandrey 17/09/2009 //Isso talvez evite de não conseguir o número do recibo se o serviço do SEFAZ estiver lento. if (padraoNFSe != PadroesNFSe.BETHA) { oWSProxy.SetProp(oServicoWS, "Timeout", 60000); } //Invocar o membro switch (padraoNFSe) { #region Padrão BETHA case PadroesNFSe.BETHA: switch (cMetodo) { case "ConsultarSituacaoLoteRps": strRetorno = oWSProxy.Betha.ConsultarSituacaoLoteRps(docXML, empresa.tpAmb); break; case "ConsultarLoteRps": strRetorno = oWSProxy.Betha.ConsultarLoteRps(docXML, empresa.tpAmb); break; case "CancelarNfse": strRetorno = oWSProxy.Betha.CancelarNfse(docXML, empresa.tpAmb); break; case "ConsultarNfse": strRetorno = oWSProxy.Betha.ConsultarNfse(docXML, empresa.tpAmb); break; case "ConsultarNfsePorRps": strRetorno = oWSProxy.Betha.ConsultarNfsePorRps(docXML, empresa.tpAmb); break; case "RecepcionarLoteRps": strRetorno = oWSProxy.Betha.RecepcionarLoteRps(docXML, empresa.tpAmb); break; } break; #endregion #region Padrão ISSONLINE case PadroesNFSe.ISSONLINE: int operacao; string senhaWs = Functions.GetMD5Hash(empresa.SenhaWS); switch (servicoNFSe) { case Servicos.RecepcionarLoteRps: operacao = 1; break; case Servicos.CancelarNfse: operacao = 2; break; default: operacao = 3; break; } strRetorno = oWSProxy.InvokeStr(oServicoWS, cMetodo, new object[] { Convert.ToSByte(operacao), empresa.UsuarioWS, senhaWs, docXML.OuterXml }); break; #endregion #region Padrão Blumenau-SC case PadroesNFSe.BLUMENAU_SC: strRetorno = oWSProxy.InvokeStr(oServicoWS, cMetodo, new object[] { 1, docXML.OuterXml }); break; #endregion #region Padrão Paulistana case PadroesNFSe.PAULISTANA: strRetorno = oWSProxy.InvokeStr(oServicoWS, cMetodo, new object[] { 1, docXML.OuterXml }); break; #endregion #region Demais padrões case PadroesNFSe.GINFES: case PadroesNFSe.THEMA: case PadroesNFSe.SALVADOR_BA: case PadroesNFSe.CANOAS_RS: case PadroesNFSe.ISSNET: case PadroesNFSe.DUETO: default: if (string.IsNullOrEmpty(cabecMsg)) { strRetorno = oWSProxy.InvokeStr(oServicoWS, cMetodo, new object[] { docXML.OuterXml }); } else { strRetorno = oWSProxy.InvokeStr(oServicoWS, cMetodo, new object[] { cabecMsg.ToString(), docXML.OuterXml }); } break; #endregion } //Atualizar o atributo do serviço da Nfe com o conteúdo retornado do webservice do sefaz typeServicoNFe.InvokeMember("vStrXmlRetorno", System.Reflection.BindingFlags.SetProperty, null, oServicoNFe, new object[] { strRetorno }); // Registra o retorno de acordo com o status obtido if (cFinalArqEnvio != string.Empty && cFinalArqRetorno != string.Empty) { typeServicoNFe.InvokeMember("XmlRetorno", System.Reflection.BindingFlags.InvokeMethod, null, oServicoNFe, new Object[] { cFinalArqEnvio + ".xml", caminhoSalvarXmlRetorno }); } }
private void btn_Validar_Click(object sender, EventArgs e) { LimparEPosicionarTC(); try { if (this.edtFilename.Text == "" || !File.Exists(this.edtFilename.Text)) { this.textBox_resultado.Text = "Arquivo não encontrado."; return; } //Copiar o arquivo XML para temporários para assinar e depois vou validar o que está nos temporários FileInfo oArquivo = new FileInfo(this.edtFilename.Text); string cArquivo = System.IO.Path.GetTempPath() + oArquivo.Name; oArqDestino = new FileInfo(cArquivo); oArquivo.CopyTo(cArquivo, true); //Remover atributo de somente leitura que pode gerar problemas no acesso do arquivo NFe.Service.TFunctions.RemoveSomenteLeitura(cArquivo); NFe.Service.TaskValidar val = new Service.TaskValidar(); val.NomeArquivoXML = oArqDestino.FullName; val.Execute(); int codUF = Empresas.Configuracoes[Emp].UnidadeFederativaCodigo; //Detectar o tipo do arquivo PadroesNFSe padraoNFSe = Functions.PadraoNFSe(Empresas.Configuracoes[Emp].UnidadeFederativaCodigo); if (padraoNFSe == PadroesNFSe.BETHA) { string versao = Functions.GetAttributeXML("LoteRps", "versao", cArquivo); if (versao.Equals("2.02")) { codUF = 202; } } Validate.ValidarXML validarXML = new Validate.ValidarXML(cArquivo, codUF, false); string resultValidacao = ""; XmlDocument conteudoXML = new XmlDocument(); try { conteudoXML.Load(cArquivo); } catch { conteudoXML.LoadXml(File.ReadAllText(cArquivo, System.Text.Encoding.UTF8)); } if (conteudoXML.DocumentElement.Name.Equals("CTe") || conteudoXML.DocumentElement.Name.Equals("MDFe")) { XmlDocument infModal = new XmlDocument(); XmlDocument modal = new XmlDocument(); if (conteudoXML.GetElementsByTagName("infModal")[0] != null) { foreach (XmlElement item in conteudoXML.GetElementsByTagName("infModal")) { infModal.LoadXml(item.OuterXml); modal.LoadXml(item.InnerXml); } Validate.ValidarXML validarModal = new Validate.ValidarXML(infModal, Empresas.Configuracoes[Emp].UnidadeFederativaCodigo, false); resultValidacao += validarModal.ValidarArqXML(modal, cArquivo); } } this.textBox_resultado.Text = validarXML.TipoArqXml.cRetornoTipoArq; if (validarXML.TipoArqXml.nRetornoTipoArq >= 1 && validarXML.TipoArqXml.nRetornoTipoArq <= SchemaXML.MaxID) { this.edtTipoarquivo.Text = validarXML.TipoArqXml.cRetornoTipoArq; //Assinar o arquivo XML copiado para a pasta TEMP bool lValidar = false; AssinaturaDigital oAD = new AssinaturaDigital(); try { validarXML.EncryptAssinatura(cArquivo); oAD.Assinar(cArquivo, Emp, Empresas.Configuracoes[Emp].UnidadeFederativaCodigo, (conteudoXML.DocumentElement.Name.Equals("Reinf") || conteudoXML.DocumentElement.Name.Equals("eSocial") ? AlgorithmType.Sha256 : AlgorithmType.Sha1)); lValidar = true; } catch (Exception ex) { lValidar = false; this.textBox_resultado.Text = "Ocorreu um erro ao tentar assinar o XML: \r\n\r\n" + validarXML.TipoArqXml.cRetornoTipoArq + "\r\n" + ex.Message; } if (lValidar == true) { //Validar o arquivo if (validarXML.TipoArqXml.nRetornoTipoArq >= 1 && validarXML.TipoArqXml.nRetornoTipoArq <= SchemaXML.MaxID) { ///danasa: 12/2013 validarXML.ValidarArqXML(cArquivo); if (string.IsNullOrEmpty(validarXML.TipoArqXml.cArquivoSchema)) { this.textBox_resultado.Text = "XML não possui schema de validação, sendo assim não é possível validar XML"; } else if (validarXML.Retorno == 0 && string.IsNullOrEmpty(resultValidacao)) { this.textBox_resultado.Text = "Arquivo validado com sucesso!"; } else if (!string.IsNullOrEmpty(resultValidacao)) { this.textBox_resultado.Text = resultValidacao; } else { this.textBox_resultado.Text = "XML INCONSISTENTE!\r\n\r\n" + validarXML.RetornoString; } } else { //this.textBox_tipoarq.Text = validarXML.TipoArqXml.cRetornoTipoArq; this.textBox_resultado.Text = "XML INCONSISTENTE!\r\n\r\n" + validarXML.TipoArqXml.cRetornoTipoArq; } } } try { if (wb == null) { wb = new WebBrowser(); wb.Parent = this.metroTabPage2; wb.Dock = DockStyle.Fill; wb.DocumentCompleted += webBrowser1_DocumentCompleted; } wb.Visible = true; wb.Navigate(cArquivo); } catch { webBrowser1_DocumentCompleted(null, null); } } catch (Exception ex) { this.textBox_resultado.Text = ex.Message + "\r\n" + ex.StackTrace; if (wb != null) { wb.Visible = false; } } }
private static string getURLs(string local, ref PadroesNFSe padrao, int idMunicipio) { /* * tenta ler as URL's do 'WebService.xml' * não encontrando, assume o ID='padrao' e UF='XX' e padrao='padrao' */ if (System.IO.File.Exists(Propriedade.NomeArqXMLWebService_NFSe)) { XElement axml = null; try { axml = XElement.Load(Propriedade.NomeArqXMLWebService_NFSe); } catch (Exception ex) { Functions.WriteLog("Ocorreu um erro na tentativa de carregamento do arquivo " + Propriedade.NomeArqXMLWebService_NFSe + ".\r\n" + "Acesse novamente o sistema para que se recupere automaticamente do erro.\r\n\r\n" + "Erro:\r\n\r\n" + ex.Message, true, true, ""); if (System.IO.File.Exists(Propriedade.XMLVersaoWSDLXSD)) { System.IO.File.Delete(Propriedade.XMLVersaoWSDLXSD); } Environment.Exit(0); } /// /// primeiro, pesquisa pelo ID /// var s = (from p in axml.Descendants(NFeStrConstants.Estado) where //(string)p.Attribute(NFe.Components.NFeStrConstants.Padrao) == padrao.ToString() && (string)p.Attribute(TpcnResources.ID.ToString()) == idMunicipio.ToString() select p); foreach (var item in s) { if (item.Element(local) != null) { /// /// pega o padrao definido no WebService.xml descartando o que constar no UninMunic.xml /// padrao = WebServiceNFSe.GetPadraoFromString(item.Attribute(NFeStrConstants.Padrao).Value); return(local.Equals(NFeStrConstants.LocalHomologacao) ? item.FirstNode.ToString() : item.LastNode.ToString()); } } /// /// não encontrei, assume o ID='padrao' e UF='XX' e padrao='padrao' /// PadroesNFSe pdr = padrao; var xs = (from p in axml.Descendants(NFeStrConstants.Estado) where (string)p.Attribute(NFeStrConstants.Padrao) == pdr.ToString() && (string)p.Attribute(TpcnResources.UF.ToString()) == "XX" && (string)p.Attribute(TpcnResources.ID.ToString()) == pdr.ToString() select p); foreach (var item in xs) { if (item.Element(local) != null) { return(local.Equals(NFeStrConstants.LocalHomologacao) ? item.FirstNode.ToString() : item.LastNode.ToString()); } } } else { Functions.WriteLog("Ocorreu um erro na tentativa de carregamento do arquivo " + Propriedade.NomeArqXMLWebService_NFSe + ".\r\n" + "Acesse novamente o sistema para que se recupere automaticamente do erro.", true, true, ""); if (System.IO.File.Exists(Propriedade.XMLVersaoWSDLXSD)) { System.IO.File.Delete(Propriedade.XMLVersaoWSDLXSD); } Environment.Exit(0); } return(""); }
public static string WebServicesHomologacao(ref PadroesNFSe padrao, int idMunicipio = 0) { return(getURLs(NFeStrConstants.LocalHomologacao, ref padrao, idMunicipio)); }
public override void Execute(Empresa empresa) { //Definir o serviço que será executado para a classe Servico = Servicos.ConsultarSituacaoLoteRps; oDadosPedSitLoteRps = new DadosPedSitLoteRps(empresa); //Ler o XML para pegar parâmetros de envio //LerXML ler = new LerXML(); /*ler.*/ PedSitLoteRps(NomeArquivoXML); //Definir o objeto do WebService //Criar objetos das classes dos serviços dos webservices do SEFAZ WebServiceProxy wsProxy = null; object pedSitLoteRps = null; string cabecMsg = ""; PadroesNFSe padraoNFSe = Functions.PadraoNFSe(/*ler.*/ oDadosPedSitLoteRps.cMunicipio); switch (padraoNFSe) { case PadroesNFSe.GINFES: wsProxy = ConfiguracaoApp.DefinirWS(Servico, empresa, /*ler.*/ oDadosPedSitLoteRps.cMunicipio, /*ler.*/ oDadosPedSitLoteRps.tpAmb, /*ler.*/ oDadosPedSitLoteRps.tpEmis); pedSitLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, /*ler.*/ oDadosPedSitLoteRps.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.*/ oDadosPedSitLoteRps.cMunicipio, /*ler.*/ oDadosPedSitLoteRps.tpAmb, /*ler.*/ oDadosPedSitLoteRps.tpEmis); pedSitLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, /*ler.*/ oDadosPedSitLoteRps.cMunicipio)); break; case PadroesNFSe.CANOAS_RS: wsProxy = ConfiguracaoApp.DefinirWS(Servico, empresa, /*ler.*/ oDadosPedSitLoteRps.cMunicipio, /*ler.*/ oDadosPedSitLoteRps.tpAmb, /*ler.*/ oDadosPedSitLoteRps.tpEmis); pedSitLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, /*ler.*/ oDadosPedSitLoteRps.cMunicipio)); cabecMsg = "<cabecalho versao=\"201001\"><versaoDados>V2010</versaoDados></cabecalho>"; break; case PadroesNFSe.ISSNET: wsProxy = ConfiguracaoApp.DefinirWS(Servico, empresa, oDadosPedSitLoteRps.cMunicipio, oDadosPedSitLoteRps.tpAmb, oDadosPedSitLoteRps.tpEmis); pedSitLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, oDadosPedSitLoteRps.cMunicipio)); break; case PadroesNFSe.BLUMENAU_SC: wsProxy = ConfiguracaoApp.DefinirWS(Servico, empresa, oDadosPedSitLoteRps.cMunicipio, oDadosPedSitLoteRps.tpAmb, oDadosPedSitLoteRps.tpEmis); pedSitLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, oDadosPedSitLoteRps.cMunicipio)); break; case PadroesNFSe.BHISS: wsProxy = ConfiguracaoApp.DefinirWS(Servico, empresa, oDadosPedSitLoteRps.cMunicipio, oDadosPedSitLoteRps.tpAmb, oDadosPedSitLoteRps.tpEmis); pedSitLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, oDadosPedSitLoteRps.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, oDadosPedSitLoteRps.cMunicipio, oDadosPedSitLoteRps.tpAmb, oDadosPedSitLoteRps.tpEmis); pedSitLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, oDadosPedSitLoteRps.cMunicipio)); break; case PadroesNFSe.DUETO: wsProxy = ConfiguracaoApp.DefinirWS(Servico, empresa, oDadosPedSitLoteRps.cMunicipio, oDadosPedSitLoteRps.tpAmb, oDadosPedSitLoteRps.tpEmis, padraoNFSe); pedSitLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, oDadosPedSitLoteRps.cMunicipio)); break; case PadroesNFSe.WEBISS: wsProxy = ConfiguracaoApp.DefinirWS(Servico, empresa, oDadosPedSitLoteRps.cMunicipio, oDadosPedSitLoteRps.tpAmb, oDadosPedSitLoteRps.tpEmis, padraoNFSe); pedSitLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, oDadosPedSitLoteRps.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, oDadosPedSitLoteRps.cMunicipio, oDadosPedSitLoteRps.tpAmb, oDadosPedSitLoteRps.tpEmis); pedSitLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, oDadosPedSitLoteRps.cMunicipio)); break; case PadroesNFSe.SALVADOR_BA: wsProxy = ConfiguracaoApp.DefinirWS(Servico, empresa, oDadosPedSitLoteRps.cMunicipio, oDadosPedSitLoteRps.tpAmb, oDadosPedSitLoteRps.tpEmis, padraoNFSe); pedSitLoteRps = wsProxy.CriarObjeto(NomeClasseWS(Servico, oDadosPedSitLoteRps.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.*/ oDadosPedSitLoteRps.cMunicipio)); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.InvocarNFSe(wsProxy, pedSitLoteRps, NomeMetodoWS(Servico, /*ler.*/ oDadosPedSitLoteRps.cMunicipio, empresa.tpAmb), cabecMsg, this, "-ped-sitloterps", "-sitloterps", padraoNFSe, Servico, empresa); } }
/// <summary> /// Metodo responsável por invocar o serviço do WebService do SEFAZ /// </summary> /// <param name="oWSProxy">Objeto da classe construida do WSDL</param> /// <param name="oServicoWS">Objeto da classe de envio do XML</param> /// <param name="cMetodo">Método da classe de envio do XML que faz o envio</param> /// <param name="cabecMsg">Objeto da classe de cabecalho do serviço</param> /// <param name="oServicoNFe">Objeto do Serviço de envio da NFE do UniNFe</param> /// <param name="cFinalArqEnvio">string do final do arquivo a ser enviado. Sem a extensão ".xml"</param> /// <param name="cFinalArqRetorno">string do final do arquivo a ser gravado com o conteúdo do retorno. Sem a extensão ".xml"</param> /// <remarks> /// Autor: Wandrey Mundin Ferreira /// Data: 17/03/2010 /// </remarks> public void InvocarNFSe(WebServiceProxy oWSProxy, object oServicoWS, string cMetodo, string cabecMsg, object oServicoNFe, string cFinalArqEnvio, string cFinalArqRetorno, PadroesNFSe padraoNFSe, Servicos servicoNFSe, Core.Empresa empresa) { XmlDocument docXML = new XmlDocument(); // Definir o tipo de serviço da NFe Type typeServicoNFe = oServicoNFe.GetType(); // Resgatar o nome do arquivo XML a ser enviado para o webservice string XmlNfeDadosMsg = (string)(typeServicoNFe.InvokeMember("NomeArquivoXML", System.Reflection.BindingFlags.GetProperty, null, oServicoNFe, null)); // Resgatar o caminho para salvar o xml de retorno string caminhoSalvarXmlRetorno = (string)(typeServicoNFe.InvokeMember("SalvarXmlRetornoEm", System.Reflection.BindingFlags.GetProperty, null, oServicoNFe, null)); // Validar o Arquivo XML ValidarXML validar = new ValidarXML(XmlNfeDadosMsg, empresa.CodigoMunicipio); string cResultadoValidacao = validar.ValidarArqXML(XmlNfeDadosMsg); if (cResultadoValidacao != "") { throw new Exception(cResultadoValidacao); } // Montar o XML de Lote de envio de Notas fiscais docXML.Load(XmlNfeDadosMsg); // Definir Proxy if (ConfiguracaoApp.Proxy) if (padraoNFSe != PadroesNFSe.BETHA) { oWSProxy.SetProp(oServicoWS, "Proxy", Proxy.DefinirProxy(ConfiguracaoApp.ProxyServidor, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyPorta)); } else { oWSProxy.Betha.Proxy = Proxy.DefinirProxy(ConfiguracaoApp.ProxyServidor, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyPorta); } // Limpa a variável de retorno string strRetorno = string.Empty; //Vou mudar o timeout para evitar que demore a resposta e o uninfe aborte antes de recebe-la. Wandrey 17/09/2009 //Isso talvez evite de não conseguir o número do recibo se o serviço do SEFAZ estiver lento. if (padraoNFSe != PadroesNFSe.BETHA) oWSProxy.SetProp(oServicoWS, "Timeout", 60000); //Invocar o membro switch (padraoNFSe) { #region Padrão BETHA case PadroesNFSe.BETHA: switch (cMetodo) { case "ConsultarSituacaoLoteRps": strRetorno = oWSProxy.Betha.ConsultarSituacaoLoteRps(docXML, empresa.tpAmb); break; case "ConsultarLoteRps": strRetorno = oWSProxy.Betha.ConsultarLoteRps(docXML, empresa.tpAmb); break; case "CancelarNfse": strRetorno = oWSProxy.Betha.CancelarNfse(docXML, empresa.tpAmb); break; case "ConsultarNfse": strRetorno = oWSProxy.Betha.ConsultarNfse(docXML, empresa.tpAmb); break; case "ConsultarNfsePorRps": strRetorno = oWSProxy.Betha.ConsultarNfsePorRps(docXML, empresa.tpAmb); break; case "RecepcionarLoteRps": strRetorno = oWSProxy.Betha.RecepcionarLoteRps(docXML, empresa.tpAmb); break; } break; #endregion #region Padrão ISSONLINE case PadroesNFSe.ISSONLINE: int operacao; string senhaWs = Functions.GetMD5Hash(empresa.SenhaWS); switch (servicoNFSe) { case Servicos.RecepcionarLoteRps: operacao = 1; break; case Servicos.CancelarNfse: operacao = 2; break; default: operacao = 3; break; } strRetorno = oWSProxy.InvokeStr(oServicoWS, cMetodo, new object[] { Convert.ToSByte(operacao), empresa.UsuarioWS, senhaWs, docXML.OuterXml }); break; #endregion #region Padrão Blumenau-SC case PadroesNFSe.BLUMENAU_SC: strRetorno = oWSProxy.InvokeStr(oServicoWS, cMetodo, new object[] { 1, docXML.OuterXml }); break; #endregion #region Padrão Paulistana case PadroesNFSe.PAULISTANA: strRetorno = oWSProxy.InvokeStr(oServicoWS, cMetodo, new object[] { 1, docXML.OuterXml }); break; #endregion #region Demais padrões case PadroesNFSe.GINFES: case PadroesNFSe.THEMA: case PadroesNFSe.SALVADOR_BA: case PadroesNFSe.CANOAS_RS: case PadroesNFSe.ISSNET: case PadroesNFSe.DUETO: default: if (string.IsNullOrEmpty(cabecMsg)) strRetorno = oWSProxy.InvokeStr(oServicoWS, cMetodo, new object[] { docXML.OuterXml }); else strRetorno = oWSProxy.InvokeStr(oServicoWS, cMetodo, new object[] { cabecMsg.ToString(), docXML.OuterXml }); break; #endregion } //Atualizar o atributo do serviço da Nfe com o conteúdo retornado do webservice do sefaz typeServicoNFe.InvokeMember("vStrXmlRetorno", System.Reflection.BindingFlags.SetProperty, null, oServicoNFe, new object[] { strRetorno }); // Registra o retorno de acordo com o status obtido if (cFinalArqEnvio != string.Empty && cFinalArqRetorno != string.Empty) { typeServicoNFe.InvokeMember("XmlRetorno", System.Reflection.BindingFlags.InvokeMethod, null, oServicoNFe, new Object[] { cFinalArqEnvio + ".xml", caminhoSalvarXmlRetorno }); } }
public static string WebServicesHomologacao(ref PadroesNFSe padrao, int idMunicipio = 0) { return getURLs(NFe.Components.NFeStrConstants.LocalHomologacao, ref padrao, idMunicipio); }
public static string WebServicesProducao(PadroesNFSe padrao, int idMunicipio = 0) { switch (padrao) { #region THEMA case PadroesNFSe.THEMA: switch (idMunicipio) { case 4312401: // Monte Negro - RS return "<LocalProducao>" + @"<RecepcionarLoteRps>wsdl\producao\PMonteNegroRSRemessaNFSE.wsdl</RecepcionarLoteRps>" + @"<ConsultarSituacaoLoteRps>wsdl\producao\PMonteNegroRSConsultarNFSE.wsdl</ConsultarSituacaoLoteRps>" + @"<ConsultarNfsePorRps>wsdl\producao\PMonteNegroRSConsultarNFSE.wsdl</ConsultarNfsePorRps>" + @"<ConsultarNfse>wsdl\producao\PMonteNegroRSConsultarNFSE.wsdl</ConsultarNfse>" + @"<ConsultarLoteRps>wsdl\producao\PMonteNegroRSConsultarNFSE.wsdl</ConsultarLoteRps>" + @"<CancelarNfse>wsdl\producao\PMonteNegroRSCancelarNFSE.wsdl</CancelarNfse>" + "</LocalProducao>"; case 4303103: // Cachoeirinha - RS return "<LocalProducao>" + @"<RecepcionarLoteRps>wsdl\producao\PThemaCachoerinhaRSRemessa.wsdl</RecepcionarLoteRps>" + @"<ConsultarSituacaoLoteRps>wsdl\producao\PThemaCachoerinhaRSConsulta.wsdl</ConsultarSituacaoLoteRps>" + @"<ConsultarNfsePorRps>wsdl\producao\PThemaCachoerinhaRSConsulta.wsdl</ConsultarNfsePorRps>" + @"<ConsultarNfse>wsdl\producao\PThemaCachoerinhaRSConsulta.wsdl</ConsultarNfse>" + @"<ConsultarLoteRps>wsdl\producao\PThemaCachoerinhaRSConsulta.wsdl</ConsultarLoteRps>" + @"<CancelarNfse>wsdl\producao\PThemaCachoerinhaRSCancelamento.wsdl</CancelarNfse>" + "</LocalProducao>"; case 4311403: // Lajeado - RS return "<LocalProducao>" + @"<RecepcionarLoteRps>wsdl\producao\PLajeadoRSRemessaNFSE.wsdl</RecepcionarLoteRps>" + @"<ConsultarSituacaoLoteRps>wsdl\producao\PLajeadoRSConsultarNFSE.wsdl</ConsultarSituacaoLoteRps>" + @"<ConsultarNfsePorRps>wsdl\producao\PLajeadoRSConsultarNFSE.wsdl</ConsultarNfsePorRps>" + @"<ConsultarNfse>wsdl\producao\PLajeadoRSConsultarNFSE.wsdl</ConsultarNfse>" + @"<ConsultarLoteRps>wsdl\producao\PLajeadoRSConsultarNFSE.wsdl</ConsultarLoteRps>" + @"<CancelarNfse>wsdl\producao\PLajeadoRSCancelarNFSE.wsdl</CancelarNfse>" + "</LocalProducao>"; default: return "<LocalProducao>" + @"<RecepcionarLoteRps>wsdl\producao\PThemaRemessa.wsdl</RecepcionarLoteRps>" + @"<ConsultarSituacaoLoteRps>wsdl\producao\PThemaConsulta.wsdl</ConsultarSituacaoLoteRps>" + @"<ConsultarNfsePorRps>wsdl\producao\PThemaConsulta.wsdl</ConsultarNfsePorRps>" + @"<ConsultarNfse>wsdl\producao\PThemaConsulta.wsdl</ConsultarNfse>" + @"<ConsultarLoteRps>wsdl\producao\PThemaConsulta.wsdl</ConsultarLoteRps>" + @"<CancelarNfse>wsdl\producao\PThemaCancelamento.wsdl</CancelarNfse>" + "</LocalProducao>"; } #endregion #region GINFES case PadroesNFSe.GINFES: return "<LocalProducao>" + @"<RecepcionarLoteRps>wsdl\producao\pginfes.wsdl</RecepcionarLoteRps>" + @"<ConsultarSituacaoLoteRps>wsdl\producao\pginfes.wsdl</ConsultarSituacaoLoteRps>" + @"<ConsultarNfsePorRps>wsdl\producao\pginfes.wsdl</ConsultarNfsePorRps>" + @"<ConsultarNfse>wsdl\producao\pginfes.wsdl</ConsultarNfse>" + @"<ConsultarLoteRps>wsdl\producao\pginfes.wsdl</ConsultarLoteRps>" + @"<CancelarNfse>wsdl\producao\pginfes.wsdl</CancelarNfse>" + "</LocalProducao>"; #endregion #region BETHA case PadroesNFSe.BETHA: return "<LocalProducao>" + @"<RecepcionarLoteRps>wsdl\producao\PBethaRecepcionarLoteRPS.wsdl</RecepcionarLoteRps>" + @"<ConsultarSituacaoLoteRps>wsdl\producao\PBethaConsultarSituacaoLoteRPS.wsdl</ConsultarSituacaoLoteRps>" + @"<ConsultarNfsePorRps>wsdl\producao\PBethaConsultarNFSePorRPS.wsdl</ConsultarNfsePorRps>" + @"<ConsultarNfse>wsdl\producao\PBethaConsultarNFSe.wsdl</ConsultarNfse>" + @"<ConsultarLoteRps>wsdl\producao\PBethaConsultarLoteRPS.wsdl</ConsultarLoteRps>" + @"<CancelarNfse>wsdl\producao\PBethaCancelarNFSe.wsdl</CancelarNfse>" + "</LocalProducao>"; #endregion #region SALVADOR_BA case PadroesNFSe.SALVADOR_BA: return "<LocalProducao>" + @"<RecepcionarLoteRps>wsdl\producao\PSalvadorBAEnvioLoteRPS.wsdl</RecepcionarLoteRps>" + @"<ConsultarSituacaoLoteRps>wsdl\producao\PSalvadorBAConsultaSituacaoLoteRPS.wsdl</ConsultarSituacaoLoteRps>" + @"<ConsultarNfsePorRps>wsdl\producao\PSalvadorBAConsultaNfseRPS.wsdl</ConsultarNfsePorRps>" + @"<ConsultarNfse>wsdl\producao\PSalvadorBAConsultaNfse.wsdl</ConsultarNfse>" + @"<ConsultarLoteRps>wsdl\producao\PSalvadorBAConsultaLoteRPS.wsdl</ConsultarLoteRps>" + @"<CancelarNfse>wsdl\producao\PSalvadorBA.wsdl</CancelarNfse>" + "</LocalProducao>"; #endregion #region CANOAS_RS case PadroesNFSe.CANOAS_RS: return "<LocalProducao>" + @"<RecepcionarLoteRps>wsdl\producao\PCanoasRSRecepcionarLoteRps.wsdl</RecepcionarLoteRps>" + @"<ConsultarSituacaoLoteRps>wsdl\producao\PCanoasRSConsultarSituacaoLoteRps.wsdl</ConsultarSituacaoLoteRps>" + @"<ConsultarNfsePorRps>wsdl\producao\PCanoasRSConsultarNfsePorRps.wsdl</ConsultarNfsePorRps>" + @"<ConsultarNfse>wsdl\producao\PCanoasRSConsultarNfse.wsdl</ConsultarNfse>" + @"<ConsultarLoteRps>wsdl\producao\PCanoasRSConsultarLoteRps.wsdl</ConsultarLoteRps>" + @"<CancelarNfse>wsdl\producao\PCanoasRSCancelarNfse.wsdl</CancelarNfse>" + "</LocalProducao>"; #endregion #region ISSNET case PadroesNFSe.ISSNET: if (idMunicipio == 5201108) //Anapolis - GO { return "<LocalProducao>" + @"<RecepcionarLoteRps>wsdl\producao\PISSNetAnapolis.wsdl</RecepcionarLoteRps>" + @"<ConsultarSituacaoLoteRps>wsdl\producao\PISSNetAnapolis.wsdl</ConsultarSituacaoLoteRps>" + @"<ConsultarNfsePorRps>wsdl\producao\PISSNetAnapolis.wsdl</ConsultarNfsePorRps>" + @"<ConsultarNfse>wsdl\producao\PISSNetAnapolis.wsdl</ConsultarNfse>" + @"<ConsultarLoteRps>wsdl\producao\PISSNetAnapolis.wsdl</ConsultarLoteRps>" + @"<CancelarNfse>wsdl\producao\PISSNetAnapolis.wsdl</CancelarNfse>" + @"<ConsultarURLNfse>wsdl\producao\PISSNetAnapolis.wsdl</ConsultarURLNfse>" + "</LocalProducao>"; } else { //Novo Hamburgo - RS (Default) return "<LocalProducao>" + @"<RecepcionarLoteRps>wsdl\producao\PISSNetNovoHamburgo.wsdl</RecepcionarLoteRps>" + @"<ConsultarSituacaoLoteRps>wsdl\producao\PISSNetNovoHamburgo.wsdl</ConsultarSituacaoLoteRps>" + @"<ConsultarNfsePorRps>wsdl\producao\PISSNetNovoHamburgo.wsdl</ConsultarNfsePorRps>" + @"<ConsultarNfse>wsdl\producao\PISSNetNovoHamburgo.wsdl</ConsultarNfse>" + @"<ConsultarLoteRps>wsdl\producao\PISSNetNovoHamburgo.wsdl</ConsultarLoteRps>" + @"<CancelarNfse>wsdl\producao\PISSNetNovoHamburgo.wsdl</CancelarNfse>" + @"<ConsultarURLNfse>wsdl\producao\PISSNetNovoHamburgo.wsdl</ConsultarURLNfse>" + "</LocalProducao>"; } #endregion #region ISSONLINE case PadroesNFSe.ISSONLINE: switch (idMunicipio) { case 3502804: //Aracatuba - SP return "<LocalProducao>" + @"<RecepcionarLoteRps>wsdl\producao\PISSOnLineAracatubaSP.wsdl</RecepcionarLoteRps>" + @"<ConsultarSituacaoLoteRps>wsdl\producao\PISSOnLineAracatubaSP.wsdl</ConsultarSituacaoLoteRps>" + @"<ConsultarNfsePorRps>wsdl\producao\PISSOnLineAracatubaSP.wsdl</ConsultarNfsePorRps>" + @"<ConsultarNfse>wsdl\producao\PISSOnLineAracatubaSP.wsdl</ConsultarNfse>" + @"<ConsultarLoteRps>wsdl\producao\PISSOnLineAracatubaSP.wsdl</ConsultarLoteRps>" + @"<CancelarNfse>wsdl\producao\PISSOnLineAracatubaSP.wsdl</CancelarNfse>" + "</LocalProducao>"; case 3537305: //Penapolis - SP return "<LocalProducao>" + @"<RecepcionarLoteRps>wsdl\producao\PPenapoisSPIssOnLine.wsdl</RecepcionarLoteRps>" + @"<ConsultarSituacaoLoteRps>wsdl\producao\PPenapoisSPIssOnLine.wsdl</ConsultarSituacaoLoteRps>" + @"<ConsultarNfsePorRps>wsdl\producao\PPenapoisSPIssOnLine.wsdl</ConsultarNfsePorRps>" + @"<ConsultarNfse>wsdl\producao\PPenapoisSPIssOnLine.wsdl</ConsultarNfse>" + @"<ConsultarLoteRps>wsdl\producao\PPenapoisSPIssOnLine.wsdl</ConsultarLoteRps>" + @"<CancelarNfse>wsdl\producao\PPenapoisSPIssOnLine.wsdl</CancelarNfse>" + "</LocalProducao>"; default: //Apucarana - PR return "<LocalProducao>" + @"<RecepcionarLoteRps>wsdl\producao\PISSOnLineApucarana.wsdl</RecepcionarLoteRps>" + @"<ConsultarSituacaoLoteRps>wsdl\producao\PISSOnLineApucarana.wsdl</ConsultarSituacaoLoteRps>" + @"<ConsultarNfsePorRps>wsdl\producao\PISSOnLineApucarana.wsdl</ConsultarNfsePorRps>" + @"<ConsultarNfse>wsdl\producao\PISSOnLineApucarana.wsdl</ConsultarNfse>" + @"<ConsultarLoteRps>wsdl\producao\PISSOnLineApucarana.wsdl</ConsultarLoteRps>" + @"<CancelarNfse>wsdl\producao\PISSOnLineApucarana.wsdl</CancelarNfse>" + "</LocalProducao>"; } #endregion #region BLUMENAU_SC case PadroesNFSe.BLUMENAU_SC: return "<LocalProducao>" + @"<RecepcionarLoteRps>wsdl\producao\PBlumenauSC.wsdl</RecepcionarLoteRps>" + @"<ConsultarSituacaoLoteRps>wsdl\producao\PBlumenauSC.wsdl</ConsultarSituacaoLoteRps>" + @"<ConsultarNfsePorRps>wsdl\producao\PBlumenauSC.wsdl</ConsultarNfsePorRps>" + @"<ConsultarNfse>wsdl\producao\PBlumenauSC.wsdl</ConsultarNfse>" + @"<ConsultarLoteRps>wsdl\producao\PBlumenauSC.wsdl</ConsultarLoteRps>" + @"<CancelarNfse>wsdl\producao\PBlumenauSC.wsdl</CancelarNfse>" + "</LocalProducao>"; #endregion #region BHISS case PadroesNFSe.BHISS: if (idMunicipio == 3106200) //Belo Horizonte - MG { return "<LocalProducao>" + @"<RecepcionarLoteRps>wsdl\producao\PBeloHorizonteMG-BHISS.wsdl</RecepcionarLoteRps>" + @"<ConsultarSituacaoLoteRps>wsdl\producao\PBeloHorizonteMG-BHISS.wsdl</ConsultarSituacaoLoteRps>" + @"<ConsultarNfsePorRps>wsdl\producao\PBeloHorizonteMG-BHISS.wsdl</ConsultarNfsePorRps>" + @"<ConsultarNfse>wsdl\producao\PBeloHorizonteMG-BHISS.wsdl</ConsultarNfse>" + @"<ConsultarLoteRps>wsdl\producao\PBeloHorizonteMG-BHISS.wsdl</ConsultarLoteRps>" + @"<CancelarNfse>wsdl\producao\PBeloHorizonteMG-BHISS.wsdl</CancelarNfse>" + "</LocalProducao>"; } else //Juiz de Fora - MG { return "<LocalProducao>" + @"<RecepcionarLoteRps>wsdl\producao\PJuizdeForaMG.wsdl</RecepcionarLoteRps>" + @"<ConsultarSituacaoLoteRps>wsdl\producao\PJuizdeForaMG.wsdl</ConsultarSituacaoLoteRps>" + @"<ConsultarNfsePorRps>wsdl\producao\PJuizdeForaMG.wsdl</ConsultarNfsePorRps>" + @"<ConsultarNfse>wsdl\producao\PJuizdeForaMG.wsdl</ConsultarNfse>" + @"<ConsultarLoteRps>wsdl\producao\PJuizdeForaMG.wsdl</ConsultarLoteRps>" + @"<CancelarNfse>wsdl\producao\PJuizdeForaMG.wsdl</CancelarNfse>" + "</LocalProducao>"; } #endregion #region GIF case PadroesNFSe.GIF: if (idMunicipio == 4314050) // Parobé - RS { return "<LocalProducao>" + @"<RecepcionarLoteRps>wsdl\producao\PParobéRSGIFServicos.wsdl</RecepcionarLoteRps>" + @"<ConsultarSituacaoLoteRps>wsdl\producao\PParobéRSGIFServicos.wsdl</ConsultarSituacaoLoteRps>" + @"<ConsultarNfsePorRps>wsdl\producao\PParobéRSGIFServicos.wsdl</ConsultarNfsePorRps>" + @"<ConsultarNfse>wsdl\producao\PParobéRSGIFServicos.wsdl</ConsultarNfse>" + @"<ConsultarLoteRps>wsdl\producao\PParobéRSGIFServicos.wsdl</ConsultarLoteRps>" + @"<CancelarNfse>wsdl\producao\PParobéRSGIFServicos.wsdl</CancelarNfse>" + @"<ConsultarURLNfse>wsdl\producao\PParobéRSGIFServicos.wsdl</ConsultarURLNfse>" + @"</LocalProducao>"; } else { return "<LocalProducao>" + @"<RecepcionarLoteRps>wsdl\producao\PCampoBomRS.wsdl</RecepcionarLoteRps>" + @"<ConsultarSituacaoLoteRps>wsdl\producao\PCampoBomRS.wsdl</ConsultarSituacaoLoteRps>" + @"<ConsultarNfsePorRps>wsdl\producao\PCampoBomRS.wsdl</ConsultarNfsePorRps>" + @"<ConsultarNfse>wsdl\producao\PCampoBomRS.wsdl</ConsultarNfse>" + @"<ConsultarLoteRps>wsdl\producao\PCampoBomRS.wsdl</ConsultarLoteRps>" + @"<CancelarNfse>wsdl\producao\PCampoBomRS.wsdl</CancelarNfse>" + @"<ConsultarURLNfse>wsdl\producao\PCampoBomRS.wsdl</ConsultarURLNfse>" + @"</LocalProducao>"; } #endregion #region DUETO case PadroesNFSe.DUETO: if (idMunicipio == 4310207) // Ijuí - RS { return "<LocalProducao>" + @"<RecepcionarLoteRps>wsdl\producao\PIjuiRS-Dueto.wsdl</RecepcionarLoteRps>" + @"<ConsultarSituacaoLoteRps>wsdl\producao\PIjuiRS-Dueto.wsdl</ConsultarSituacaoLoteRps>" + @"<ConsultarNfsePorRps>wsdl\producao\PIjuiRS-Dueto.wsdl</ConsultarNfsePorRps>" + @"<ConsultarNfse>wsdl\producao\PIjuiRS-Dueto.wsdl</ConsultarNfse>" + @"<ConsultarLoteRps>wsdl\producao\PIjuiRS-Dueto.wsdl</ConsultarLoteRps>" + @"<CancelarNfse>wsdl\producao\PIjuiRS-Dueto.wsdl</CancelarNfse>" + @"</LocalProducao>"; //danasa 9-2013 } else // Nova Santa Rita - RS { return "<LocalProducao>" + @"<RecepcionarLoteRps>wsdl\producao\PNovaSantaRitaRS-Dueto.wsdl</RecepcionarLoteRps>" + @"<ConsultarSituacaoLoteRps>wsdl\producao\PNovaSantaRitaRS-Dueto.wsdl</ConsultarSituacaoLoteRps>" + @"<ConsultarNfsePorRps>wsdl\producao\PNovaSantaRitaRS-Dueto.wsdl</ConsultarNfsePorRps>" + @"<ConsultarNfse>wsdl\producao\PNovaSantaRitaRS-Dueto.wsdl</ConsultarNfse>" + @"<ConsultarLoteRps>wsdl\producao\PNovaSantaRitaRS-Dueto.wsdl</ConsultarLoteRps>" + @"<CancelarNfse>wsdl\producao\PNovaSantaRitaRS-Dueto.wsdl</CancelarNfse>" + @"</LocalProducao>"; } #endregion #region WEBISS case PadroesNFSe.WEBISS: // Feira de Santana - BA return "<LocalProducao>" + @"<RecepcionarLoteRps>wsdl\producao\PFeiradeSantanaBA_WebISS.wsdl</RecepcionarLoteRps>" + @"<ConsultarSituacaoLoteRps>wsdl\producao\PFeiradeSantanaBA_WebISS.wsdl</ConsultarSituacaoLoteRps>" + @"<ConsultarNfsePorRps>wsdl\producao\PFeiradeSantanaBA_WebISS.wsdl</ConsultarNfsePorRps>" + @"<ConsultarNfse>wsdl\producao\PFeiradeSantanaBA_WebISS.wsdl</ConsultarNfse>" + @"<ConsultarLoteRps>wsdl\producao\PFeiradeSantanaBA_WebISS.wsdl</ConsultarLoteRps>" + @"<CancelarNfse>wsdl\producao\PFeiradeSantanaBA_WebISS.wsdl</CancelarNfse>" + @"<ConsultarURLNfse>wsdl\producao\PFeiradeSantanaBA_WebISS.wsdl</ConsultarURLNfse>" + @"</LocalProducao>"; #endregion #region PAULISTANA case PadroesNFSe.PAULISTANA: // São Paulo - SP return "<LocalProducao>" + @"<RecepcionarLoteRps>wsdl\producao\PSaoPauloSP-PAULISTANA.wsdl</RecepcionarLoteRps>" + @"<ConsultarSituacaoLoteRps>wsdl\producao\PSaoPauloSP-PAULISTANA.wsdl</ConsultarSituacaoLoteRps>" + @"<ConsultarNfsePorRps>wsdl\producao\PSaoPauloSP-PAULISTANA.wsdl</ConsultarNfsePorRps>" + @"<ConsultarNfse>wsdl\producao\PSaoPauloSP-PAULISTANA.wsdl</ConsultarNfse>" + @"<ConsultarLoteRps>wsdl\producao\PSaoPauloSP-PAULISTANA.wsdl</ConsultarLoteRps>" + @"<CancelarNfse>wsdl\producao\PSaoPauloSP-PAULISTANA.wsdl</CancelarNfse>" + @"<ConsultarURLNfse>wsdl\producao\PSaoPauloSP-PAULISTANA.wsdl</ConsultarURLNfse>" + @"</LocalProducao>"; #endregion #region PORTOVELHENSE case PadroesNFSe.PORTOVELHENSE: // Porto Velho - RO return "<LocalProducao>" + @"<RecepcionarLoteRps>wsdl\producao\PPortoVelhoPO.wsdl</RecepcionarLoteRps>" + @"<ConsultarSituacaoLoteRps>wsdl\producao\PPortoVelhoPO.wsdl</ConsultarSituacaoLoteRps>" + @"<ConsultarNfsePorRps>wsdl\producao\PPortoVelhoPO.wsdl</ConsultarNfsePorRps>" + @"<ConsultarNfse>wsdl\producao\PPortoVelhoPO.wsdl</ConsultarNfse>" + @"<ConsultarLoteRps>wsdl\producao\PPortoVelhoPO.wsdl</ConsultarLoteRps>" + @"<CancelarNfse>wsdl\producao\PPortoVelhoPO.wsdl</CancelarNfse>" + @"<ConsultarURLNfse>wsdl\producao\PPortoVelhoPO.wsdl</ConsultarURLNfse>" + @"</LocalProducao>"; #endregion #region PRONIN case PadroesNFSe.PRONIN: // Mirassol - SP return "<LocalProducao>" + @"<RecepcionarLoteRps>wsdl\producao\PMirassolSP.wsdl</RecepcionarLoteRps>" + @"<ConsultarNfsePorRps>wsdl\producao\PMirassolSP.wsdl</ConsultarNfsePorRps>" + @"<ConsultarNfse>wsdl\producao\PMirassolSP.wsdl</ConsultarNfse>" + @"<ConsultarLoteRps>wsdl\producao\PMirassolSP.wsdl</ConsultarLoteRps>" + @"<CancelarNfse>wsdl\producao\PMirassolSP.wsdl</CancelarNfse>" + @"</LocalProducao>"; #endregion default: return "<LocalProducao></LocalProducao>"; } }
public override void Execute() { int emp = Empresas.FindEmpresaByThread(); //Definir o serviço que será executado para a classe Servico = Servicos.NFSeCancelar; try { Functions.DeletarArquivo(Empresas.Configuracoes[emp].PastaXmlRetorno + "\\" + Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedCanNFSe).EnvioXML) + Propriedade.ExtRetorno.CanNfse_ERR); Functions.DeletarArquivo(Empresas.Configuracoes[emp].PastaXmlErro + "\\" + NomeArquivoXML); oDadosPedCanNfse = new DadosPedCanNfse(emp); //Ler o XML para pegar parâmetros de envio PedCanNfse(emp, NomeArquivoXML); PadroesNFSe padraoNFSe = Functions.PadraoNFSe(oDadosPedCanNfse.cMunicipio); WebServiceProxy wsProxy = null; object pedCanNfse = null; //Criar objetos das classes dos serviços dos webservices do SEFAZ if (IsUtilizaCompilacaoWs(padraoNFSe)) { wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, oDadosPedCanNfse.cMunicipio, oDadosPedCanNfse.tpAmb, oDadosPedCanNfse.tpEmis, padraoNFSe, oDadosPedCanNfse.cMunicipio); if (wsProxy != null) { pedCanNfse = wsProxy.CriarObjeto(wsProxy.NomeClasseWS); } } System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(oDadosPedCanNfse.cMunicipio, oDadosPedCanNfse.tpAmb, oDadosPedCanNfse.tpEmis, padraoNFSe, Servico); string cabecMsg = ""; switch (padraoNFSe) { case PadroesNFSe.IPM: //código da cidade da receita federal, este arquivo pode ser encontrado em ~\uninfe\doc\Codigos_Cidades_Receita_Federal.xls</para> //O código da cidade está hardcoded pois ainda está sendo usado apenas para campo mourão IPM ipm = new IPM((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, oDadosPedCanNfse.cMunicipio); if (ConfiguracaoApp.Proxy) { ipm.Proxy = Proxy.DefinirProxy(ConfiguracaoApp.ProxyServidor, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyPorta); } ipm.CancelarNfse(NomeArquivoXML); break; case PadroesNFSe.ABASE: cabecMsg = "<cabecalho xmlns=\"http://nfse.abase.com.br/nfse.xsd\" versao =\"1.00\"><versaoDados>1.00</versaoDados></cabecalho>"; break; case PadroesNFSe.GINFES: cabecMsg = ""; //Cancelamento ainda tá na versão 2.0 então não tem o cabecMsg break; case PadroesNFSe.BETHA: #region Betha ConteudoXML.PreserveWhitespace = false; ConteudoXML.Load(NomeArquivoXML); if (!ConteudoXML.DocumentElement.Name.Contains("e:")) { padraoNFSe = PadroesNFSe.BETHA202; Components.Betha.NewVersion.Betha betha = new Components.Betha.NewVersion.Betha((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedCanNfse.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor); AssinaturaDigital signbetha = new AssinaturaDigital(); signbetha.Assinar(NomeArquivoXML, emp, 202); betha.CancelarNfse(NomeArquivoXML); } else { wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado); wsProxy.Betha = new Betha(); } break; #endregion Betha case PadroesNFSe.ABACO: case PadroesNFSe.CANOAS_RS: cabecMsg = "<cabecalho versao=\"201001\"><versaoDados>V2010</versaoDados></cabecalho>"; break; case PadroesNFSe.BHISS: cabecMsg = "<cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"1.00\"><versaoDados >1.00</versaoDados ></cabecalho>"; break; case PadroesNFSe.WEBISS: cabecMsg = "<cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"1.00\"><versaoDados >1.00</versaoDados ></cabecalho>"; break; case PadroesNFSe.WEBISS_202: cabecMsg = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"2.02\"><versaoDados>2.02</versaoDados></cabecalho>"; break; case PadroesNFSe.PAULISTANA: wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado); if (oDadosPedCanNfse.tpAmb == 1) { pedCanNfse = new NFe.Components.PSaoPauloSP.LoteNFe(); } else { throw new Exception("Município de São Paulo-SP não dispõe de ambiente de homologação para envio de NFS-e em teste."); } EncryptAssinatura(); break; case PadroesNFSe.DSF: if (oDadosPedCanNfse.cMunicipio == 3549904) { cabecMsg = "<cabecalho versao=\"3\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\"><versaoDados>3</versaoDados></cabecalho>"; } else { EncryptAssinatura(); } break; case PadroesNFSe.TECNOSISTEMAS: cabecMsg = "<?xml version=\"1.0\" encoding=\"utf-8\"?><cabecalho xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" versao=\"20.01\" xmlns=\"http://www.nfse-tecnos.com.br/nfse.xsd\"><versaoDados>20.01</versaoDados></cabecalho>"; break; case PadroesNFSe.FINTEL: cabecMsg = "<cabecalho versao=\"2.02\" xmlns=\"http://iss.irati.pr.gov.br/Arquivos/nfseV202.xsd\"><versaoDados>2.02</versaoDados></cabecalho>"; break; case PadroesNFSe.SYSTEMPRO: SystemPro syspro = new SystemPro((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, Empresas.Configuracoes[emp].X509Certificado, oDadosPedCanNfse.cMunicipio); AssinaturaDigital ad = new AssinaturaDigital(); ad.Assinar(NomeArquivoXML, emp, oDadosPedCanNfse.cMunicipio); syspro.CancelarNfse(NomeArquivoXML); break; case PadroesNFSe.SIGCORP_SIGISS: SigCorp sigcorp = new SigCorp((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedCanNfse.cMunicipio); sigcorp.CancelarNfse(NomeArquivoXML); break; case PadroesNFSe.SIGCORP_SIGISS_203: cabecMsg = "<cabecalho versao=\"2.03\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\"><versaoDados>2.03</versaoDados></cabecalho>"; break; case PadroesNFSe.METROPOLIS: #region METROPOLIS Metropolis metropolis = new Metropolis((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedCanNfse.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); AssinaturaDigital metropolisdig = new AssinaturaDigital(); metropolisdig.Assinar(NomeArquivoXML, emp, oDadosPedCanNfse.cMunicipio); metropolis.CancelarNfse(NomeArquivoXML); break; #endregion METROPOLIS case PadroesNFSe.FIORILLI: Fiorilli fiorilli = new Fiorilli((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedCanNfse.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); AssinaturaDigital ass = new AssinaturaDigital(); ass.Assinar(NomeArquivoXML, emp, oDadosPedCanNfse.cMunicipio); fiorilli.CancelarNfse(NomeArquivoXML); break; case PadroesNFSe.SIMPLISS: SimplISS simpliss = new SimplISS((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedCanNfse.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor); AssinaturaDigital sing = new AssinaturaDigital(); sing.Assinar(NomeArquivoXML, emp, oDadosPedCanNfse.cMunicipio); simpliss.CancelarNfse(NomeArquivoXML); break; case PadroesNFSe.CONAM: Conam conam = new Conam((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedCanNfse.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS); conam.CancelarNfse(NomeArquivoXML); break; case PadroesNFSe.EGOVERNE: #region E-Governe EGoverne egoverne = new EGoverne((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedCanNfse.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); AssinaturaDigital assegov = new AssinaturaDigital(); assegov.Assinar(NomeArquivoXML, emp, oDadosPedCanNfse.cMunicipio); egoverne.CancelarNfse(NomeArquivoXML); #endregion E-Governe break; case PadroesNFSe.COPLAN: #region Coplan Coplan coplan = new Coplan((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedCanNfse.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); AssinaturaDigital assCoplan = new AssinaturaDigital(); assCoplan.Assinar(NomeArquivoXML, emp, oDadosPedCanNfse.cMunicipio); coplan.CancelarNfse(NomeArquivoXML); break; #endregion Coplan case PadroesNFSe.EL: #region E&L EL el = new EL((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedCanNfse.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, (ConfiguracaoApp.Proxy ? ConfiguracaoApp.ProxyUsuario : ""), (ConfiguracaoApp.Proxy ? ConfiguracaoApp.ProxySenha : ""), (ConfiguracaoApp.Proxy ? ConfiguracaoApp.ProxyServidor : "")); el.CancelarNfse(NomeArquivoXML); #endregion E&L break; case PadroesNFSe.GOVDIGITAL: GovDigital govdig = new GovDigital((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, Empresas.Configuracoes[emp].X509Certificado, oDadosPedCanNfse.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor); AssinaturaDigital adgovdig = new AssinaturaDigital(); adgovdig.Assinar(NomeArquivoXML, emp, oDadosPedCanNfse.cMunicipio); govdig.CancelarNfse(NomeArquivoXML); break; case PadroesNFSe.BSITBR: wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado); if (oDadosPedCanNfse.tpAmb == 1) { switch (oDadosPedCanNfse.cMunicipio) { case 5211800: pedCanNfse = new Components.PJaraguaGO.nfseWS(); break; case 5220454: pedCanNfse = new Components.PSenadorCanedoGO.nfseWS(); break; } } else { switch (oDadosPedCanNfse.cMunicipio) { case 5211800: //Jaraguá - GO throw new Exception("Município de Jaraguá-GO não dispõe de ambiente de homologação para envio de NFS-e em teste."); case 5220454: //Senador Canedo - GO throw new Exception("Município de Senador Canedo-GO não dispõe de ambiente de homologação para envio de NFS-e em teste."); } } break; case PadroesNFSe.EQUIPLANO: cabecMsg = "1"; break; case PadroesNFSe.PORTALFACIL_ACTCON_202: cabecMsg = "<cabecalho><versaoDados>2.02</versaoDados></cabecalho>"; break; case PadroesNFSe.PORTALFACIL_ACTCON: case PadroesNFSe.PRODATA: cabecMsg = "<cabecalho><versaoDados>2.01</versaoDados></cabecalho>"; break; case PadroesNFSe.MGM: #region MGM MGM mgm = new MGM((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedCanNfse.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS); mgm.CancelarNfse(NomeArquivoXML); break; #endregion MGM case PadroesNFSe.NATALENSE: cabecMsg = "<cabecalho xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" versao=\"1\" xmlns=\"http://www.abrasf.org.br/ABRASF/arquivos/nfse.xsd\"><versaoDados>1</versaoDados></cabecalho>"; break; case PadroesNFSe.CONSIST: #region Consist Consist consist = new Consist((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedCanNfse.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor); consist.CancelarNfse(NomeArquivoXML); break; #endregion Consist case PadroesNFSe.MEMORY: #region Memory Memory memory = new Memory((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedCanNfse.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor); memory.CancelarNfse(NomeArquivoXML); break; #endregion Memory case PadroesNFSe.CAMACARI_BA: cabecMsg = "<cabecalho><versaoDados>2.01</versaoDados><versao>2.01</versao></cabecalho>"; break; case PadroesNFSe.NA_INFORMATICA: wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado); //if (oDadosPedCanNfse.tpAmb == 1) // pedCanNfse = new Components.PCorumbaMS.NfseWSService(); //else // pedCanNfse = new Components.HCorumbaMS.NfseWSService(); break; case PadroesNFSe.PRONIN: if (oDadosPedCanNfse.cMunicipio == 4109401 || oDadosPedCanNfse.cMunicipio == 3131703 || oDadosPedCanNfse.cMunicipio == 4303004 || oDadosPedCanNfse.cMunicipio == 3556602 || oDadosPedCanNfse.cMunicipio == 3512803 || oDadosPedCanNfse.cMunicipio == 4323002 || oDadosPedCanNfse.cMunicipio == 3505807 || oDadosPedCanNfse.cMunicipio == 3530300 || oDadosPedCanNfse.cMunicipio == 4308904 || oDadosPedCanNfse.cMunicipio == 4118501 || oDadosPedCanNfse.cMunicipio == 3554300 || oDadosPedCanNfse.cMunicipio == 3542404 || oDadosPedCanNfse.cMunicipio == 5005707 || oDadosPedCanNfse.cMunicipio == 4314423 || oDadosPedCanNfse.cMunicipio == 3511102 || oDadosPedCanNfse.cMunicipio == 3535804 || oDadosPedCanNfse.cMunicipio == 4306932) { Pronin pronin = new Pronin((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedCanNfse.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); AssinaturaDigital assPronin = new AssinaturaDigital(); assPronin.Assinar(NomeArquivoXML, emp, oDadosPedCanNfse.cMunicipio); pronin.CancelarNfse(NomeArquivoXML); } break; case PadroesNFSe.EGOVERNEISS: #region EGoverne ISS EGoverneISS egoverneiss = new EGoverneISS((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedCanNfse.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor); egoverneiss.CancelarNfse(NomeArquivoXML); break; #endregion EGoverne ISS case PadroesNFSe.BAURU_SP: Bauru_SP bauru_SP = new Bauru_SP((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedCanNfse.cMunicipio); bauru_SP.CancelarNfse(NomeArquivoXML); break; case PadroesNFSe.SMARAPD: if (Empresas.Configuracoes[emp].UnidadeFederativaCodigo == 3201308) //Município de Cariacica-ES { throw new Exception("Município de Cariacica-ES não permite cancelamento de NFS-e via webservice."); } break; case PadroesNFSe.SMARAPD_204: cabecMsg = "<cabecalho versao=\"2.04\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\"><versaoDados>2.04</versaoDados></cabecalho>"; break; #region Tinus case PadroesNFSe.TINUS: Tinus tinus = new Tinus((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedCanNfse.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); AssinaturaDigital tinusAss = new AssinaturaDigital(); tinusAss.Assinar(NomeArquivoXML, emp, oDadosPedCanNfse.cMunicipio); tinus.CancelarNfse(NomeArquivoXML); break; #endregion Tinus #region SH3 case PadroesNFSe.SH3: cabecMsg = "<cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"1.00\"><versaoDados >1.00</versaoDados ></cabecalho>"; break; #endregion SH3 #if _fw46 #region SOFTPLAN case PadroesNFSe.SOFTPLAN: Components.SOFTPLAN.SOFTPLAN softplan = new Components.SOFTPLAN.SOFTPLAN((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, Empresas.Configuracoes[emp].TokenNFse, Empresas.Configuracoes[emp].TokenNFSeExpire, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, Empresas.Configuracoes[emp].ClientID, Empresas.Configuracoes[emp].ClientSecret); AssinaturaDigital softplanAssinatura = new AssinaturaDigital(); softplanAssinatura.Assinar(NomeArquivoXML, emp, oDadosPedCanNfse.cMunicipio); // Validar o Arquivo XML ValidarXML softplanValidar = new ValidarXML(NomeArquivoXML, Empresas.Configuracoes[emp].UnidadeFederativaCodigo, false); string validacao = softplanValidar.ValidarArqXML(NomeArquivoXML); if (validacao != "") { throw new Exception(validacao); } if (ConfiguracaoApp.Proxy) { softplan.Proxy = Proxy.DefinirProxy(ConfiguracaoApp.ProxyServidor, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyPorta); } AssinaturaDigital softplanAss = new AssinaturaDigital(); softplanAss.Assinar(NomeArquivoXML, emp, oDadosPedCanNfse.cMunicipio, AlgorithmType.Sha256); softplan.CancelarNfse(NomeArquivoXML); if (Empresas.Configuracoes[emp].TokenNFse != softplan.Token) { Empresas.Configuracoes[emp].SalvarConfiguracoesNFSeSoftplan(softplan.Usuario, softplan.Senha, softplan.ClientID, softplan.ClientSecret, softplan.Token, softplan.TokenExpire, Empresas.Configuracoes[emp].CNPJ); } break; #endregion SOFTPLAN #endif case PadroesNFSe.INTERSOL: cabecMsg = "<?xml version=\"1.0\" encoding=\"utf-8\"?><p:cabecalho versao=\"1\" xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\" xmlns:p=\"http://ws.speedgov.com.br/cabecalho_v1.xsd\" xmlns:p1=\"http://ws.speedgov.com.br/tipos_v1.xsd\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://ws.speedgov.com.br/cabecalho_v1.xsd cabecalho_v1.xsd \"><versaoDados>1</versaoDados></p:cabecalho>"; break; case PadroesNFSe.JOINVILLE_SC: wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado); if (oDadosPedCanNfse.tpAmb == 2) { pedCanNfse = new Components.HJoinvilleSC.Servicos(); } else { pedCanNfse = new Components.PJoinvilleSC.Servicos(); } break; case PadroesNFSe.AVMB_ASTEN: cabecMsg = "<cabecalho versao=\"2.02\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\"><versaoDados>2.02</versaoDados></cabecalho>"; wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado); if (oDadosPedCanNfse.tpAmb == 2) { pedCanNfse = new Components.HPelotasRS.INfseservice(); } else { pedCanNfse = new Components.PPelotasRS.INfseservice(); } break; case PadroesNFSe.EMBRAS: cabecMsg = "<cabecalho versao=\"2.02\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\"><versaoDados>2.02</versaoDados></cabecalho>"; break; case PadroesNFSe.MODERNIZACAO_PUBLICA: cabecMsg = "<cabecalho xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"2.02\"><versaoDados>2.02</versaoDados></cabecalho>"; break; case PadroesNFSe.E_RECEITA: cabecMsg = "<cabecalho xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"2.02\"><versaoDados>2.02</versaoDados></cabecalho>"; break; case PadroesNFSe.TIPLAN_203: case PadroesNFSe.INDAIATUBA_SP: cabecMsg = "<cabecalho versao=\"2.03\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\"><versaoDados>2.03</versaoDados></cabecalho>"; break; #if _fw46 case PadroesNFSe.ADM_SISTEMAS: cabecMsg = "<cabecalho versao=\"2.01\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\"><versaoDados>2.01</versaoDados></cabecalho>"; wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado); pedCanNfse = oDadosPedCanNfse.tpAmb == 1 ? new Components.PAmargosaBA.InfseClient(GetBinding(), new EndpointAddress("https://demo.saatri.com.br/servicos/nfse.svc")) : new Components.HAmargosaBA.InfseClient(GetBinding(), new EndpointAddress("https://homologa-demo.saatri.com.br/servicos/nfse.svc")) as object; SignUsingCredentials(emp, pedCanNfse); break; #endif case PadroesNFSe.PUBLIC_SOFT: if (oDadosPedCanNfse.cMunicipio.Equals(2610707)) { cabecMsg = "N9M="; } break; case PadroesNFSe.SIMPLE: Simple simple = new Simple((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedCanNfse.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); simple.CancelarNfse(NomeArquivoXML); break; case PadroesNFSe.SISPMJP: cabecMsg = "<cabecalho versao=\"2.02\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\" ><versaoDados>2.02</versaoDados></cabecalho>"; break; case PadroesNFSe.D2TI: cabecMsg = "<cabecalhoCancelamentoNfseLote xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://www.ctaconsult.com/nfse\"><versao>1.00</versao><ambiente>2</ambiente></cabecalhoCancelamentoNfseLote>"; break; case PadroesNFSe.VERSATECNOLOGIA: VersaTecnologia versa = new VersaTecnologia((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedCanNfse.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); AssinaturaDigital assVersa = new AssinaturaDigital(); assVersa.Assinar(NomeArquivoXML, emp, oDadosPedCanNfse.cMunicipio); versa.CancelarNfse(NomeArquivoXML); break; case PadroesNFSe.IIBRASIL: cabecMsg = "<cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"2.04\"><versaoDados>2.04</versaoDados></cabecalho>"; //wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado); //if (oDadosPedCanNfse.tpAmb == 2) //{ // pedCanNfse = new Components.HLimeiraSP.NfseWSService(); //} //else //{ // throw new Exception("Município de São Paulo-SP não dispõe de ambiente de homologação para envio de NFS-e em teste."); //} break; } if (IsInvocar(padraoNFSe, Servico, Empresas.Configuracoes[emp].UnidadeFederativaCodigo)) { //Assinar o XML AssinaturaDigital ad = new AssinaturaDigital(); ad.Assinar(NomeArquivoXML, emp, oDadosPedCanNfse.cMunicipio); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.InvocarNFSe(wsProxy, pedCanNfse, NomeMetodoWS(Servico, oDadosPedCanNfse.cMunicipio), cabecMsg, this, Propriedade.Extensao(Propriedade.TipoEnvio.PedCanNFSe).EnvioXML, //"-ped-cannfse", Propriedade.Extensao(Propriedade.TipoEnvio.PedCanNFSe).RetornoXML, //"-cannfse", padraoNFSe, Servico, securityProtocolType); /// grava o arquivo no FTP string filenameFTP = Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedCanNFSe).EnvioXML) + Propriedade.Extensao(Propriedade.TipoEnvio.PedCanNFSe).RetornoXML); if (File.Exists(filenameFTP)) { new GerarXML(emp).XmlParaFTP(emp, filenameFTP); } } } catch (Exception ex) { var strErro = ex.HResult.ToString(); var strMesagemErro = ex.Message; try { //Gravar o arquivo de erro de retorno para o ERP, caso ocorra TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedCanNFSe).EnvioXML, Propriedade.ExtRetorno.CanNfse_ERR, ex); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. //Wandrey 31/08/2011 RetornoErroERP.GeraArquivoErroERP(NomeArquivoXML, strErro, strMesagemErro, Propriedade.ExtRetorno.CanNfse_ERR); } } finally { try { Functions.DeletarArquivo(NomeArquivoXML); } catch { //Se falhou algo na hora de deletar o XML de cancelamento de NFe, infelizmente //não posso fazer mais nada, o UniNFe vai tentar mandar o arquivo novamente para o webservice, pois ainda não foi excluido. //Wandrey 31/08/2011 } } }
public override void Execute() { int emp = Empresas.FindEmpresaByThread(); //Definir o serviço que será executado para a classe Servico = Servicos.NFSeConsultarNFSePDF; try { Functions.DeletarArquivo(Empresas.Configuracoes[emp].PastaXmlRetorno + "\\" + Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedNFSePDF).EnvioXML) + Propriedade.ExtRetorno.NFSePDF_ERR); Functions.DeletarArquivo(Empresas.Configuracoes[emp].PastaXmlErro + "\\" + NomeArquivoXML); oDadosPedNfsePDF = new DadosPedSitNfse(emp); //Criar objetos das classes dos serviços dos webservices do municipio PadroesNFSe padraoNFSe = Functions.PadraoNFSe(oDadosPedNfsePDF.cMunicipio); WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, oDadosPedNfsePDF.cMunicipio, oDadosPedNfsePDF.tpAmb, oDadosPedNfsePDF.tpEmis, padraoNFSe, oDadosPedNfsePDF.cMunicipio); object pedNfsePNG = wsProxy.CriarObjeto(wsProxy.NomeClasseWS); string cabecMsg = ""; switch (padraoNFSe) { case PadroesNFSe.PRODATA: cabecMsg = "<cabecalho><versaoDados>2.01</versaoDados></cabecalho>"; break; } System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(oDadosPedNfsePDF.cMunicipio, oDadosPedNfsePDF.tpAmb, oDadosPedNfsePDF.tpEmis, padraoNFSe, Servico); //Assinar o XML AssinaturaDigital ad = new AssinaturaDigital(); ad.Assinar(NomeArquivoXML, emp, Convert.ToInt32(oDadosPedNfsePDF.cMunicipio)); //Invocar o método que envia o XML para o municipio oInvocarObj.InvocarNFSe(wsProxy, pedNfsePNG, NomeMetodoWS(Servico, oDadosPedNfsePDF.cMunicipio), cabecMsg, this, Propriedade.Extensao(Propriedade.TipoEnvio.PedNFSePDF).EnvioXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedNFSePDF).RetornoXML, padraoNFSe, Servico, securityProtocolType); ConvertBase64ToPDF(emp, padraoNFSe); /// grava o arquivo no FTP string filenameFTP = Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedNFSePDF).EnvioXML) + Propriedade.Extensao(Propriedade.TipoEnvio.PedNFSePDF).RetornoXML); if (File.Exists(filenameFTP)) { new GerarXML(emp).XmlParaFTP(emp, filenameFTP); } } catch (Exception ex) { var strErro = ex.HResult.ToString(); var strMesagemErro = ex.Message; try { //Gravar o arquivo de erro de retorno para o ERP, caso ocorra TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedNFSePDF).EnvioXML, Propriedade.ExtRetorno.NFSePDF_ERR, ex); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. //Wandrey 31/08/2011 RetornoErroERP.GeraArquivoErroERP(NomeArquivoXML, strErro, strMesagemErro, Propriedade.ExtRetorno.NFSePDF_ERR); } } finally { try { Functions.DeletarArquivo(NomeArquivoXML); } catch { //Se falhou algo na hora de deletar o XML de cancelamento de NFe, infelizmente //não posso fazer mais nada, o UniNFe vai tentar mandar o arquivo novamente para o webservice, pois ainda não foi excluido. //Wandrey 31/08/2011 } } }
public override void Execute() { int emp = Empresas.FindEmpresaByThread(); /// /// extensao permitida: PedSitNfseRps = "-ped-sitnfserps.xml"; /// /// Definir o serviço que será executado para a classe Servico = Servicos.NFSeConsultarPorRps; try { Functions.DeletarArquivo(Empresas.Configuracoes[emp].PastaXmlRetorno + "\\" + Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedSitNFSeRps).EnvioXML) + Propriedade.ExtRetorno.SitNfseRps_ERR); Functions.DeletarArquivo(Empresas.Configuracoes[emp].PastaXmlErro + "\\" + NomeArquivoXML); //Ler o XML para pegar parâmetros de envio LerXML ler = new LerXML(); ler.PedSitNfseRps(NomeArquivoXML); //Criar objetos das classes dos serviços dos webservices do SEFAZ PadroesNFSe padraoNFSe = Functions.PadraoNFSe(ler.oDadosPedSitNfseRps.cMunicipio); WebServiceProxy wsProxy = null; object pedLoteRps = null; if (IsUtilizaCompilacaoWs(padraoNFSe, Servico, ler.oDadosPedSitNfseRps.cMunicipio)) { wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, ler.oDadosPedSitNfseRps.cMunicipio, ler.oDadosPedSitNfseRps.tpAmb, ler.oDadosPedSitNfseRps.tpEmis, padraoNFSe, ler.oDadosPedSitNfseRps.cMunicipio); if (wsProxy != null) { pedLoteRps = wsProxy.CriarObjeto(wsProxy.NomeClasseWS); } } System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(ler.oDadosPedSitNfseRps.cMunicipio, ler.oDadosPedSitNfseRps.tpAmb, ler.oDadosPedSitNfseRps.tpEmis, padraoNFSe, Servico); string cabecMsg = ""; switch (padraoNFSe) { case PadroesNFSe.GINFES: switch (ler.oDadosPedSitNfseRps.cMunicipio) { case 2304400: //Fortaleza - CE cabecMsg = "<ns2:cabecalho versao=\"3\" xmlns:ns2=\"http://www.ginfes.com.br/cabecalho_v03.xsd\"><versaoDados>3</versaoDados></ns2:cabecalho>"; break; case 4125506: //São José dos Pinhais - PR cabecMsg = "<ns2:cabecalho versao=\"3\" xmlns:ns2=\"http://nfe.sjp.pr.gov.br/cabecalho_v03.xsd\"><versaoDados>3</versaoDados></ns2:cabecalho>"; break; default: cabecMsg = "<ns2:cabecalho versao=\"3\" xmlns:ns2=\"http://www.ginfes.com.br/cabecalho_v03.xsd\"><versaoDados>3</versaoDados></ns2:cabecalho>"; break; } break; case PadroesNFSe.ABASE: cabecMsg = "<cabecalho xmlns=\"http://nfse.abase.com.br/nfse.xsd\" versao =\"1.00\"><versaoDados>1.00</versaoDados></cabecalho>"; break; case PadroesNFSe.BETHA: #region Betha ConteudoXML.PreserveWhitespace = false; ConteudoXML.Load(NomeArquivoXML); if (!ConteudoXML.DocumentElement.Name.Contains("e:")) { padraoNFSe = PadroesNFSe.BETHA202; Components.Betha.NewVersion.Betha betha = new Components.Betha.NewVersion.Betha((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, ler.oDadosPedSitNfseRps.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor); betha.ConsultarNfsePorRps(NomeArquivoXML); } else { wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado); wsProxy.Betha = new Betha(); } break; #endregion Betha case PadroesNFSe.ABACO: case PadroesNFSe.CANOAS_RS: cabecMsg = "<cabecalho versao=\"201001\"><versaoDados>V2010</versaoDados></cabecalho>"; break; case PadroesNFSe.BHISS: cabecMsg = "<cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"1.00\"><versaoDados >1.00</versaoDados ></cabecalho>"; break; case PadroesNFSe.WEBISS: cabecMsg = "<cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"1.00\"><versaoDados >1.00</versaoDados ></cabecalho>"; break; case PadroesNFSe.WEBISS_202: cabecMsg = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"2.02\"><versaoDados>2.02</versaoDados></cabecalho>"; break; case PadroesNFSe.PORTOVELHENSE: cabecMsg = "<cabecalho versao=\"2.00\" xmlns:ns2=\"http://www.w3.org/2000/09/xmldsig#\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\"><versaoDados>2.00</versaoDados></cabecalho>"; break; case PadroesNFSe.TECNOSISTEMAS: cabecMsg = "<?xml version=\"1.0\" encoding=\"utf-8\"?><cabecalho xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" versao=\"20.01\" xmlns=\"http://www.nfse-tecnos.com.br/nfse.xsd\"><versaoDados>20.01</versaoDados></cabecalho>"; break; case PadroesNFSe.FINTEL: cabecMsg = "<cabecalho versao=\"2.02\" xmlns=\"http://iss.irati.pr.gov.br/Arquivos/nfseV202.xsd\"><versaoDados>2.02</versaoDados></cabecalho>"; break; case PadroesNFSe.IIBRASIL: cabecMsg = "<cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"2.04\"><versaoDados>2.04</versaoDados></cabecalho>"; break; case PadroesNFSe.FIORILLI: Fiorilli fiorilli = new Fiorilli((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, ler.oDadosPedSitNfseRps.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); fiorilli.ConsultarNfsePorRps(NomeArquivoXML); break; case PadroesNFSe.SIMPLISS: SimplISS simpliss = new SimplISS((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, ler.oDadosPedSitNfseRps.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor); simpliss.ConsultarNfsePorRps(NomeArquivoXML); break; case PadroesNFSe.EGOVERNE: #region E-Governe EGoverne egoverne = new EGoverne((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, ler.oDadosPedSitNfseRps.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); AssinaturaDigital assegov = new AssinaturaDigital(); assegov.Assinar(NomeArquivoXML, emp, ler.oDadosPedSitNfseRps.cMunicipio); egoverne.ConsultarNfsePorRps(NomeArquivoXML); #endregion E-Governe break; case PadroesNFSe.EL: #region E&L EL el = new EL((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, ler.oDadosPedSitNfseRps.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, (ConfiguracaoApp.Proxy ? ConfiguracaoApp.ProxyUsuario : ""), (ConfiguracaoApp.Proxy ? ConfiguracaoApp.ProxySenha : ""), (ConfiguracaoApp.Proxy ? ConfiguracaoApp.ProxyServidor : "")); el.ConsultarNfsePorRps(NomeArquivoXML); #endregion E&L break; case PadroesNFSe.GOVDIGITAL: GovDigital govdig = new GovDigital((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, Empresas.Configuracoes[emp].X509Certificado, ler.oDadosPedSitNfseRps.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor); AssinaturaDigital adgovdig = new AssinaturaDigital(); adgovdig.Assinar(NomeArquivoXML, emp, ler.oDadosPedSitNfseRps.cMunicipio); govdig.ConsultarNfsePorRps(NomeArquivoXML); break; case PadroesNFSe.EQUIPLANO: cabecMsg = "1"; break; case PadroesNFSe.PORTALFACIL_ACTCON_202: cabecMsg = "<cabecalho><versaoDados>2.02</versaoDados></cabecalho>"; break; case PadroesNFSe.PORTALFACIL_ACTCON: case PadroesNFSe.PRODATA: cabecMsg = "<cabecalho versao=\"2.01\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"<versaoDados>2.01</versaoDados></cabecalho>"; break; case PadroesNFSe.FISSLEX: FISSLEX fisslex = new FISSLEX((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, ler.oDadosPedSitNfseRps.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor); fisslex.ConsultarNfsePorRps(NomeArquivoXML); break; case PadroesNFSe.NATALENSE: cabecMsg = "<cabecalho xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" versao=\"1\" xmlns=\"http://www.abrasf.org.br/ABRASF/arquivos/nfse.xsd\"><versaoDados>1</versaoDados></cabecalho>"; break; case PadroesNFSe.CONAM: throw new NFe.Components.Exceptions.ServicoInexistenteException(); case PadroesNFSe.PAULISTANA: wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado); if (ler.oDadosPedSitNfseRps.tpAmb == 1) { pedLoteRps = new NFe.Components.PSaoPauloSP.LoteNFe(); } else { throw new Exception("Município de São Paulo-SP não dispõe de ambiente de homologação para envio de NFS-e em teste."); } break; case PadroesNFSe.METROPOLIS: #region METROPOLIS Metropolis metropolis = new Metropolis((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, ler.oDadosPedSitNfseRps.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); AssinaturaDigital metropolisdig = new AssinaturaDigital(); metropolisdig.Assinar(NomeArquivoXML, emp, ler.oDadosPedSitNfseRps.cMunicipio); metropolis.ConsultarNfsePorRps(NomeArquivoXML); break; #endregion METROPOLIS case PadroesNFSe.MEMORY: #region Memory Memory memory = new Memory((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, ler.oDadosPedSitNfseRps.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor); memory.ConsultarNfsePorRps(NomeArquivoXML); break; #endregion Memory case PadroesNFSe.CAMACARI_BA: cabecMsg = "<cabecalho><versaoDados>2.01</versaoDados><versao>2.01</versao></cabecalho>"; break; case PadroesNFSe.NA_INFORMATICA: wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado); //if (ler.oDadosPedSitNfseRps.tpAmb == 1) // pedLoteRps = new Components.PCorumbaMS.NfseWSService(); //else // pedLoteRps = new Components.HCorumbaMS.NfseWSService(); break; case PadroesNFSe.BSITBR: wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado); if (ler.oDadosPedSitNfseRps.tpAmb == 1) { switch (ler.oDadosPedSitNfseRps.cMunicipio) { case 5211800: pedLoteRps = new Components.PJaraguaGO.nfseWS(); break; case 5220454: pedLoteRps = new Components.PSenadorCanedoGO.nfseWS(); break; } } else { throw new Exception("Este município não dispõe de ambiente de homologação para envio de NFS-e em teste."); } break; case PadroesNFSe.PRONIN: if (ler.oDadosPedSitNfseRps.cMunicipio == 4109401 || ler.oDadosPedSitNfseRps.cMunicipio == 3131703 || ler.oDadosPedSitNfseRps.cMunicipio == 4303004 || ler.oDadosPedSitNfseRps.cMunicipio == 4322509 || ler.oDadosPedSitNfseRps.cMunicipio == 3556602 || ler.oDadosPedSitNfseRps.cMunicipio == 3512803 || ler.oDadosPedSitNfseRps.cMunicipio == 4323002 || ler.oDadosPedSitNfseRps.cMunicipio == 3505807 || ler.oDadosPedSitNfseRps.cMunicipio == 3530300 || ler.oDadosPedSitNfseRps.cMunicipio == 4308904 || ler.oDadosPedSitNfseRps.cMunicipio == 4118501 || ler.oDadosPedSitNfseRps.cMunicipio == 3554300 || ler.oDadosPedSitNfseRps.cMunicipio == 3542404 || ler.oDadosPedSitNfseRps.cMunicipio == 5005707 || ler.oDadosPedSitNfseRps.cMunicipio == 4314423 || ler.oDadosPedSitNfseRps.cMunicipio == 3511102 || ler.oDadosPedSitNfseRps.cMunicipio == 3535804 || ler.oDadosPedSitNfseRps.cMunicipio == 4306932) { Pronin pronin = new Pronin((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, ler.oDadosPedSitNfseRps.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); AssinaturaDigital assPronin = new AssinaturaDigital(); assPronin.Assinar(NomeArquivoXML, emp, ler.oDadosPedSitNfseRps.cMunicipio); pronin.ConsultarNfsePorRps(NomeArquivoXML); } break; case PadroesNFSe.COPLAN: Coplan coplan = new Coplan((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, ler.oDadosPedSitNfseRps.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); AssinaturaDigital assCoplan = new AssinaturaDigital(); assCoplan.Assinar(NomeArquivoXML, emp, ler.oDadosPedSitNfseRps.cMunicipio); coplan.ConsultarNfsePorRps(NomeArquivoXML); break; case PadroesNFSe.TINUS: Tinus tinus = new Tinus((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, ler.oDadosPedSitNfseRps.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); tinus.ConsultarNfsePorRps(NomeArquivoXML); break; case PadroesNFSe.INTERSOL: cabecMsg = "<?xml version=\"1.0\" encoding=\"utf-8\"?><p:cabecalho versao=\"1\" xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\" xmlns:p=\"http://ws.speedgov.com.br/cabecalho_v1.xsd\" xmlns:p1=\"http://ws.speedgov.com.br/tipos_v1.xsd\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://ws.speedgov.com.br/cabecalho_v1.xsd cabecalho_v1.xsd \"><versaoDados>1</versaoDados></p:cabecalho>"; break; case PadroesNFSe.MANAUS_AM: cabecMsg = "<cabecalho versao=\"201001\"><versaoDados>V2010</versaoDados></cabecalho>"; break; case PadroesNFSe.JOINVILLE_SC: wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado); if (ler.oDadosPedSitNfseRps.tpAmb == 2) { pedLoteRps = new Components.HJoinvilleSC.Servicos(); } else { pedLoteRps = new Components.PJoinvilleSC.Servicos(); } break; case PadroesNFSe.AVMB_ASTEN: cabecMsg = "<cabecalho versao=\"2.02\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\"><versaoDados>2.02</versaoDados></cabecalho>"; wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado); if (ler.oDadosPedSitNfseRps.tpAmb == 2) { pedLoteRps = new Components.HPelotasRS.INfseservice(); } else { pedLoteRps = new Components.PPelotasRS.INfseservice(); } break; case PadroesNFSe.EMBRAS: cabecMsg = "<cabecalho versao=\"2.02\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\"><versaoDados>2.02</versaoDados></cabecalho>"; break; case PadroesNFSe.MODERNIZACAO_PUBLICA: cabecMsg = "<cabecalho xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"2.02\"><versaoDados>2.02</versaoDados></cabecalho>"; break; case PadroesNFSe.E_RECEITA: cabecMsg = "<cabecalho xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"2.02\"><versaoDados>2.02</versaoDados></cabecalho>"; break; case PadroesNFSe.TIPLAN_203: case PadroesNFSe.INDAIATUBA_SP: cabecMsg = "<cabecalho versao=\"2.03\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\"><versaoDados>2.03</versaoDados></cabecalho>"; break; #if _fw46 case PadroesNFSe.ADM_SISTEMAS: cabecMsg = "<cabecalho versao=\"2.01\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\"><versaoDados>2.01</versaoDados></cabecalho>"; wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado); pedLoteRps = ler.oDadosPedSitNfseRps.tpAmb == 1 ? new Components.PAmargosaBA.InfseClient(GetBinding(), new EndpointAddress("https://demo.saatri.com.br/servicos/nfse.svc")) : new Components.HAmargosaBA.InfseClient(GetBinding(), new EndpointAddress("https://homologa-demo.saatri.com.br/servicos/nfse.svc")) as object; SignUsingCredentials(emp, pedLoteRps); break; #endif case PadroesNFSe.PUBLIC_SOFT: if (ler.oDadosPedSitNfseRps.cMunicipio.Equals(2610707)) { cabecMsg = "N9M="; } break; case PadroesNFSe.MEGASOFT: cabecMsg = "<cabecalho versao=\"1.00\" xmlns=\"http://megasoftarrecadanet.com.br/xsd/nfse_v01.xsd\"><versaoDados>1.00</versaoDados></cabecalho>"; break; case PadroesNFSe.SIMPLE: Simple simple = new Simple((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, ler.oDadosPedSitNfseRps.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); simple.ConsultarNfsePorRps(NomeArquivoXML); break; case PadroesNFSe.SISPMJP: cabecMsg = "<cabecalho versao=\"2.02\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\" ><versaoDados>2.02</versaoDados></cabecalho>"; break; case PadroesNFSe.SIGCORP_SIGISS_203: cabecMsg = "<cabecalho versao=\"2.03\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\"><versaoDados>2.03</versaoDados></cabecalho>"; break; case PadroesNFSe.SMARAPD_204: cabecMsg = "<cabecalho versao=\"2.04\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\"><versaoDados>2.04</versaoDados></cabecalho>"; break; case PadroesNFSe.DSF: if (ler.oDadosPedSitNfseRps.cMunicipio == 3549904) { cabecMsg = "<cabecalho versao=\"3\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\"><versaoDados>3</versaoDados></cabecalho>"; } break; case PadroesNFSe.VERSATECNOLOGIA: VersaTecnologia versa = new VersaTecnologia((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, ler.oDadosPedSitNfseRps.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); AssinaturaDigital assVersa = new AssinaturaDigital(); assVersa.Assinar(NomeArquivoXML, emp, ler.oDadosPedSitNfseRps.cMunicipio); versa.ConsultarNfsePorRps(NomeArquivoXML); break; } if (IsInvocar(padraoNFSe, Servico, ler.oDadosPedSitNfseRps.cMunicipio)) { //Assinar o XML AssinaturaDigital ad = new AssinaturaDigital(); ad.Assinar(NomeArquivoXML, emp, ler.oDadosPedSitNfseRps.cMunicipio); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.InvocarNFSe(wsProxy, pedLoteRps, NomeMetodoWS(Servico, ler.oDadosPedSitNfseRps.cMunicipio), cabecMsg, this, Propriedade.Extensao(Propriedade.TipoEnvio.PedSitNFSeRps).EnvioXML, //"-ped-sitnfserps", Propriedade.Extensao(Propriedade.TipoEnvio.PedSitNFSeRps).RetornoXML, //"-sitnfserps", padraoNFSe, Servico, securityProtocolType); /// /// grava o arquivo no FTP string filenameFTP = Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedSitNFSeRps).EnvioXML) + Propriedade.Extensao(Propriedade.TipoEnvio.PedSitNFSeRps).RetornoXML); if (File.Exists(filenameFTP)) { new GerarXML(emp).XmlParaFTP(emp, filenameFTP); } } } catch (Exception ex) { var strErro = ex.HResult.ToString(); var strMesagemErro = ex.Message; try { //Gravar o arquivo de erro de retorno para o ERP, caso ocorra TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedSitNFSeRps).EnvioXML, Propriedade.ExtRetorno.SitNfseRps_ERR, ex); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. //Wandrey 31/08/2011 RetornoErroERP.GeraArquivoErroERP(NomeArquivoXML, strErro, strMesagemErro, Propriedade.ExtRetorno.SitNfseRps_ERR); } } finally { try { Functions.DeletarArquivo(NomeArquivoXML); } catch { //Se falhou algo na hora de deletar o XML de cancelamento de NFe, infelizmente //não posso fazer mais nada, o UniNFe vai tentar mandar o arquivo novamente para o webservice, pois ainda não foi excluido. //Wandrey 31/08/2011 } } }
/// <summary> /// Carrega a lista de webservices definidos no arquivo WebService.XML /// </summary> public static bool CarregaWebServicesList() { bool atualizaWSDL = false; if (webServicesList == null) { webServicesList = new List <webServices>(); Propriedade.Municipios = null; Propriedade.Municipios = new List <Municipio>(); XmlDocument doc = new XmlDocument(); /// danasa 1-2012 if (File.Exists(Propriedade.NomeArqXMLMunicipios)) { doc.Load(Propriedade.NomeArqXMLMunicipios); XmlNodeList estadoList = doc.GetElementsByTagName(NFe.Components.NFeStrConstants.Registro); foreach (XmlNode registroNode in estadoList) { XmlElement registroElemento = (XmlElement)registroNode; if (registroElemento.Attributes.Count > 0) { int IDmunicipio = Convert.ToInt32("0" + Functions.OnlyNumbers(registroElemento.Attributes[TpcnResources.ID.ToString()].Value)); string Nome = registroElemento.Attributes[NFeStrConstants.Nome].Value; string Padrao = registroElemento.Attributes[NFeStrConstants.Padrao].Value; string UF = Functions.CodigoParaUF(Convert.ToInt32(IDmunicipio.ToString().Substring(0, 2))); /// /// danasa 9-2013 /// verifica se o 'novo' padrao existe, nao existindo retorna para atualizar os wsdl's dele string dirSchemas = Path.Combine(Propriedade.PastaExecutavel, "NFse\\schemas\\NFSe\\" + Padrao); if (!Directory.Exists(dirSchemas)) { atualizaWSDL = true; } PadroesNFSe pdr = WebServiceNFSe.GetPadraoFromString(Padrao); string urlsH = WebServiceNFSe.WebServicesHomologacao(ref pdr, IDmunicipio); string urlsP = WebServiceNFSe.WebServicesProducao(ref pdr, IDmunicipio); if (!string.IsNullOrEmpty(urlsH) || !string.IsNullOrEmpty(urlsP)) { var ci = (from i in webServicesList where i.ID == IDmunicipio select i).FirstOrDefault(); if (ci == null) { webServices wsItem = new webServices(IDmunicipio, Nome, UF); PreencheURLw(wsItem.LocalHomologacao, NFe.Components.NFeStrConstants.LocalHomologacao, urlsH, "", "NFse\\"); PreencheURLw(wsItem.LocalProducao, NFe.Components.NFeStrConstants.LocalProducao, urlsP, "", "NFse\\"); webServicesList.Add(wsItem); } } /// /// adiciona na lista que será usada na manutencao /// Propriedade.Municipios.Add(new Municipio(IDmunicipio, UF, Nome, pdr)); } } } /// danasa 1-2012 bool salvaXmlLocal = false; LoadArqXMLWebService(Propriedade.NomeArqXMLWebService_NFe, "NFe\\"); salvaXmlLocal = LoadArqXMLWebService(Propriedade.NomeArqXMLWebService_NFSe, "NFse\\"); if (salvaXmlLocal) { WebServiceNFSe.SalvarXMLMunicipios(null, null, 0, null, false); } } return(atualizaWSDL); }
public override void Execute() { int emp = Empresas.FindEmpresaByThread(); try { Functions.DeletarArquivo(Empresas.Configuracoes[emp].PastaXmlRetorno + "\\" + Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedSitNFSeRec).EnvioXML) + Propriedade.Extensao(Propriedade.TipoEnvio.PedSitNFSeRec).RetornoERR); Functions.DeletarArquivo(Empresas.Configuracoes[emp].PastaXmlErro + "\\" + NomeArquivoXML); dadosXML = new DadosPedSitNfse(emp); //Criar objetos das classes dos serviços dos webservices do SEFAZ PadroesNFSe padraoNFSe = Functions.PadraoNFSe(dadosXML.cMunicipio); WebServiceProxy wsProxy = null; object pedConsNfseRecebidas = null; if (IsUtilizaCompilacaoWs(padraoNFSe)) { wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, dadosXML.cMunicipio, dadosXML.tpAmb, dadosXML.tpEmis, padraoNFSe, dadosXML.cMunicipio); pedConsNfseRecebidas = wsProxy.CriarObjeto(wsProxy.NomeClasseWS); } string cabecMsg = ""; switch (padraoNFSe) { case PadroesNFSe.PAULISTANA: wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado); if (dadosXML.tpAmb == 1) { pedConsNfseRecebidas = new Components.PSaoPauloSP.LoteNFe(); } else { throw new Exception("Município de São Paulo-SP não dispõe de ambiente de homologação para envio de NFS-e em teste."); } break; } System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(dadosXML.cMunicipio, dadosXML.tpAmb, dadosXML.tpEmis, padraoNFSe, Servico); //Assinar o XML AssinaturaDigital ad = new AssinaturaDigital(); ad.Assinar(NomeArquivoXML, emp, dadosXML.cMunicipio); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.InvocarNFSe(wsProxy, pedConsNfseRecebidas, NomeMetodoWS(Servico, dadosXML.cMunicipio), cabecMsg, this, Propriedade.Extensao(Propriedade.TipoEnvio.PedSitNFSeRec).EnvioXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedSitNFSeRec).RetornoXML, padraoNFSe, Servico, securityProtocolType); /// /// grava o arquivo no FTP string filenameFTP = Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedSitNFSeRec).EnvioXML) + Propriedade.Extensao(Propriedade.TipoEnvio.PedSitNFSeRec).RetornoXML); if (File.Exists(filenameFTP)) { new GerarXML(emp).XmlParaFTP(emp, filenameFTP); } } catch (Exception ex) { var strErro = ex.HResult.ToString(); var strMesagemErro = ex.Message; try { //Gravar o arquivo de erro de retorno para o ERP, caso ocorra TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedSitNFSeRec).EnvioXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedSitNFSeRec).RetornoERR, ex); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. //Wandrey 31/08/2011 RetornoErroERP.GeraArquivoErroERP(NomeArquivoXML, strErro, strMesagemErro, Propriedade.Extensao(Propriedade.TipoEnvio.PedSitNFSeRec).RetornoERR); } } finally { try { Functions.DeletarArquivo(NomeArquivoXML); } catch { //Se falhou algo na hora de deletar o XML de cancelamento de NFe, infelizmente //não posso fazer mais nada, o UniNFe vai tentar mandar o arquivo novamente para o webservice, pois ainda não foi excluido. //Wandrey 31/08/2011 } } }
public override void Execute() { int emp = Empresas.FindEmpresaByThread(); try { Functions.DeletarArquivo(Empresas.Configuracoes[emp].PastaXmlRetorno + "\\" + Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedSubstNfse).EnvioXML) + Propriedade.Extensao(Propriedade.TipoEnvio.PedSubstNfse).RetornoERR); Functions.DeletarArquivo(Empresas.Configuracoes[emp].PastaXmlErro + "\\" + NomeArquivoXML); dadosXML = new DadosPedSitNfse(emp); //Criar objetos das classes dos serviços dos webservices do SEFAZ PadroesNFSe padraoNFSe = Functions.PadraoNFSe(dadosXML.cMunicipio); WebServiceProxy wsProxy = null; object pedSubstNfse = null; if (IsUtilizaCompilacaoWs(padraoNFSe)) { wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, dadosXML.cMunicipio, dadosXML.tpAmb, dadosXML.tpEmis, padraoNFSe, dadosXML.cMunicipio); pedSubstNfse = wsProxy.CriarObjeto(wsProxy.NomeClasseWS); } string cabecMsg = ""; switch (padraoNFSe) { case PadroesNFSe.AVMB_ASTEN: Servico = GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.AVMB_ASTEN); cabecMsg = "<cabecalho versao=\"2.02\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\"><versaoDados>2.02</versaoDados></cabecalho>"; wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado); if (dadosXML.tpAmb == 2) { pedSubstNfse = new Components.HPelotasRS.INfseservice(); } else { pedSubstNfse = new Components.PPelotasRS.INfseservice(); } break; case PadroesNFSe.EMBRAS: cabecMsg = "<cabecalho versao=\"2.02\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\"><versaoDados>2.02</versaoDados></cabecalho>"; break; case PadroesNFSe.E_RECEITA: cabecMsg = "<cabecalho xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"2.02\"><versaoDados>2.02</versaoDados></cabecalho>"; break; #if _fw46 case PadroesNFSe.ADM_SISTEMAS: cabecMsg = "<cabecalho versao=\"2.01\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\"><versaoDados>2.01</versaoDados></cabecalho>"; wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado); pedSubstNfse = dadosXML.tpAmb == 1 ? new Components.PAmargosaBA.InfseClient(GetBinding(), new EndpointAddress("https://demo.saatri.com.br/servicos/nfse.svc")) : new Components.HAmargosaBA.InfseClient(GetBinding(), new EndpointAddress("https://homologa-demo.saatri.com.br/servicos/nfse.svc")) as object; SignUsingCredentials(emp, pedSubstNfse); break; #endif case PadroesNFSe.INDAIATUBA_SP: cabecMsg = "<cabecalho versao=\"2.03\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\"><versaoDados>2.03</versaoDados></cabecalho>"; break; case PadroesNFSe.SIGCORP_SIGISS_203: cabecMsg = "<cabecalho versao=\"2.03\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\"><versaoDados>2.03</versaoDados></cabecalho>"; break; case PadroesNFSe.SMARAPD_204: cabecMsg = "<cabecalho versao=\"2.04\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\"><versaoDados>2.04</versaoDados></cabecalho>"; break; case PadroesNFSe.IIBRASIL: cabecMsg = "<cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"2.04\"><versaoDados>2.04</versaoDados></cabecalho>"; break; } System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(dadosXML.cMunicipio, dadosXML.tpAmb, dadosXML.tpEmis, padraoNFSe, Servico); //Assinar o XML AssinaturaDigital ad = new AssinaturaDigital(); ad.Assinar(NomeArquivoXML, emp, dadosXML.cMunicipio); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.InvocarNFSe(wsProxy, pedSubstNfse, NomeMetodoWS(Servico, dadosXML.cMunicipio), cabecMsg, this, Propriedade.Extensao(Propriedade.TipoEnvio.PedSubstNfse).EnvioXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedSubstNfse).RetornoXML, padraoNFSe, Servico, securityProtocolType); /// /// grava o arquivo no FTP string filenameFTP = Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedSubstNfse).EnvioXML) + Propriedade.Extensao(Propriedade.TipoEnvio.PedSubstNfse).RetornoXML); if (File.Exists(filenameFTP)) { new GerarXML(emp).XmlParaFTP(emp, filenameFTP); } } catch (Exception ex) { var strErro = ex.HResult.ToString(); var strMesagemErro = ex.Message; try { //Gravar o arquivo de erro de retorno para o ERP, caso ocorra TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedSubstNfse).EnvioXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedSubstNfse).RetornoERR, ex); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. //Wandrey 31/08/2011 RetornoErroERP.GeraArquivoErroERP(NomeArquivoXML, strErro, strMesagemErro, Propriedade.Extensao(Propriedade.TipoEnvio.PedSubstNfse).RetornoERR); } } finally { try { Functions.DeletarArquivo(NomeArquivoXML); } catch { //Se falhou algo na hora de deletar o XML de cancelamento de NFe, infelizmente //não posso fazer mais nada, o UniNFe vai tentar mandar o arquivo novamente para o webservice, pois ainda não foi excluido. //Wandrey 31/08/2011 } } }
/// <summary> /// Carrega a lista de webservices definidos no arquivo WebService.XML /// </summary> public static bool CarregaWebServicesList() { bool atualizaWSDL = false; if (webServicesList == null) { webServicesList = new List <webServices>(); XmlDocument doc = new XmlDocument(); /// danasa 1-2012 if (Propriedade.TipoAplicativo == TipoAplicativo.Nfse) { Propriedade.Municipios = null; Propriedade.Municipios = new List <Municipio>(); if (File.Exists(Propriedade.NomeArqXMLMunicipios)) { doc.Load(Propriedade.NomeArqXMLMunicipios); XmlNodeList estadoList = doc.GetElementsByTagName("Registro"); foreach (XmlNode registroNode in estadoList) { XmlElement registroElemento = (XmlElement)registroNode; if (registroElemento.Attributes.Count > 0) { int IDmunicipio = Convert.ToInt32(registroElemento.Attributes[0].Value); string Nome = registroElemento.Attributes[1].Value; string Padrao = registroElemento.Attributes[2].Value; string UF = Functions.CodigoParaUF(Convert.ToInt32(IDmunicipio.ToString().Substring(0, 2))).Substring(0, 2); /// /// danasa 9-2013 /// verifica se o 'novo' padrao existe, nao existindo retorna para atualizar os wsdl's dele string dirSchemas = Path.Combine(Propriedade.PastaExecutavel, "schemas\\NFSe\\" + Padrao); if (!Directory.Exists(dirSchemas)) { atualizaWSDL = true; } PadroesNFSe pdr = WebServiceNFSe.GetPadraoFromString(Padrao); /// /// adiciona na lista que será usada na manutencao Propriedade.Municipios.Add(new Municipio(IDmunicipio, UF, Nome, pdr)); webServices wsItem = new webServices(IDmunicipio, Nome, UF); //PreencheURLw(wsItem.URLHomologacao, "URLHomologacao", WebServiceNFSe.URLHomologacao(pdr), ""); //PreencheURLw(wsItem.URLProducao, "URLProducao", WebServiceNFSe.URLProducao(pdr), ""); PreencheURLw(wsItem.LocalHomologacao, "LocalHomologacao", WebServiceNFSe.WebServicesHomologacao(pdr, IDmunicipio), ""); PreencheURLw(wsItem.LocalProducao, "LocalProducao", WebServiceNFSe.WebServicesProducao(pdr, IDmunicipio), ""); webServicesList.Add(wsItem); } } if (webServicesList.Count > 0) { /// /// nao vou sair daqui pq pode ser que no "Webservice.xml" tenha algum municipio /// que o usuário nao tenha incluido /// //return; } } } /// danasa 1-2012 if (File.Exists(Propriedade.NomeArqXMLWebService)) { doc.Load(Propriedade.NomeArqXMLWebService); XmlNodeList estadoList = doc.GetElementsByTagName("Estado"); foreach (XmlNode estadoNode in estadoList) { XmlElement estadoElemento = (XmlElement)estadoNode; if (estadoElemento.Attributes.Count > 0) { if (estadoElemento.Attributes[2].Value != "XX") { int ID = Convert.ToInt32(estadoElemento.Attributes[0].Value); string Nome = estadoElemento.Attributes[1].Value; string UF = estadoElemento.Attributes[2].Value; /// danasa 1-2012 /// /// verifica se o ID já está na lista /// isto previne que no xml de configuracao tenha duplicidade e evita derrubar o programa /// bool jahExiste = false; foreach (webServices temp in webServicesList) { if (temp.ID == ID) { jahExiste = true; break; } } if (jahExiste) { continue; } webServices wsItem = new webServices(ID, Nome, UF); XmlNodeList urlList; #region URL´s de Homologação //urlList = estadoElemento.GetElementsByTagName("URLHomologacao"); //if (urlList.Count > 0) // PreencheURLw(wsItem.URLHomologacao, "URLHomologacao", urlList.Item(0).OuterXml, UF); #endregion #region URL´s de produção //urlList = estadoElemento.GetElementsByTagName("URLProducao"); //if (urlList.Count > 0) // PreencheURLw(wsItem.URLProducao, "URLProducao", urlList.Item(0).OuterXml, UF); #endregion #region WSDL´s locais de Homologação urlList = estadoElemento.GetElementsByTagName("LocalHomologacao"); if (urlList.Count > 0) { PreencheURLw(wsItem.LocalHomologacao, "LocalHomologacao", urlList.Item(0).OuterXml, UF); } #endregion #region WSDL´s locais de Produção urlList = estadoElemento.GetElementsByTagName("LocalProducao"); if (urlList.Count > 0) { PreencheURLw(wsItem.LocalProducao, "LocalProducao", urlList.Item(0).OuterXml, UF); } #endregion webServicesList.Add(wsItem); // danasa 1-2012 if (Propriedade.TipoAplicativo == TipoAplicativo.Nfse) { /// /// adiciona na lista que será usada na manutencao foreach (string p0 in WebServiceNFSe.PadroesNFSeList) { if (p0 != PadroesNFSe.NaoIdentificado.ToString()) { if (wsItem.LocalHomologacao.RecepcionarLoteRps.ToLower().IndexOf(p0.ToLower()) > 0 || wsItem.LocalProducao.RecepcionarLoteRps.ToLower().IndexOf(p0.ToLower()) > 0) { Propriedade.Municipios.Add(new Municipio(ID, UF, Nome, WebServiceNFSe.GetPadraoFromString(p0))); break; } } } } // danasa 1-2012 } } } } } return(atualizaWSDL); }
public override void Execute() { int emp = Empresas.FindEmpresaByThread(); //Definir o serviço que será executado para a classe Servico = Servicos.NFSeConsultarSituacaoLoteRps; try { oDadosPedSitLoteRps = new DadosPedSitLoteRps(emp); //Ler o XML para pegar parâmetros de envio //LerXML ler = new LerXML(); PedSitLoteRps(NomeArquivoXML); //Definir o objeto do WebService //Criar objetos das classes dos serviços dos webservices do SEFAZ PadroesNFSe padraoNFSe = Functions.PadraoNFSe(oDadosPedSitLoteRps.cMunicipio); WebServiceProxy wsProxy = null; object pedSitLoteRps = null; if (padraoNFSe != PadroesNFSe.SIMPLISS) { wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, oDadosPedSitLoteRps.cMunicipio, oDadosPedSitLoteRps.tpAmb, oDadosPedSitLoteRps.tpEmis, padraoNFSe); pedSitLoteRps = wsProxy.CriarObjeto(wsProxy.NomeClasseWS); } string cabecMsg = ""; switch (padraoNFSe) { case PadroesNFSe.GINFES: if (oDadosPedSitLoteRps.cMunicipio == 4125506) //São José dos Pinhais - PR { cabecMsg = "<ns2:cabecalho versao=\"3\" xmlns:ns2=\"http://nfe.sjp.pr.gov.br/cabecalho_v03.xsd\"><versaoDados>3</versaoDados></ns2:cabecalho>"; } else { cabecMsg = "<ns2:cabecalho versao=\"3\" xmlns:ns2=\"http://www.ginfes.com.br/cabecalho_v03.xsd\"><versaoDados>3</versaoDados></ns2:cabecalho>"; } break; case PadroesNFSe.BETHA: wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado); wsProxy.Betha = new Betha(); break; case PadroesNFSe.CANOAS_RS: cabecMsg = "<cabecalho versao=\"201001\"><versaoDados>V2010</versaoDados></cabecalho>"; break; case PadroesNFSe.BHISS: cabecMsg = "<cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"1.00\"><versaoDados >1.00</versaoDados ></cabecalho>"; break; case PadroesNFSe.WEBISS: cabecMsg = "<cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"1.00\"><versaoDados >1.00</versaoDados ></cabecalho>"; break; case PadroesNFSe.TECNOSISTEMAS: cabecMsg = "<?xml version=\"1.0\" encoding=\"utf-8\"?><cabecalho xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" versao=\"20.01\" xmlns=\"http://www.nfse-tecnos.com.br/nfse.xsd\"><versaoDados>20.01</versaoDados></cabecalho>"; break; case PadroesNFSe.FINTEL: cabecMsg = "<cabecalho xmlns=\"http://iss.pontagrossa.pr.gov.br/Arquivos/nfse.xsd\" versao=\"1.00\"><versaoDados >1.00</versaoDados ></cabecalho>"; break; case PadroesNFSe.SIMPLISS: SimplISS simpliss = new SimplISS((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedSitLoteRps.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS); simpliss.ConsultarSituacaoLoteRps(NomeArquivoXML); break; case PadroesNFSe.EGOVERNE: #region E-Governe EGoverne egoverne = new EGoverne((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedSitLoteRps.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); AssinaturaDigital assegov = new AssinaturaDigital(); assegov.Assinar(NomeArquivoXML, emp, oDadosPedSitLoteRps.cMunicipio); egoverne.ConsultarSituacaoLoteRps(NomeArquivoXML); break; #endregion } if (padraoNFSe != PadroesNFSe.IPM && padraoNFSe != PadroesNFSe.SIMPLISS) { //Assinar o XML AssinaturaDigital ad = new AssinaturaDigital(); ad.Assinar(NomeArquivoXML, emp, oDadosPedSitLoteRps.cMunicipio); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.InvocarNFSe(wsProxy, pedSitLoteRps, NomeMetodoWS(Servico, oDadosPedSitLoteRps.cMunicipio), cabecMsg, this, "-ped-sitloterps", "-sitloterps", padraoNFSe, Servico); /// /// grava o arquivo no FTP string filenameFTP = Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.ExtEnvio.PedSitLoteRps) + Propriedade.ExtRetorno.SitLoteRps); if (File.Exists(filenameFTP)) { new GerarXML(emp).XmlParaFTP(emp, filenameFTP); } } } catch (Exception ex) { try { //Gravar o arquivo de erro de retorno para o ERP, caso ocorra TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.ExtEnvio.PedSitLoteRps, Propriedade.ExtRetorno.SitLoteRps_ERR, ex); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. //Wandrey 31/08/2011 } } finally { try { Functions.DeletarArquivo(NomeArquivoXML); } catch { //Se falhou algo na hora de deletar o XML de cancelamento de NFe, infelizmente //não posso fazer mais nada, o UniNFe vai tentar mandar o arquivo novamente para o webservice, pois ainda não foi excluido. //Wandrey 31/08/2011 } } }
public override void Execute() { int emp = Empresas.FindEmpresaByThread(); /// /// extensao permitida: PedStaNfse = "-ped-stanfse.xml" /// /// Definir o serviço que será executado para a classe Servico = Servicos.NFSeConsultarStatusNota; try { Functions.DeletarArquivo(Empresas.Configuracoes[emp].PastaXmlRetorno + "\\" + Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedStaNFse).EnvioXML) + Propriedade.ExtRetorno.Sta_ERR); Functions.DeletarArquivo(Empresas.Configuracoes[emp].PastaXmlErro + "\\" + NomeArquivoXML); oDadosPedStaNfse = new DadosPedStaNfse(emp); //Ler o XML para pegar parâmetros de envio PedStaNfse(NomeArquivoXML); //Criar objetos das classes dos serviços dos webservices do SEFAZ PadroesNFSe padraoNFSe = Functions.PadraoNFSe(oDadosPedStaNfse.cMunicipio); WebServiceProxy wsProxy = null; object pedStaNota = null; if (IsUtilizaCompilacaoWs(padraoNFSe, Servico, oDadosPedStaNfse.cMunicipio)) { wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, oDadosPedStaNfse.cMunicipio, oDadosPedStaNfse.tpAmb, oDadosPedStaNfse.tpEmis, padraoNFSe, oDadosPedStaNfse.cMunicipio); if (wsProxy != null) { pedStaNota = wsProxy.CriarObjeto(wsProxy.NomeClasseWS); } } System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(oDadosPedStaNfse.cMunicipio, oDadosPedStaNfse.tpAmb, oDadosPedStaNfse.tpEmis, padraoNFSe, Servico); string cabecMsg = ""; switch (padraoNFSe) { case PadroesNFSe.SALVADOR_BA: SALVADOR_BA salvador = new SALVADOR_BA((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedStaNfse.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); //AssinaturaDigital ass = new AssinaturaDigital(); //ass.Assinar(NomeArquivoXML, emp, oDadosPedStaNfse.cMunicipio); salvador.ConsultarSituacaoNFSe(NomeArquivoXML); break; } if (IsInvocar(padraoNFSe, Servico, oDadosPedStaNfse.cMunicipio)) { //Assinar o XML AssinaturaDigital ad = new AssinaturaDigital(); ad.Assinar(NomeArquivoXML, emp, oDadosPedStaNfse.cMunicipio); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.InvocarNFSe(wsProxy, pedStaNota, NomeMetodoWS(Servico, oDadosPedStaNfse.cMunicipio), cabecMsg, this, Propriedade.Extensao(Propriedade.TipoEnvio.PedStaNFse).EnvioXML, //"-ped-stanfse", Propriedade.Extensao(Propriedade.TipoEnvio.PedStaNFse).RetornoXML, //"-stanfse", padraoNFSe, Servico, securityProtocolType); /// grava o arquivo no FTP string filenameFTP = Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedSitNFSe).EnvioXML) + Propriedade.Extensao(Propriedade.TipoEnvio.PedSitNFSe).RetornoXML); if (File.Exists(filenameFTP)) { new GerarXML(emp).XmlParaFTP(emp, filenameFTP); } } } catch (Exception ex) { var strErro = ex.HResult.ToString(); var strMesagemErro = ex.Message; try { //Gravar o arquivo de erro de retorno para o ERP, caso ocorra TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedSitNFSe).EnvioXML, Propriedade.ExtRetorno.SitNfse_ERR, ex); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. //Wandrey 31/08/2011 RetornoErroERP.GeraArquivoErroERP(NomeArquivoXML, strErro, strMesagemErro, Propriedade.ExtRetorno.SitNfse_ERR); } } finally { try { Functions.DeletarArquivo(NomeArquivoXML); } catch { //Se falhou algo na hora de deletar o XML de cancelamento de NFe, infelizmente //não posso fazer mais nada, o UniNFe vai tentar mandar o arquivo novamente para o webservice, pois ainda não foi excluido. //Wandrey 31/08/2011 } } }
/// <summary> /// Definir o webservice que será utilizado para o envio do XML /// </summary> /// <param name="servico">Serviço que será executado</param> /// <param name="emp">Index da empresa que será executado o serviço</param> /// <param name="cUF">Código da UF</param> /// <param name="tpAmb">Código do ambiente que será acessado</param> /// <param name="tpEmis">Tipo de emissão do XML</param> /// <param name="padraoNFSe">Padrão da NFSe</param> /// <param name="versao">Versão do XML</param> /// <returns>Retorna o objeto do WebService</returns> public static WebServiceProxy DefinirWS(Servicos servico, int emp, int cUF, int tpAmb, int tpEmis, PadroesNFSe padraoNFSe, string versao) { return DefinirWS(servico, emp, cUF, tpAmb, tpEmis, padraoNFSe, versao, string.Empty); }
public WebServiceProxy(int cUF, string arquivoWSDL, X509Certificate2 Certificado, PadroesNFSe padraoNFSe, bool taHomologacao, Servicos servico) { this.ArquivoWSDL = arquivoWSDL; this.PadraoNFSe = padraoNFSe; this.servico = servico; this.taHomologacao = taHomologacao; //Definir o certificado digital que será utilizado na conexão com os serviços this.oCertificado = Certificado; //Confirmar a solicitação SSL automaticamente ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CertificateValidation); //Problema identificado com a Prefeitura de Porto Alegre - RS Renan - 09/02/2015 //Esta propriedade "Expect100Continue" por default é definida como "true" ou seja, o cliente esperará obter uma resposta 100-Continue do servidor para indicar que o cliente deve //enviar os dados a ser lançadas. Esse mecanismo permite que os clientes evitem enviar grandes quantidades de dados através da rede quando o servidor, com base em cabeçalhos de solicitação, //pretende descartar a solicitação. //Já esta propriedade marcada como "false", quando a solicitação inicial é enviada para o servidor, inclui os dados. Se, após ler os cabeçalhos de solicitação, //o servidor requer autenticação e deve enviar uma resposta 401, o cliente deve enviar novamente os dados com os cabeçalhos apropriadas de autenticação. ServicePointManager.Expect100Continue = false; //Obter a descrição do serviço (WSDL) this.DescricaoServico(cUF, taHomologacao, arquivoWSDL); this.NomeClasseWS = null; this.NomeMetodoWS = null; if (this.serviceDescription.Services != null) { this.NomeClasseWS = ((System.Web.Services.Description.Service) this.serviceDescription.Services[0]).Name.Replace(" ", ""); } if (this.serviceDescription.Bindings != null) { foreach (var xx in this.serviceDescription.Bindings) { if (((System.Web.Services.Description.Binding)xx).Operations != null) { if (((System.Web.Services.Description.Binding)xx).Operations.Count > 0) { this.NomeMetodoWS = new string[((System.Web.Services.Description.Binding)xx).Operations.Count]; for (int n = 0; n < ((System.Web.Services.Description.Binding)xx).Operations.Count; ++n) { this.NomeMetodoWS[n] = ((System.Web.Services.Description.Binding)xx).Operations[n].Name; } } } } } //Gerar e compilar a classe this.GerarClasse(); }
protected bool IsUtilizaCompilacaoWs(PadroesNFSe padrao, Servicos servico = Servicos.Nulo) { bool retorno = true; switch (padrao) { case PadroesNFSe.MGM: case PadroesNFSe.ELOTECH: case PadroesNFSe.GOVDIGITAL: case PadroesNFSe.EL: case PadroesNFSe.EGOVERNE: case PadroesNFSe.IPM: case PadroesNFSe.SYSTEMPRO: case PadroesNFSe.SIGCORP_SIGISS: case PadroesNFSe.FIORILLI: case PadroesNFSe.CONAM: case PadroesNFSe.SIMPLISS: case PadroesNFSe.RLZ_INFORMATICA: retorno = false; break; case PadroesNFSe.FISSLEX: switch (servico) { case Servicos.NFSeConsultarPorRps: case Servicos.NFSeConsultar: case Servicos.NFSeConsultarSituacaoLoteRps: case Servicos.NFSeConsultarLoteRps: retorno = false; break; default: retorno = true; break; } break; } return retorno; }
protected Servicos GetTipoServicoSincrono(Servicos servico, string file, PadroesNFSe padrao) { Servicos result = servico; XmlDocument doc = new XmlDocument(); doc.Load(file); switch (padrao) { case PadroesNFSe.NaoIdentificado: break; case PadroesNFSe.GINFES: break; case PadroesNFSe.BETHA: break; case PadroesNFSe.THEMA: break; case PadroesNFSe.SALVADOR_BA: break; case PadroesNFSe.CANOAS_RS: break; case PadroesNFSe.ISSNET: break; case PadroesNFSe.ISSONLINE: break; case PadroesNFSe.BLUMENAU_SC: break; case PadroesNFSe.FINTEL: if (servico == Servicos.NFSeRecepcionarLoteRps) { switch (doc.DocumentElement.Name) { case "EnviarLoteRpsSincronoEnvio": result = Servicos.NFSeRecepcionarLoteRpsSincrono; break; case "GerarNfseEnvio": result = Servicos.NFSeGerarNfse; break; default: break; } } break; case PadroesNFSe.BHISS: if (doc.DocumentElement.Name.Equals("GerarNfseEnvio") && servico == Servicos.NFSeRecepcionarLoteRps) { result = Servicos.NFSeRecepcionarLoteRpsSincrono; } break; case PadroesNFSe.GIF: break; case PadroesNFSe.IPM: break; case PadroesNFSe.DUETO: break; case PadroesNFSe.WEBISS: break; case PadroesNFSe.PAULISTANA: break; case PadroesNFSe.PORTOVELHENSE: break; case PadroesNFSe.PRONIN: break; case PadroesNFSe.ISSONLINE4R: break; case PadroesNFSe.DSF: break; case PadroesNFSe.TECNOSISTEMAS: break; case PadroesNFSe.SYSTEMPRO: break; case PadroesNFSe.TIPLAN: break; case PadroesNFSe.CARIOCA: break; case PadroesNFSe.SIGCORP_SIGISS: break; case PadroesNFSe.SMARAPD: break; case PadroesNFSe.FIORILLI: break; case PadroesNFSe.ISSWEB: break; case PadroesNFSe.SIMPLISS: break; case PadroesNFSe.CONAM: break; case PadroesNFSe.VVISS: if (servico == Servicos.NFSeRecepcionarLoteRps) { switch (doc.DocumentElement.Name) { case "EnviarLoteRpsSincronoEnvio": result = Servicos.NFSeRecepcionarLoteRpsSincrono; break; case "GerarNfseEnvio": result = Servicos.NFSeGerarNfse; break; default: break; } } break; default: break; } return result; }
public override void Execute() { int emp = Empresas.FindEmpresaByThread(); //Definir o serviço que será executado para a classe Servico = Servicos.NFSeConsultarNFSePNG; try { oDadosPedNfsePNG = new DadosPedSitNfse(emp); //Ler o XML para pegar parâmetros de envio PedNFSePNG(NomeArquivoXML); //Criar objetos das classes dos serviços dos webservices do SEFAZ PadroesNFSe padraoNFSe = Functions.PadraoNFSe(oDadosPedNfsePNG.cMunicipio); WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, oDadosPedNfsePNG.cMunicipio, oDadosPedNfsePNG.tpAmb, oDadosPedNfsePNG.tpEmis, padraoNFSe); object pedNfsePNG = wsProxy.CriarObjeto(wsProxy.NomeClasseWS); string cabecMsg = ""; //Assinar o XML AssinaturaDigital ad = new AssinaturaDigital(); ad.Assinar(NomeArquivoXML, emp, Convert.ToInt32(oDadosPedNfsePNG.cMunicipio)); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.InvocarNFSe(wsProxy, pedNfsePNG, NomeMetodoWS(Servico, oDadosPedNfsePNG.cMunicipio), cabecMsg, this, "-ped-nfsepng", "-nfsepng", padraoNFSe, Servico); /// /// grava o arquivo no FTP string filenameFTP = Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.ExtEnvio.PedNFSePNG) + Propriedade.ExtRetorno.NFSePNG); if (File.Exists(filenameFTP)) { new GerarXML(emp).XmlParaFTP(emp, filenameFTP); } } catch (Exception ex) { try { //Gravar o arquivo de erro de retorno para o ERP, caso ocorra TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.ExtEnvio.PedNFSePNG, Propriedade.ExtRetorno.NFSePNG_ERR, ex); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. //Wandrey 31/08/2011 } } finally { try { Functions.DeletarArquivo(NomeArquivoXML); } catch { //Se falhou algo na hora de deletar o XML de cancelamento de NFe, infelizmente //não posso fazer mais nada, o UniNFe vai tentar mandar o arquivo novamente para o webservice, pois ainda não foi excluido. //Wandrey 31/08/2011 } } }
public override void Execute() { int emp = Empresas.FindEmpresaByThread(); /// /// extensao permitida: PedSitNfse = "-ped-sitnfse.xml" /// /// Definir o serviço que será executado para a classe Servico = Servicos.NFSeConsultar; try { Functions.DeletarArquivo(Empresas.Configuracoes[emp].PastaXmlRetorno + "\\" + Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedSitNFSe).EnvioXML) + Propriedade.ExtRetorno.SitNfse_ERR); Functions.DeletarArquivo(Empresas.Configuracoes[emp].PastaXmlErro + "\\" + NomeArquivoXML); oDadosPedSitNfse = new DadosPedSitNfse(emp); //Ler o XML para pegar parâmetros de envio PedSitNfse(NomeArquivoXML); //Criar objetos das classes dos serviços dos webservices do SEFAZ PadroesNFSe padraoNFSe = Functions.PadraoNFSe(oDadosPedSitNfse.cMunicipio); WebServiceProxy wsProxy = null; object pedLoteRps = null; if (IsUtilizaCompilacaoWs(padraoNFSe, Servico, oDadosPedSitNfse.cMunicipio)) { wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, oDadosPedSitNfse.cMunicipio, oDadosPedSitNfse.tpAmb, oDadosPedSitNfse.tpEmis, padraoNFSe, oDadosPedSitNfse.cMunicipio); if (wsProxy != null) { pedLoteRps = wsProxy.CriarObjeto(wsProxy.NomeClasseWS); } } System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(oDadosPedSitNfse.cMunicipio, oDadosPedSitNfse.tpAmb, oDadosPedSitNfse.tpEmis, padraoNFSe, Servico); string cabecMsg = ""; switch (padraoNFSe) { case PadroesNFSe.GINFES: switch (oDadosPedSitNfse.cMunicipio) { case 2304400: //Fortaleza - CE cabecMsg = "<ns2:cabecalho versao=\"3\" xmlns:ns2=\"http://www.ginfes.com.br/cabecalho_v03.xsd\"><versaoDados>3</versaoDados></ns2:cabecalho>"; break; case 4125506: //São José dos Pinhais - PR cabecMsg = "<ns2:cabecalho versao=\"3\" xmlns:ns2=\"http://nfe.sjp.pr.gov.br/cabecalho_v03.xsd\"><versaoDados>3</versaoDados></ns2:cabecalho>"; break; default: cabecMsg = "<ns2:cabecalho versao=\"3\" xmlns:ns2=\"http://www.ginfes.com.br/cabecalho_v03.xsd\"><versaoDados>3</versaoDados></ns2:cabecalho>"; break; } break; case PadroesNFSe.BETHA: #region Betha ConteudoXML.PreserveWhitespace = false; ConteudoXML.Load(NomeArquivoXML); if (!ConteudoXML.DocumentElement.Name.Contains("e:")) { padraoNFSe = PadroesNFSe.BETHA202; Components.Betha.NewVersion.Betha betha = new Components.Betha.NewVersion.Betha((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedSitNfse.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor); betha.ConsultarNfse(NomeArquivoXML); } else { wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado); wsProxy.Betha = new Betha(); } break; #endregion Betha case PadroesNFSe.ABACO: case PadroesNFSe.CANOAS_RS: cabecMsg = "<cabecalho versao=\"201001\"><versaoDados>V2010</versaoDados></cabecalho>"; break; case PadroesNFSe.BHISS: cabecMsg = "<cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"1.00\"><versaoDados >1.00</versaoDados ></cabecalho>"; break; case PadroesNFSe.WEBISS: cabecMsg = "<cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"1.00\"><versaoDados >1.00</versaoDados ></cabecalho>"; break; case PadroesNFSe.WEBISS_202: cabecMsg = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"2.02\"><versaoDados>2.02</versaoDados></cabecalho>"; break; case PadroesNFSe.PORTOVELHENSE: cabecMsg = "<cabecalho versao=\"2.00\" xmlns:ns2=\"http://www.w3.org/2000/09/xmldsig#\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\"><versaoDados>2.00</versaoDados></cabecalho>"; break; case PadroesNFSe.TECNOSISTEMAS: cabecMsg = "<?xml version=\"1.0\" encoding=\"utf-8\"?><cabecalho xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" versao=\"20.01\" xmlns=\"http://www.nfse-tecnos.com.br/nfse.xsd\"><versaoDados>20.01</versaoDados></cabecalho>"; break; case PadroesNFSe.FINTEL: cabecMsg = "<cabecalho versao=\"2.02\" xmlns=\"http://iss.irati.pr.gov.br/Arquivos/nfseV202.xsd\"><versaoDados>2.02</versaoDados></cabecalho>"; break; case PadroesNFSe.SYSTEMPRO: SystemPro syspro = new SystemPro((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, Empresas.Configuracoes[emp].X509Certificado); AssinaturaDigital ad = new AssinaturaDigital(); ad.Assinar(NomeArquivoXML, emp, oDadosPedSitNfse.cMunicipio); syspro.ConsultarNfse(NomeArquivoXML); break; case PadroesNFSe.SIGCORP_SIGISS: SigCorp sigCorp = new SigCorp((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedSitNfse.cMunicipio); sigCorp.ConsultarNfse(NomeArquivoXML); break; case PadroesNFSe.SIMPLISS: SimplISS simpliss = new SimplISS((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedSitNfse.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor); simpliss.ConsultarNfse(NomeArquivoXML); break; case PadroesNFSe.CONAM: Conam conam = new Conam((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedSitNfse.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS); conam.ConsultarNfse(NomeArquivoXML); break; case PadroesNFSe.RLZ_INFORMATICA: Rlz_Informatica rlz = new Rlz_Informatica((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedSitNfse.cMunicipio); rlz.ConsultarNfse(NomeArquivoXML); break; case PadroesNFSe.EGOVERNE: #region E-Governe EGoverne egoverne = new EGoverne((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedSitNfse.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); AssinaturaDigital assegov = new AssinaturaDigital(); assegov.Assinar(NomeArquivoXML, emp, oDadosPedSitNfse.cMunicipio); egoverne.ConsultarNfse(NomeArquivoXML); #endregion E-Governe break; case PadroesNFSe.EL: #region E&L EL el = new EL((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedSitNfse.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, (ConfiguracaoApp.Proxy ? ConfiguracaoApp.ProxyUsuario : ""), (ConfiguracaoApp.Proxy ? ConfiguracaoApp.ProxySenha : ""), (ConfiguracaoApp.Proxy ? ConfiguracaoApp.ProxyServidor : "")); el.ConsultarNfse(NomeArquivoXML); break; #endregion E&L case PadroesNFSe.GOVDIGITAL: GovDigital govdig = new GovDigital((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, Empresas.Configuracoes[emp].X509Certificado, oDadosPedSitNfse.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor); AssinaturaDigital adgovdig = new AssinaturaDigital(); adgovdig.Assinar(NomeArquivoXML, emp, oDadosPedSitNfse.cMunicipio); govdig.ConsultarNfse(NomeArquivoXML); break; case PadroesNFSe.EQUIPLANO: cabecMsg = "1"; break; case PadroesNFSe.PORTALFACIL_ACTCON_202: cabecMsg = "<cabecalho><versaoDados>2.02</versaoDados></cabecalho>"; break; case PadroesNFSe.PORTALFACIL_ACTCON: case PadroesNFSe.PRODATA: cabecMsg = "<cabecalho><versaoDados>2.01</versaoDados></cabecalho>"; break; case PadroesNFSe.FISSLEX: FISSLEX fisslex = new FISSLEX((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedSitNfse.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor); fisslex.ConsultarNfse(NomeArquivoXML); break; case PadroesNFSe.MGM: #region MGM MGM mgm = new MGM((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedSitNfse.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS); mgm.ConsultarNfse(NomeArquivoXML); break; #endregion MGM case PadroesNFSe.NATALENSE: cabecMsg = "<cabecalho xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" versao=\"1\" xmlns=\"http://www.abrasf.org.br/ABRASF/arquivos/nfse.xsd\"><versaoDados>1</versaoDados></cabecalho>"; break; case PadroesNFSe.CONSIST: #region Consist Consist consist = new Consist((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedSitNfse.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor); consist.ConsultarNfse(NomeArquivoXML); break; #endregion Consist case PadroesNFSe.METROPOLIS: #region METROPOLIS Metropolis metropolis = new Metropolis((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedSitNfse.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); AssinaturaDigital metropolisdig = new AssinaturaDigital(); metropolisdig.Assinar(NomeArquivoXML, emp, oDadosPedSitNfse.cMunicipio); metropolis.ConsultarNfse(NomeArquivoXML); break; #endregion METROPOLIS case PadroesNFSe.PAULISTANA: wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado); if (oDadosPedSitNfse.tpAmb == 1) { pedLoteRps = new NFe.Components.PSaoPauloSP.LoteNFe(); } else { throw new Exception("Município de São Paulo-SP não dispõe de ambiente de homologação para envio de NFS-e em teste."); } break; case PadroesNFSe.FREIRE_INFORMATICA: cabecMsg = "<cabecalho xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"2.02\"><versaoDados>2.02</versaoDados></cabecalho>"; break; case PadroesNFSe.MEMORY: #region Memory Memory memory = new Memory((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedSitNfse.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor); memory.ConsultarNfse(NomeArquivoXML); break; #endregion Memory case PadroesNFSe.CAMACARI_BA: cabecMsg = "<cabecalho><versaoDados>2.01</versaoDados><versao>2.01</versao></cabecalho>"; break; case PadroesNFSe.NA_INFORMATICA: wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado); //if (oDadosPedSitNfse.tpAmb == 1) // pedLoteRps = new Components.PCorumbaMS.NfseWSService(); //else // pedLoteRps = new Components.HCorumbaMS.NfseWSService(); break; case PadroesNFSe.FIORILLI: Fiorilli fiorilli = new Fiorilli((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedSitNfse.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); fiorilli.ConsultarNfse(NomeArquivoXML); break; case PadroesNFSe.PRONIN: if (oDadosPedSitNfse.cMunicipio == 4109401 || oDadosPedSitNfse.cMunicipio == 3131703 || oDadosPedSitNfse.cMunicipio == 4303004 || oDadosPedSitNfse.cMunicipio == 4322509) { Pronin pronin = new Pronin((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedSitNfse.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); AssinaturaDigital assPronin = new AssinaturaDigital(); assPronin.Assinar(NomeArquivoXML, emp, oDadosPedSitNfse.cMunicipio); pronin.ConsultarNfse(NomeArquivoXML); } break; case PadroesNFSe.BAURU_SP: Bauru_SP bauru_SP = new Bauru_SP((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedSitNfse.cMunicipio); bauru_SP.ConsultarNfse(NomeArquivoXML); break; case PadroesNFSe.COPLAN: Coplan coplan = new Coplan((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedSitNfse.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); AssinaturaDigital assCoplan = new AssinaturaDigital(); assCoplan.Assinar(NomeArquivoXML, emp, oDadosPedSitNfse.cMunicipio); coplan.ConsultarNfse(NomeArquivoXML); break; case PadroesNFSe.TINUS: Tinus tinus = new Tinus((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosPedSitNfse.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); tinus.ConsultarNfse(NomeArquivoXML); break; case PadroesNFSe.SH3: cabecMsg = "<cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"1.00\"><versaoDados >1.00</versaoDados ></cabecalho>"; break; case PadroesNFSe.INTERSOL: cabecMsg = "<?xml version=\"1.0\" encoding=\"utf-8\"?><p:cabecalho versao=\"1\" xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\" xmlns:p=\"http://ws.speedgov.com.br/cabecalho_v1.xsd\" xmlns:p1=\"http://ws.speedgov.com.br/tipos_v1.xsd\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://ws.speedgov.com.br/cabecalho_v1.xsd cabecalho_v1.xsd \"><versaoDados>1</versaoDados></p:cabecalho>"; break; case PadroesNFSe.SOFTPLAN: SOFTPLAN softplan = new SOFTPLAN((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, Empresas.Configuracoes[emp].ClientID, Empresas.Configuracoes[emp].ClientSecret); if (ConfiguracaoApp.Proxy) { softplan.Proxy = Proxy.DefinirProxy(ConfiguracaoApp.ProxyServidor, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyPorta); } softplan.ConsultarNfse(NomeArquivoXML); break; } if (IsInvocar(padraoNFSe, Servico, oDadosPedSitNfse.cMunicipio)) { //Assinar o XML AssinaturaDigital ad = new AssinaturaDigital(); ad.Assinar(NomeArquivoXML, emp, oDadosPedSitNfse.cMunicipio); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.InvocarNFSe(wsProxy, pedLoteRps, NomeMetodoWS(Servico, oDadosPedSitNfse.cMunicipio), cabecMsg, this, Propriedade.Extensao(Propriedade.TipoEnvio.PedSitNFSe).EnvioXML, //"-ped-sitnfse", Propriedade.Extensao(Propriedade.TipoEnvio.PedSitNFSe).RetornoXML, //"-sitnfse", padraoNFSe, Servico, securityProtocolType); /// /// grava o arquivo no FTP string filenameFTP = Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedSitNFSe).EnvioXML) + Propriedade.Extensao(Propriedade.TipoEnvio.PedSitNFSe).RetornoXML); if (File.Exists(filenameFTP)) { new GerarXML(emp).XmlParaFTP(emp, filenameFTP); } } } catch (Exception ex) { try { //Gravar o arquivo de erro de retorno para o ERP, caso ocorra TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedSitNFSe).EnvioXML, Propriedade.ExtRetorno.SitNfse_ERR, ex); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. //Wandrey 31/08/2011 } } finally { try { Functions.DeletarArquivo(NomeArquivoXML); } catch { //Se falhou algo na hora de deletar o XML de cancelamento de NFe, infelizmente //não posso fazer mais nada, o UniNFe vai tentar mandar o arquivo novamente para o webservice, pois ainda não foi excluido. //Wandrey 31/08/2011 } } }
public static WebServiceProxy DefinirWS(Servicos servico, Core.Empresa emp, int cUF, int tpAmb, int tpEmis, PadroesNFSe padraoNFSe) { WebServiceProxy wsProxy = null; string key = servico + " " + cUF + " " + tpAmb + " " + tpEmis; while (true) { if (emp.WSProxy.ContainsKey(key)) { wsProxy = emp.WSProxy[key]; } else { //Definir a URI para conexão com o Webservice string Url = ConfiguracaoApp.DefLocalWSDL(cUF, tpAmb, tpEmis, servico); wsProxy = new WebServiceProxy(Url, emp.X509Certificado, padraoNFSe); emp.WSProxy.Add(key, wsProxy); } break; } return wsProxy; }
public override void Execute() { int emp = Empresas.FindEmpresaByThread(); try { Functions.DeletarArquivo(Empresas.Configuracoes[emp].PastaXmlRetorno + "\\" + Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.ConsDadosCadCFSe).EnvioXML) + Propriedade.Extensao(Propriedade.TipoEnvio.ConsDadosCadCFSe).RetornoERR); Functions.DeletarArquivo(Empresas.Configuracoes[emp].PastaXmlErro + "\\" + NomeArquivoXML); int tpEmis = Empresas.Configuracoes[emp].tpEmis; int tpAmb = Empresas.Configuracoes[emp].AmbienteCodigo; int municipio = Empresas.Configuracoes[emp].UnidadeFederativaCodigo; PadroesNFSe padraoNFSe = Functions.PadraoNFSe(municipio); WebServiceProxy wsProxy = null; object consDadosCadastroCfse = null; //Criar objetos das classes dos serviços dos webservices do SEFAZ if (IsUtilizaCompilacaoWs(padraoNFSe)) { wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, municipio, tpAmb, tpEmis, padraoNFSe, municipio); if (wsProxy != null) { consDadosCadastroCfse = wsProxy.CriarObjeto(wsProxy.NomeClasseWS); } } System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(municipio, tpAmb, tpEmis, padraoNFSe, Servico); string cabecMsg = ""; switch (padraoNFSe) { case PadroesNFSe.FINTEL: cabecMsg = "<cabecalho versao=\"2.02\" xmlns=\"http://iss.irati.pr.gov.br/Arquivos/nfseV202.xsd\"><versaoDados>2.02</versaoDados></cabecalho>"; break; } if (IsInvocar(padraoNFSe)) { //Assinar o XML AssinaturaDigital ad = new AssinaturaDigital(); ad.Assinar(NomeArquivoXML, emp, municipio); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.InvocarNFSe(wsProxy, consDadosCadastroCfse, NomeMetodoWS(Servico, municipio), cabecMsg, this, Propriedade.Extensao(Propriedade.TipoEnvio.ConsDadosCadCFSe).EnvioXML, Propriedade.Extensao(Propriedade.TipoEnvio.ConsDadosCadCFSe).RetornoXML, padraoNFSe, Servico, securityProtocolType); /// /// grava o arquivo no FTP string filenameFTP = Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.ConsDadosCadCFSe).EnvioXML) + Propriedade.Extensao(Propriedade.TipoEnvio.ConsDadosCadCFSe).RetornoXML); if (File.Exists(filenameFTP)) { new GerarXML(emp).XmlParaFTP(emp, filenameFTP); } } } catch (Exception ex) { try { //Gravar o arquivo de erro de retorno para o ERP, caso ocorra TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.ConsDadosCadCFSe).EnvioXML, Propriedade.Extensao(Propriedade.TipoEnvio.ConsDadosCadCFSe).RetornoERR, ex); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. //Wandrey 31/08/2011 } } finally { try { Functions.DeletarArquivo(NomeArquivoXML); } catch { //Se falhou algo na hora de deletar o XML de cancelamento de NFe, infelizmente //não posso fazer mais nada, o UniNFe vai tentar mandar o arquivo novamente para o webservice, pois ainda não foi excluido. //Wandrey 31/08/2011 } } }
public override void Execute() { int emp = Empresas.FindEmpresaByThread(); //Definir o serviço que será executado para a classe Servico = Servicos.NFSeRecepcionarLoteRps; try { Functions.DeletarArquivo(Empresas.Configuracoes[emp].PastaXmlRetorno + "\\" + Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.EnvLoteRps).EnvioXML) + Propriedade.ExtRetorno.RetEnvLoteRps_ERR); Functions.DeletarArquivo(Empresas.Configuracoes[emp].PastaXmlErro + "\\" + NomeArquivoXML); oDadosEnvLoteRps = new DadosEnvLoteRps(emp); EnvLoteRps(emp, NomeArquivoXML); //Criar objetos das classes dos serviços dos webservices do SEFAZ PadroesNFSe padraoNFSe = Functions.PadraoNFSe(oDadosEnvLoteRps.cMunicipio); WebServiceProxy wsProxy = null; object envLoteRps = null; if (IsUtilizaCompilacaoWs(padraoNFSe, Servico, oDadosEnvLoteRps.cMunicipio)) { wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, oDadosEnvLoteRps.cMunicipio, oDadosEnvLoteRps.tpAmb, oDadosEnvLoteRps.tpEmis, padraoNFSe, oDadosEnvLoteRps.cMunicipio); if (wsProxy != null) { envLoteRps = wsProxy.CriarObjeto(wsProxy.NomeClasseWS); } } System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(oDadosEnvLoteRps.cMunicipio, oDadosEnvLoteRps.tpAmb, oDadosEnvLoteRps.tpEmis, padraoNFSe, Servico); string cabecMsg = ""; switch (padraoNFSe) { case PadroesNFSe.IPM: //código da cidade da receita federal, este arquivo pode ser encontrado em ~\uninfe\doc\Codigos_Cidades_Receita_Federal.xls</para> //O código da cidade está hardcoded pois ainda está sendo usado apenas para campo mourão IPM ipm = new IPM((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, oDadosEnvLoteRps.cMunicipio); if (ConfiguracaoApp.Proxy) { ipm.Proxy = Proxy.DefinirProxy(ConfiguracaoApp.ProxyServidor, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyPorta); } ipm.EmiteNF(NomeArquivoXML, false); break; case PadroesNFSe.GINFES: switch (oDadosEnvLoteRps.cMunicipio) { case 2304400: //Fortaleza - CE cabecMsg = "<ns2:cabecalho versao=\"3\" xmlns:ns2=\"http://www.ginfes.com.br/cabecalho_v03.xsd\"><versaoDados>3</versaoDados></ns2:cabecalho>"; break; case 4125506: //São José dos Pinhais - PR cabecMsg = "<ns2:cabecalho versao=\"3\" xmlns:ns2=\"http://nfe.sjp.pr.gov.br/cabecalho_v03.xsd\"><versaoDados>3</versaoDados></ns2:cabecalho>"; break; default: cabecMsg = "<ns2:cabecalho versao=\"3\" xmlns:ns2=\"http://www.ginfes.com.br/cabecalho_v03.xsd\"><versaoDados>3</versaoDados></ns2:cabecalho>"; break; } break; case PadroesNFSe.ABASE: cabecMsg = "<cabecalho xmlns=\"http://nfse.abase.com.br/nfse.xsd\" versao =\"1.00\"><versaoDados>1.00</versaoDados></cabecalho>"; break; case PadroesNFSe.BETHA: #region Betha string versao = Functions.GetAttributeXML("LoteRps", "versao", NomeArquivoXML); if (versao.Equals("2.02")) { padraoNFSe = PadroesNFSe.BETHA202; Components.Betha.NewVersion.Betha betha = new Components.Betha.NewVersion.Betha((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor); AssinaturaDigital signbetha = new AssinaturaDigital(); signbetha.Assinar(NomeArquivoXML, emp, 202); if (GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.BETHA202) == Servicos.NFSeRecepcionarLoteRpsSincrono) { betha.EmiteNFSincrono(NomeArquivoXML); } else { betha.EmiteNF(NomeArquivoXML); } } else { wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado); wsProxy.Betha = new Betha(); } break; #endregion Betha case PadroesNFSe.ABACO: case PadroesNFSe.CANOAS_RS: cabecMsg = "<cabecalho versao=\"201001\"><versaoDados>V2010</versaoDados></cabecalho>"; break; case PadroesNFSe.BLUMENAU_SC: EncryptAssinatura(); break; case PadroesNFSe.BHISS: cabecMsg = "<cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"1.00\"><versaoDados >1.00</versaoDados ></cabecalho>"; Servico = GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.BHISS); break; case PadroesNFSe.SH3: cabecMsg = "<cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"1.00\"><versaoDados >1.00</versaoDados ></cabecalho>"; Servico = GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.SH3); break; case PadroesNFSe.WEBISS: cabecMsg = "<cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"1.00\"><versaoDados >1.00</versaoDados ></cabecalho>"; break; case PadroesNFSe.WEBISS_202: Servico = GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.WEBISS_202); cabecMsg = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"2.02\"><versaoDados>2.02</versaoDados></cabecalho>"; break; case PadroesNFSe.PAULISTANA: wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado); if (oDadosEnvLoteRps.tpAmb == 1) { envLoteRps = new Components.PSaoPauloSP.LoteNFe(); } else { throw new Exception("Município de São Paulo-SP não dispõe de ambiente de homologação para envio de NFS-e em teste."); } EncryptAssinatura(); break; case PadroesNFSe.NA_INFORMATICA: Servico = GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.VVISS); wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado); //if (oDadosEnvLoteRps.tpAmb == 1) // envLoteRps = new Components.PCorumbaMS.NfseWSService(); //else // envLoteRps = new Components.HCorumbaMS.NfseWSService(); break; case PadroesNFSe.BSITBR: Servico = GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.BSITBR); wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado); if (oDadosEnvLoteRps.tpAmb == 1) { envLoteRps = new Components.PJaraguaGO.nfseWS(); } else { throw new Exception("Município de Jaraguá-GO não dispõe de ambiente de homologação para envio de NFS-e em teste."); } break; case PadroesNFSe.PORTOVELHENSE: cabecMsg = "<cabecalho versao=\"2.00\" xmlns:ns2=\"http://www.w3.org/2000/09/xmldsig#\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\"><versaoDados>2.00</versaoDados></cabecalho>"; break; case PadroesNFSe.DSF: EncryptAssinatura(); break; case PadroesNFSe.TECNOSISTEMAS: cabecMsg = "<?xml version=\"1.0\" encoding=\"utf-8\"?><cabecalho xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" versao=\"20.01\" xmlns=\"http://www.nfse-tecnos.com.br/nfse.xsd\"><versaoDados>20.01</versaoDados></cabecalho>"; break; case PadroesNFSe.FINTEL: cabecMsg = "<cabecalho versao=\"2.02\" xmlns=\"http://iss.irati.pr.gov.br/Arquivos/nfseV202.xsd\"><versaoDados>2.02</versaoDados></cabecalho>"; Servico = GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.FINTEL); break; case PadroesNFSe.PORTALFACIL_ACTCON: cabecMsg = "<cabecalho><versaoDados>2.01</versaoDados></cabecalho>"; Servico = GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.PORTALFACIL_ACTCON); break; case PadroesNFSe.PORTALFACIL_ACTCON_202: cabecMsg = "<cabecalho><versaoDados>2.02</versaoDados></cabecalho>"; Servico = GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.PORTALFACIL_ACTCON_202); break; case PadroesNFSe.SYSTEMPRO: #region SystemPro SystemPro syspro = new SystemPro((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, Empresas.Configuracoes[emp].X509Certificado); AssinaturaDigital ad = new AssinaturaDigital(); ad.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio); syspro.EmiteNF(NomeArquivoXML); break; #endregion SystemPro case PadroesNFSe.SIGCORP_SIGISS: #region SigCorp SigCorp sigcorp = new SigCorp((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio); sigcorp.EmiteNF(NomeArquivoXML); break; #endregion SigCorp case PadroesNFSe.FIORILLI: #region Fiorilli Fiorilli fiorilli = new Fiorilli((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); AssinaturaDigital ass = new AssinaturaDigital(); ass.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio); // Validar o Arquivo XML ValidarXML validar = new ValidarXML(NomeArquivoXML, Empresas.Configuracoes[emp].UnidadeFederativaCodigo, false); string resValidacao = validar.ValidarArqXML(NomeArquivoXML); if (resValidacao != "") { throw new Exception(resValidacao); } fiorilli.EmiteNF(NomeArquivoXML); break; #endregion Fiorilli case PadroesNFSe.SIMPLISS: #region Simpliss SimplISS simpliss = new SimplISS((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor); AssinaturaDigital sign = new AssinaturaDigital(); sign.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio); simpliss.EmiteNF(NomeArquivoXML); break; #endregion Simpliss case PadroesNFSe.CONAM: #region Conam Conam conam = new Conam((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS); conam.EmiteNF(NomeArquivoXML); break; #endregion Conam case PadroesNFSe.RLZ_INFORMATICA: #region RLZ Rlz_Informatica rlz = new Rlz_Informatica((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio); rlz.EmiteNF(NomeArquivoXML); break; #endregion RLZ case PadroesNFSe.EGOVERNE: #region E-Governe EGoverne egoverne = new EGoverne((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); AssinaturaDigital assEGovoverne = new AssinaturaDigital(); assEGovoverne.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio); egoverne.EmiteNF(NomeArquivoXML); break; #endregion E-Governe case PadroesNFSe.EL: #region E&L EL el = new EL((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, (ConfiguracaoApp.Proxy ? ConfiguracaoApp.ProxyUsuario : ""), (ConfiguracaoApp.Proxy ? ConfiguracaoApp.ProxySenha : ""), (ConfiguracaoApp.Proxy ? ConfiguracaoApp.ProxyServidor : "")); el.EmiteNF(NomeArquivoXML); break; #endregion E&L case PadroesNFSe.GOVDIGITAL: #region GOV-Digital GovDigital govdig = new GovDigital((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, Empresas.Configuracoes[emp].X509Certificado, oDadosEnvLoteRps.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor); AssinaturaDigital adgovdig = new AssinaturaDigital(); adgovdig.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio); govdig.EmiteNF(NomeArquivoXML); break; #endregion GOV-Digital case PadroesNFSe.EQUIPLANO: cabecMsg = "1"; break; case PadroesNFSe.NATALENSE: cabecMsg = "<cabecalho xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" versao=\"1\" xmlns=\"http://www.abrasf.org.br/ABRASF/arquivos/nfse.xsd\"><versaoDados>1</versaoDados></cabecalho>"; break; case PadroesNFSe.PRODATA: cabecMsg = "<cabecalho><versaoDados>2.01</versaoDados></cabecalho>"; break; case PadroesNFSe.VVISS: Servico = GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.VVISS); break; case PadroesNFSe.ELOTECH: #region EloTech EloTech elotech = new EloTech((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); elotech.EmiteNF(NomeArquivoXML); break; #endregion EloTech case PadroesNFSe.METROPOLIS: #region METROPOLIS Metropolis metropolis = new Metropolis((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); AssinaturaDigital metropolisdig = new AssinaturaDigital(); metropolisdig.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio); metropolis.EmiteNF(NomeArquivoXML); break; #endregion METROPOLIS case PadroesNFSe.MGM: #region MGM MGM mgm = new MGM((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS); mgm.EmiteNF(NomeArquivoXML); break; #endregion MGM case PadroesNFSe.CONSIST: #region Consist Consist consist = new Consist((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor); consist.EmiteNF(NomeArquivoXML); break; #endregion Consist case PadroesNFSe.NOTAINTELIGENTE: #region Nota Inteligente wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado); if (oDadosEnvLoteRps.tpAmb == 1) { //envLoteRps = new NFe.Components.PClaudioMG.api_portClient(); } else { throw new Exception("Município de São Paulo-SP não dispõe de ambiente de homologação para envio de NFS-e em teste."); } #endregion Nota Inteligente break; case PadroesNFSe.COPLAN: #region Coplan Coplan coplan = new Coplan((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); AssinaturaDigital assCoplan = new AssinaturaDigital(); assCoplan.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio); coplan.EmiteNF(NomeArquivoXML); break; #endregion Coplan case PadroesNFSe.FREIRE_INFORMATICA: cabecMsg = "<cabecalho xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"2.02\"><versaoDados>2.02</versaoDados></cabecalho>"; break; case PadroesNFSe.MEMORY: #region Memory Memory memory = new Memory((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor); AssinaturaDigital sigMem = new AssinaturaDigital(); sigMem.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio); memory.EmiteNF(NomeArquivoXML); break; #endregion Memory case PadroesNFSe.CAMACARI_BA: Servico = GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.CAMACARI_BA); cabecMsg = "<cabecalho><versaoDados>2.01</versaoDados><versao>2.01</versao></cabecalho>"; break; case PadroesNFSe.CARIOCA: Servico = GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.CARIOCA); break; case PadroesNFSe.PRONIN: if (oDadosEnvLoteRps.cMunicipio == 4109401 || oDadosEnvLoteRps.cMunicipio == 3131703 || oDadosEnvLoteRps.cMunicipio == 4303004) { Pronin pronin = new Pronin((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); AssinaturaDigital assPronin = new AssinaturaDigital(); assPronin.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio); pronin.EmiteNF(NomeArquivoXML); } break; case PadroesNFSe.EGOVERNEISS: #region EGoverne ISS EGoverneISS egoverneiss = new EGoverneISS((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor); egoverneiss.EmiteNF(NomeArquivoXML); break; #endregion EGoverne ISS case PadroesNFSe.SUPERNOVA: Servico = GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.SUPERNOVA); break; case PadroesNFSe.MARINGA_PR: Servico = GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.MARINGA_PR); break; case PadroesNFSe.BAURU_SP: #region BAURU_SP Bauru_SP bauru_SP = new Bauru_SP((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio); bauru_SP.EmiteNF(NomeArquivoXML); break; #endregion BAURU_SP #region Tinus case PadroesNFSe.TINUS: Tinus tinus = new Tinus((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); AssinaturaDigital tinusAss = new AssinaturaDigital(); tinusAss.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio); tinus.EmiteNF(NomeArquivoXML); break; #endregion Tinus #region SOFTPLAN case PadroesNFSe.SOFTPLAN: SOFTPLAN softplan = new SOFTPLAN((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, Empresas.Configuracoes[emp].ClientID, Empresas.Configuracoes[emp].ClientSecret); AssinaturaDigital softplanAssinatura = new AssinaturaDigital(); softplanAssinatura.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio); // Validar o Arquivo XML ValidarXML softplanValidar = new ValidarXML(NomeArquivoXML, Empresas.Configuracoes[emp].UnidadeFederativaCodigo, false); string validacao = softplanValidar.ValidarArqXML(NomeArquivoXML); if (validacao != "") { throw new Exception(validacao); } if (ConfiguracaoApp.Proxy) { softplan.Proxy = Proxy.DefinirProxy(ConfiguracaoApp.ProxyServidor, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyPorta); } AssinaturaDigital softplanAss = new AssinaturaDigital(); softplanAss.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio, AlgorithmType.Sha256); softplan.EmiteNF(NomeArquivoXML); break; #endregion SOFTPLAN case PadroesNFSe.INTERSOL: cabecMsg = "<?xml version=\"1.0\" encoding=\"utf-8\"?><p:cabecalho versao=\"1\" xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\" xmlns:p=\"http://ws.speedgov.com.br/cabecalho_v1.xsd\" xmlns:p1=\"http://ws.speedgov.com.br/tipos_v1.xsd\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://ws.speedgov.com.br/cabecalho_v1.xsd cabecalho_v1.xsd \"><versaoDados>1</versaoDados></p:cabecalho>"; break; } if (IsInvocar(padraoNFSe, Servico, oDadosEnvLoteRps.cMunicipio)) { //Assinar o XML AssinaturaDigital ad = new AssinaturaDigital(); ad.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.InvocarNFSe(wsProxy, envLoteRps, NomeMetodoWS(Servico, oDadosEnvLoteRps.cMunicipio), cabecMsg, this, Propriedade.Extensao(Propriedade.TipoEnvio.EnvLoteRps).EnvioXML, Propriedade.Extensao(Propriedade.TipoEnvio.EnvLoteRps).RetornoXML, padraoNFSe, Servico, securityProtocolType); /// /// grava o arquivo no FTP string filenameFTP = Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.EnvLoteRps).EnvioXML) + "\\" + Propriedade.Extensao(Propriedade.TipoEnvio.EnvLoteRps).RetornoXML); if (File.Exists(filenameFTP)) { new GerarXML(emp).XmlParaFTP(emp, filenameFTP); } } } catch (Exception ex) { try { //Gravar o arquivo de erro de retorno para o ERP, caso ocorra TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.EnvLoteRps).EnvioXML, Propriedade.ExtRetorno.RetEnvLoteRps_ERR, ex); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. //Wandrey 31/08/2011 } } finally { try { Functions.DeletarArquivo(NomeArquivoXML); } catch { //Se falhou algo na hora de deletar o XML de cancelamento de NFe, infelizmente //não posso fazer mais nada, o UniNFe vai tentar mandar o arquivo novamente para o webservice, pois ainda não foi excluido. //Wandrey 31/08/2011 } } }
public override void Execute() { int emp = Empresas.FindEmpresaByThread(); //Definir o serviço que será executado para a classe Servico = Servicos.NFSeRecepcionarLoteRps; try { Functions.DeletarArquivo(Empresas.Configuracoes[emp].PastaXmlRetorno + "\\" + Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.EnvLoteRps).EnvioXML) + Propriedade.ExtRetorno.RetEnvLoteRps_ERR); Functions.DeletarArquivo(Empresas.Configuracoes[emp].PastaXmlErro + "\\" + NomeArquivoXML); oDadosEnvLoteRps = new DadosEnvLoteRps(emp); EnvLoteRps(emp, NomeArquivoXML); //Criar objetos das classes dos serviços dos webservices do SEFAZ PadroesNFSe padraoNFSe = Functions.PadraoNFSe(oDadosEnvLoteRps.cMunicipio); WebServiceProxy wsProxy = null; object envLoteRps = null; if (IsUtilizaCompilacaoWs(padraoNFSe)) { wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, oDadosEnvLoteRps.cMunicipio, oDadosEnvLoteRps.tpAmb, oDadosEnvLoteRps.tpEmis, padraoNFSe); if (wsProxy != null) { envLoteRps = wsProxy.CriarObjeto(wsProxy.NomeClasseWS); } } System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(oDadosEnvLoteRps.cMunicipio, oDadosEnvLoteRps.tpAmb, oDadosEnvLoteRps.tpEmis, padraoNFSe, Servico); string cabecMsg = ""; switch (padraoNFSe) { case PadroesNFSe.IPM: //código da cidade da receita federal, este arquivo pode ser encontrado em ~\uninfe\doc\Codigos_Cidades_Receita_Federal.xls</para> //O código da cidade está hardcoded pois ainda está sendo usado apenas para campo mourão IPM ipm = new IPM(Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, oDadosEnvLoteRps.cMunicipio, Empresas.Configuracoes[emp].PastaXmlRetorno); if (ConfiguracaoApp.Proxy) { ipm.Proxy = Proxy.DefinirProxy(ConfiguracaoApp.ProxyServidor, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyPorta); } ipm.EmitirNF(NomeArquivoXML, (TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo); break; case PadroesNFSe.GINFES: if (oDadosEnvLoteRps.cMunicipio == 4125506) //São José dos Pinhais - PR { cabecMsg = "<ns2:cabecalho versao=\"3\" xmlns:ns2=\"http://nfe.sjp.pr.gov.br/cabecalho_v03.xsd\"><versaoDados>3</versaoDados></ns2:cabecalho>"; } else { cabecMsg = "<ns2:cabecalho versao=\"3\" xmlns:ns2=\"http://www.ginfes.com.br/cabecalho_v03.xsd\"><versaoDados>3</versaoDados></ns2:cabecalho>"; } break; case PadroesNFSe.BETHA: wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado); wsProxy.Betha = new Betha(); break; case PadroesNFSe.ABACO: case PadroesNFSe.CANOAS_RS: cabecMsg = "<cabecalho versao=\"201001\"><versaoDados>V2010</versaoDados></cabecalho>"; break; case PadroesNFSe.BLUMENAU_SC: EncryptAssinatura(); break; case PadroesNFSe.BHISS: cabecMsg = "<cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"1.00\"><versaoDados >1.00</versaoDados ></cabecalho>"; Servico = GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.BHISS); break; case PadroesNFSe.WEBISS: cabecMsg = "<cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"1.00\"><versaoDados >1.00</versaoDados ></cabecalho>"; break; case PadroesNFSe.PAULISTANA: wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado); if (oDadosEnvLoteRps.tpAmb == 1) { envLoteRps = new Components.PSaoPauloSP.LoteNFe(); } else { throw new Exception("Município de São Paulo-SP não dispõe de ambiente de homologação para envio de NFS-e em teste."); } EncryptAssinatura(); break; case PadroesNFSe.NA_INFORMATICA: Servico = GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.VVISS); wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado); if (oDadosEnvLoteRps.tpAmb == 1) { envLoteRps = new Components.PCorumbaMS.NfseWSService(); } else { envLoteRps = new Components.HCorumbaMS.NfseWSService(); } break; case PadroesNFSe.PORTOVELHENSE: cabecMsg = "<cabecalho versao=\"2.00\" xmlns:ns2=\"http://www.w3.org/2000/09/xmldsig#\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\"><versaoDados>2.00</versaoDados></cabecalho>"; break; case PadroesNFSe.DSF: EncryptAssinatura(); break; case PadroesNFSe.TECNOSISTEMAS: cabecMsg = "<?xml version=\"1.0\" encoding=\"utf-8\"?><cabecalho xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" versao=\"20.01\" xmlns=\"http://www.nfse-tecnos.com.br/nfse.xsd\"><versaoDados>20.01</versaoDados></cabecalho>"; break; case PadroesNFSe.FINTEL: cabecMsg = "<cabecalho xmlns=\"http://iss.pontagrossa.pr.gov.br/Arquivos/nfse.xsd\" versao=\"1.00\"><versaoDados >1.00</versaoDados ></cabecalho>"; Servico = GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.FINTEL); break; case PadroesNFSe.ACTCON: cabecMsg = "<cabecalho><versaoDados>2.01</versaoDados></cabecalho>"; Servico = GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.ACTCON); break; case PadroesNFSe.SYSTEMPRO: #region SystemPro SystemPro syspro = new SystemPro((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, Empresas.Configuracoes[emp].X509Certificado); AssinaturaDigital ad = new AssinaturaDigital(); ad.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio); syspro.EmiteNF(NomeArquivoXML); break; #endregion case PadroesNFSe.SIGCORP_SIGISS: #region SigCorp SigCorp sigcorp = new SigCorp((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio); sigcorp.EmiteNF(NomeArquivoXML); break; #endregion case PadroesNFSe.FIORILLI: #region Fiorilli Fiorilli fiorilli = new Fiorilli((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor); AssinaturaDigital ass = new AssinaturaDigital(); ass.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio); fiorilli.EmiteNF(NomeArquivoXML); break; #endregion case PadroesNFSe.SIMPLISS: #region Simpliss SimplISS simpliss = new SimplISS((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor); AssinaturaDigital sign = new AssinaturaDigital(); sign.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio); simpliss.EmiteNF(NomeArquivoXML); break; #endregion case PadroesNFSe.CONAM: #region Conam Conam conam = new Conam((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS); conam.EmiteNF(NomeArquivoXML); break; #endregion case PadroesNFSe.RLZ_INFORMATICA: #region RLZ Rlz_Informatica rlz = new Rlz_Informatica((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio); rlz.EmiteNF(NomeArquivoXML); break; #endregion case PadroesNFSe.EGOVERNE: #region E-Governe EGoverne egoverne = new EGoverne((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); AssinaturaDigital assEGovoverne = new AssinaturaDigital(); assEGovoverne.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio); egoverne.EmiteNF(NomeArquivoXML); break; #endregion case PadroesNFSe.EL: #region E&L EL el = new EL((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, (ConfiguracaoApp.Proxy ? ConfiguracaoApp.ProxyUsuario : ""), (ConfiguracaoApp.Proxy ? ConfiguracaoApp.ProxySenha : ""), (ConfiguracaoApp.Proxy ? ConfiguracaoApp.ProxyServidor : "")); el.EmiteNF(NomeArquivoXML); break; #endregion case PadroesNFSe.GOVDIGITAL: #region GOV-Digital GovDigital govdig = new GovDigital((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, Empresas.Configuracoes[emp].X509Certificado, oDadosEnvLoteRps.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor); AssinaturaDigital adgovdig = new AssinaturaDigital(); adgovdig.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio); govdig.EmiteNF(NomeArquivoXML); break; #endregion case PadroesNFSe.EQUIPLANO: cabecMsg = "1"; break; case PadroesNFSe.NATALENSE: cabecMsg = "<cabecalho xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" versao=\"1\" xmlns=\"http://www.abrasf.org.br/ABRASF/arquivos/nfse.xsd\"><versaoDados>1</versaoDados></cabecalho>"; break; case PadroesNFSe.PRODATA: cabecMsg = "<cabecalho><versaoDados>2.01</versaoDados></cabecalho>"; break; case PadroesNFSe.VVISS: Servico = GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.VVISS); break; case PadroesNFSe.ELOTECH: #region EloTech EloTech elotech = new EloTech((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); elotech.EmiteNF(NomeArquivoXML); break; #endregion case PadroesNFSe.METROPOLIS: #region METROPOLIS Metropolis metropolis = new Metropolis((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); AssinaturaDigital metropolisdig = new AssinaturaDigital(); metropolisdig.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio); metropolis.EmiteNF(NomeArquivoXML); break; #endregion case PadroesNFSe.MGM: #region MGM MGM mgm = new MGM((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS); mgm.EmiteNF(NomeArquivoXML); break; #endregion case PadroesNFSe.CONSIST: #region Consist Consist consist = new Consist((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor); consist.EmiteNF(NomeArquivoXML); break; #endregion case PadroesNFSe.NOTAINTELIGENTE: #region Nota Inteligente wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado); if (oDadosEnvLoteRps.tpAmb == 1) { //envLoteRps = new NFe.Components.PClaudioMG.api_portClient(); } else { throw new Exception("Município de São Paulo-SP não dispõe de ambiente de homologação para envio de NFS-e em teste."); } #endregion break; case PadroesNFSe.FREIRE_INFORMATICA: cabecMsg = "<cabecalho xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"2.02\"><versaoDados>2.02</versaoDados></cabecalho>"; break; case PadroesNFSe.MEMORY: #region Memory Memory memory = new Memory((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor); AssinaturaDigital sigMem = new AssinaturaDigital(); sigMem.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio); memory.EmiteNF(NomeArquivoXML); break; #endregion case PadroesNFSe.CAMACARI_BA: cabecMsg = "<cabecalho><versaoDados>2.01</versaoDados><versao>2.01</versao></cabecalho>"; break; } if (IsInvocar(padraoNFSe)) { //Assinar o XML AssinaturaDigital ad = new AssinaturaDigital(); ad.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.InvocarNFSe(wsProxy, envLoteRps, NomeMetodoWS(Servico, oDadosEnvLoteRps.cMunicipio), cabecMsg, this, Propriedade.Extensao(Propriedade.TipoEnvio.EnvLoteRps).EnvioXML, //"-env-loterps", Propriedade.Extensao(Propriedade.TipoEnvio.EnvLoteRps).RetornoXML, //"-ret-loterps", padraoNFSe, Servico, securityProtocolType); /// /// grava o arquivo no FTP string filenameFTP = Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.EnvLoteRps).EnvioXML) + "\\" + Propriedade.Extensao(Propriedade.TipoEnvio.EnvLoteRps).RetornoXML); if (File.Exists(filenameFTP)) { new GerarXML(emp).XmlParaFTP(emp, filenameFTP); } } } catch (Exception ex) { try { //Gravar o arquivo de erro de retorno para o ERP, caso ocorra TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.EnvLoteRps).EnvioXML, Propriedade.ExtRetorno.RetEnvLoteRps_ERR, ex); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. //Wandrey 31/08/2011 } } finally { try { Functions.DeletarArquivo(NomeArquivoXML); } catch { //Se falhou algo na hora de deletar o XML de cancelamento de NFe, infelizmente //não posso fazer mais nada, o UniNFe vai tentar mandar o arquivo novamente para o webservice, pois ainda não foi excluido. //Wandrey 31/08/2011 } } }
/// <summary> /// Metodo responsável por invocar o serviço do WebService do SEFAZ /// </summary> /// <param name="oWSProxy">Objeto da classe construida do WSDL</param> /// <param name="oServicoWS">Objeto da classe de envio do XML</param> /// <param name="cMetodo">Método da classe de envio do XML que faz o envio</param> /// <param name="cabecMsg">Objeto da classe de cabecalho do serviço</param> /// <param name="oServicoNFe">Objeto do Serviço de envio da NFE do UniNFe</param> /// <param name="cFinalArqEnvio">string do final do arquivo a ser enviado. Sem a extensão ".xml"</param> /// <param name="cFinalArqRetorno">string do final do arquivo a ser gravado com o conteúdo do retorno. Sem a extensão ".xml"</param> /// <remarks> /// Autor: Wandrey Mundin Ferreira /// Data: 17/03/2010 /// </remarks> public void InvocarNFSe(WebServiceProxy oWSProxy, object oServicoWS, string cMetodo, string cabecMsg, object oServicoNFe, string cFinalArqEnvio, string cFinalArqRetorno, PadroesNFSe padraoNFSe, Servicos servicoNFSe) { int emp = Empresas.FindEmpresaByThread(); XmlDocument docXML = new XmlDocument(); // Definir o tipo de serviço da NFe Type typeServicoNFe = oServicoNFe.GetType(); // Resgatar o nome do arquivo XML a ser enviado para o webservice string XmlNfeDadosMsg = (string)(typeServicoNFe.InvokeMember("NomeArquivoXML", System.Reflection.BindingFlags.GetProperty, null, oServicoNFe, null)); // Exclui o Arquivo de Erro Functions.DeletarArquivo(Empresas.Configuracoes[emp].PastaXmlRetorno + "\\" + Functions.ExtrairNomeArq(XmlNfeDadosMsg, cFinalArqEnvio + ".xml") + cFinalArqRetorno + ".err"); // Validar o Arquivo XML ValidarXML validar = new ValidarXML(XmlNfeDadosMsg, Empresas.Configuracoes[emp].UnidadeFederativaCodigo); string cResultadoValidacao = validar.ValidarArqXML(XmlNfeDadosMsg); if (cResultadoValidacao != "") { switch (padraoNFSe) { case PadroesNFSe.ISSONLINE4R: break; case PadroesNFSe.SMARAPD: break; default: throw new Exception(cResultadoValidacao); } } // Montar o XML de Lote de envio de Notas fiscais docXML.Load(XmlNfeDadosMsg); // Definir Proxy if (ConfiguracaoApp.Proxy) { if (padraoNFSe != PadroesNFSe.BETHA) { oWSProxy.SetProp(oServicoWS, "Proxy", Proxy.DefinirProxy(ConfiguracaoApp.ProxyServidor, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyPorta)); } else { oWSProxy.Betha.Proxy = Proxy.DefinirProxy(ConfiguracaoApp.ProxyServidor, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyPorta); } } // Limpa a variável de retorno string strRetorno = string.Empty; //Vou mudar o timeout para evitar que demore a resposta e o uninfe aborte antes de recebe-la. Wandrey 17/09/2009 //Isso talvez evite de não conseguir o número do recibo se o serviço do SEFAZ estiver lento. if (padraoNFSe != PadroesNFSe.BETHA) { oWSProxy.SetProp(oServicoWS, "Timeout", 120000); } //Verificar antes se tem conexão com a internet, se não tiver já gera uma exceção no padrão já esperado pelo ERP if (ConfiguracaoApp.ChecarConexaoInternet) //danasa: 12/2013 { if (!Functions.IsConnectedToInternet()) { //Registrar o erro da validação para o sistema ERP throw new ExceptionSemInternet(ErroPadrao.FalhaInternet, "\r\nArquivo: " + XmlNfeDadosMsg); } } //Invocar o membro switch (padraoNFSe) { #region Padrão BETHA case PadroesNFSe.BETHA: switch (cMetodo) { case "ConsultarSituacaoLoteRps": strRetorno = oWSProxy.Betha.ConsultarSituacaoLoteRps(docXML, Empresas.Configuracoes[emp].AmbienteCodigo); break; case "ConsultarLoteRps": strRetorno = oWSProxy.Betha.ConsultarLoteRps(docXML, Empresas.Configuracoes[emp].AmbienteCodigo); break; case "CancelarNfse": strRetorno = oWSProxy.Betha.CancelarNfse(docXML, Empresas.Configuracoes[emp].AmbienteCodigo); break; case "ConsultarNfse": strRetorno = oWSProxy.Betha.ConsultarNfse(docXML, Empresas.Configuracoes[emp].AmbienteCodigo); break; case "ConsultarNfsePorRps": strRetorno = oWSProxy.Betha.ConsultarNfsePorRps(docXML, Empresas.Configuracoes[emp].AmbienteCodigo); break; case "RecepcionarLoteRps": strRetorno = oWSProxy.Betha.RecepcionarLoteRps(docXML, Empresas.Configuracoes[emp].AmbienteCodigo); break; } break; #endregion #region Padrão ISSONLINE case PadroesNFSe.ISSONLINE: int operacao; string senhaWs = Functions.GetMD5Hash(Empresas.Configuracoes[emp].SenhaWS); switch (servicoNFSe) { case Servicos.NFSeRecepcionarLoteRps: operacao = 1; break; case Servicos.NFSeCancelar: operacao = 2; break; default: operacao = 3; break; } strRetorno = oWSProxy.InvokeStr(oServicoWS, cMetodo, new object[] { Convert.ToSByte(operacao), Empresas.Configuracoes[emp].UsuarioWS, senhaWs, docXML.OuterXml }); break; #endregion #region Padrão Blumenau-SC case PadroesNFSe.BLUMENAU_SC: strRetorno = oWSProxy.InvokeStr(oServicoWS, cMetodo, new object[] { 1, docXML.OuterXml }); break; #endregion #region Padrão Paulistana case PadroesNFSe.PAULISTANA: strRetorno = oWSProxy.InvokeStr(oServicoWS, cMetodo, new object[] { 1, docXML.OuterXml }); break; #endregion #region Demais padrões case PadroesNFSe.TECNOSISTEMAS: strRetorno = oWSProxy.InvokeStr(oServicoWS, cMetodo, new object[] { docXML.OuterXml, cabecMsg.ToString() }); break; case PadroesNFSe.SMARAPD: if (cMetodo == "nfdEntradaCancelar") { strRetorno = oWSProxy.InvokeStr(oServicoWS, cMetodo, new object[] { Empresas.Configuracoes[emp].UsuarioWS, TFunctions.EncryptSHA1(Empresas.Configuracoes[emp].SenhaWS), docXML.OuterXml }); } else { strRetorno = oWSProxy.InvokeStr(oServicoWS, cMetodo, new object[] { Empresas.Configuracoes[emp].UsuarioWS, TFunctions.EncryptSHA1(Empresas.Configuracoes[emp].SenhaWS), Empresas.Configuracoes[emp].UnidadeFederativaCodigo, docXML.OuterXml }); } break; case PadroesNFSe.ISSWEB: string versao = docXML.DocumentElement.GetElementsByTagName("Versao")[0].InnerText; string cnpj = docXML.DocumentElement.GetElementsByTagName("CNPJCPFPrestador")[0].InnerText; strRetorno = oWSProxy.InvokeStr(oServicoWS, cMetodo, new object[] { cnpj, docXML.OuterXml, versao }); break; case PadroesNFSe.GINFES: case PadroesNFSe.THEMA: case PadroesNFSe.SALVADOR_BA: case PadroesNFSe.CANOAS_RS: case PadroesNFSe.ISSNET: default: if (string.IsNullOrEmpty(cabecMsg)) { strRetorno = oWSProxy.InvokeStr(oServicoWS, cMetodo, new object[] { docXML.OuterXml }); } else { strRetorno = oWSProxy.InvokeStr(oServicoWS, cMetodo, new object[] { cabecMsg.ToString(), docXML.OuterXml }); } break; #endregion } #region gerar arquivos assinados(somente debug) #if DEBUG string path = Application.StartupPath + "\\teste_assintura\\"; if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } StreamWriter sw = new StreamWriter(path + "nfseMsg_assinado.xml", true); sw.Write(docXML.OuterXml); sw.Close(); StreamWriter sw2 = new StreamWriter(path + "cabecMsg_assinado.xml", true); sw2.Write(cabecMsg.ToString()); sw2.Close(); #endif #endregion //Atualizar o atributo do serviço da Nfe com o conteúdo retornado do webservice do sefaz typeServicoNFe.InvokeMember("vStrXmlRetorno", System.Reflection.BindingFlags.SetProperty, null, oServicoNFe, new object[] { strRetorno }); // Registra o retorno de acordo com o status obtido if (cFinalArqEnvio != string.Empty && cFinalArqRetorno != string.Empty) { typeServicoNFe.InvokeMember("XmlRetorno", System.Reflection.BindingFlags.InvokeMethod, null, oServicoNFe, new Object[] { cFinalArqEnvio + ".xml", cFinalArqRetorno + ".xml" }); } }
/// <summary> /// Metodo responsável por invocar o serviço do WebService do SEFAZ /// </summary> /// <param name="wsProxy">Objeto da classe construida do WSDL</param> /// <param name="servicoWS">Objeto da classe de envio do XML</param> /// <param name="metodo">Método da classe de envio do XML que faz o envio</param> /// <param name="cabecMsg">Objeto da classe de cabecalho do serviço</param> /// <param name="servicoNFe">Objeto do Serviço de envio da NFE do UniNFe</param> /// <param name="finalArqEnvio">string do final do arquivo a ser enviado. Sem a extensão ".xml"</param> /// <param name="finalArqRetorno">string do final do arquivo a ser gravado com o conteúdo do retorno. Sem a extensão ".xml"</param> /// <remarks> /// Autor: Wandrey Mundin Ferreira /// Data: 17/03/2010 /// </remarks> public void InvocarNFSe(WebServiceProxy wsProxy, object servicoWS, string metodo, string cabecMsg, object servicoNFe, string finalArqEnvio, string finalArqRetorno, PadroesNFSe padraoNFSe, Servicos servicoNFSe, SecurityProtocolType securityProtocolType) { int emp = Empresas.FindEmpresaByThread(); finalArqEnvio = Functions.ExtractExtension(finalArqEnvio); finalArqRetorno = Functions.ExtractExtension(finalArqRetorno); XmlDocument docXML = new XmlDocument(); // Definir o tipo de serviço da NFe Type typeServicoNFe = servicoNFe.GetType(); // Resgatar o nome do arquivo XML a ser enviado para o webservice string XmlNfeDadosMsg = (string)(typeServicoNFe.InvokeMember("NomeArquivoXML", System.Reflection.BindingFlags.GetProperty, null, servicoNFe, null)); // Exclui o Arquivo de Erro Functions.DeletarArquivo(Empresas.Configuracoes[emp].PastaXmlRetorno + "\\" + Functions.ExtrairNomeArq(XmlNfeDadosMsg, finalArqEnvio + ".xml") + finalArqRetorno + ".err"); // Validar o Arquivo XML ValidarXML validar = new ValidarXML(XmlNfeDadosMsg, Empresas.Configuracoes[emp].UnidadeFederativaCodigo, false); string cResultadoValidacao = validar.ValidarArqXML(XmlNfeDadosMsg); if (cResultadoValidacao != "") { switch (padraoNFSe) { case PadroesNFSe.SMARAPD: break; default: throw new Exception(cResultadoValidacao); } } //Definir novamente o protocolo de segurança, pois é uma propriedade estática e o seu valor pode ser alterado antes do envio. Wandrey 03/05/2016 ServicePointManager.SecurityProtocol = securityProtocolType; // Montar o XML de Lote de envio de Notas fiscais docXML.Load(XmlNfeDadosMsg); // Definir Proxy if (ConfiguracaoApp.Proxy && wsProxy != null) { switch (padraoNFSe) { case PadroesNFSe.BETHA: wsProxy.Betha.Proxy = Proxy.DefinirProxy(ConfiguracaoApp.ProxyServidor, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyPorta, ConfiguracaoApp.DetectarConfiguracaoProxyAuto); break; default: wsProxy.SetProp(servicoWS, "Proxy", Proxy.DefinirProxy(ConfiguracaoApp.ProxyServidor, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyPorta, ConfiguracaoApp.DetectarConfiguracaoProxyAuto)); break; } } // Limpa a variável de retorno string strRetorno = string.Empty; //Vou mudar o timeout para evitar que demore a resposta e o uninfe aborte antes de recebe-la. Wandrey 17/09/2009 //Isso talvez evite de não conseguir o número do recibo se o serviço do SEFAZ estiver lento. if (wsProxy != null) { switch (padraoNFSe) { case PadroesNFSe.NOTAINTELIGENTE: case PadroesNFSe.BETHA: break; default: wsProxy.SetProp(servicoWS, "Timeout", 120000); break; } } //Invocar o membro switch (padraoNFSe) { #region Padrão BETHA case PadroesNFSe.BETHA: switch (metodo) { case "ConsultarSituacaoLoteRps": strRetorno = wsProxy.Betha.ConsultarSituacaoLoteRps(docXML, Empresas.Configuracoes[emp].AmbienteCodigo); break; case "ConsultarLoteRps": strRetorno = wsProxy.Betha.ConsultarLoteRps(docXML, Empresas.Configuracoes[emp].AmbienteCodigo); break; case "CancelarNfse": strRetorno = wsProxy.Betha.CancelarNfse(docXML, Empresas.Configuracoes[emp].AmbienteCodigo); break; case "ConsultarNfse": strRetorno = wsProxy.Betha.ConsultarNfse(docXML, Empresas.Configuracoes[emp].AmbienteCodigo); break; case "ConsultarNfsePorRps": strRetorno = wsProxy.Betha.ConsultarNfsePorRps(docXML, Empresas.Configuracoes[emp].AmbienteCodigo); break; case "RecepcionarLoteRps": strRetorno = wsProxy.Betha.RecepcionarLoteRps(docXML, Empresas.Configuracoes[emp].AmbienteCodigo); break; } break; #endregion Padrão BETHA #region NOTAINTELIGENTE case PadroesNFSe.NOTAINTELIGENTE: //NFe.Components.PClaudioMG.api_portClient wsClaudio = (NFe.Components.PClaudioMG.api_portClient)servicoWS; switch (servicoNFSe) { case Servicos.NFSeRecepcionarLoteRps: //strRetorno = wsClaudio.RecepcionarLoteRps(docXML.OuterXml.ToString()); break; } //strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { docXML.OuterXml.ToString() }); break; #endregion NOTAINTELIGENTE #region Padrão ISSONLINE case PadroesNFSe.ISSONLINE_ASSESSORPUBLICO: int operacao; string senhaWs = Functions.GetMD5Hash(Empresas.Configuracoes[emp].SenhaWS); switch (servicoNFSe) { case Servicos.NFSeRecepcionarLoteRps: operacao = 1; break; case Servicos.NFSeCancelar: operacao = 2; break; default: operacao = 3; break; } strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { Convert.ToSByte(operacao), Empresas.Configuracoes[emp].UsuarioWS, senhaWs, docXML.OuterXml }); break; #endregion Padrão ISSONLINE #region Padrão Blumenau-SC case PadroesNFSe.BLUMENAU_SC: strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { 1, docXML.OuterXml }); break; #endregion Padrão Blumenau-SC #region Padrão Paulistana case PadroesNFSe.PAULISTANA: strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { 1, docXML.OuterXml }); break; #endregion Padrão Paulistana #region TECNOSISTEMAS case PadroesNFSe.TECNOSISTEMAS: strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { docXML.OuterXml, cabecMsg.ToString() }); break; #endregion TECNOSISTEMAS #region SMARAPD case PadroesNFSe.SMARAPD: if (metodo == "nfdEntradaCancelar") { strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { Empresas.Configuracoes[emp].UsuarioWS, TFunctions.EncryptSHA1(Empresas.Configuracoes[emp].SenhaWS), docXML.OuterXml }); } else if (metodo == "nfdSaida") { strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { Empresas.Configuracoes[emp].UsuarioWS, TFunctions.EncryptSHA1(Empresas.Configuracoes[emp].SenhaWS), Empresas.Configuracoes[emp].UnidadeFederativaCodigo.ToString(), docXML.OuterXml }); } else if (metodo == "urlNfd") { strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { Convert.ToInt32(docXML.GetElementsByTagName("codigoMunicipio")[0].InnerText), Convert.ToInt32(docXML.GetElementsByTagName("numeroNfd")[0].InnerText), Convert.ToInt32(docXML.GetElementsByTagName("serieNfd")[0].InnerText), docXML.GetElementsByTagName("inscricaoMunicipal")[0].InnerText }); } else { strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { Empresas.Configuracoes[emp].UsuarioWS, TFunctions.EncryptSHA1(Empresas.Configuracoes[emp].SenhaWS), Empresas.Configuracoes[emp].UnidadeFederativaCodigo, docXML.OuterXml }); } break; #endregion SMARAPD #region ISSWEB case PadroesNFSe.ISSWEB: string versao = docXML.DocumentElement.GetElementsByTagName("Versao")[0].InnerText; string cnpj = docXML.DocumentElement.GetElementsByTagName("CNPJCPFPrestador")[0].InnerText; strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { cnpj, docXML.OuterXml, versao }); break; #endregion ISSWEB #region NA_INFORMATICA case PadroesNFSe.NA_INFORMATICA: switch (servicoNFSe) { #region Recepcionar Lote RPS - Assíncrono case Servicos.NFSeRecepcionarLoteRps: //if (Empresas.Configuracoes[emp].AmbienteCodigo == (int)TipoAmbiente.taProducao) //{ // ((Components.PCorumbaMS.NfseWSService)servicoWS).ClientCertificates.Add(Empresas.Configuracoes[emp].X509Certificado); // Components.PCorumbaMS.RecepcionarLoteRps dadosEnvio = new Components.PCorumbaMS.RecepcionarLoteRps(); // Components.PCorumbaMS.RecepcionarLoteRpsResponse dadosRetorno = new Components.PCorumbaMS.RecepcionarLoteRpsResponse(); // dadosEnvio.EnviarLoteRpsEnvio = docXML.OuterXml.ToString(); // dadosRetorno = ((Components.PCorumbaMS.NfseWSService)servicoWS).RecepcionarLoteRps(dadosEnvio); // strRetorno = dadosRetorno.EnviarLoteRpsResposta; //} //else //{ // ((Components.HCorumbaMS.NfseWSService)servicoWS).ClientCertificates.Add(Empresas.Configuracoes[emp].X509Certificado); // Components.HCorumbaMS.RecepcionarLoteRps dadosEnvio = new Components.HCorumbaMS.RecepcionarLoteRps(); // Components.HCorumbaMS.RecepcionarLoteRpsResponse dadosRetorno = new Components.HCorumbaMS.RecepcionarLoteRpsResponse(); // dadosEnvio.EnviarLoteRpsEnvio = docXML.OuterXml.ToString(); // dadosRetorno = ((Components.HCorumbaMS.NfseWSService)servicoWS).RecepcionarLoteRps(dadosEnvio); // strRetorno = dadosRetorno.EnviarLoteRpsResposta; //} break; #endregion Recepcionar Lote RPS - Assíncrono #region Recepcionar Lote RPS - Síncrono case Servicos.NFSeRecepcionarLoteRpsSincrono: //if (Empresas.Configuracoes[emp].AmbienteCodigo == (int)TipoAmbiente.taProducao) //{ // ((Components.PCorumbaMS.NfseWSService)servicoWS).ClientCertificates.Add(Empresas.Configuracoes[emp].X509Certificado); // Components.PCorumbaMS.RecepcionarLoteRpsSincrono dadosEnvio = new Components.PCorumbaMS.RecepcionarLoteRpsSincrono(); // Components.PCorumbaMS.RecepcionarLoteRpsSincronoResponse dadosRetorno = new Components.PCorumbaMS.RecepcionarLoteRpsSincronoResponse(); // dadosEnvio.EnviarLoteRpsSincronoEnvio = docXML.OuterXml.ToString(); // dadosRetorno = ((Components.PCorumbaMS.NfseWSService)servicoWS).RecepcionarLoteRpsSincrono(dadosEnvio); // strRetorno = dadosRetorno.EnviarLoteRpsSincronoResposta; //} //else //{ // ((Components.HCorumbaMS.NfseWSService)servicoWS).ClientCertificates.Add(Empresas.Configuracoes[emp].X509Certificado); // Components.HCorumbaMS.RecepcionarLoteRpsSincrono dadosEnvio = new Components.HCorumbaMS.RecepcionarLoteRpsSincrono(); // Components.HCorumbaMS.RecepcionarLoteRpsSincronoResponse dadosRetorno = new Components.HCorumbaMS.RecepcionarLoteRpsSincronoResponse(); // dadosEnvio.EnviarLoteRpsSincronoEnvio = docXML.OuterXml.ToString(); // dadosRetorno = ((Components.HCorumbaMS.NfseWSService)servicoWS).RecepcionarLoteRpsSincrono(dadosEnvio); // strRetorno = dadosRetorno.EnviarLoteRpsSincronoResposta; //} break; #endregion Recepcionar Lote RPS - Síncrono #region Cancelar RPS case Servicos.NFSeCancelar: //if (Empresas.Configuracoes[emp].AmbienteCodigo == (int)TipoAmbiente.taProducao) //{ // ((Components.PCorumbaMS.NfseWSService)servicoWS).ClientCertificates.Add(Empresas.Configuracoes[emp].X509Certificado); // Components.PCorumbaMS.CancelarNfse dadosEnvio = new Components.PCorumbaMS.CancelarNfse(); // Components.PCorumbaMS.CancelarNfseResponse dadosRetorno = new Components.PCorumbaMS.CancelarNfseResponse(); // dadosEnvio.CancelarNfseEnvio = docXML.OuterXml.ToString(); // dadosRetorno = ((Components.PCorumbaMS.NfseWSService)servicoWS).CancelarNfse(dadosEnvio); // strRetorno = dadosRetorno.CancelarNfseResposta; //} //else //{ // ((Components.HCorumbaMS.NfseWSService)servicoWS).ClientCertificates.Add(Empresas.Configuracoes[emp].X509Certificado); // Components.HCorumbaMS.CancelarNfse dadosEnvio = new Components.HCorumbaMS.CancelarNfse(); // Components.HCorumbaMS.CancelarNfseResponse dadosRetorno = new Components.HCorumbaMS.CancelarNfseResponse(); // dadosEnvio.CancelarNfseEnvio = docXML.OuterXml.ToString(); // dadosRetorno = ((Components.HCorumbaMS.NfseWSService)servicoWS).CancelarNfse(dadosEnvio); // strRetorno = dadosRetorno.CancelarNfseResposta; //} break; #endregion Cancelar RPS #region Consultar Lote RPS case Servicos.NFSeConsultarLoteRps: //if (Empresas.Configuracoes[emp].AmbienteCodigo == (int)TipoAmbiente.taProducao) //{ // ((Components.PCorumbaMS.NfseWSService)servicoWS).ClientCertificates.Add(Empresas.Configuracoes[emp].X509Certificado); // Components.PCorumbaMS.ConsultarLoteRps dadosEnvio = new Components.PCorumbaMS.ConsultarLoteRps(); // Components.PCorumbaMS.ConsultarLoteRpsResponse dadosRetorno = new Components.PCorumbaMS.ConsultarLoteRpsResponse(); // dadosEnvio.ConsultarLoteRpsEnvio = docXML.OuterXml.ToString(); // dadosRetorno = ((Components.PCorumbaMS.NfseWSService)servicoWS).ConsultarLoteRps(dadosEnvio); // strRetorno = dadosRetorno.ConsultarLoteRpsResposta; //} //else //{ // ((Components.HCorumbaMS.NfseWSService)servicoWS).ClientCertificates.Add(Empresas.Configuracoes[emp].X509Certificado); // Components.HCorumbaMS.ConsultarLoteRps dadosEnvio = new Components.HCorumbaMS.ConsultarLoteRps(); // Components.HCorumbaMS.ConsultarLoteRpsResponse dadosRetorno = new Components.HCorumbaMS.ConsultarLoteRpsResponse(); // dadosEnvio.ConsultarLoteRpsEnvio = docXML.OuterXml.ToString(); // dadosRetorno = ((Components.HCorumbaMS.NfseWSService)servicoWS).ConsultarLoteRps(dadosEnvio); // strRetorno = dadosRetorno.ConsultarLoteRpsResposta; //} break; #endregion Consultar Lote RPS #region Consulta Situação Nfse case Servicos.NFSeConsultar: //if (Empresas.Configuracoes[emp].AmbienteCodigo == (int)TipoAmbiente.taProducao) //{ // ((Components.PCorumbaMS.NfseWSService)servicoWS).ClientCertificates.Add(Empresas.Configuracoes[emp].X509Certificado); // Components.PCorumbaMS.ConsultarNfsePorFaixa dadosEnvio = new Components.PCorumbaMS.ConsultarNfsePorFaixa(); // Components.PCorumbaMS.ConsultarNfsePorFaixaResponse dadosRetorno = new Components.PCorumbaMS.ConsultarNfsePorFaixaResponse(); // dadosEnvio.ConsultarNfsePorFaixaEnvio = docXML.OuterXml.ToString(); // dadosRetorno = ((Components.PCorumbaMS.NfseWSService)servicoWS).ConsultarNfsePorFaixa(dadosEnvio); // strRetorno = dadosRetorno.ConsultarNfsePorFaixaResposta; //} //else //{ // ((Components.HCorumbaMS.NfseWSService)servicoWS).ClientCertificates.Add(Empresas.Configuracoes[emp].X509Certificado); // Components.HCorumbaMS.ConsultarNfsePorFaixa dadosEnvio = new Components.HCorumbaMS.ConsultarNfsePorFaixa(); // Components.HCorumbaMS.ConsultarNfsePorFaixaResponse dadosRetorno = new Components.HCorumbaMS.ConsultarNfsePorFaixaResponse(); // dadosEnvio.ConsultarNfsePorFaixaEnvio = docXML.OuterXml.ToString(); // dadosRetorno = ((Components.HCorumbaMS.NfseWSService)servicoWS).ConsultarNfsePorFaixa(dadosEnvio); // strRetorno = dadosRetorno.ConsultarNfsePorFaixaResposta; //} break; #endregion Consulta Situação Nfse #region Consulta Situação Nfse por RPS case Servicos.NFSeConsultarPorRps: //if (Empresas.Configuracoes[emp].AmbienteCodigo == (int)TipoAmbiente.taProducao) //{ // ((Components.PCorumbaMS.NfseWSService)servicoWS).ClientCertificates.Add(Empresas.Configuracoes[emp].X509Certificado); // Components.PCorumbaMS.ConsultarNfsePorRps dadosEnvio = new Components.PCorumbaMS.ConsultarNfsePorRps(); // Components.PCorumbaMS.ConsultarNfsePorRpsResponse dadosRetorno = new Components.PCorumbaMS.ConsultarNfsePorRpsResponse(); // dadosEnvio.ConsultarNfsePorRpsEnvio = docXML.OuterXml.ToString(); // dadosRetorno = ((Components.PCorumbaMS.NfseWSService)servicoWS).ConsultarNfsePorRps(dadosEnvio); // strRetorno = dadosRetorno.ConsultarNfsePorRpsResposta; //} //else //{ // ((Components.HCorumbaMS.NfseWSService)servicoWS).ClientCertificates.Add(Empresas.Configuracoes[emp].X509Certificado); // Components.HCorumbaMS.ConsultarNfsePorRps dadosEnvio = new Components.HCorumbaMS.ConsultarNfsePorRps(); // Components.HCorumbaMS.ConsultarNfsePorRpsResponse dadosRetorno = new Components.HCorumbaMS.ConsultarNfsePorRpsResponse(); // dadosEnvio.ConsultarNfsePorRpsEnvio = docXML.OuterXml.ToString(); // dadosRetorno = ((Components.HCorumbaMS.NfseWSService)servicoWS).ConsultarNfsePorRps(dadosEnvio); // strRetorno = dadosRetorno.ConsultarNfsePorRpsResposta; //} break; #endregion Consulta Situação Nfse por RPS } break; #endregion NA_INFORMATICA #region ABASE case PadroesNFSe.ABASE: if (servicoNFSe == Servicos.NFSeConsultarPorRps) { goto default; } else { XmlNode xmlRetorno = wsProxy.InvokeXML(servicoWS, metodo, new object[] { cabecMsg.ToString(), docXML.OuterXml }); strRetorno = xmlRetorno.OuterXml; } break; #endregion ABASE case PadroesNFSe.LEXSOM: XmlNode result = wsProxy.InvokeXML(servicoWS, metodo, new object[] { docXML }); strRetorno = result.OuterXml; break; default: #region Demais padrões if (string.IsNullOrEmpty(cabecMsg)) { strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { docXML.OuterXml }); } else { strRetorno = wsProxy.InvokeStr(servicoWS, metodo, new object[] { cabecMsg.ToString(), docXML.OuterXml }); } break; #endregion Demais padrões } #region gerar arquivos assinados(somente debug) #if DEBUG string path = Application.StartupPath + "\\teste_assintura\\"; if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } StreamWriter sw = new StreamWriter(path + "nfseMsg_assinado.xml", true); sw.Write(docXML.OuterXml); sw.Close(); StreamWriter sw2 = new StreamWriter(path + "cabecMsg_assinado.xml", true); sw2.Write(cabecMsg.ToString()); sw2.Close(); #endif #endregion gerar arquivos assinados(somente debug) //Atualizar o atributo do serviço da Nfe com o conteúdo retornado do webservice do sefaz typeServicoNFe.InvokeMember("vStrXmlRetorno", System.Reflection.BindingFlags.SetProperty, null, servicoNFe, new object[] { strRetorno }); // Registra o retorno de acordo com o status obtido if (finalArqEnvio != string.Empty && finalArqRetorno != string.Empty) { typeServicoNFe.InvokeMember("XmlRetorno", System.Reflection.BindingFlags.InvokeMethod, null, servicoNFe, new Object[] { finalArqEnvio + ".xml", finalArqRetorno + ".xml" }); } }
public WebServiceProxy(int cUF, string arquivoWSDL, X509Certificate2 Certificado, PadroesNFSe padraoNFSe, bool taHomologacao, Servicos servico) { this.ArquivoWSDL = arquivoWSDL; this.PadraoNFSe = padraoNFSe; this.servico = servico; this.taHomologacao = taHomologacao; //Definir o certificado digital que será utilizado na conexão com os serviços this.oCertificado = Certificado; //Confirmar a solicitação SSL automaticamente ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CertificateValidation); //Problema identificado com a Prefeitura de Porto Alegre - RS Renan - 09/02/2015 //Esta propriedade "Expect100Continue" por default é definida como "true" ou seja, o cliente esperará obter uma resposta 100-Continue do servidor para indicar que o cliente deve //enviar os dados a ser lançadas. Esse mecanismo permite que os clientes evitem enviar grandes quantidades de dados através da rede quando o servidor, com base em cabeçalhos de solicitação, //pretende descartar a solicitação. //Já esta propriedade marcada como "false", quando a solicitação inicial é enviada para o servidor, inclui os dados. Se, após ler os cabeçalhos de solicitação, //o servidor requer autenticação e deve enviar uma resposta 401, o cliente deve enviar novamente os dados com os cabeçalhos apropriadas de autenticação. ServicePointManager.Expect100Continue = false; //Obter a descrição do serviço (WSDL) this.DescricaoServico(cUF, taHomologacao, arquivoWSDL); this.NomeClasseWS = null; this.NomeMetodoWS = null; if (this.serviceDescription.Services != null) { this.NomeClasseWS = ((System.Web.Services.Description.Service)this.serviceDescription.Services[0]).Name.Replace(" ", ""); } if (this.serviceDescription.Bindings != null) { foreach (var xx in this.serviceDescription.Bindings) { if (((System.Web.Services.Description.Binding)xx).Operations != null) { if (((System.Web.Services.Description.Binding)xx).Operations.Count > 0) { this.NomeMetodoWS = new string[((System.Web.Services.Description.Binding)xx).Operations.Count]; for (int n = 0; n < ((System.Web.Services.Description.Binding)xx).Operations.Count; ++n) { this.NomeMetodoWS[n] = ((System.Web.Services.Description.Binding)xx).Operations[n].Name; } } } } } //Gerar e compilar a classe this.GerarClasse(); }