protected override void EnvEvento(int emp, DadosenvEvento dadosEnvEvento) { XmlNodeList eventoCTeList = ConteudoXML.GetElementsByTagName("eventoCTe"); XmlElement eventoCTeElemento = (XmlElement)eventoCTeList[0]; dadosEnvEvento.versao = eventoCTeElemento.Attributes[TpcnResources.versao.ToString()].InnerText; base.EnvEvento(emp, dadosEnvEvento); }
public override void Execute() { int emp = Empresas.FindEmpresaByThread(); /// /// danasa: 06-2018 ConteudoXML.PreserveWhitespace = false; ConteudoXML.Load(this.NomeArquivoXML); if (NomeArquivoXML.EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.EnvCCe).EnvioXML, StringComparison.InvariantCultureIgnoreCase) || NomeArquivoXML.EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.EnvCancelamento).EnvioXML, StringComparison.InvariantCultureIgnoreCase) || NomeArquivoXML.EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.EnvManifestacao).EnvioXML, StringComparison.InvariantCultureIgnoreCase) || NomeArquivoXML.EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.PedEve).EnvioXML, StringComparison.InvariantCultureIgnoreCase)) { if (NomeArquivoXML.EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.EnvCCe).EnvioXML, StringComparison.InvariantCultureIgnoreCase)) { Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.EnvCCe).EnvioXML) + Propriedade.ExtRetorno.retEnvCCe_ERR)); } if (NomeArquivoXML.EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.EnvCancelamento).EnvioXML, StringComparison.InvariantCultureIgnoreCase)) { Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.EnvCancelamento).EnvioXML) + Propriedade.ExtRetorno.retCancelamento_ERR)); } if (NomeArquivoXML.EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.EnvManifestacao).EnvioXML, StringComparison.InvariantCultureIgnoreCase)) { Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.EnvManifestacao).EnvioXML) + Propriedade.ExtRetorno.retManifestacao_ERR)); } if (NomeArquivoXML.EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.PedEve).EnvioXML, StringComparison.InvariantCultureIgnoreCase)) { Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedEve).EnvioXML) + Propriedade.ExtRetorno.Eve_ERR)); } DadosenvEvento eve = new DadosenvEvento(); EnvEvento(emp, eve); } if (NomeArquivoXML.EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.PedSit).EnvioXML, StringComparison.InvariantCultureIgnoreCase)) { Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlErro, Path.GetFileName(NomeArquivoXML))); Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedSit).EnvioXML) + Propriedade.ExtRetorno.Sit_ERR)); DadosPedSit sit = new DadosPedSit(); PedSit(emp, sit); } if (NomeArquivoXML.EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.PedSta).EnvioXML, StringComparison.InvariantCultureIgnoreCase)) { var fn = Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedSta).EnvioXML); Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, fn + Propriedade.ExtRetorno.Sta_ERR)); Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, fn + Propriedade.Extensao(Propriedade.TipoEnvio.PedSta).RetornoXML));//"-ped-sta-ret.xml")); DadosPedSta sta = new DadosPedSta(); PedSta(emp, sta); } }
public TaskNFeEventos(string arquivo) { Servico = Servicos.Nulo; novaNomenclatura = false; dadosEnvEvento = new DadosenvEvento(); NomeArquivoXML = arquivo; if (vXmlNfeDadosMsgEhXML) { ConteudoXML.PreserveWhitespace = false; ConteudoXML.Load(arquivo); } }
public override void Execute() { int emp = Empresas.FindEmpresaByThread(); if (NomeArquivoXML.EndsWith(Propriedade.ExtEnvio.EnvCCe_XML, StringComparison.InvariantCultureIgnoreCase) || NomeArquivoXML.EndsWith(Propriedade.ExtEnvio.EnvCancelamento_XML, StringComparison.InvariantCultureIgnoreCase) || NomeArquivoXML.EndsWith(Propriedade.ExtEnvio.EnvManifestacao_XML, StringComparison.InvariantCultureIgnoreCase) || NomeArquivoXML.EndsWith(Propriedade.ExtEnvio.PedEve, StringComparison.InvariantCultureIgnoreCase)) { Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.ExtEnvio.EnvCCe_XML) + Propriedade.ExtRetorno.retEnvCCe_ERR)); Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.ExtEnvio.EnvCancelamento_XML) + Propriedade.ExtRetorno.retCancelamento_ERR)); Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.ExtEnvio.EnvManifestacao_XML) + Propriedade.ExtRetorno.retManifestacao_ERR)); Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.ExtEnvio.PedEve) + Propriedade.ExtRetorno.Eve_ERR)); DadosenvEvento eve = new DadosenvEvento(); EnvEvento(emp, eve); } if (NomeArquivoXML.EndsWith(Propriedade.ExtEnvio.PedSit_XML, StringComparison.InvariantCultureIgnoreCase)) { Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlErro, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.ExtEnvio.PedSit_XML))); Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.ExtEnvio.PedSit_XML) + Propriedade.ExtRetorno.Sit_ERR)); DadosPedSit sit = new DadosPedSit(); PedSit(emp, sit); } if (NomeArquivoXML.EndsWith(Propriedade.ExtEnvio.PedSta_XML, StringComparison.InvariantCultureIgnoreCase)) { Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.ExtEnvio.PedSta_XML) + Propriedade.ExtRetorno.Sta_ERR)); Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.ExtEnvio.PedSta_XML) + "-ped-sta-ret.xml")); DadosPedSta sta = new DadosPedSta(); PedSta(emp, sta); } }
protected override void EnvEvento(int emp, DadosenvEvento dadosEnvEvento)//, string chNFe_chCTe_chMDFe) { novaNomenclatura = this.NomeArquivoXML.ToLower().EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.PedEve).EnvioXML) || this.NomeArquivoXML.ToLower().EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.PedEve).EnvioTXT); /// /// danasa 6/2011 /// if (Path.GetExtension(this.NomeArquivoXML).ToLower() == ".txt") { #region --txt ///<<<<EVENTO DE CARTA DE CORRECAO>>>> ///idLote|000000000015255 ///evento|1 ///Id|ID1101103511031029073900013955001000000001105112804101 <<opcional ///cOrgao|35 ///tpAmb|2 ///CNPJ|10290739000139 /// ou ///CPF|12345678901 ///chNFe|35110310290739000139550010000000011051128041 ///dhEvento|2011-03-03T08:06:00 ///tpEvento|110110 ///nSeqEvento|1 ///verEvento|1.00 ///descEvento|Carta de Correção <<opcional ///xCorrecao|Texto de teste para Carta de Correção. Conteúdo do campo xCorrecao. ///xCondUso|A Carta de Correção é disciplinada pelo § 1º-A do art. .......... <<opcional ///evento|2 ///Id|ID1101103511031029073900013955001000000001105112804102 ///... ///evento|20 <<MAXIMO ///Id|ID1101103511031029073900013955001000000001105112804103 ///... ///<<<<EVENTO DE CANCELAMENTO>>>> /// idLote|000000000015255 /// evento|1 /// Id|ID1101113511031029073900013955001000000001105112804102 /// cOrgao|35 /// tpAmb|2 /// CNPJ|10290739000139 /// ou /// CPF|12345678901 /// chNFe|35110310290739000139550010000000011051128041 /// dhEvento|2011-03-03T08:06:00-03:00 /// tpEvento|110111 /// nSeqEvento|1 /// verEvento|1.00 /// descEvento|Cancelamento <<opcional /// xJust|Justificativa do cancelamento /// nProt|010101010101010 ///<<<<EVENTO DE CONFIRMACAO DA OPERACAO>>>> ///idLote|000000000015255 ///evento|1 ///Id|ID2102003511031029073900013955001000000001105112804102 ///cOrgao|35 ///tpAmb|2 ///CNPJ|10290739000139 /// ou ///CPF|12345678901 ///chNFe|35110310290739000139550010000000011051128041 ///dhEvento|2011-03-03T08:06:00-03:00 ///tpEvento|210200 ///nSeqEvento|1 ///verEvento|1.00 ///descEvento|Confirmacao da Operacao <<opcional ///xJust|Justificativa..... /// ------------------------------------ ///<<<<EVENTO DE CIENCIA DA OPERACAO>>>> ///idLote|000000000015255 ///evento|1 ///Id|ID2102103511031029073900013955001000000001105112804102 ///cOrgao|35 ///tpAmb|2 ///CNPJ|10290739000139 /// ou ///CPF|12345678901 ///chNFe|35110310290739000139550010000000011051128041 ///dhEvento|2011-03-03T08:06:00-03:00 ///tpEvento|210210 ///nSeqEvento|1 ///verEvento|1.00 ///descEvento|Ciencia da Operacao <<opcional /// -------------------------------------------- ///<<<<EVENTO DE DESCONHECIMENTO DA OPERACAO>>>> ///idLote|000000000015255 ///evento|1 ///Id|ID2102203511031029073900013955001000000001105112804102 ///cOrgao|35 ///tpAmb|2 ///CNPJ|10290739000139 /// ou ///CPF|12345678901 ///chNFe|35110310290739000139550010000000011051128041 ///dhEvento|2011-03-03T08:06:00-03:00 ///tpEvento|210220 ///nSeqEvento|1 ///verEvento|1.00 ///descEvento|Desconhecimento da Operacao <<opcional ///xJust|Justificativa..... /// -------------------------------------------- ///<<<<EVENTO DE OPERACAO NAO REALIZADA>>>> ///idLote|000000000015255 ///evento|1 ///Id|ID2102403511031029073900013955001000000001105112804102 ///cOrgao|35 ///tpAmb|2 ///CNPJ|10290739000139 /// ou ///CPF|12345678901 ///chNFe|35110310290739000139550010000000011051128041 ///dhEvento|2011-03-03T08:06:00-03:00 ///tpEvento|210240 ///nSeqEvento|1 ///verEvento|1.00 ///descEvento|Operacao nao realizada <<opcional /// -------------------------------------------- ///<<<<EVENTO EPEC>>>> ///idLote|000000000015255 ///evento|1 ///Id|ID2102403511031029073900013955001000000001105112804102 ///cOrgao|35 ///tpAmb|2 ///CNPJ|10290739000139 /// ou ///CPF|12345678901 ///chNFe|35110310290739000139550010000000011051128041 ///dhEvento|2011-03-03T08:06:00-03:00 ///tpEvento|110140 ///nSeqEvento|1 ///verEvento|1.00 ///descEvento|EPEC <<opcional ///epec.cOrgaoAutor|35 ///epec.tpAutor|1 ///epec.verAplic|1.1.1.0 ///epec.dhEmi|2011-03-03T08:06:00-03:00 ///epec.tpNF|1 ///epec.IE|ISENTO ///epec.dest.UF|SP ///epec.dest.CNPJ|10290739000139 /// ou ///epec.dest.CPF|12345678901 /// ou ///epec.dest.idEstrangeiro|9999999 ///epec.dest.IE|nao pode conter o texto 'ISENTO' ///epec.dest.vNF|1234.00 ///epec.dest.vICMS|1.00 ///epec.dest.vST|2.00 /// -------------------------------------------- ///<<<<Evento pedido de prorrogação de ICMS | Evento cancelamento de pedido de prorrogação de ICMS>>>> ///idLote|000000000015255 ///evento|1 ///Id|ID2102403511031029073900013955001000000001105112804102 ///cOrgao|35 ///tpAmb|2 ///CNPJ|10290739000139 ///chNFe|35110310290739000139550010000000011051128041 ///dhEvento|2011-03-03T08:06:00-03:00 ///tpEvento|111500 ou 111501 ou 111502 ou 111503 ///nSeqEvento|1 ///verEvento|1.00 ///descEvento|Pedido de Prorrogacao <<opcional ///nProt|0000000000001 ///itemPedido.numItem|1 ///itemPedido.qtdeItem|1 /// ///descEvento|Cancelamento de Pedido de Prorrogacao <<opcional ///nProt|0000000000001 ///idPedidoCancelado|ID999999CHAVE-NFE-9 /// -------------------------------------------- ///<<<<Evento Fisco Resposta ao Pedido de Prorrogação>>>> ///idLote|000000000015255 ///evento|1 ///Id|ID2102403511031029073900013955001000000001105112804102 ///cOrgao|35 ///tpAmb|2 ///CNPJ|10290739000139 ///chNFe|35110310290739000139550010000000011051128041 ///dhEvento|2011-03-03T08:06:00-03:00 ///tpEvento|411500 ou 411501 ou 411502 ou 411503 ///nSeqEvento|1 ///verEvento|1.00 ///descEvento|Fisco – Prorrogação ICMS remessa para industrialização <<opcional ///idPedido| ///respPedido.statPrazo| ///respPedido.itemPedido.numItem| ///respPedido.itemPedido.statPedido| ///respPedido.itemPedido.justStatus| ///respPedido.itemPedido.justStaOutra| ///respCancPedido.statCancPedido| ///respCancPedido.justStatus| ///respCancPedido.justStaOutra| List <string> cLinhas = Functions.LerArquivo(this.NomeArquivoXML); ProrrogacaoICMS lpcICMS = null; ItemPedido itemPedido = null; const string err0 = "Informe a linha \"respPedido.itemPedido.numItem\""; foreach (string cTexto in cLinhas) { string[] dados = cTexto.Split(new char[] { '|' }); if (dados.Length == 1) { continue; } switch (dados[0].ToLower()) { case "idlote": this.dadosEnvEvento.idLote = dados[1].Trim(); break; case "evento": this.dadosEnvEvento.eventos.Add(new Evento()); break; case "id": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].Id = dados[1].Trim(); break; case "corgao": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].cOrgao = Convert.ToInt32("0" + dados[1].Trim()); break; case "tpamb": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].tpAmb = Convert.ToInt32("0" + dados[1].Trim()); break; case "tpemis": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].tpEmis = Convert.ToInt32("0" + dados[1].Trim()); break; case "cnpj": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].CNPJ = dados[1].Trim(); break; case "cpf": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].CPF = dados[1].Trim(); break; case "chnfe": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].chNFe = dados[1].Trim(); break; case "dhevento": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].dhEvento = dados[1].Trim(); break; case "tpevento": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].tpEvento = dados[1].Trim(); break; case "nseqevento": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].nSeqEvento = Convert.ToInt32("0" + dados[1].Trim()); break; case "verevento": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].verEvento = dados[1].Trim(); break; case "descevento": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].descEvento = dados[1].Trim(); break; case "xcorrecao": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].xCorrecao = dados[1].Trim(); break; case "xconduso": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].xCondUso = dados[1].Trim(); break; case "xjust": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].xJust = dados[1].Trim(); break; case "nprot": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].nProt = dados[1].Trim(); break; /// /// Prorrogacao/Cancelamento de ICMS /// case "itempedido.numitem": lpcICMS = new ProrrogacaoICMS() { numItem = dados[1].Trim() }; this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].prorrogacaoICMS.Add(lpcICMS); break; case "itempedido.qtdeitem": if (lpcICMS == null) { throw new Exception("Informe a linha \"itemPedido.numItem\""); } lpcICMS.qtdeItem = dados[1].Trim(); lpcICMS = null; break; case "idpedidocancelado": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].idPedidoCancelado = dados[1].Trim(); break; /// /// Fisco – Prorrogação ICMS remessa para industrialização /// case "idpedido": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].idPedido = dados[1].Trim(); break; case "resppedido.statprazo": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].respPedido.statPrazo = dados[1].Trim(); break; case "resppedido.itempedido.numitem": itemPedido = new ItemPedido() { numItem = Convert.ToInt32("0" + dados[1].Trim()) }; this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].respPedido.itemPedido.Add(itemPedido); break; case "resppedido.itempedido.statpedido": if (itemPedido == null) { throw new Exception(err0); } itemPedido.statPedido = Convert.ToInt32("0" + dados[1].Trim()); break; case "resppedido.itempedido.juststatus": if (itemPedido == null) { throw new Exception(err0); } itemPedido.justStatus = Convert.ToInt32("0" + dados[1].Trim()); break; case "resppedido.itempedido.juststaoutra": if (!string.IsNullOrEmpty(dados[1].Trim())) { if (itemPedido == null) { throw new Exception(err0); } itemPedido.justStaOutra = dados[1].Trim(); } break; case "respcancpedido.statcancpedido": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].respCancPedido.statCancPedido = Convert.ToInt32("0" + dados[1].Trim()); break; case "respcancpedido.juststatus": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].respCancPedido.justStatus = Convert.ToInt32("0" + dados[1].Trim()); break; case "respcancpedido.juststaoutra": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].respCancPedido.justStaOutra = dados[1].Trim(); break; /// /// EPEC /// case "epec.corgaoautor": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.cOrgaoAutor = Convert.ToInt32("0" + dados[1].Trim()); break; case "epec.dhemi": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dhEmi = dados[1].Trim(); break; case "epec.ie": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.IE = dados[1].Trim(); break; case "epec.veraplic": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.verAplic = dados[1].Trim(); break; case "epec.tpautor": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.tpAutor = NFe.Components.EnumHelper.StringToEnum <NFe.ConvertTxt.TpcnTipoAutor>(dados[1].Trim()); break; case "epec.tpnf": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.tpNF = NFe.Components.EnumHelper.StringToEnum <NFe.ConvertTxt.TpcnTipoNFe>(dados[1].Trim()); break; case "epec.dest.idestrangeiro": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.idEstrangeiro = dados[1].Trim(); break; case "epec.dest.cnpj": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.CNPJ = dados[1].Trim(); break; case "epec.dest.cpf": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.CPF = dados[1].Trim(); break; case "epec.dest.ie": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.IE = dados[1].Trim(); break; case "epec.dest.uf": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.UF = dados[1].Trim(); break; case "epec.dest.vnf": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.vNF = Convert.ToDouble("0" + dados[1].Trim().Replace(".", System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator)); break; case "epec.dest.vicms": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.vICMS = Convert.ToDouble("0" + dados[1].Trim().Replace(".", System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator)); break; case "epec.dest.vst": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.vST = Convert.ToDouble("0" + dados[1].Trim().Replace(".", System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator)); break; } } foreach (Evento evento in this.dadosEnvEvento.eventos) { NFe.ConvertTxt.tpEventos tpe = NFe.Components.EnumHelper.StringToEnum <NFe.ConvertTxt.tpEventos>(evento.tpEvento); switch (tpe) { case ConvertTxt.tpEventos.tpEvEPEC: case ConvertTxt.tpEventos.tpEvCancelamentoNFe: case ConvertTxt.tpEventos.tpEvCienciaOperacao: case ConvertTxt.tpEventos.tpEvConfirmacaoOperacao: case ConvertTxt.tpEventos.tpEvDesconhecimentoOperacao: case ConvertTxt.tpEventos.tpEvOperacaoNaoRealizada: evento.nSeqEvento = 1; break; case ConvertTxt.tpEventos.tpEvEncerramentoMDFe: case ConvertTxt.tpEventos.tpEvInclusaoCondutor: case ConvertTxt.tpEventos.tpEvRegistroPassagem: case ConvertTxt.tpEventos.tpEvRegistroPassagemBRid: break; case ConvertTxt.tpEventos.tpEvPedProrrogacao_ICMS_1: //pedido de prorrogacao 1 case ConvertTxt.tpEventos.tpEvPedProrrogacao_ICMS_2: //pedido de prorrogacao 2 if (string.IsNullOrEmpty(evento.descEvento)) { evento.descEvento = "Pedido de Prorrogacao"; } break; case ConvertTxt.tpEventos.tpEvCancPedProrrogacao_ICMS_1: //pedido de cancelamento 1 case ConvertTxt.tpEventos.tpEvCancPedProrrogacao_ICMS_2: //pedido de cancelamento 2 if (string.IsNullOrEmpty(evento.descEvento)) { evento.descEvento = "Cancelamento de Pedido de Prorrogacao"; } break; case ConvertTxt.tpEventos.tpEvFiscoRespPedProrrogacao_ICMS_1: case ConvertTxt.tpEventos.tpEvFiscoRespPedProrrogacao_ICMS_2: case ConvertTxt.tpEventos.tpEvFiscoRespCancPedProrrogacao_ICMS_1: case ConvertTxt.tpEventos.tpEvFiscoRespCancPedProrrogacao_ICMS_2: if (string.IsNullOrEmpty(evento.descEvento)) { evento.descEvento = "Fisco – Prorrogacao ICMS remessa para industrializacao"; } break; } if (string.IsNullOrEmpty(evento.descEvento)) { evento.descEvento = EnumHelper.GetDescription(tpe); } if (string.IsNullOrEmpty(evento.verEvento)) { evento.verEvento = "1.00"; } if (evento.nSeqEvento == 0) { evento.nSeqEvento = 1; } if (evento.tpAmb == 0) { evento.tpAmb = Empresas.Configuracoes[emp].AmbienteCodigo; } if (evento.cOrgao == 0) { evento.cOrgao = Convert.ToInt32(evento.chNFe.Substring(0, 2)); } if (evento.tpEmis == 0) { evento.tpEmis = Convert.ToInt32(evento.chNFe.Substring(34, 1)); } if (string.IsNullOrEmpty(evento.Id)) { evento.Id = NFe.Components.TpcnResources.ID.ToString() + evento.tpEvento + evento.chNFe + evento.nSeqEvento.ToString("00"); } if (string.IsNullOrEmpty(evento.xCondUso)) { if (evento.descEvento == "Carta de Correcao") { evento.xCondUso = "A Carta de Correcao e disciplinada pelo paragrafo 1o-A do art. 7o do Convenio S/N, " + "de 15 de dezembro de 1970 e pode ser utilizada para regularizacao de erro ocorrido na emissao de " + "documento fiscal, desde que o erro nao esteja relacionado com: I - as variaveis que determinam o " + "valor do imposto tais como: base de calculo, aliquota, diferenca de preco, quantidade, valor da " + "operacao ou da prestacao; II - a correcao de dados cadastrais que implique mudanca do remetente " + "ou do destinatario; III - a data de emissao ou de saida."; } else { evento.xCondUso = "A Carta de Correção é disciplinada pelo § 1º-A do art. 7º do Convênio S/N, de 15 de dezembro de 1970 e pode ser " + "utilizada para regularização de erro ocorrido na emissão de documento fiscal, desde que o erro não esteja relacionado " + "com: I - as variáveis que determinam o valor do imposto tais como: base de cálculo, alíquota, diferença de preço, " + "quantidade, valor da operação ou da prestação; II - a correção de dados cadastrais que implique mudança do " + "remetente ou do destinatário; III - a data de emissão ou de saída."; } } } #endregion } else { //<?xml version="1.0" encoding="UTF-8"?> //<envEvento versao="1.00" xmlns="http://www.portalfiscal.inf.br/nfe"> // <idLote>000000000015255</idLote> // <evento versao="1.00" xmlns="http://www.portalfiscal.inf.br/nfe"> // <infEvento Id="ID1101103511031029073900013955001000000001105112804108"> // <cOrgao>35</cOrgao> // <tpAmb>2</tpAmb> // <CNPJ>10290739000139</CNPJ> // <chNFe>35110310290739000139550010000000011051128041</chNFe> // <dhEvento>2011-03-03T08:06:00-03:00</dhEvento> // <tpEvento>110110</tpEvento> // <nSeqEvento>8</nSeqEvento> // <verEvento>1.00</verEvento> // <detEvento versao="1.00"> // <descEvento>Carta de Correção</descEvento> // <xCorrecao>Texto de teste para Carta de Correção. Conteúdo do campo xCorrecao.</xCorrecao> // <xCondUso>A Carta de Correção é disciplinada pelo § 1º-A do art. 7º do Convênio S/N, de 15 de dezembro de 1970 e pode ser utilizada para regularização de erro ocorrido na emissão de documento fiscal, desde que o erro não esteja relacionado com: I - as variáveis que determinam o valor do imposto tais como: base de cálculo, alíquota, diferença de preço, quantidade, valor da operação ou da prestação; II - a correção de dados cadastrais que implique mudança do remetente ou do destinatário; III - a data de emissão ou de saída.</xCondUso> // </detEvento> // </infEvento> // </evento> //</envEvento> base.EnvEvento(emp, dadosEnvEvento); } }
public TaskNFeEventos() { Servico = Servicos.Nulo; novaNomenclatura = false; dadosEnvEvento = new DadosenvEvento(); }
public override void Execute() { int emp = Empresas.FindEmpresaByThread(); try { dadosEnvEvento = new DadosenvEvento(); //Ler o XML para pegar parâmetros de envio EnvEvento(emp, dadosEnvEvento);//, TpcnResources.chCTe.ToString()); ValidaEvento(emp, dadosEnvEvento); //vai pegar o ambiente da Chave da Nfe autorizada p/ corrigir tpEmis int tpEmis = this.dadosEnvEvento.eventos[0].tpEmis; //Convert.ToInt32(this.dadosEnvEvento.eventos[0].chNFe.Substring(34, 1)); //Pegar o estado da chave, pois na cOrgao pode vir o estado 91 - Wandrey 22/08/2012 int cOrgao = dadosEnvEvento.eventos[0].cOrgao; int ufParaWS = cOrgao; //Se o cOrgao for igual a 91 tenho que mudar a ufParaWS para que na hora de buscar o WSDL para conectar ao serviço, ele consiga encontrar. Wandrey 23/01/2013 if (cOrgao == 91) { ufParaWS = Convert.ToInt32(dadosEnvEvento.eventos[0].chNFe.Substring(0, 2)); } //Definir o objeto do WebService WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, ufParaWS, dadosEnvEvento.eventos[0].tpAmb, tpEmis); object oRecepcaoEvento = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);//NomeClasseWS(Servico, ufParaWS)); object oCabecMsg = wsProxy.CriarObjeto(NomeClasseCabecWS(cOrgao, Servico)); wsProxy.SetProp(oCabecMsg, TpcnResources.cUF.ToString(), cOrgao.ToString()); wsProxy.SetProp(oCabecMsg, TpcnResources.versaoDados.ToString(), NFe.ConvertTxt.versoes.VersaoXMLCTeEvento); //Criar objeto da classe de assinatura digital AssinaturaDigital oAD = new AssinaturaDigital(); //Assinar o XML oAD.Assinar(NomeArquivoXML, emp, cOrgao); oInvocarObj.Invocar(wsProxy, oRecepcaoEvento, wsProxy.NomeMetodoWS[0],//NomeMetodoWS(Servico, ufParaWS), oCabecMsg, this, Propriedade.ExtEnvio.PedEve.Replace(".xml", ""), Propriedade.ExtRetorno.Eve.Replace(".xml", "")); //Ler o retorno LerRetornoEvento(emp); } catch (Exception ex) { try { //Gravar o arquivo de erro de retorno para o ERP, caso ocorra TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.ExtEnvio.PedEve, Propriedade.ExtRetorno.Eve_ERR, ex); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. //Wandrey 09/03/2010 } } finally { try { Functions.DeletarArquivo(NomeArquivoXML); } catch { //Se falhou algo na hora de deletar o XML de evento, infelizmente //não posso fazer mais nada, o UniNFe vai tentar mandar o arquivo novamente para o webservice, pois ainda não foi excluido. //Wandrey 09/03/2010 } } }
protected virtual void EnvEvento(int emp, DadosenvEvento dadosEnvEvento) { //<?xml version="1.0" encoding="UTF-8"?> //<envEvento versao="1.00" xmlns="http://www.portalfiscal.inf.br/nfe"> // <idLote>000000000015255</idLote> // <evento versao="1.00" xmlns="http://www.portalfiscal.inf.br/nfe"> // <infEvento Id="ID1101103511031029073900013955001000000001105112804108"> // <cOrgao>35</cOrgao> // <tpAmb>2</tpAmb> // <CNPJ>10290739000139</CNPJ> // <chNFe>35110310290739000139550010000000011051128041</chNFe> // <dhEvento>2011-03-03T08:06:00-03:00</dhEvento> // <tpEvento>110110</tpEvento> // <nSeqEvento>8</nSeqEvento> // <verEvento>1.00</verEvento> // <detEvento versao="1.00"> // <descEvento>Carta de Correção</descEvento> // <xCorrecao>Texto de teste para Carta de Correção. Conteúdo do campo xCorrecao.</xCorrecao> // <xCondUso>A Carta de Correção é disciplinada pelo § 1º-A do art. 7º do Convênio S/N, de 15 de dezembro de 1970 e pode ser utilizada para regularização de erro ocorrido na emissão de documento fiscal, desde que o erro não esteja relacionado com: I - as variáveis que determinam o valor do imposto tais como: base de cálculo, alíquota, diferença de preço, quantidade, valor da operação ou da prestação; II - a correção de dados cadastrais que implique mudança do remetente ou do destinatário; III - a data de emissão ou de saída.</xCondUso> // </detEvento> // </infEvento> // </evento> //</envEvento> bool doSave = false; XmlDocument doc = new XmlDocument(); doc.Load(this.NomeArquivoXML); XmlNodeList envEventoList = doc.GetElementsByTagName("infEvento"); foreach (XmlNode envEventoNode in envEventoList) { XmlElement envEventoElemento = (XmlElement)envEventoNode; dadosEnvEvento.eventos.Add(new Evento() { tpEvento = Functions.LerTag(envEventoElemento, NFe.Components.TpcnResources.tpEvento.ToString(), false), tpAmb = Convert.ToInt32("0" + Functions.LerTag(envEventoElemento, NFe.Components.TpcnResources.tpAmb.ToString(), false)), cOrgao = Convert.ToInt32("0" + Functions.LerTag(envEventoElemento, NFe.Components.TpcnResources.cOrgao.ToString(), false)), nSeqEvento = Convert.ToInt32("0" + Functions.LerTag(envEventoElemento, NFe.Components.TpcnResources.nSeqEvento.ToString(), false)) }); dadosEnvEvento.eventos[dadosEnvEvento.eventos.Count - 1].chNFe = Functions.LerTag(envEventoElemento, NFe.Components.TpcnResources.chNFe.ToString(), "") + Functions.LerTag(envEventoElemento, NFe.Components.TpcnResources.chMDFe.ToString(), "") + Functions.LerTag(envEventoElemento, NFe.Components.TpcnResources.chCTe.ToString(), ""); dadosEnvEvento.eventos[dadosEnvEvento.eventos.Count - 1].tpEmis = Convert.ToInt16(dadosEnvEvento.eventos[dadosEnvEvento.eventos.Count - 1].chNFe.Substring(34, 1)); if (envEventoElemento.GetElementsByTagName(NFe.Components.TpcnResources.tpEmis.ToString()).Count != 0) { var node = envEventoElemento.GetElementsByTagName(NFe.Components.TpcnResources.tpEmis.ToString())[0]; dadosEnvEvento.eventos[dadosEnvEvento.eventos.Count - 1].tpEmis = Convert.ToInt16("0" + node.InnerText); /// para que o validador não rejeite, excluo a tag <tpEmis> envEventoNode.RemoveChild(node); doSave = true; } } /// salvo o arquivo modificado if (doSave) doc.Save(this.NomeArquivoXML); }
protected void ValidaEvento(int emp, DadosenvEvento dadosEnvEvento) { string cErro = ""; string currentEvento = dadosEnvEvento.eventos[0].tpEvento; string ctpEmis = dadosEnvEvento.eventos[0].chNFe.Substring(34, 1); foreach (Evento item in dadosEnvEvento.eventos) { if (!currentEvento.Equals(item.tpEvento)) throw new Exception(string.Format("Não é possivel mesclar tipos de eventos dentro de um mesmo xml/txt de eventos. O tipo de evento neste xml/txt é {0}", currentEvento)); switch (NFe.Components.EnumHelper.StringToEnum<NFe.ConvertTxt.tpEventos>(currentEvento)) { case ConvertTxt.tpEventos.tpEvCancelamentoNFe: if (!ctpEmis.Equals(item.chNFe.Substring(34, 1))) cErro += "Não é possivel mesclar chaves com tipo de emissão dentro de um mesmo xml/txt de eventos.\r\n"; break; case ConvertTxt.tpEventos.tpEvEPEC: switch (Empresas.Configuracoes[emp].AmbienteCodigo) { case (int)NFe.Components.TipoAmbiente.taHomologacao: if (Convert.ToInt32(item.tpAmb) == (int)NFe.Components.TipoAmbiente.taProducao) { cErro += "Conteúdo da tag tpAmb do XML está com conteúdo indicando o envio para ambiente de produção e o UniNFe está configurado para ambiente de homologação.\r\n"; } break; case (int)NFe.Components.TipoAmbiente.taProducao: if (Convert.ToInt32(item.tpAmb) == (int)NFe.Components.TipoAmbiente.taHomologacao) { cErro += "Conteúdo da tag tpAmb do XML está com conteúdo indicando o envio para ambiente de homologação e o UniNFe está configurado para ambiente de produção.\r\n"; } break; } int tpEmis = Convert.ToInt32(item.chNFe.Substring(34, 1)); if ((TipoEmissao)tpEmis != TipoEmissao.teEPEC) { cErro += string.Format("Tipo de emissão no XML deve ser \"{0}\" (tpEmis={1}), mas está informado \"{2}\" (tpEmis={3}).\r\n", NFe.Components.EnumHelper.GetDescription((TipoEmissao)Enum.ToObject(typeof(TipoEmissao), (int)TipoEmissao.teEPEC)), (int)TipoEmissao.teEPEC, NFe.Components.EnumHelper.GetDescription((TipoEmissao)Enum.ToObject(typeof(TipoEmissao), tpEmis)), tpEmis); } if ((TipoEmissao)Empresas.Configuracoes[emp].tpEmis != TipoEmissao.teEPEC) { cErro += string.Format("Tipo de emissão no Uninfe deve ser \"{0}\" (tpEmis={1}), mas está definido como \"{2}\" (tpEmis={3}).", NFe.Components.EnumHelper.GetDescription((TipoEmissao)Enum.ToObject(typeof(TipoEmissao), (int)TipoEmissao.teEPEC)), (int)TipoEmissao.teEPEC, NFe.Components.EnumHelper.GetDescription((TipoEmissao)Enum.ToObject(typeof(TipoEmissao), Empresas.Configuracoes[emp].tpEmis)), Empresas.Configuracoes[emp].tpEmis); } break; } } if (cErro != "") throw new Exception(cErro); }
public override void Execute() { int emp = Empresas.FindEmpresaByThread(); try { dadosEnvEvento = new DadosenvEvento(); //Ler o XML para pegar parâmetros de envio EnvEvento(emp, dadosEnvEvento);//, TpcnResources.chMDFe.ToString()); ValidaEvento(emp, dadosEnvEvento); //vai pegar o ambiente da Chave da Nfe autorizada p/ corrigir tpEmis int tpEmis = this.dadosEnvEvento.eventos[0].tpEmis; //Convert.ToInt32(this.dadosEnvEvento.eventos[0].chNFe.Substring(34, 1)); //Pegar o estado da chave, pois na cOrgao pode vir o estado 91 - Wandreuy 22/08/2012 int cOrgao = dadosEnvEvento.eventos[0].cOrgao; int ufParaWS = cOrgao; //Se o cOrgao for igual a 91 tenho que mudar a ufParaWS para que na hora de buscar o WSDL para conectar ao serviço, ele consiga encontrar. Wandrey 23/01/2013 if (cOrgao == 91) ufParaWS = Convert.ToInt32(dadosEnvEvento.eventos[0].chNFe.Substring(0, 2)); //Definir o objeto do WebService WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, ufParaWS, dadosEnvEvento.eventos[0].tpAmb, tpEmis); object oRecepcaoEvento = wsProxy.CriarObjeto(wsProxy.NomeClasseWS); object oCabecMsg = wsProxy.CriarObjeto(NomeClasseCabecWS(cOrgao, Servico)); wsProxy.SetProp(oCabecMsg, NFe.Components.TpcnResources.cUF.ToString(), cOrgao.ToString()); wsProxy.SetProp(oCabecMsg, NFe.Components.TpcnResources.versaoDados.ToString(), NFe.ConvertTxt.versoes.VersaoXMLMDFeEvento); //Criar objeto da classe de assinatura digital AssinaturaDigital oAD = new AssinaturaDigital(); //Assinar o XML oAD.Assinar(NomeArquivoXML, emp, cOrgao); oInvocarObj.Invocar(wsProxy, oRecepcaoEvento, wsProxy.NomeMetodoWS[0],//NomeMetodoWS(Servico, ufParaWS), oCabecMsg, this, Propriedade.ExtEnvio.PedEve.Replace(".xml", ""), Propriedade.ExtRetorno.Eve.Replace(".xml", "")); //Ler o retorno LerRetornoEvento(emp); } catch (Exception ex) { try { //Gravar o arquivo de erro de retorno para o ERP, caso ocorra TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.ExtEnvio.PedEve, Propriedade.ExtRetorno.Eve_ERR, ex); } catch { //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada. //Wandrey 09/03/2010 } } finally { try { Functions.DeletarArquivo(NomeArquivoXML); } catch { //Se falhou algo na hora de deletar o XML de evento, infelizmente //não posso fazer mais nada, o UniNFe vai tentar mandar o arquivo novamente para o webservice, pois ainda não foi excluido. //Wandrey 09/03/2010 } } }
protected override void EnvEvento(int emp, DadosenvEvento dadosEnvEvento)//, string chNFe_chCTe_chMDFe) { novaNomenclatura = this.NomeArquivoXML.ToLower().EndsWith(Propriedade.ExtEnvio.PedEve) || this.NomeArquivoXML.ToLower().EndsWith(Propriedade.ExtEnvio.PedEve_TXT); /// /// danasa 6/2011 /// if (Path.GetExtension(this.NomeArquivoXML).ToLower() == ".txt") { #region --txt ///<<<<EVENTO DE CARTA DE CORRECAO>>>> ///idLote|000000000015255 ///evento|1 ///Id|ID1101103511031029073900013955001000000001105112804101 <<opcional ///cOrgao|35 ///tpAmb|2 ///CNPJ|10290739000139 /// ou ///CPF|12345678901 ///chNFe|35110310290739000139550010000000011051128041 ///dhEvento|2011-03-03T08:06:00 ///tpEvento|110110 ///nSeqEvento|1 ///verEvento|1.00 ///descEvento|Carta de Correção <<opcional ///xCorrecao|Texto de teste para Carta de Correção. Conteúdo do campo xCorrecao. ///xCondUso|A Carta de Correção é disciplinada pelo § 1º-A do art. .......... <<opcional ///evento|2 ///Id|ID1101103511031029073900013955001000000001105112804102 ///... ///evento|20 <<MAXIMO ///Id|ID1101103511031029073900013955001000000001105112804103 ///... ///<<<<EVENTO DE CANCELAMENTO>>>> /// idLote|000000000015255 /// evento|1 /// Id|ID1101113511031029073900013955001000000001105112804102 /// cOrgao|35 /// tpAmb|2 /// CNPJ|10290739000139 /// ou /// CPF|12345678901 /// chNFe|35110310290739000139550010000000011051128041 /// dhEvento|2011-03-03T08:06:00-03:00 /// tpEvento|110111 /// nSeqEvento|1 /// verEvento|1.00 /// descEvento|Cancelamento <<opcional /// xJust|Justificativa do cancelamento /// nProt|010101010101010 ///<<<<EVENTO DE CONFIRMACAO DA OPERACAO>>>> ///idLote|000000000015255 ///evento|1 ///Id|ID2102003511031029073900013955001000000001105112804102 ///cOrgao|35 ///tpAmb|2 ///CNPJ|10290739000139 /// ou ///CPF|12345678901 ///chNFe|35110310290739000139550010000000011051128041 ///dhEvento|2011-03-03T08:06:00-03:00 ///tpEvento|210200 ///nSeqEvento|1 ///verEvento|1.00 ///descEvento|Confirmacao da Operacao <<opcional ///xJust|Justificativa..... /// ------------------------------------ ///<<<<EVENTO DE CIENCIA DA OPERACAO>>>> ///idLote|000000000015255 ///evento|1 ///Id|ID2102103511031029073900013955001000000001105112804102 ///cOrgao|35 ///tpAmb|2 ///CNPJ|10290739000139 /// ou ///CPF|12345678901 ///chNFe|35110310290739000139550010000000011051128041 ///dhEvento|2011-03-03T08:06:00-03:00 ///tpEvento|210210 ///nSeqEvento|1 ///verEvento|1.00 ///descEvento|Ciencia da Operacao <<opcional /// -------------------------------------------- ///<<<<EVENTO DE DESCONHECIMENTO DA OPERACAO>>>> ///idLote|000000000015255 ///evento|1 ///Id|ID2102203511031029073900013955001000000001105112804102 ///cOrgao|35 ///tpAmb|2 ///CNPJ|10290739000139 /// ou ///CPF|12345678901 ///chNFe|35110310290739000139550010000000011051128041 ///dhEvento|2011-03-03T08:06:00-03:00 ///tpEvento|210220 ///nSeqEvento|1 ///verEvento|1.00 ///descEvento|Desconhecimento da Operacao <<opcional ///xJust|Justificativa..... /// -------------------------------------------- ///<<<<EVENTO DE OPERACAO NAO REALIZADA>>>> ///idLote|000000000015255 ///evento|1 ///Id|ID2102403511031029073900013955001000000001105112804102 ///cOrgao|35 ///tpAmb|2 ///CNPJ|10290739000139 /// ou ///CPF|12345678901 ///chNFe|35110310290739000139550010000000011051128041 ///dhEvento|2011-03-03T08:06:00-03:00 ///tpEvento|210240 ///nSeqEvento|1 ///verEvento|1.00 ///descEvento|Operacao nao realizada <<opcional /// -------------------------------------------- ///<<<<EVENTO EPEC>>>> ///idLote|000000000015255 ///evento|1 ///Id|ID2102403511031029073900013955001000000001105112804102 ///cOrgao|35 ///tpAmb|2 ///CNPJ|10290739000139 /// ou ///CPF|12345678901 ///chNFe|35110310290739000139550010000000011051128041 ///dhEvento|2011-03-03T08:06:00-03:00 ///tpEvento|110140 ///nSeqEvento|1 ///verEvento|1.00 ///descEvento|EPEC <<opcional ///epec.cOrgaoAutor|35 ///epec.tpAutor|1 ///epec.verAplic|1.1.1.0 ///epec.dhEmi|2011-03-03T08:06:00-03:00 ///epec.tpNF|1 ///epec.IE|ISENTO ///epec.dest.UF|SP ///epec.dest.CNPJ|10290739000139 /// ou ///epec.dest.CPF|12345678901 /// ou ///epec.dest.idEstrangeiro|9999999 ///epec.dest.IE|nao pode conter o texto 'ISENTO' ///epec.dest.vNF|1234.00 ///epec.dest.vICMS|1.00 ///epec.dest.vST|2.00 List<string> cLinhas = Functions.LerArquivo(this.NomeArquivoXML); foreach (string cTexto in cLinhas) { string[] dados = cTexto.Split(new char[] { '|' }); if (dados.Length == 1) continue; switch (dados[0].ToLower()) { case "idlote": this.dadosEnvEvento.idLote = dados[1].Trim(); break; case "evento": this.dadosEnvEvento.eventos.Add(new Evento()); break; case "id": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].Id = dados[1].Trim(); break; case "corgao": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].cOrgao = Convert.ToInt32("0" + dados[1].Trim()); break; case "tpamb": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].tpAmb = Convert.ToInt32("0" + dados[1].Trim()); break; case "tpemis": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].tpEmis = Convert.ToInt32("0" + dados[1].Trim()); break; case "cnpj": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].CNPJ = dados[1].Trim(); break; case "cpf": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].CPF = dados[1].Trim(); break; case "chnfe": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].chNFe = dados[1].Trim(); break; case "dhevento": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].dhEvento = dados[1].Trim(); break; case "tpevento": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].tpEvento = dados[1].Trim(); break; case "nseqevento": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].nSeqEvento = Convert.ToInt32("0" + dados[1].Trim()); break; case "verevento": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].verEvento = dados[1].Trim(); break; case "descevento": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].descEvento = dados[1].Trim(); break; case "xcorrecao": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].xCorrecao = dados[1].Trim(); break; case "xconduso": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].xCondUso = dados[1].Trim(); break; case "xjust": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].xJust = dados[1].Trim(); break; case "nprot": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].nProt = dados[1].Trim(); break; /// /// EPEC /// case "epec.corgaoautor": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.cOrgaoAutor = Convert.ToInt32("0" + dados[1].Trim()); break; case "epec.dhemi": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dhEmi = dados[1].Trim(); break; case "epec.ie": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.IE = dados[1].Trim(); break; case "epec.veraplic": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.verAplic = dados[1].Trim(); break; case "epec.tpautor": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.tpAutor = NFe.Components.EnumHelper.StringToEnum<NFe.ConvertTxt.TpcnTipoAutor>(dados[1].Trim()); break; case "epec.tpnf": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.tpNF = NFe.Components.EnumHelper.StringToEnum<NFe.ConvertTxt.TpcnTipoNFe>(dados[1].Trim()); break; case "epec.dest.idestrangeiro": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.idEstrangeiro = dados[1].Trim(); break; case "epec.dest.cnpj": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.CNPJ = dados[1].Trim(); break; case "epec.dest.cpf": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.CPF = dados[1].Trim(); break; case "epec.dest.ie": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.IE = dados[1].Trim(); break; case "epec.dest.uf": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.UF = dados[1].Trim(); break; case "epec.dest.vnf": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.vNF = Convert.ToDouble("0" + dados[1].Trim().Replace(".", System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator)); break; case "epec.dest.vicms": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.vICMS = Convert.ToDouble("0" + dados[1].Trim().Replace(".", System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator)); break; case "epec.dest.vst": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.vST = Convert.ToDouble("0" + dados[1].Trim().Replace(".", System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator)); break; } } foreach (Evento evento in this.dadosEnvEvento.eventos) { NFe.ConvertTxt.tpEventos tpe = NFe.Components.EnumHelper.StringToEnum<NFe.ConvertTxt.tpEventos>(evento.tpEvento); switch (tpe) { case ConvertTxt.tpEventos.tpEvEPEC: case ConvertTxt.tpEventos.tpEvCancelamentoNFe: case ConvertTxt.tpEventos.tpEvCienciaOperacao: case ConvertTxt.tpEventos.tpEvConfirmacaoOperacao: case ConvertTxt.tpEventos.tpEvDesconhecimentoOperacao: case ConvertTxt.tpEventos.tpEvOperacaoNaoRealizada: evento.nSeqEvento = 1; break; case ConvertTxt.tpEventos.tpEvEncerramentoMDFe: case ConvertTxt.tpEventos.tpEvInclusaoCondutor: case ConvertTxt.tpEventos.tpEvRegistroPassagem: case ConvertTxt.tpEventos.tpEvRegistroPassagemBRid: break; } if (string.IsNullOrEmpty(evento.descEvento)) evento.descEvento = EnumHelper.GetDescription(tpe); if (string.IsNullOrEmpty(evento.verEvento)) evento.verEvento = "1.00"; if (evento.tpAmb == 0) evento.tpAmb = Empresas.Configuracoes[emp].AmbienteCodigo; if (evento.cOrgao == 0) evento.cOrgao = Convert.ToInt32(evento.chNFe.Substring(0, 2)); if (evento.tpEmis == 0) evento.tpEmis = Convert.ToInt32(evento.chNFe.Substring(34, 1)); if (string.IsNullOrEmpty(evento.Id)) evento.Id = NFe.Components.TpcnResources.ID.ToString() + evento.tpEvento + evento.chNFe + evento.nSeqEvento.ToString("00"); if (string.IsNullOrEmpty(evento.xCondUso)) if (evento.descEvento == "Carta de Correcao") evento.xCondUso = "A Carta de Correcao e disciplinada pelo paragrafo 1o-A do art. 7o do Convenio S/N, " + "de 15 de dezembro de 1970 e pode ser utilizada para regularizacao de erro ocorrido na emissao de " + "documento fiscal, desde que o erro nao esteja relacionado com: I - as variaveis que determinam o " + "valor do imposto tais como: base de calculo, aliquota, diferenca de preco, quantidade, valor da " + "operacao ou da prestacao; II - a correcao de dados cadastrais que implique mudanca do remetente " + "ou do destinatario; III - a data de emissao ou de saida."; else evento.xCondUso = "A Carta de Correção é disciplinada pelo § 1º-A do art. 7º do Convênio S/N, de 15 de dezembro de 1970 e pode ser " + "utilizada para regularização de erro ocorrido na emissão de documento fiscal, desde que o erro não esteja relacionado " + "com: I - as variáveis que determinam o valor do imposto tais como: base de cálculo, alíquota, diferença de preço, " + "quantidade, valor da operação ou da prestação; II - a correção de dados cadastrais que implique mudança do " + "remetente ou do destinatário; III - a data de emissão ou de saída."; } #endregion } else { //<?xml version="1.0" encoding="UTF-8"?> //<envEvento versao="1.00" xmlns="http://www.portalfiscal.inf.br/nfe"> // <idLote>000000000015255</idLote> // <evento versao="1.00" xmlns="http://www.portalfiscal.inf.br/nfe"> // <infEvento Id="ID1101103511031029073900013955001000000001105112804108"> // <cOrgao>35</cOrgao> // <tpAmb>2</tpAmb> // <CNPJ>10290739000139</CNPJ> // <chNFe>35110310290739000139550010000000011051128041</chNFe> // <dhEvento>2011-03-03T08:06:00-03:00</dhEvento> // <tpEvento>110110</tpEvento> // <nSeqEvento>8</nSeqEvento> // <verEvento>1.00</verEvento> // <detEvento versao="1.00"> // <descEvento>Carta de Correção</descEvento> // <xCorrecao>Texto de teste para Carta de Correção. Conteúdo do campo xCorrecao.</xCorrecao> // <xCondUso>A Carta de Correção é disciplinada pelo § 1º-A do art. 7º do Convênio S/N, de 15 de dezembro de 1970 e pode ser utilizada para regularização de erro ocorrido na emissão de documento fiscal, desde que o erro não esteja relacionado com: I - as variáveis que determinam o valor do imposto tais como: base de cálculo, alíquota, diferença de preço, quantidade, valor da operação ou da prestação; II - a correção de dados cadastrais que implique mudança do remetente ou do destinatário; III - a data de emissão ou de saída.</xCondUso> // </detEvento> // </infEvento> // </evento> //</envEvento> base.EnvEvento(emp, dadosEnvEvento);//, chNFe_chCTe_chMDFe); /************** bool doSave = false; XmlDocument doc = new XmlDocument(); doc.Load(arquivoXML); XmlNodeList envEventoList = doc.GetElementsByTagName("infEvento"); foreach (XmlNode envEventoNode in envEventoList) { XmlElement envEventoElemento = (XmlElement)envEventoNode; dadosEnvEvento.eventos.Add(new Evento()); dadosEnvEvento.eventos[dadosEnvEvento.eventos.Count - 1].tpEvento = envEventoElemento.GetElementsByTagName(NFe.Components.TpcnResources.tpEvento.ToString())[0].InnerText; dadosEnvEvento.eventos[dadosEnvEvento.eventos.Count - 1].tpAmb = Convert.ToInt32("0" + envEventoElemento.GetElementsByTagName(NFe.Components.TpcnResources.tpAmb.ToString())[0].InnerText); dadosEnvEvento.eventos[dadosEnvEvento.eventos.Count - 1].cOrgao = Convert.ToInt32("0" + envEventoElemento.GetElementsByTagName(NFe.Components.TpcnResources.cOrgao.ToString())[0].InnerText); dadosEnvEvento.eventos[dadosEnvEvento.eventos.Count - 1].chNFe = envEventoElemento.GetElementsByTagName(NFe.Components.TpcnResources.chNFe.ToString())[0].InnerText; dadosEnvEvento.eventos[dadosEnvEvento.eventos.Count - 1].nSeqEvento = Convert.ToInt32("0" + envEventoElemento.GetElementsByTagName(NFe.Components.TpcnResources.nSeqEvento.ToString())[0].InnerText); dadosEnvEvento.eventos[dadosEnvEvento.eventos.Count - 1].tpEmis = Convert.ToInt16(dadosEnvEvento.eventos[dadosEnvEvento.eventos.Count - 1].chNFe.Substring(34, 1)); if (envEventoElemento.GetElementsByTagName(NFe.Components.TpcnResources.tpEmis.ToString()).Count != 0) { dadosEnvEvento.eventos[dadosEnvEvento.eventos.Count - 1].tpEmis = Convert.ToInt16(envEventoElemento.GetElementsByTagName(NFe.Components.TpcnResources.tpEmis.ToString())[0].InnerText); /// para que o validador não rejeite, excluo a tag <tpEmis> doc.DocumentElement.RemoveChild(envEventoElemento.GetElementsByTagName(NFe.Components.TpcnResources.tpEmis.ToString())[0]); /// salvo o arquivo modificado doSave = true; } } if (doSave) doc.Save(arquivoXML); * ***************/ } }
protected override void EnvEvento(int emp, DadosenvEvento dadosEnvEvento)//, string chNFe_chCTe_chMDFe) { novaNomenclatura = this.NomeArquivoXML.ToLower().EndsWith(Propriedade.ExtEnvio.PedEve) || this.NomeArquivoXML.ToLower().EndsWith(Propriedade.ExtEnvio.PedEve_TXT); /// /// danasa 6/2011 /// if (Path.GetExtension(this.NomeArquivoXML).ToLower() == ".txt") { #region --txt ///<<<<EVENTO DE CARTA DE CORRECAO>>>> ///idLote|000000000015255 ///evento|1 ///Id|ID1101103511031029073900013955001000000001105112804101 <<opcional ///cOrgao|35 ///tpAmb|2 ///CNPJ|10290739000139 /// ou ///CPF|12345678901 ///chNFe|35110310290739000139550010000000011051128041 ///dhEvento|2011-03-03T08:06:00 ///tpEvento|110110 ///nSeqEvento|1 ///verEvento|1.00 ///descEvento|Carta de Correção <<opcional ///xCorrecao|Texto de teste para Carta de Correção. Conteúdo do campo xCorrecao. ///xCondUso|A Carta de Correção é disciplinada pelo § 1º-A do art. .......... <<opcional ///evento|2 ///Id|ID1101103511031029073900013955001000000001105112804102 ///... ///evento|20 <<MAXIMO ///Id|ID1101103511031029073900013955001000000001105112804103 ///... ///<<<<EVENTO DE CANCELAMENTO>>>> /// idLote|000000000015255 /// evento|1 /// Id|ID1101113511031029073900013955001000000001105112804102 /// cOrgao|35 /// tpAmb|2 /// CNPJ|10290739000139 /// ou /// CPF|12345678901 /// chNFe|35110310290739000139550010000000011051128041 /// dhEvento|2011-03-03T08:06:00-03:00 /// tpEvento|110111 /// nSeqEvento|1 /// verEvento|1.00 /// descEvento|Cancelamento <<opcional /// xJust|Justificativa do cancelamento /// nProt|010101010101010 ///<<<<EVENTO DE CONFIRMACAO DA OPERACAO>>>> ///idLote|000000000015255 ///evento|1 ///Id|ID2102003511031029073900013955001000000001105112804102 ///cOrgao|35 ///tpAmb|2 ///CNPJ|10290739000139 /// ou ///CPF|12345678901 ///chNFe|35110310290739000139550010000000011051128041 ///dhEvento|2011-03-03T08:06:00-03:00 ///tpEvento|210200 ///nSeqEvento|1 ///verEvento|1.00 ///descEvento|Confirmacao da Operacao <<opcional ///xJust|Justificativa..... /// ------------------------------------ ///<<<<EVENTO DE CIENCIA DA OPERACAO>>>> ///idLote|000000000015255 ///evento|1 ///Id|ID2102103511031029073900013955001000000001105112804102 ///cOrgao|35 ///tpAmb|2 ///CNPJ|10290739000139 /// ou ///CPF|12345678901 ///chNFe|35110310290739000139550010000000011051128041 ///dhEvento|2011-03-03T08:06:00-03:00 ///tpEvento|210210 ///nSeqEvento|1 ///verEvento|1.00 ///descEvento|Ciencia da Operacao <<opcional /// -------------------------------------------- ///<<<<EVENTO DE DESCONHECIMENTO DA OPERACAO>>>> ///idLote|000000000015255 ///evento|1 ///Id|ID2102203511031029073900013955001000000001105112804102 ///cOrgao|35 ///tpAmb|2 ///CNPJ|10290739000139 /// ou ///CPF|12345678901 ///chNFe|35110310290739000139550010000000011051128041 ///dhEvento|2011-03-03T08:06:00-03:00 ///tpEvento|210220 ///nSeqEvento|1 ///verEvento|1.00 ///descEvento|Desconhecimento da Operacao <<opcional ///xJust|Justificativa..... /// -------------------------------------------- ///<<<<EVENTO DE OPERACAO NAO REALIZADA>>>> ///idLote|000000000015255 ///evento|1 ///Id|ID2102403511031029073900013955001000000001105112804102 ///cOrgao|35 ///tpAmb|2 ///CNPJ|10290739000139 /// ou ///CPF|12345678901 ///chNFe|35110310290739000139550010000000011051128041 ///dhEvento|2011-03-03T08:06:00-03:00 ///tpEvento|210240 ///nSeqEvento|1 ///verEvento|1.00 ///descEvento|Operacao nao realizada <<opcional /// -------------------------------------------- ///<<<<EVENTO EPEC>>>> ///idLote|000000000015255 ///evento|1 ///Id|ID2102403511031029073900013955001000000001105112804102 ///cOrgao|35 ///tpAmb|2 ///CNPJ|10290739000139 /// ou ///CPF|12345678901 ///chNFe|35110310290739000139550010000000011051128041 ///dhEvento|2011-03-03T08:06:00-03:00 ///tpEvento|110140 ///nSeqEvento|1 ///verEvento|1.00 ///descEvento|EPEC <<opcional ///epec.cOrgaoAutor|35 ///epec.tpAutor|1 ///epec.verAplic|1.1.1.0 ///epec.dhEmi|2011-03-03T08:06:00-03:00 ///epec.tpNF|1 ///epec.IE|ISENTO ///epec.dest.UF|SP ///epec.dest.CNPJ|10290739000139 /// ou ///epec.dest.CPF|12345678901 /// ou ///epec.dest.idEstrangeiro|9999999 ///epec.dest.IE|nao pode conter o texto 'ISENTO' ///epec.dest.vNF|1234.00 ///epec.dest.vICMS|1.00 ///epec.dest.vST|2.00 List <string> cLinhas = Functions.LerArquivo(this.NomeArquivoXML); foreach (string cTexto in cLinhas) { string[] dados = cTexto.Split(new char[] { '|' }); if (dados.Length == 1) { continue; } switch (dados[0].ToLower()) { case "idlote": this.dadosEnvEvento.idLote = dados[1].Trim(); break; case "evento": this.dadosEnvEvento.eventos.Add(new Evento()); break; case "id": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].Id = dados[1].Trim(); break; case "corgao": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].cOrgao = Convert.ToInt32("0" + dados[1].Trim()); break; case "tpamb": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].tpAmb = Convert.ToInt32("0" + dados[1].Trim()); break; case "tpemis": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].tpEmis = Convert.ToInt32("0" + dados[1].Trim()); break; case "cnpj": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].CNPJ = dados[1].Trim(); break; case "cpf": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].CPF = dados[1].Trim(); break; case "chnfe": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].chNFe = dados[1].Trim(); break; case "dhevento": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].dhEvento = dados[1].Trim(); break; case "tpevento": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].tpEvento = dados[1].Trim(); break; case "nseqevento": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].nSeqEvento = Convert.ToInt32("0" + dados[1].Trim()); break; case "verevento": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].verEvento = dados[1].Trim(); break; case "descevento": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].descEvento = dados[1].Trim(); break; case "xcorrecao": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].xCorrecao = dados[1].Trim(); break; case "xconduso": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].xCondUso = dados[1].Trim(); break; case "xjust": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].xJust = dados[1].Trim(); break; case "nprot": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].nProt = dados[1].Trim(); break; /// /// EPEC /// case "epec.corgaoautor": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.cOrgaoAutor = Convert.ToInt32("0" + dados[1].Trim()); break; case "epec.dhemi": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dhEmi = dados[1].Trim(); break; case "epec.ie": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.IE = dados[1].Trim(); break; case "epec.veraplic": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.verAplic = dados[1].Trim(); break; case "epec.tpautor": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.tpAutor = NFe.Components.EnumHelper.StringToEnum <NFe.ConvertTxt.TpcnTipoAutor>(dados[1].Trim()); break; case "epec.tpnf": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.tpNF = NFe.Components.EnumHelper.StringToEnum <NFe.ConvertTxt.TpcnTipoNFe>(dados[1].Trim()); break; case "epec.dest.idestrangeiro": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.idEstrangeiro = dados[1].Trim(); break; case "epec.dest.cnpj": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.CNPJ = dados[1].Trim(); break; case "epec.dest.cpf": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.CPF = dados[1].Trim(); break; case "epec.dest.ie": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.IE = dados[1].Trim(); break; case "epec.dest.uf": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.UF = dados[1].Trim(); break; case "epec.dest.vnf": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.vNF = Convert.ToDouble("0" + dados[1].Trim().Replace(".", System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator)); break; case "epec.dest.vicms": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.vICMS = Convert.ToDouble("0" + dados[1].Trim().Replace(".", System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator)); break; case "epec.dest.vst": this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.vST = Convert.ToDouble("0" + dados[1].Trim().Replace(".", System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator)); break; } } foreach (Evento evento in this.dadosEnvEvento.eventos) { NFe.ConvertTxt.tpEventos tpe = NFe.Components.EnumHelper.StringToEnum <NFe.ConvertTxt.tpEventos>(evento.tpEvento); switch (tpe) { case ConvertTxt.tpEventos.tpEvEPEC: case ConvertTxt.tpEventos.tpEvCancelamentoNFe: case ConvertTxt.tpEventos.tpEvCienciaOperacao: case ConvertTxt.tpEventos.tpEvConfirmacaoOperacao: case ConvertTxt.tpEventos.tpEvDesconhecimentoOperacao: case ConvertTxt.tpEventos.tpEvOperacaoNaoRealizada: evento.nSeqEvento = 1; break; case ConvertTxt.tpEventos.tpEvEncerramentoMDFe: case ConvertTxt.tpEventos.tpEvInclusaoCondutor: case ConvertTxt.tpEventos.tpEvRegistroPassagem: case ConvertTxt.tpEventos.tpEvRegistroPassagemBRid: break; } if (string.IsNullOrEmpty(evento.descEvento)) { evento.descEvento = EnumHelper.GetDescription(tpe); } if (string.IsNullOrEmpty(evento.verEvento)) { evento.verEvento = "1.00"; } if (evento.tpAmb == 0) { evento.tpAmb = Empresas.Configuracoes[emp].AmbienteCodigo; } if (evento.cOrgao == 0) { evento.cOrgao = Convert.ToInt32(evento.chNFe.Substring(0, 2)); } if (evento.tpEmis == 0) { evento.tpEmis = Convert.ToInt32(evento.chNFe.Substring(34, 1)); } if (string.IsNullOrEmpty(evento.Id)) { evento.Id = NFe.Components.TpcnResources.ID.ToString() + evento.tpEvento + evento.chNFe + evento.nSeqEvento.ToString("00"); } if (string.IsNullOrEmpty(evento.xCondUso)) { if (evento.descEvento == "Carta de Correcao") { evento.xCondUso = "A Carta de Correcao e disciplinada pelo paragrafo 1o-A do art. 7o do Convenio S/N, " + "de 15 de dezembro de 1970 e pode ser utilizada para regularizacao de erro ocorrido na emissao de " + "documento fiscal, desde que o erro nao esteja relacionado com: I - as variaveis que determinam o " + "valor do imposto tais como: base de calculo, aliquota, diferenca de preco, quantidade, valor da " + "operacao ou da prestacao; II - a correcao de dados cadastrais que implique mudanca do remetente " + "ou do destinatario; III - a data de emissao ou de saida."; } else { evento.xCondUso = "A Carta de Correção é disciplinada pelo § 1º-A do art. 7º do Convênio S/N, de 15 de dezembro de 1970 e pode ser " + "utilizada para regularização de erro ocorrido na emissão de documento fiscal, desde que o erro não esteja relacionado " + "com: I - as variáveis que determinam o valor do imposto tais como: base de cálculo, alíquota, diferença de preço, " + "quantidade, valor da operação ou da prestação; II - a correção de dados cadastrais que implique mudança do " + "remetente ou do destinatário; III - a data de emissão ou de saída."; } } } #endregion } else { //<?xml version="1.0" encoding="UTF-8"?> //<envEvento versao="1.00" xmlns="http://www.portalfiscal.inf.br/nfe"> // <idLote>000000000015255</idLote> // <evento versao="1.00" xmlns="http://www.portalfiscal.inf.br/nfe"> // <infEvento Id="ID1101103511031029073900013955001000000001105112804108"> // <cOrgao>35</cOrgao> // <tpAmb>2</tpAmb> // <CNPJ>10290739000139</CNPJ> // <chNFe>35110310290739000139550010000000011051128041</chNFe> // <dhEvento>2011-03-03T08:06:00-03:00</dhEvento> // <tpEvento>110110</tpEvento> // <nSeqEvento>8</nSeqEvento> // <verEvento>1.00</verEvento> // <detEvento versao="1.00"> // <descEvento>Carta de Correção</descEvento> // <xCorrecao>Texto de teste para Carta de Correção. Conteúdo do campo xCorrecao.</xCorrecao> // <xCondUso>A Carta de Correção é disciplinada pelo § 1º-A do art. 7º do Convênio S/N, de 15 de dezembro de 1970 e pode ser utilizada para regularização de erro ocorrido na emissão de documento fiscal, desde que o erro não esteja relacionado com: I - as variáveis que determinam o valor do imposto tais como: base de cálculo, alíquota, diferença de preço, quantidade, valor da operação ou da prestação; II - a correção de dados cadastrais que implique mudança do remetente ou do destinatário; III - a data de emissão ou de saída.</xCondUso> // </detEvento> // </infEvento> // </evento> //</envEvento> base.EnvEvento(emp, dadosEnvEvento);//, chNFe_chCTe_chMDFe); /************** * bool doSave = false; * * XmlDocument doc = new XmlDocument(); * doc.Load(arquivoXML); * * XmlNodeList envEventoList = doc.GetElementsByTagName("infEvento"); * * foreach (XmlNode envEventoNode in envEventoList) * { * XmlElement envEventoElemento = (XmlElement)envEventoNode; * * dadosEnvEvento.eventos.Add(new Evento()); * dadosEnvEvento.eventos[dadosEnvEvento.eventos.Count - 1].tpEvento = envEventoElemento.GetElementsByTagName(NFe.Components.TpcnResources.tpEvento.ToString())[0].InnerText; * dadosEnvEvento.eventos[dadosEnvEvento.eventos.Count - 1].tpAmb = Convert.ToInt32("0" + envEventoElemento.GetElementsByTagName(NFe.Components.TpcnResources.tpAmb.ToString())[0].InnerText); * dadosEnvEvento.eventos[dadosEnvEvento.eventos.Count - 1].cOrgao = Convert.ToInt32("0" + envEventoElemento.GetElementsByTagName(NFe.Components.TpcnResources.cOrgao.ToString())[0].InnerText); * dadosEnvEvento.eventos[dadosEnvEvento.eventos.Count - 1].chNFe = envEventoElemento.GetElementsByTagName(NFe.Components.TpcnResources.chNFe.ToString())[0].InnerText; * dadosEnvEvento.eventos[dadosEnvEvento.eventos.Count - 1].nSeqEvento = Convert.ToInt32("0" + envEventoElemento.GetElementsByTagName(NFe.Components.TpcnResources.nSeqEvento.ToString())[0].InnerText); * dadosEnvEvento.eventos[dadosEnvEvento.eventos.Count - 1].tpEmis = Convert.ToInt16(dadosEnvEvento.eventos[dadosEnvEvento.eventos.Count - 1].chNFe.Substring(34, 1)); * * if (envEventoElemento.GetElementsByTagName(NFe.Components.TpcnResources.tpEmis.ToString()).Count != 0) * { * dadosEnvEvento.eventos[dadosEnvEvento.eventos.Count - 1].tpEmis = Convert.ToInt16(envEventoElemento.GetElementsByTagName(NFe.Components.TpcnResources.tpEmis.ToString())[0].InnerText); * /// para que o validador não rejeite, excluo a tag <tpEmis> * doc.DocumentElement.RemoveChild(envEventoElemento.GetElementsByTagName(NFe.Components.TpcnResources.tpEmis.ToString())[0]); * /// salvo o arquivo modificado * doSave = true; * } * } * if (doSave) doc.Save(arquivoXML); * ***************/ } }