public void Enviar(Entidade_CCe ObjEnt, out Entidade_CCe objDados) { docTran = new XmlDocument(); docEnviNfe = new XmlDocument(); ns = new XmlSerializerNamespaces(); Settings = new XmlWriterSettings(); xmlStatus = new XmlSerializer(typeof(CCe.TEvento)); EntCarta = new Entidade_CCe(); EntCarta = PesquisarCartaEletronica(); docEnviNfe.PreserveWhitespace = false; docEnviNfe.LoadXml(CabecalhoEvento(EntCarta.Id_CCe_Lote)); nodeListNfe = docEnviNfe.GetElementsByTagName("envEvento"); if (EntCarta.ItemCCe != null) { foreach (var item in EntCarta.ItemCCe) { nEventoCarta = new CCe.TEvento(item); Settings.Encoding = UTF8Encoding.UTF8; Settings.NewLineHandling = NewLineHandling.None; Settings.Indent = true; Settings.IndentChars = ""; ns.Add(string.Empty, "http://www.portalfiscal.inf.br/nfe"); Sw = new UTF8StringWriter(); Wx = XmlWriter.Create(Sw, Settings); xmlStatus.Serialize(Sw, nEventoCarta, ns); string xmlGer = Sw.ToString(); docTran.LoadXml(xmlGer); docTran.PreserveWhitespace = false; CertEmpresa = AssinaturaDigital.FindCertOnStore(item.id_loja); docTran = AssinaturaDigital.SignXml(docTran, CertEmpresa, "infEvento"); nodeListCarregarNfe = docTran.GetElementsByTagName("evento", "http://www.portalfiscal.inf.br/nfe"); nodeListNfe.Item(0).AppendChild(docEnviNfe.ImportNode(nodeListCarregarNfe.Item(0), true)); } try { EnviarXml(docEnviNfe, CertEmpresa, ref EntCarta); objDados = ObjEnt; } catch (Exception Ex) { Mensagem.MensagemErro(Mensagem.TipoMensagem.CartaEletronica, "Saida", Ex.Message.ToString()); objDados = null; } } else { objDados = null; } }
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 static MDFEletronico Assina(this MDFEletronico mdfe) { if (mdfe == null) { throw new ArgumentException("Erro de assinatura, MDFe esta null"); } var modeloDocumentoFiscal = (int)mdfe.InfMDFe.Ide.Mod; var tipoEmissao = (int)mdfe.InfMDFe.Ide.TpEmis; var codigoNumerico = mdfe.InfMDFe.Ide.CMDF; var codigoIbgeUf = (int)mdfe.InfMDFe.Ide.CUF; var dataEHoraEmissao = mdfe.InfMDFe.Ide.DhEmi; var documentoUnico = long.Parse(mdfe.InfMDFe.Emit.CNPJ); var numeroDocumento = mdfe.InfMDFe.Ide.NMDF; int serie = mdfe.InfMDFe.Ide.Serie; var gerarChave = new GerarChaveFiscal(modeloDocumentoFiscal, tipoEmissao, codigoNumerico, codigoIbgeUf, dataEHoraEmissao, documentoUnico, numeroDocumento, serie); mdfe.InfMDFe.Id = "MDFe" + gerarChave.Chave; mdfe.InfMDFe.Versao = VersaoServico.Versao100; mdfe.InfMDFe.Ide.CDV = gerarChave.DigitoVerificador; var assinatura = AssinaturaDigital.Assina(mdfe, mdfe.InfMDFe.Id, MDFeConfiguracao.X509Certificate2); mdfe.Signature = assinatura; return(mdfe); }
/// <summary> /// Efetua a validação de qualquer XML, NFE, Cancelamento, Inutilização, etc..., e retorna se está ok ou não /// </summary> /// <param name="Arquivo">Nome do arquivo XML a ser validado e assinado</param> /// <param name="PastaValidar">Nome da pasta onde fica os arquivos a serem validados</param> /// <param name="PastaXMLErro">Nome da pasta onde é para gravar os XML´s validados que apresentaram erro.</param> /// <param name="PastaXMLRetorno">Nome da pasta de retorno onde será gravado o XML com o status da validação</param> /// <param name="Certificado">Certificado digital a ser utilizado na validação</param> /// <by>Wandrey Mundin Ferreira</by> /// <date>28/05/2009</date> public void ValidarAssinarXML(string Arquivo, Core.Empresa empresa) { //Assinar o XML se tiver tag para assinar AssinaturaDigital oAD = new AssinaturaDigital(); oAD.Assinar(Arquivo, empresa, empresa.CodigoMunicipio); }
public static void Assinar(this inutCTe inutCTe) { var configuracaoServico = ConfiguracaoServico.Instancia; inutCTe.Signature = AssinaturaDigital.Assina(inutCTe, inutCTe.infInut.Id, configuracaoServico.X509Certificate2); }
private void Button_Clicked(object sender, EventArgs e) { Certificado cert = new Certificado(); X509Certificate2 XSertifica = cert.BuscaNome("Andri"); XmlDocument doc = new XmlDocument(); doc.Load("/storage/emulated/0/certificados/NotaTeste.xml"); String xml = doc.InnerXml; AssinaturaDigital ass = new AssinaturaDigital(); //int i = ass.Assinar(xml, "infNFe", XSertifica); String nfe40Schema = App.Manager.nfe40(); AssetManager assets = App.ats; XmlReaderSettings Settings = new XmlReaderSettings(); Settings.Schemas.Add("http://www.portalfiscal.inf.br/nfe", XmlReader.Create(assets.Open("Schemas/nfe_v4.00.xsd"))); Settings.Schemas.Add("http://www.portalfiscal.inf.br/nfe", XmlReader.Create(assets.Open("Schemas/leiauteNFe_v4.00.xsd"))); Settings.Schemas.Add("http://www.w3.org/2000/09/xmldsig#", XmlReader.Create(assets.Open("Schemas/xmldsig-core-schema_v1.01.xsd"))); Settings.Schemas.Add("http://www.portalfiscal.inf.br/nfe", XmlReader.Create(assets.Open("Schemas/tiposBasico_v4.00.xsd"))); Settings.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack); Settings.ValidationType = ValidationType.Schema; try { XmlReader validator = XmlReader.Create("/storage/emulated/0/certificados/xml.xml", Settings); Montagem_lote("/storage/emulated/0/certificados/xml.xml", "12345.xml", 1234); while (validator.Read()) { } } catch (Exception EX) { string ex = EX.ToString(); } }
private void AssinarXMLLote(int emp) { AssinaturaDigital ad = new AssinaturaDigital(); XmlNodeList loteNodeList = ConteudoXML.GetElementsByTagName("loteEventos"); foreach (XmlNode loteEventosNode in loteNodeList) { XmlElement loteEventosElement = (XmlElement)loteEventosNode; XmlNodeList eventoNodeList = ConteudoXML.GetElementsByTagName("evento"); foreach (XmlNode eventoNode in eventoNodeList) { XmlElement eventoElement = (XmlElement)eventoNode; XmlNodeList reinfNodeList = eventoElement.GetElementsByTagName("Reinf"); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(reinfNodeList[0].OuterXml); ad.Assinar(xmlDoc, emp, 991, AlgorithmType.Sha256, true); XmlNode newNode = xmlDoc.ChildNodes[0]; eventoNode.RemoveChild(reinfNodeList[0]); eventoNode.AppendChild(ConteudoXML.ImportNode(xmlDoc.DocumentElement, true)); } } }
public void Enviar(Entidade_Inutilizacao ObjEnt, out Entidade_Inutilizacao objDados) { docTran = new XmlDocument(); ns = new XmlSerializerNamespaces(); Settings = new XmlWriterSettings(); xmlStatus = new XmlSerializer(typeof(inutNFe.TInutNFe)); eObjInut = ObjEnt; InutilNfe = new inutNFe.TInutNFe(ObjEnt); eObjInut.ChaveAcessoNfe = InutilNfe.infInut.Id.Replace("ID", ""); // E DEFINIDO O TIPO DE LEITURA DO XML Settings.Encoding = UTF8Encoding.UTF8; Settings.NewLineHandling = NewLineHandling.None; Settings.Indent = true; Settings.IndentChars = ""; ns.Add(string.Empty, "http://www.portalfiscal.inf.br/nfe"); Sw = new UTF8StringWriter(); Wx = XmlWriter.Create(Sw, Settings); xmlStatus.Serialize(Sw, InutilNfe, ns); string xmlGer = Sw.ToString(); docTran.LoadXml(xmlGer); docTran.PreserveWhitespace = false; CertEmpresa = AssinaturaDigital.FindCertOnStore(ObjEnt.Loja); EnviarXml(AssinaturaDigital.SignXml(docTran, CertEmpresa, "infInut"), CertEmpresa, ref ObjEnt); objDados = ObjEnt; }
public static MDFEletronico Assina(this MDFEletronico mdfe, EventHandler <string> eventHandlerChaveMdfe = null, object quemInvocouEventoChaveMDFe = null) { if (mdfe == null) { throw new ArgumentException("Erro de assinatura, MDFe esta null"); } var modeloDocumentoFiscal = mdfe.InfMDFe.Ide.Mod; var tipoEmissao = (int)mdfe.InfMDFe.Ide.TpEmis; var codigoNumerico = mdfe.InfMDFe.Ide.CMDF; var estado = mdfe.InfMDFe.Ide.CUF; var dataEHoraEmissao = mdfe.InfMDFe.Ide.DhEmi; var cnpj = mdfe.InfMDFe.Emit.CNPJ; var numeroDocumento = mdfe.InfMDFe.Ide.NMDF; int serie = mdfe.InfMDFe.Ide.Serie; var dadosChave = ChaveFiscal.ObterChave(estado, dataEHoraEmissao, cnpj, modeloDocumentoFiscal, serie, numeroDocumento, tipoEmissao, codigoNumerico); mdfe.InfMDFe.Id = "MDFe" + dadosChave.Chave; if (eventHandlerChaveMdfe != null) { eventHandlerChaveMdfe.Invoke(quemInvocouEventoChaveMDFe, dadosChave.Chave); } mdfe.InfMDFe.Versao = MDFeConfiguracao.VersaoWebService.VersaoLayout; mdfe.InfMDFe.Ide.CDV = dadosChave.DigitoVerificador; var assinatura = AssinaturaDigital.Assina(mdfe, mdfe.InfMDFe.Id, MDFeConfiguracao.X509Certificate2); mdfe.Signature = assinatura; return(mdfe); }
/// <summary> /// Assina um objeto CTe /// </summary> /// <param name="cte"></param> /// <param name="configuracaoServico"></param> /// <returns>Retorna um objeto do tipo CTe assinado</returns> public static void Assina(this CteEletronica cte, ConfiguracaoServico configuracaoServico = null) { if (cte == null) { throw new ArgumentNullException("cte"); } var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia; var modeloDocumentoFiscal = cte.infCte.ide.mod; var tipoEmissao = (int)cte.infCte.ide.tpEmis; var codigoNumerico = cte.infCte.ide.cCT; var estado = cte.infCte.ide.cUF; var dataEHoraEmissao = cte.infCte.ide.dhEmi; var cnpj = cte.infCte.emit.CNPJ; var numeroDocumento = cte.infCte.ide.nCT; int serie = cte.infCte.ide.serie; var dadosChave = ChaveFiscal.ObterChave(estado, dataEHoraEmissao, cnpj, modeloDocumentoFiscal, serie, numeroDocumento, tipoEmissao, codigoNumerico); cte.infCte.Id = "CTe" + dadosChave.Chave; cte.infCte.versao = configServico.VersaoLayout; cte.infCte.ide.cDV = dadosChave.DigitoVerificador; var assinatura = AssinaturaDigital.Assina(cte, cte.infCte.Id, configServico.X509Certificate2); cte.Signature = assinatura; }
public void Enviar(Entidade_NotaFiscal ObjEnt, out Entidade_NotaFiscal objDados) { docTran = new XmlDocument(); ns = new XmlSerializerNamespaces(); Settings = new XmlWriterSettings(); xmlStatus = new XmlSerializer(typeof(ConsReciNfe.TConsSitNFe)); eNotaFiscal = ObjEnt; SitNfe = new ConsReciNfe.TConsSitNFe(ObjEnt); Settings.Encoding = UTF8Encoding.UTF8; Settings.NewLineHandling = NewLineHandling.None; Settings.Indent = true; Settings.IndentChars = ""; ns.Add(string.Empty, "http://www.portalfiscal.inf.br/nfe"); Sw = new UTF8StringWriter(); Wx = XmlWriter.Create(Sw, Settings); xmlStatus.Serialize(Sw, SitNfe, ns); string xmlGer = Sw.ToString(); docTran.LoadXml(xmlGer); docTran.PreserveWhitespace = false; CertEmpresa = AssinaturaDigital.FindCertOnStore(ObjEnt.Loja); EnviarXml(docTran, CertEmpresa, ref eNotaFiscal); objDados = null; }
private XmlDocument CriarLoteEAssinar(NFe nf, string idLote, bool NFCe = false) { XmlDocument lote, xmlNFe; EnviNFe enviNFe = new EnviNFe(); enviNFe.Versao = nf.InfNFe.Versao; enviNFe.IndSinc = "0"; enviNFe.IdLote = idLote; lote = enviNFe.ToXmlDocument(); if (!AssinaturaDigital.Assinar(nf.ToXmlString(), "infNFe", Certificado.X509Certificado)) { throw new Exception(AssinaturaDigital.Erro); } xmlNFe = AssinaturaDigital.XMLDoc; if (NFCe) { AdicionarQRCode(GerarQRCode(xmlNFe), WebServiceNFCe.EnderecoQRCode, xmlNFe); } XmlNode node = lote.ImportNode(xmlNFe.DocumentElement, true); lote.DocumentElement.AppendChild(node); lote.PreserveWhitespace = true; xmlNFe.PreserveWhitespace = true; lote.Save(ObterCaminhoArquivo($"{enviNFe.IdLote}{SufixoLote}.xml")); xmlNFe.Save(ObterCaminhoArquivo($"{nf.InfNFe.Id.Substring(3)}{SufixoNFe}.xml")); return(lote); }
public override void Execute() { int emp = Empresas.FindEmpresaByThread(); try { dadosPedInut = new DadosPedInut(emp); PedInut(emp); //Definir o objeto do WebService WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, dadosPedInut.cUF, dadosPedInut.tpAmb, dadosPedInut.tpEmis, 0); System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(dadosPedInut.cUF, dadosPedInut.tpAmb, dadosPedInut.tpEmis, Servico); //Criar objetos das classes dos serviços dos webservices do SEFAZ object oInutilizacao = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);//NomeClasseWS(Servico, dadosPedInut.cUF)); object oCabecMsg = wsProxy.CriarObjeto(NomeClasseCabecWS(dadosPedInut.cUF, Servico)); //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg wsProxy.SetProp(oCabecMsg, TpcnResources.cUF.ToString(), dadosPedInut.cUF.ToString()); wsProxy.SetProp(oCabecMsg, TpcnResources.versaoDados.ToString(), dadosPedInut.versao); //Criar objeto da classe de assinatura digita AssinaturaDigital oAD = new AssinaturaDigital(); //Assinar o XML oAD.Assinar(ConteudoXML, emp, Convert.ToInt32(dadosPedInut.cUF)); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.Invocar(wsProxy, oInutilizacao, wsProxy.NomeMetodoWS[0],//NomeMetodoWS(Servico, dadosPedInut.cUF), oCabecMsg, this, Propriedade.Extensao(Propriedade.TipoEnvio.PedInu).EnvioXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedInu).RetornoXML, true, securityProtocolType); //Ler o retorno do webservice this.LerRetornoInut(); } catch (Exception ex) { try { //Gravar o arquivo de erro de retorno para o ERP, caso ocorra TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedInu).EnvioXML, Propriedade.ExtRetorno.Inu_ERR, ex); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. //Wandrey 09/03/2010 } } }
/// <summary> /// Assina um objeto evento /// </summary> /// <param name="eventoCTe"></param> /// <returns>Retorna um objeto do tipo evento assinado</returns> public static void Assina(this eventoCTe eventoCTe) { if (eventoCTe.infEvento.Id == null) { throw new Exception("Não é possível assinar um objeto evento sem sua respectiva Id!"); } eventoCTe.Signature = AssinaturaDigital.Assina(eventoCTe, eventoCTe.infEvento.Id, ConfiguracaoServico.Instancia.X509Certificate2); }
public void Enviar(Entidade_Status ObjEnt, out Entidade_Status objDados) { Entidade_Status eRetStatus = new Entidade_Status(); eStatus = new Entidade_Status(); mLog = new Model_LogNfe(); NFuncoes = new NegocioFuncoesGerais(); eStatus = ObjEnt; docTran = new XmlDocument(); ns = new XmlSerializerNamespaces(); Settings = new XmlWriterSettings(); xmlStatus = new XmlSerializer(typeof(ConsStatServ.TConsStatServ)); try { //Passando os dados para a Class que vai ser serelizada cStatus = new ConsStatServ.TConsStatServ(eStatus); // E DEFINIDO O TIPO DE LEITURA DO XML Settings.Encoding = UTF8Encoding.UTF8; Settings.NewLineHandling = NewLineHandling.None; Settings.Indent = true; Settings.IndentChars = ""; ns.Add(string.Empty, "http://www.portalfiscal.inf.br/nfe"); Sw = new UTF8StringWriter(); Wx = XmlWriter.Create(Sw, Settings); xmlStatus.Serialize(Sw, cStatus, ns); string xmlGer = Sw.ToString(); docTran.LoadXml(xmlGer); docTran.PreserveWhitespace = false; if (nFG.ValidarEstruturaXml(docTran.OuterXml, "consStatServ_v3.10")) { CertEmpresa = AssinaturaDigital.FindCertOnStore(eStatus.Loja); EnviarXml(docTran, CertEmpresa, ref eRetStatus); objDados = eRetStatus; } else { objDados = null; } } catch (Exception Ex) { Mensagem.MensagemErro(Mensagem.TipoMensagem.Nfe, "Saida", Ex.Message.ToString()); mLog.InsertErroLog(NFuncoes.TiraCampos(Ex.Message.ToString())); objDados = null; } }
public void LiberarRecurso() { AssinaturaDigital = new AssinaturaDigital(); Certificado = new CertificadoDigital(); ValidarSchemaDocFiscal = new ValidarDocumentoFiscal(); NumRecibo = ""; ProtocoloAutorizacao = ""; IDToken = ""; CSC = ""; Erro = ""; Mensagem = ""; }
/// <summary> /// Assinar /// </summary> /// <param name="entity"></param> /// <returns></returns> private void Assinar(NFe entity) { try { var assinatura = AssinaturaDigital.AssinarNFe(entity, entity.infNFe.Id, _certificadoDigital); entity.Signature = assinatura; } catch (Exception ex) { Utils.TraceException(ex, "Erro ao assinar arquivo Xml"); throw new FalhaAssinaturaException("Erro ao assinar arquivo Xml", ex); } }
protected void Button3_Click(object sender, EventArgs e) { AssinaturaDigital assinNFe = new AssinaturaDigital(); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.PreserveWhitespace = false; xmlDoc.Load(@"c:\temp\RpsNFe.xml"); X509Certificate2 certifMt = assinNFe.getCertificado("1E7C6E50619C3AE2"); // serial number do certificado da multi if (certifMt == null) { ScriptManager.RegisterStartupScript(this, GetType(), "alert", "alert('Certificado não localizado')", true); return; } Int32 result = assinNFe.Assinar(xmlDoc.OuterXml, "InfRps", certifMt); if (result != 0) { ScriptManager.RegisterStartupScript(this, GetType(), "alert", "alert(' ocorreu o erro número " + result.ToString() + " verifique : " + " 1 - Erro: Problema ao acessar o certificado digital - %exceção% " + " 2 - Problemas no certificado digital " + " 3 - XML mal formado + exceção " + " 4 - A tag de assinatura inexiste " + " 5 - A tag de assinatura não é unica " + " 6 - Erro Ao assinar o documento - ID deve ser string " + " 7 - Erro: Ao assinar o documento - ')", true); return; } assinNFe.XMLDocAssinado.Save(@"c:\temp\RPsNFeAssin.xml"); /* * ginfesNFe.ServiceGinfesImplClient wsNFe = new ginfesNFe.ServiceGinfesImplClient(); * wsNFe.ClientCredentials.UserName.UserName = "******"; * wsNFe.ClientCredentials.UserName.Password = "******"; * wsNFe.RecepcionarLoteRps(assinNFe.XMLDocAssinado.OuterXml); */ //XmlDocument xmlDoc = new XmlDocument(); //xmlDoc.PreserveWhitespace = false; xmlDoc.Load(@"c:\temp\RPsNFeAssin.xml"); ginfesNFe.ServiceGinfesImplClient wsNFe = new ginfesNFe.ServiceGinfesImplClient(); wsNFe.RecepcionarLoteRps(xmlDoc.OuterXml); }
/// <summary> /// Assinar /// </summary> /// <param name="entity"></param> /// <returns></returns> private void Assinar(evento entity) { try { if (entity.infEvento.Id == null) { throw new Exception("Não é possível assinar um objeto evento sem sua respectiva Id!"); } var assinatura = AssinaturaDigital.AssinarNFe(entity, entity.infEvento.Id, _certificadoDigital); entity.Signature = assinatura; } catch (Exception ex) { Utils.TraceException(ex, "Erro ao assinar arquivo Xml"); throw new FalhaAssinaturaException("Erro ao assinar arquivo Xml", ex); } }
public void Enviar(Entidade_DownloadNFe ObjEnt, out Entidade_DownloadNFe objDados) { Entidade_Status eRetStatus = new Entidade_Status(); eDownloadNFe = new Entidade_DownloadNFe(); mLog = new Model_LogNfe(); NFuncoes = new NegocioFuncoesGerais(); docTran = new XmlDocument(); ns = new XmlSerializerNamespaces(); Settings = new XmlWriterSettings(); xmlStatus = new XmlSerializer(typeof(TDownloadNFe)); try { //Passando os dados para a Class que vai ser serelizada ObjDownloadNFeEnv = new TDownloadNFe(ObjEnt); // E DEFINIDO O TIPO DE LEITURA DO XML Settings.Encoding = UTF8Encoding.UTF8; Settings.NewLineHandling = NewLineHandling.None; Settings.Indent = true; Settings.IndentChars = ""; ns.Add(string.Empty, "http://www.portalfiscal.inf.br/nfe"); Sw = new UTF8StringWriter(); Wx = XmlWriter.Create(Sw, Settings); xmlStatus.Serialize(Sw, ObjDownloadNFeEnv, ns); string xmlGer = Sw.ToString(); docTran.LoadXml(xmlGer); docTran.PreserveWhitespace = false; CertEmpresa = AssinaturaDigital.FindCertOnStore(ObjEnt.id_loja); EnviarXml(docTran, CertEmpresa, ref ObjEnt); objDados = null; } catch (Exception Ex) { Mensagem.MensagemErro(Mensagem.TipoMensagem.Status, "DownloaNFe", Ex.Message.ToString()); mLog.InsertErroLog(NFuncoes.TiraCampos(Ex.Message.ToString())); objDados = null; } }
public void Enviar(Entidade_ConsNFDest ObjEnt, out Entidade_ConsNFDest objDados) { Entidade_ConsNFDest ObjRetManifestacao = new Entidade_ConsNFDest(); ObjRetManifestacao.id_loja = 1; NFuncoes = new NegocioFuncoesGerais(); docTran = new XmlDocument(); ns = new XmlSerializerNamespaces(); Settings = new XmlWriterSettings(); mLog = new Model_LogNfe(); xmlStatus = new XmlSerializer(typeof(TConsNFeDest)); try { ObjConDest = new TConsNFeDest(1); Settings.Encoding = UTF8Encoding.UTF8; Settings.NewLineHandling = NewLineHandling.None; Settings.Indent = true; Settings.IndentChars = ""; ns.Add(string.Empty, "http://www.portalfiscal.inf.br/nfe"); Sw = new UTF8StringWriter(); Wx = XmlWriter.Create(Sw, Settings); xmlStatus.Serialize(Sw, ObjConDest, ns); string xmlGer = Sw.ToString(); docTran.LoadXml(xmlGer); docTran.PreserveWhitespace = false; CertEmpresa = AssinaturaDigital.FindCertOnStore(1); EnviarXml(docTran, CertEmpresa, ref ObjRetManifestacao); objDados = ObjRetManifestacao; } catch (Exception Ex) { Mensagem.MensagemErro(Mensagem.TipoMensagem.Manifestacao, "Manifestação", Ex.Message.ToString()); mLog.InsertErroLog(NFuncoes.TiraCampos(Ex.Message.ToString())); objDados = null; } }
public bool IsNotaFiscalValida(NotaFiscal notaFiscal, string cscId, string csc, X509Certificate2 certificado) { var refUri = "#NFe" + notaFiscal.Identificacao.Chave; var digVal = ""; var nFeNamespaceName = "http://www.portalfiscal.inf.br/nfe"; var xml = Regex.Replace(XmlUtil.GerarXmlLoteNFe(notaFiscal, nFeNamespaceName), "<motDesICMS>1</motDesICMS>", string.Empty); XmlNode node = AssinaturaDigital.AssinarLoteComUmaNota(xml, refUri, certificado, ref digVal); try { string newNodeXml; if (notaFiscal.Identificacao.Modelo == Modelo.Modelo65) { var qrCode = QrCodeUtil.GerarQrCodeNFe(notaFiscal.Identificacao.Chave, notaFiscal.Destinatario, digVal, notaFiscal.Identificacao.Ambiente, notaFiscal.Identificacao.DataHoraEmissao, notaFiscal.TotalNFe.IcmsTotal.ValorTotalNFe.ToString("F", CultureInfo.InvariantCulture), notaFiscal.TotalNFe.IcmsTotal.ValorTotalIcms.ToString("F", CultureInfo.InvariantCulture), cscId, csc, notaFiscal.Identificacao.TipoEmissao); newNodeXml = node.InnerXml.Replace("<qrCode />", "<qrCode>" + qrCode + "</qrCode>"); } else { newNodeXml = node.InnerXml; } var document = new XmlDocument(); document.LoadXml(newNodeXml); node = document.DocumentElement; ValidadorXml.ValidarXml(node.OuterXml, "enviNFe_v4.00.xsd"); return(true); } catch (Exception e) { log.Error(e); return(false); } }
public void Enviar(Entidade_Manifestacao ObjEnt, out Entidade_Manifestacao objDados) { docTran = new XmlDocument(); docEnviNfe = new XmlDocument(); ns = new XmlSerializerNamespaces(); Settings = new XmlWriterSettings(); xmlStatus = new XmlSerializer(typeof(TEnvEvento)); EntManifestacao = new Entidade_Manifestacao(); //EntManifestacao = PesquisaDados(); envManifestacao = new TEnvEvento(ObjEnt); objDados = null; Settings.Encoding = UTF8Encoding.UTF8; Settings.NewLineHandling = NewLineHandling.None; Settings.Indent = true; Settings.IndentChars = ""; ns.Add(string.Empty, "http://www.portalfiscal.inf.br/nfe"); try { Sw = new UTF8StringWriter(); Wx = XmlWriter.Create(Sw, Settings); xmlStatus.Serialize(Sw, envManifestacao, ns); string xmlGer = Sw.ToString(); docTran.LoadXml(xmlGer); docTran.PreserveWhitespace = false; CertEmpresa = AssinaturaDigital.FindCertOnStore(1); EnviarXml(AssinaturaDigital.SignXml(docTran, CertEmpresa, "infEvento"), CertEmpresa, ref ObjEnt); objDados = ObjEnt; } catch (Exception Ex) { Mensagem.MensagemErro(Mensagem.TipoMensagem.Cancelamento, "Envia Manifestação", Ex.Message.ToString()); objDados = null; } }
public void Enviar(Entidade_Recibo ObjEnt, out Entidade_Recibo objDados) { ReciNFe = new TConsReciNFe(); docTran = new XmlDocument(); ns = new XmlSerializerNamespaces(); Settings = new XmlWriterSettings(); xmlStatus = new XmlSerializer(typeof(TConsReciNFe)); ReciNFe = new TConsReciNFe(ObjEnt.Recibo, ObjEnt.TpAmb); Settings.Encoding = UTF8Encoding.UTF8; Settings.NewLineHandling = NewLineHandling.None; Settings.Indent = true; Settings.IndentChars = ""; ns.Add(string.Empty, "http://www.portalfiscal.inf.br/nfe"); Sw = new UTF8StringWriter(); Wx = XmlWriter.Create(Sw, Settings); xmlStatus.Serialize(Sw, ReciNFe, ns); string xmlGer = Sw.ToString(); docTran.LoadXml(xmlGer); docTran.PreserveWhitespace = false; CertEmpresa = AssinaturaDigital.FindCertOnStore(ObjEnt.Loja); try { EnviarXml(docTran, CertEmpresa, ref ObjEnt); objDados = ObjEnt; } catch (Exception Ex) { Mensagem.MensagemErro(Mensagem.TipoMensagem.RetAutoriz, "Saida", Ex.Message.ToString()); objDados = null; } }
/// <summary> /// Envia o XML do registro do DPEC para o SCE (Sistema de Contingência Eletronica) /// </summary> /// <remarks> /// Autor: Wandrey Mundin Ferreira /// Data: 19/10/2010 /// </remarks> public override void RecepcaoDPEC() { int emp = new FindEmpresaThread(Thread.CurrentThread).Index; //Definir o serviço que será executado para a classe Servico = Servicos.EnviarDPEC; try { //Ler o XML para pegar parâmetros de envio LerXML oLer = new LerXML(); oLer.EnvDPEC(emp, NomeArquivoXML); //danasa 21/10/2010 if (vXmlNfeDadosMsgEhXML) //danasa 12-9-2009 { //Definir o objeto do WebService WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servicos.EnviarDPEC, emp, oLer.dadosEnvDPEC.cUF, oLer.dadosEnvDPEC.tpAmb, oLer.dadosEnvDPEC.tpEmis); //Criar objetos das classes dos serviços dos webservices do SEFAZ object oRecepcaoDPEC = wsProxy.CriarObjeto("SCERecepcaoRFB"); object oCabecMsg = wsProxy.CriarObjeto("sceCabecMsg"); //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg //oWSProxy.SetProp(oCabecMsg, "cUF", oLer.dadosEnvDPEC.cUF.ToString()); wsProxy.SetProp(oCabecMsg, "versaoDados", ConfiguracaoApp.VersaoXMLEnvDPEC); //Criar objeto da classe de assinatura digita AssinaturaDigital oAD = new AssinaturaDigital(); //Assinar o XML oAD.Assinar(NomeArquivoXML, "infDPEC", Empresa.Configuracoes[emp].X509Certificado); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.Invocar(wsProxy, oRecepcaoDPEC, "sceRecepcaoDPEC", oCabecMsg, this); //Ler o retorno LerRetDPEC(); //Gravar o XML retornado pelo WebService do SEFAZ na pasta de retorno para o ERP //Tem que ser feito neste ponto, pois somente aqui terminamos todo o processo oGerarXML.XmlRetorno(ExtXml.EnvDPEC, ExtXmlRet.retDPEC, vStrXmlRetorno); } else { // Gerar o XML de solicitacao de situacao do servico a partir do TXT gerado pelo ERP oGerarXML.EnvioDPEC(Path.GetFileNameWithoutExtension(NomeArquivoXML) + ".xml", oLer.dadosEnvDPEC); } } catch (Exception ex) { var ExtRet = vXmlNfeDadosMsgEhXML ? ExtXml.EnvDPEC : ExtXml.EnvDPEC_TXT; try { //Gravar o arquivo de erro de retorno para o ERP, caso ocorra oAux.GravarArqErroServico(NomeArquivoXML, ExtRet, ExtXmlRet.retDPEC_ERR, ex); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. //Wandrey 09/03/2010 } } finally { try { oAux.DeletarArquivo(NomeArquivoXML); } catch { //Se falhou algo na hora de deletar o XML de cancelamento de NFe, infelizmente //não posso fazer mais nada, o UniNFe vai tentar mandar o arquivo novamente para o webservice, pois ainda não foi excluido. //Wandrey 09/03/2010 } } }
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 } } }
public override void Execute() { int emp = Empresas.FindEmpresaByThread(); //Definir o serviço que será executado para a classe Servico = Servicos.NFSeRecepcionarLoteRps; try { Functions.DeletarArquivo(Empresas.Configuracoes[emp].PastaXmlRetorno + "\\" + Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.EnvLoteRps).EnvioXML) + Propriedade.ExtRetorno.RetEnvLoteRps_ERR); Functions.DeletarArquivo(Empresas.Configuracoes[emp].PastaXmlErro + "\\" + NomeArquivoXML); oDadosEnvLoteRps = new DadosEnvLoteRps(emp); EnvLoteRps(emp, NomeArquivoXML); //Criar objetos das classes dos serviços dos webservices do SEFAZ PadroesNFSe padraoNFSe = Functions.PadraoNFSe(oDadosEnvLoteRps.cMunicipio); WebServiceProxy wsProxy = null; object envLoteRps = null; if (IsUtilizaCompilacaoWs(padraoNFSe)) { wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, oDadosEnvLoteRps.cMunicipio, oDadosEnvLoteRps.tpAmb, oDadosEnvLoteRps.tpEmis, padraoNFSe); if (wsProxy != null) { envLoteRps = wsProxy.CriarObjeto(wsProxy.NomeClasseWS); } } System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(oDadosEnvLoteRps.cMunicipio, oDadosEnvLoteRps.tpAmb, oDadosEnvLoteRps.tpEmis, padraoNFSe, Servico); string cabecMsg = ""; switch (padraoNFSe) { case PadroesNFSe.IPM: //código da cidade da receita federal, este arquivo pode ser encontrado em ~\uninfe\doc\Codigos_Cidades_Receita_Federal.xls</para> //O código da cidade está hardcoded pois ainda está sendo usado apenas para campo mourão IPM ipm = new IPM(Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, oDadosEnvLoteRps.cMunicipio, Empresas.Configuracoes[emp].PastaXmlRetorno); if (ConfiguracaoApp.Proxy) { ipm.Proxy = Proxy.DefinirProxy(ConfiguracaoApp.ProxyServidor, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyPorta); } ipm.EmitirNF(NomeArquivoXML, (TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo); break; case PadroesNFSe.GINFES: if (oDadosEnvLoteRps.cMunicipio == 4125506) //São José dos Pinhais - PR { cabecMsg = "<ns2:cabecalho versao=\"3\" xmlns:ns2=\"http://nfe.sjp.pr.gov.br/cabecalho_v03.xsd\"><versaoDados>3</versaoDados></ns2:cabecalho>"; } else { cabecMsg = "<ns2:cabecalho versao=\"3\" xmlns:ns2=\"http://www.ginfes.com.br/cabecalho_v03.xsd\"><versaoDados>3</versaoDados></ns2:cabecalho>"; } break; case PadroesNFSe.BETHA: wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado); wsProxy.Betha = new Betha(); break; case PadroesNFSe.ABACO: case PadroesNFSe.CANOAS_RS: cabecMsg = "<cabecalho versao=\"201001\"><versaoDados>V2010</versaoDados></cabecalho>"; break; case PadroesNFSe.BLUMENAU_SC: EncryptAssinatura(); break; case PadroesNFSe.BHISS: cabecMsg = "<cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"1.00\"><versaoDados >1.00</versaoDados ></cabecalho>"; Servico = GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.BHISS); break; case PadroesNFSe.WEBISS: cabecMsg = "<cabecalho xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"1.00\"><versaoDados >1.00</versaoDados ></cabecalho>"; break; case PadroesNFSe.PAULISTANA: wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado); if (oDadosEnvLoteRps.tpAmb == 1) { envLoteRps = new Components.PSaoPauloSP.LoteNFe(); } else { throw new Exception("Município de São Paulo-SP não dispõe de ambiente de homologação para envio de NFS-e em teste."); } EncryptAssinatura(); break; case PadroesNFSe.NA_INFORMATICA: Servico = GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.VVISS); wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado); if (oDadosEnvLoteRps.tpAmb == 1) { envLoteRps = new Components.PCorumbaMS.NfseWSService(); } else { envLoteRps = new Components.HCorumbaMS.NfseWSService(); } break; case PadroesNFSe.PORTOVELHENSE: cabecMsg = "<cabecalho versao=\"2.00\" xmlns:ns2=\"http://www.w3.org/2000/09/xmldsig#\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\"><versaoDados>2.00</versaoDados></cabecalho>"; break; case PadroesNFSe.DSF: EncryptAssinatura(); break; case PadroesNFSe.TECNOSISTEMAS: cabecMsg = "<?xml version=\"1.0\" encoding=\"utf-8\"?><cabecalho xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" versao=\"20.01\" xmlns=\"http://www.nfse-tecnos.com.br/nfse.xsd\"><versaoDados>20.01</versaoDados></cabecalho>"; break; case PadroesNFSe.FINTEL: cabecMsg = "<cabecalho xmlns=\"http://iss.pontagrossa.pr.gov.br/Arquivos/nfse.xsd\" versao=\"1.00\"><versaoDados >1.00</versaoDados ></cabecalho>"; Servico = GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.FINTEL); break; case PadroesNFSe.ACTCON: cabecMsg = "<cabecalho><versaoDados>2.01</versaoDados></cabecalho>"; Servico = GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.ACTCON); break; case PadroesNFSe.SYSTEMPRO: #region SystemPro SystemPro syspro = new SystemPro((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, Empresas.Configuracoes[emp].X509Certificado); AssinaturaDigital ad = new AssinaturaDigital(); ad.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio); syspro.EmiteNF(NomeArquivoXML); break; #endregion case PadroesNFSe.SIGCORP_SIGISS: #region SigCorp SigCorp sigcorp = new SigCorp((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio); sigcorp.EmiteNF(NomeArquivoXML); break; #endregion case PadroesNFSe.FIORILLI: #region Fiorilli Fiorilli fiorilli = new Fiorilli((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor); AssinaturaDigital ass = new AssinaturaDigital(); ass.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio); fiorilli.EmiteNF(NomeArquivoXML); break; #endregion case PadroesNFSe.SIMPLISS: #region Simpliss SimplISS simpliss = new SimplISS((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor); AssinaturaDigital sign = new AssinaturaDigital(); sign.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio); simpliss.EmiteNF(NomeArquivoXML); break; #endregion case PadroesNFSe.CONAM: #region Conam Conam conam = new Conam((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS); conam.EmiteNF(NomeArquivoXML); break; #endregion case PadroesNFSe.RLZ_INFORMATICA: #region RLZ Rlz_Informatica rlz = new Rlz_Informatica((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio); rlz.EmiteNF(NomeArquivoXML); break; #endregion case PadroesNFSe.EGOVERNE: #region E-Governe EGoverne egoverne = new EGoverne((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); AssinaturaDigital assEGovoverne = new AssinaturaDigital(); assEGovoverne.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio); egoverne.EmiteNF(NomeArquivoXML); break; #endregion case PadroesNFSe.EL: #region E&L EL el = new EL((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, (ConfiguracaoApp.Proxy ? ConfiguracaoApp.ProxyUsuario : ""), (ConfiguracaoApp.Proxy ? ConfiguracaoApp.ProxySenha : ""), (ConfiguracaoApp.Proxy ? ConfiguracaoApp.ProxyServidor : "")); el.EmiteNF(NomeArquivoXML); break; #endregion case PadroesNFSe.GOVDIGITAL: #region GOV-Digital GovDigital govdig = new GovDigital((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, Empresas.Configuracoes[emp].X509Certificado, oDadosEnvLoteRps.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor); AssinaturaDigital adgovdig = new AssinaturaDigital(); adgovdig.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio); govdig.EmiteNF(NomeArquivoXML); break; #endregion case PadroesNFSe.EQUIPLANO: cabecMsg = "1"; break; case PadroesNFSe.NATALENSE: cabecMsg = "<cabecalho xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" versao=\"1\" xmlns=\"http://www.abrasf.org.br/ABRASF/arquivos/nfse.xsd\"><versaoDados>1</versaoDados></cabecalho>"; break; case PadroesNFSe.PRODATA: cabecMsg = "<cabecalho><versaoDados>2.01</versaoDados></cabecalho>"; break; case PadroesNFSe.VVISS: Servico = GetTipoServicoSincrono(Servico, NomeArquivoXML, PadroesNFSe.VVISS); break; case PadroesNFSe.ELOTECH: #region EloTech EloTech elotech = new EloTech((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); elotech.EmiteNF(NomeArquivoXML); break; #endregion case PadroesNFSe.METROPOLIS: #region METROPOLIS Metropolis metropolis = new Metropolis((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor, Empresas.Configuracoes[emp].X509Certificado); AssinaturaDigital metropolisdig = new AssinaturaDigital(); metropolisdig.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio); metropolis.EmiteNF(NomeArquivoXML); break; #endregion case PadroesNFSe.MGM: #region MGM MGM mgm = new MGM((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS); mgm.EmiteNF(NomeArquivoXML); break; #endregion case PadroesNFSe.CONSIST: #region Consist Consist consist = new Consist((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor); consist.EmiteNF(NomeArquivoXML); break; #endregion case PadroesNFSe.NOTAINTELIGENTE: #region Nota Inteligente wsProxy = new WebServiceProxy(Empresas.Configuracoes[emp].X509Certificado); if (oDadosEnvLoteRps.tpAmb == 1) { //envLoteRps = new NFe.Components.PClaudioMG.api_portClient(); } else { throw new Exception("Município de São Paulo-SP não dispõe de ambiente de homologação para envio de NFS-e em teste."); } #endregion break; case PadroesNFSe.FREIRE_INFORMATICA: cabecMsg = "<cabecalho xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://www.abrasf.org.br/nfse.xsd\" versao=\"2.02\"><versaoDados>2.02</versaoDados></cabecalho>"; break; case PadroesNFSe.MEMORY: #region Memory Memory memory = new Memory((TipoAmbiente)Empresas.Configuracoes[emp].AmbienteCodigo, Empresas.Configuracoes[emp].PastaXmlRetorno, oDadosEnvLoteRps.cMunicipio, Empresas.Configuracoes[emp].UsuarioWS, Empresas.Configuracoes[emp].SenhaWS, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyServidor); AssinaturaDigital sigMem = new AssinaturaDigital(); sigMem.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio); memory.EmiteNF(NomeArquivoXML); break; #endregion case PadroesNFSe.CAMACARI_BA: cabecMsg = "<cabecalho><versaoDados>2.01</versaoDados><versao>2.01</versao></cabecalho>"; break; } if (IsInvocar(padraoNFSe)) { //Assinar o XML AssinaturaDigital ad = new AssinaturaDigital(); ad.Assinar(NomeArquivoXML, emp, oDadosEnvLoteRps.cMunicipio); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.InvocarNFSe(wsProxy, envLoteRps, NomeMetodoWS(Servico, oDadosEnvLoteRps.cMunicipio), cabecMsg, this, Propriedade.Extensao(Propriedade.TipoEnvio.EnvLoteRps).EnvioXML, //"-env-loterps", Propriedade.Extensao(Propriedade.TipoEnvio.EnvLoteRps).RetornoXML, //"-ret-loterps", padraoNFSe, Servico, securityProtocolType); /// /// grava o arquivo no FTP string filenameFTP = Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.EnvLoteRps).EnvioXML) + "\\" + Propriedade.Extensao(Propriedade.TipoEnvio.EnvLoteRps).RetornoXML); if (File.Exists(filenameFTP)) { new GerarXML(emp).XmlParaFTP(emp, filenameFTP); } } } catch (Exception ex) { try { //Gravar o arquivo de erro de retorno para o ERP, caso ocorra TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.EnvLoteRps).EnvioXML, Propriedade.ExtRetorno.RetEnvLoteRps_ERR, ex); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. //Wandrey 31/08/2011 } } finally { try { Functions.DeletarArquivo(NomeArquivoXML); } catch { //Se falhou algo na hora de deletar o XML de cancelamento de NFe, infelizmente //não posso fazer mais nada, o UniNFe vai tentar mandar o arquivo novamente para o webservice, pois ainda não foi excluido. //Wandrey 31/08/2011 } } }
public MensagemRetornoEventoCancelamento CancelarNotaFiscal(string ufEmitente, CodigoUfIbge codigoUf, Ambiente ambiente, string cnpjEmitente, string chaveNFe, string protocoloAutorizacao, Modelo modeloNota, string justificativa) { try { var infEvento = new TEventoInfEvento(); infEvento.cOrgao = UfToTCOrgaoIBGEConversor.GetTCOrgaoIBGE(ufEmitente); infEvento.tpAmb = (XmlSchemas.NfeRecepcaoEvento.Cancelamento.Envio.TAmb)(int) ambiente; infEvento.Item = cnpjEmitente; infEvento.ItemElementName = XmlSchemas.NfeRecepcaoEvento.Cancelamento.Envio.ItemChoiceType.CNPJ; infEvento.chNFe = chaveNFe; infEvento.dhEvento = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:sszzz"); infEvento.tpEvento = TEventoInfEventoTpEvento.Item110111; infEvento.nSeqEvento = "1"; infEvento.verEvento = TEventoInfEventoVerEvento.Item100; infEvento.detEvento = new TEventoInfEventoDetEvento(); infEvento.detEvento.versao = TEventoInfEventoDetEventoVersao.Item100; infEvento.detEvento.descEvento = TEventoInfEventoDetEventoDescEvento.Cancelamento; infEvento.detEvento.nProt = protocoloAutorizacao; infEvento.detEvento.xJust = justificativa; infEvento.Id = "ID110111" + chaveNFe + "01"; var evento = new TEvento(); evento.versao = "1.00"; evento.infEvento = infEvento; var envioEvento = new TEnvEvento(); envioEvento.versao = "1.00"; envioEvento.idLote = "1"; envioEvento.evento = new TEvento[] { evento }; var xml = XmlUtil.Serialize(envioEvento, "http://www.portalfiscal.inf.br/nfe"); var certificado = _certificadoService.GetX509Certificate2(); XmlNode node = AssinaturaDigital.AssinarEvento(xml, "#" + infEvento.Id, certificado); //var resultadoValidacao = ValidadorXml.ValidarXml(node.OuterXml, "envEventoCancNFe_v1.00.xsd"); var servico = _serviceFactory.GetService(modeloNota, ambiente, Servico.CANCELAMENTO, codigoUf, certificado); var client = (NFeRecepcaoEvento4SoapClient)servico.SoapClient; var result = client.nfeRecepcaoEvento(node); var retorno = (TRetEnvEvento)XmlUtil.Deserialize <TRetEnvEvento>(result.OuterXml); if (retorno.cStat.Equals("128")) { var retEvento = retorno.retEvento; if (retEvento.Count() > 0) { var retInfEvento = retEvento[0].infEvento; if (retInfEvento.cStat.Equals("135")) { var procEvento = new Proc.TProcEvento(); TEnvEvento envEvento = (TEnvEvento)XmlUtil.Deserialize <TEnvEvento>(node.OuterXml); var eventoSerialized = XmlUtil.Serialize(envEvento.evento[0], ""); procEvento.evento = (Proc.TEvento)XmlUtil.Deserialize <Proc.TEvento>(eventoSerialized); var retEventoSerialized = XmlUtil.Serialize(retEvento[0], ""); procEvento.retEvento = (Proc.TRetEvento)XmlUtil.Deserialize <Proc.TRetEvento>(retEventoSerialized); procEvento.versao = "1.00"; var procSerialized = XmlUtil.Serialize(procEvento, "http://www.portalfiscal.inf.br/nfe"); return(new MensagemRetornoEventoCancelamento() { Status = StatusEvento.SUCESSO, DataEvento = retInfEvento.dhRegEvento, TipoEvento = retInfEvento.tpEvento, Mensagem = retInfEvento.xMotivo, Xml = procSerialized, IdEvento = infEvento.Id, MotivoCancelamento = justificativa, ProtocoloCancelamento = retInfEvento.nProt }); } else { return(new MensagemRetornoEventoCancelamento() { Status = StatusEvento.ERRO, Mensagem = retInfEvento.xMotivo, }); } } } return(new MensagemRetornoEventoCancelamento() { Status = StatusEvento.ERRO, Mensagem = "Erro desconhecido. Foi gerado um registro com o erro. Contate o suporte.", Xml = "" }); } catch (Exception e) { log.Error(e); string sDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "EmissorNFeDir"); if (!Directory.Exists(sDirectory)) { Directory.CreateDirectory(sDirectory); } using (FileStream stream = File.Create(Path.Combine(sDirectory, "cancelarNotaErro.txt"))) { using (StreamWriter writer = new StreamWriter(stream)) { writer.WriteLine(e.ToString()); } } return(new MensagemRetornoEventoCancelamento() { Status = StatusEvento.ERRO, Mensagem = "Erro ao tentar contactar SEFAZ. Verifique sua conexão.", Xml = "" }); } }
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 } } }
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(); //Detectar o tipo do arquivo NFe.Validate.ValidarXML validarXML = new NFe.Validate.ValidarXML(cArquivo, Empresas.Configuracoes[Emp].UnidadeFederativaCodigo); 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); //danasa: 12/2013 oAD.Assinar(cArquivo, Emp, Empresas.Configuracoes[Emp].UnidadeFederativaCodigo); 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) { this.textBox_resultado.Text = "Arquivo validado com sucesso!"; } 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.Navigate(cArquivo); } catch { webBrowser1_DocumentCompleted(null, null); } } catch (Exception ex) { this.textBox_resultado.Text = ex.Message + "\r\n" + ex.StackTrace; } }
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 } } }
/// <summary> /// RecepcaoEvento /// </summary> public override void RecepcaoEvento() //<<<danasa 6-2011 { int emp = new FindEmpresaThread(Thread.CurrentThread).Index; //Definir o serviço que será executado para a classe Servico = Servicos.EnviarCCe; try { //Ler o XML para pegar parâmetros de envio LerXML oLer = new LerXML(); oLer.EnvEvento(emp, NomeArquivoXML); if (vXmlNfeDadosMsgEhXML) { //Definir o objeto do WebService WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servicos.EnviarCCe, emp, Empresa.Configuracoes[emp].UFCod, //oLer.oDadosEnvEvento.eventos[0].cOrgao, Empresa.Configuracoes[emp].tpAmb, //oLer.oDadosEnvEvento.eventos[0].tpAmb, 1); //Criar objetos das classes dos serviços dos webservices do SEFAZ object oRecepcaoEvento = wsProxy.CriarObjeto("RecepcaoEvento"); object oCabecMsg = wsProxy.CriarObjeto("nfeCabecMsg"); //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg wsProxy.SetProp(oCabecMsg, "cUF", Empresa.Configuracoes[emp].UFCod/*oLer.oDadosEnvEvento.eventos[0].cOrgao*/.ToString()); wsProxy.SetProp(oCabecMsg, "versaoDados", ConfiguracaoApp.VersaoXMLEnvCCe); //Criar objeto da classe de assinatura digital AssinaturaDigital oAD = new AssinaturaDigital(); //Assinar o XML oAD.Assinar(NomeArquivoXML, "infEvento", Empresa.Configuracoes[emp].X509Certificado); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.Invocar(wsProxy, oRecepcaoEvento, "nfeRecepcaoEvento", oCabecMsg, this, ExtXml.EnvCCe.Replace(".xml",""), ExtXmlRet.retEnvCCe.Replace(".xml","")); //Ler o retorno LerRetornoEvento(emp); } else { // Gerar o XML de eventos a partir do TXT gerado pelo ERP oGerarXML.EnvioEvento(Path.GetFileNameWithoutExtension(NomeArquivoXML) + ExtXml.EnvCCe, oLer.oDadosEnvEvento); } } catch (Exception ex) { try { var ExtRet = vXmlNfeDadosMsgEhXML ? ExtXml.EnvCCe : ExtXml.EnvCCe_TXT; //Gravar o arquivo de erro de retorno para o ERP, caso ocorra oAux.GravarArqErroServico(NomeArquivoXML, ExtRet, ExtXmlRet.retEnvCCe_ERR, ex); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. //Wandrey 09/03/2010 } } finally { try { oAux.DeletarArquivo(NomeArquivoXML); } catch { //Se falhou algo na hora de deletar o XML de evento, infelizmente //não posso fazer mais nada, o UniNFe vai tentar mandar o arquivo novamente para o webservice, pois ainda não foi excluido. //Wandrey 09/03/2010 } } }
/// <summary> /// Envia o XML de inutilização de numeração de notas fiscais /// </summary> /// <remarks> /// Atualiza a propriedade this.vNfeRetorno da classe com o conteúdo /// XML com o retorno que foi dado do serviço do WebService. /// No caso da Inutilização se tudo estiver correto retorna um XML /// dizendo se foi inutilizado corretamente ou não. /// Se der algum erro ele grava um arquivo txt com o erro em questão. /// </remarks> /// <example> /// oUniNfe.vXmlNfeDadosMsg = "c:\teste-ped-sit.xml"; /// oUniNfe.Inutilizacao(); /// this.textBox_xmlretorno.Text = oUniNfe.vNfeRetorno; /// // /// // /// //O conteúdo de retorno vai ser algo mais ou menos assim: /// // /// //<?xml version="1.0" encoding="UTF-8" ?> /// //<retInutNFe xmlns="http://www.portalfiscal.inf.br/nfe" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.portalfiscal.inf.br/nfe retInutNFe_v1.07.xsd" versao="1.07"> /// // <infInut> /// // <tpAmb>2</tpAmb> /// // <verAplic>1.10</verAplic> /// // <cStat>102</cStat> /// // <xMotivo>Inutilizacao de numero homologado</xMotivo> /// // <cUF>51</cUF> /// // <ano>08</ano> /// // <CNPJ>12345678901234</CNPJ> /// // <mod>55</mod> /// // <serie>1</serie> /// // <nNFIni>101</nNFIni> /// // <nNFFin>101</nNFFin> /// // <dhRecbto>2008-07-01T16:47:11</dhRecbto> /// // <nProt>151080000197712</nProt> /// // </infInut> /// //</retInutNFe> /// </example> /// <by>Wandrey Mundin Ferreira</by> /// <date>03/04/2009</date> public override void Inutilizacao() { int emp = new FindEmpresaThread(Thread.CurrentThread).Index; //Definir o serviço que será executado para a classe Servico = Servicos.InutilizarNumerosNFe; try { //Ler o XML para pegar parâmetros de envio LerXML oLer = new LerXML(); oLer.PedInut(NomeArquivoXML); if (this.vXmlNfeDadosMsgEhXML) //danasa 12-9-2009 { //Definir o objeto do WebService WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servicos.InutilizarNumerosNFe, emp, oLer.oDadosPedInut.cUF, oLer.oDadosPedInut.tpAmb, oLer.oDadosPedInut.tpEmis); //Criar objetos das classes dos serviços dos webservices do SEFAZ object oInutilizacao = wsProxy.CriarObjeto("NfeInutilizacao2"); object oCabecMsg = wsProxy.CriarObjeto("nfeCabecMsg"); //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg wsProxy.SetProp(oCabecMsg, "cUF", oLer.oDadosPedInut.cUF.ToString()); wsProxy.SetProp(oCabecMsg, "versaoDados", ConfiguracaoApp.VersaoXMLInut); //Criar objeto da classe de assinatura digita AssinaturaDigital oAD = new AssinaturaDigital(); //Assinar o XML oAD.Assinar(NomeArquivoXML, "infInut", Empresa.Configuracoes[emp].X509Certificado); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.Invocar(wsProxy, oInutilizacao, "nfeInutilizacaoNF2", oCabecMsg, this, "-ped-inu", "-inu"); //Ler o retorno do webservice this.LerRetornoInut(); } else { oGerarXML.Inutilizacao(Path.GetFileNameWithoutExtension(NomeArquivoXML) + ".xml", oLer.oDadosPedInut.tpAmb, oLer.oDadosPedInut.tpEmis, oLer.oDadosPedInut.cUF, oLer.oDadosPedInut.ano, oLer.oDadosPedInut.CNPJ, oLer.oDadosPedInut.mod, oLer.oDadosPedInut.serie, oLer.oDadosPedInut.nNFIni, oLer.oDadosPedInut.nNFFin, oLer.oDadosPedInut.xJust); } } catch (Exception ex) { string ExtRet = string.Empty; if (this.vXmlNfeDadosMsgEhXML) //Se for XML ExtRet = ExtXml.PedInu; else //Se for TXT ExtRet = ExtXml.PedInu_TXT; try { //Gravar o arquivo de erro de retorno para o ERP, caso ocorra oAux.GravarArqErroServico(NomeArquivoXML, ExtRet, ExtXmlRet.Inu_ERR, ex); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. //Wandrey 09/03/2010 } } finally { try { if (!this.vXmlNfeDadosMsgEhXML) //Se for o TXT para ser transformado em XML, vamos excluir o TXT depois de gerado o XML oAux.DeletarArquivo(NomeArquivoXML); } catch { //Se falhou algo na hora de deletar o XML de inutilização, infelizmente não posso //fazer mais nada. Com certeza o uninfe sendo restabelecido novamente vai tentar enviar o mesmo //xml de inutilização para o SEFAZ. Este erro pode ocorrer por falha no HD, rede, Permissão de pastas, etc. Wandrey 23/03/2010 } } }
/// <summary> /// Envia o XML de cancelamento de nota fiscal /// </summary> /// <remarks> /// Atualiza a propriedade this.vNfeRetorno da classe com o conteúdo /// XML com o retorno que foi dado do serviço do WebService. /// No caso do Cancelamento se tudo estiver correto retorna um XML /// dizendo se foi cancelado corretamente ou não. /// Se der algum erro ele grava um arquivo txt com o erro em questão. /// </remarks> /// <example> /// oUniNfe.vXmlNfeDadosMsg = "c:\teste-ped-sit.xml"; /// oUniNfe.Consulta();// /// this.textBox_xmlretorno.Text = oUniNfe.vNfeRetorno; /// // /// //O conteúdo de retorno vai ser algo mais ou menos assim: /// // /// //<?xml version="1.0" encoding="UTF-8" ?> /// //<retCancNFe xmlns="http://www.portalfiscal.inf.br/nfe" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.portalfiscal.inf.br/nfe retCancNFe_v1.07.xsd" versao="1.07"> /// // <infCanc> /// // <tpAmb>2</tpAmb> /// // <verAplic>1.10</verAplic> /// // <cStat>101</cStat> /// // <xMotivo>Cancelamento de NF-e homologado</xMotivo> /// // <cUF>51</cUF> /// // <chNFe>51080612345678901234550010000001041671821888</chNFe> /// // <dhRecbto>2008-07-01T16:37:22</dhRecbto> /// // <nProt>151080000197648</nProt> /// // </infCanc> /// //</retCancNFe> /// </example> /// <by>Wandrey Mundin Ferreira</by> /// <date>01/07/2008</date> public override void Cancelamento() { int emp = new FindEmpresaThread(Thread.CurrentThread).Index; //Definir o serviço que será executado para a classe Servico = Servicos.CancelarNFe; try { //Ler o XML para pegar parâmetros de envio LerXML oLer = new LerXML(); oLer.PedCanc(NomeArquivoXML); if (this.vXmlNfeDadosMsgEhXML) { //Definir o objeto do WebService WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servicos.CancelarNFe, emp, oLer.oDadosPedCanc.cUF, oLer.oDadosPedCanc.tpAmb, oLer.oDadosPedCanc.tpEmis); //Criar objetos das classes dos serviços dos webservices do SEFAZ object oCancelamento = wsProxy.CriarObjeto("NfeCancelamento2"); object oCabecMsg = wsProxy.CriarObjeto("nfeCabecMsg"); //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg wsProxy.SetProp(oCabecMsg, "cUF", oLer.oDadosPedCanc.cUF.ToString()); wsProxy.SetProp(oCabecMsg, "versaoDados", ConfiguracaoApp.VersaoXMLCanc); //Criar objeto da classe de assinatura digita AssinaturaDigital oAD = new AssinaturaDigital(); //Assinar o XML oAD.Assinar(NomeArquivoXML, "infCanc", Empresa.Configuracoes[emp].X509Certificado); //Invocar o método que envia o XML para o SEFAZ oInvocarObj.Invocar(wsProxy, oCancelamento, "nfeCancelamentoNF2", oCabecMsg, this, "-ped-can", "-can"); //Ler o retorno do webservice this.LerRetornoCanc(); } else { //Gerar o XML de solicitação de cancelamento de uma NFe a partir do TXT Gerado pelo ERP oGerarXML.Cancelamento(Path.GetFileNameWithoutExtension(NomeArquivoXML) + ".xml", oLer.oDadosPedCanc.tpAmb, oLer.oDadosPedCanc.tpEmis, oLer.oDadosPedCanc.chNFe, oLer.oDadosPedCanc.nProt, oLer.oDadosPedCanc.xJust); } } catch (Exception ex) { string ExtRet = string.Empty; if (this.vXmlNfeDadosMsgEhXML) //Se for XML ExtRet = ExtXml.PedCan; else //Se for TXT ExtRet = ExtXml.PedCan_TXT; try { //Gravar o arquivo de erro de retorno para o ERP, caso ocorra oAux.GravarArqErroServico(NomeArquivoXML, ExtRet, ExtXmlRet.Can_ERR, ex); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. //Wandrey 09/03/2010 } } finally { try { if (!this.vXmlNfeDadosMsgEhXML) //Se for o TXT para ser transformado em XML, vamos excluir o TXT depois de gerado o XML oAux.DeletarArquivo(NomeArquivoXML); } catch { //Se falhou algo na hora de deletar o XML de cancelamento de NFe, infelizmente //não posso fazer mais nada, o UniNFe vai tentar mandar o arquivo novamente para o webservice, pois ainda não foi excluido. //Wandrey 09/03/2010 } } }
/// <summary> /// /// </summary> /// <param name="RefUri"></param> /// <param name="xml"></param> /// <param name="certificado"></param> /// <returns></returns> private XmlDocument Assinar(String RefUri, string xml, X509Certificate2 certificado) { try { AssinaturaDigital AD = new AssinaturaDigital(); JoinErros(AD.Assinar(xml, RefUri, certificado)); if (this.SemErros()) { XmlDocument xd = new XmlDocument(); xd.LoadXml(AD.XMLStringAssinado); return xd.ChangeXmlEncoding("utf-8"); } } catch (Exception ex) { erros.Add("--- Erro ao assinar o documento --"); AddException(ex); } return null; }