public static bool CanceladaPorEvento(this NotaFiscal oNFe, ClientEnvironment clientEnvironment) { return(oNFe.CarregarEventos(clientEnvironment).Exists(ev => ev.tpEvento == TEventoInfEventoTpEvento.Cancelamento && (ev.codigoSituacao == TipoSituacaoEvento.FinalizadoAprovado135 || ev.codigoSituacao == TipoSituacaoEvento.FinalizadoAprovado136 || ev.codigoSituacao == TipoSituacaoEvento.FinalizadoAprovado155))); }
private void DoRefresh() { ClientEnvironment manager = null; try { manager = Conexao.CreateManager(Program.ConAux); oNFe = (NotaFiscal)NotaFiscalDAL.Instance.Find(oNFe.GetKeyString(), manager); txChaveNota.Text = oNFe.chaveNota; txLote.Text = oNFe.numeroLote.ToString(); txCodSit.Text = oNFe.codigoSituacao.ToString(); txDatSit.Text = oNFe.dataSituacao.ToString(); txDesSit.Text = oNFe.descricaoSituacao; if (!String.IsNullOrEmpty(oNFe.cStat)) { txcStat.Text = oNFe.cStat; } if (!String.IsNullOrEmpty(oNFe.xMotivo)) { txxMotivo.Text = oNFe.xMotivo; } if (!String.IsNullOrEmpty(oNFe.nProt)) { txnProt.Text = oNFe.nProt; } if (!String.IsNullOrEmpty(oNFe.nProtCancelamento)) { txnProtCanc.Text = oNFe.nProtCancelamento; } System.Xml.XmlDocument xmlNota = new System.Xml.XmlDocument(); xmlNota.LoadXml(oNFe.xmlNota); NFeUtils.PopulaTreeView(xmlNota, tvXmlNota); if (oNFe.codigoSituacao == TipoSituacaoNota.XMLInvalido) //xml invalido { tvProcFinal.Visible = false; tbProcFinal.Visible = true; tbProcFinal.Text = oNFe.xmlProcesso; } else if (!String.IsNullOrEmpty(oNFe.xmlProcesso)) { xmlNota.LoadXml(oNFe.xmlProcesso); NFeUtils.PopulaTreeView(xmlNota, tvProcFinal); } //carregar eventos dgvEventos.AutoGenerateColumns = false; dgvEventos.DataSource = oNFe.CarregarEventos(manager); System.Xml.XmlDocument xmlCancelamento = new System.Xml.XmlDocument(); if (!String.IsNullOrEmpty(oNFe.xmlPedidoCancelamento)) { xmlCancelamento.LoadXml(oNFe.xmlPedidoCancelamento); NFeUtils.PopulaTreeView(xmlCancelamento, tvXmlCancelamento); } if (!String.IsNullOrEmpty(oNFe.xmlProcessoCancelamento)) { xmlCancelamento.LoadXml(oNFe.xmlProcessoCancelamento); NFeUtils.PopulaTreeView(xmlCancelamento, tvProcCancelamento); } xmlCancelamento = null; } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { Conexao.DisposeManager(manager); } }
void oFrm_DoOnOkEvtCanc_Click(object sender, EventArgs e) { ClientEnvironment manager = null; Parametro oParam = null; try { if (String.IsNullOrEmpty(oFrm.TextResposta.Text)) { throw new Exception("Motivo não foi informado."); } manager = Conexao.CreateManager(Program.ConAux); oParam = Program.GetParametro(Program.empresaSelecionada, manager); //verificar se já existe algum evento desse tipo registrado para a NFe //verificar nSeqEvento int nSeqEvento = oNFe.CarregarEventos(manager) .Count(ev => ev.tpEvento == TEventoInfEventoTpEvento.Cancelamento && (ev.codigoSituacao == TipoSituacaoEvento.FinalizadoAprovado135 || ev.codigoSituacao == TipoSituacaoEvento.FinalizadoAprovado136 || ev.codigoSituacao == TipoSituacaoEvento.FinalizadoAprovado155)) + 1; var oEvento = (ITEvento)XMLUtils.XMLFactory(oParam.versao, "TEvento"); var oProtNFe = (ITProtNFe)XMLUtils.CarregaXML_STR(oNFe.xmlProcesso, oNFe.versao, "TProtNFe"); //carregar dados do evento - Cancelamento oEvento.versao = oParam.versaoDadosEventos; oEvento.infEvento = (ITEventoInfEvento)XMLUtils.XMLFactory(oParam.versao, "TEventoInfEvento"); //“ID” + tpEvento + chave da NF-e + nSeqEvento oEvento.infEvento.Id = String.Format("ID110111{0}{1:00}", oProtNFe.infProt.chNFe, nSeqEvento); oEvento.infEvento.cOrgao = oParam.UF.ToCOrgaoIBGE(); oEvento.infEvento.tpAmb = oProtNFe.infProt.tpAmb; oEvento.infEvento.Item = oNFe.chaveNota.Substring(9, 14); oEvento.infEvento.ItemElementName = ITCTypeCNPJCPF.CNPJ; oEvento.infEvento.chNFe = oProtNFe.infProt.chNFe; //Data e hora do evento no formato AAAA-MM-DDThh:mm:ssTZD //(UTC - Universal Coordinated Time, onde TZD pode ser -02:00 (Fernando de Noronha), //-03:00 (Brasília) ou -04:00 (Manaus), no horário de verão serão -01:00, -02:00 e -03:00. //Ex.: 2010-08-19T13:00:15-03:00. oEvento.infEvento.dhEvento = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:sszzzz"); oEvento.infEvento.tpEvento = TEventoInfEventoTpEvento.Cancelamento.GetXmlEnumAttributeValueFromEnum(); oEvento.infEvento.nSeqEvento = nSeqEvento.ToString(); oEvento.infEvento.verEvento = TEventoInfEventoVerEvento.Item100; oEvento.infEvento.detEvento = (ITEventoInfEventoDetEvento)XMLUtils.XMLFactory(oParam.versao, "TEventoInfEventoDetEvento"); oEvento.infEvento.detEvento.descEvento = TEventoInfEventoDetEventoDescEvento.Cancelamento.GetXmlEnumAttributeValueFromEnum(); oEvento.infEvento.detEvento.versao = TEventoInfEventoDetEventoVersao.Item100; oEvento.infEvento.detEvento.nProt = oProtNFe.infProt.nProt; oEvento.infEvento.detEvento.xJust = oFrm.TextResposta.Text.Trim(); oProtNFe = null; //salvar na caixa de entrada var date = DateTime.Now; XMLUtils.SalvaXML(oParam.pastaEntrada + "evtCanc_" + date.ToString("yyMMdd") + oParam.empresa + date.Ticks.ToString() + ".xml", oEvento, oParam.versao); String msgRet = "Pedido gerado com sucesso!"; if (!Program.empresasHabilitadas.First(em => em.cnpj == Program.empresaSelecionada).AutomacaoHabilitada&& !Program.ServicoHabilitado) { msgRet += " Automação esta desabilitada. Favor Iniciar Automação para enviar pedido."; } MessageBox.Show(msgRet); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { oFrm.Close(); oFrm.Dispose(); Conexao.DisposeManager(manager); } }