public static string Excluir(TRegistro_EventoNFe val, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_EventoNFe qtb_evento = new TCD_EventoNFe(); try { if (banco == null) { st_transacao = qtb_evento.CriarBanco_Dados(true); } else { qtb_evento.Banco_Dados = banco; } qtb_evento.Excluir(val); if (st_transacao) { qtb_evento.Banco_Dados.Commit_Tran(); } return(val.Id_eventostr); } catch (Exception ex) { if (st_transacao) { qtb_evento.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro excluir evento: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_evento.deletarBanco_Dados(); } } }
public static string Gravar(TRegistro_EventoNFe val, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_EventoNFe qtb_evento = new TCD_EventoNFe(); try { if (banco == null) { st_transacao = qtb_evento.CriarBanco_Dados(true); } else { qtb_evento.Banco_Dados = banco; } val.Id_eventostr = CamadaDados.TDataQuery.getPubVariavel(qtb_evento.Gravar(val), "@P_ID_EVENTO"); if (st_transacao) { qtb_evento.Banco_Dados.Commit_Tran(); } return(val.Id_eventostr); } catch (Exception ex) { if (st_transacao) { qtb_evento.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro gravar evento: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_evento.deletarBanco_Dados(); } } }
private void bbCiencia_Click(object sender, EventArgs e) { if (bsConsultaDest.Current != null) { TList_EventoNFe lEvento = new TCD_EventoNFe().Select( new TpBusca[] { new TpBusca() { vNM_Campo = "a.chave_acesso", vOperador = "=", vVL_Busca = "'" + (bsConsultaDest.Current as TRegistro_ConsultaDest).chave_acesso.Trim() + "'" }, new TpBusca() { vNM_Campo = "d.cd_evento", vOperador = "=", vVL_Busca = "'210210'" } }, 0, string.Empty); if (lEvento.Exists(p => p.St_registro.Trim().ToUpper().Equals("T"))) { MessageBox.Show("NF-e já possui evento <CIENCIA DA OPERAÇÃO> transmitido.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } if (lEvento.Count > 0) { if (rCfgNfe == null) { MessageBox.Show("Não existe configuração para envio do evento para a empresa " + (bsConsultaDest.Current as TRegistro_ConsultaDest).Cd_empresa.Trim() + ".", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { try { string msg = srvNFE.Evento.TEventoNFe.EnviarEvento(lEvento[0], rCfgNfe); if (!string.IsNullOrEmpty(msg)) { MessageBox.Show("Erro ao enviar evento para a receita. Aguarde um tempo e tente novamente.\r\n" + "Erro: " + msg.Trim(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { MessageBox.Show("Evento enviado com sucesso.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); } } catch (Exception ex) { MessageBox.Show(ex.Message.Trim(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } else { //Buscar evento de Manifesto TList_Evento lEvent = TCN_Evento.Buscar("210210", string.Empty, "MF", null); if (lEvent.Count.Equals(0)) { MessageBox.Show("Não existe evento <210210-CIENCIA DA OPERAÇÃO> configurado.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } TRegistro_EventoNFe rMan = new TRegistro_EventoNFe(); rMan.Cd_empresa = (bsConsultaDest.Current as TRegistro_ConsultaDest).Cd_empresa; rMan.Chave_acesso_nfe = (bsConsultaDest.Current as TRegistro_ConsultaDest).chave_acesso; rMan.Dt_evento = CamadaDados.UtilData.Data_Servidor(); rMan.Cd_eventostr = lEvent[0].Cd_eventostr; rMan.Descricao_evento = lEvent[0].Ds_evento; rMan.Tp_evento = lEvent[0].Tp_evento; rMan.St_registro = "A"; TCN_EventoNFe.Gravar(rMan, null); if (MessageBox.Show("Evento gravado com sucesso.\r\n" + "Deseja enviar o mesmo para a receita?", "Pergunta", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes) { if (rCfgNfe == null) { MessageBox.Show("Não existe configuração para envio do evento para a empresa " + (bsConsultaDest.Current as TRegistro_ConsultaDest).Cd_empresa.Trim() + ".", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { try { string msg = srvNFE.Evento.TEventoNFe.EnviarEvento(rMan, rCfgNfe); if (!string.IsNullOrEmpty(msg)) { MessageBox.Show("Erro ao enviar evento para a receita. Aguarde um tempo e tente novamente.\r\n" + "Erro: " + msg.Trim(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { MessageBox.Show("Evento enviado com sucesso.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); } } catch (Exception ex) { MessageBox.Show(ex.Message.Trim(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } } } else { MessageBox.Show("Obrigatório selecionar registro.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
public static string EnviarEvento(TRegistro_EventoNFe rEvento, TRegistro_CfgNfe rCfgNfe) { //Validar certificado ConsultaStatusServico.ConsultaStatusServico.ValidarCertificado(rCfgNfe); decimal seqEvento = 1; if (rEvento.Tp_evento.Trim().ToUpper().Equals("CC")) { object obj = new TCD_EventoNFe().BuscarEscalar( new TpBusca[] { new TpBusca() { vNM_Campo = "a.cd_empresa", vOperador = "=", vVL_Busca = "'" + rEvento.Cd_empresa.Trim() + "'" }, new TpBusca() { vNM_Campo = "a.nr_lanctofiscal", vOperador = "=", vVL_Busca = rEvento.Nr_lanctofiscalstr }, new TpBusca() { vNM_Campo = "isnull(a.st_registro, 'A')", vOperador = "=", vVL_Busca = "'T'" }, new TpBusca() { vNM_Campo = "d.tp_evento", vOperador = "=", vVL_Busca = "'CC'" } }, "count(*)"); if (obj != null) { seqEvento += decimal.Parse(obj.ToString()); } } StringBuilder xml = new StringBuilder(); xml.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"); xml.Append("<envEvento xmlns=\"http://www.portalfiscal.inf.br/nfe\" versao=\"" + rCfgNfe.Cd_versaoEvento + "\">\n"); xml.Append("<idLote>"); xml.Append(rEvento.Id_eventostr); xml.Append("</idLote>\n"); #region Grupo Evento xml.Append("<evento xmlns=\"http://www.portalfiscal.inf.br/nfe\" versao=\"" + rCfgNfe.Cd_versaoEvento + "\">\n"); #region Grupo infEvento xml.Append("<infEvento Id=\"ID" + rEvento.Cd_eventostr + rEvento.Chave_acesso_nfe.Trim() + seqEvento.ToString().FormatStringEsquerda(2, '0') + "\">\n"); xml.Append("<cOrgao>"); xml.Append(rEvento.Tp_evento.Trim().ToUpper().Equals("MF") ? "91" : rCfgNfe.Cd_uf_empresa.Trim()); xml.Append("</cOrgao>\n"); xml.Append("<tpAmb>"); xml.Append(rCfgNfe.Tp_ambiente.Trim().ToUpper().Equals("P") ? "1" : "2"); xml.Append("</tpAmb>\n"); xml.Append("<CNPJ>"); xml.Append(rCfgNfe.Cnpj_empresa.SoNumero()); xml.Append("</CNPJ>\n"); xml.Append("<chNFe>"); xml.Append(rEvento.Chave_acesso_nfe.Trim()); xml.Append("</chNFe>\n"); xml.Append("<dhEvento>"); xml.Append(rEvento.Dt_evento.Value.ToString("yyyy-MM-ddTHH:mm:sszzz")); xml.Append("</dhEvento>\n"); xml.Append("<tpEvento>"); xml.Append(rEvento.Cd_eventostr); xml.Append("</tpEvento>\n"); xml.Append("<nSeqEvento>"); xml.Append(seqEvento.ToString()); xml.Append("</nSeqEvento>\n"); xml.Append("<verEvento>"); xml.Append(rCfgNfe.Cd_versaoEvento); xml.Append("</verEvento>\n"); #region Grupo detEvento xml.Append("<detEvento versao=\"" + rCfgNfe.Cd_versaoEvento + "\">\n"); xml.Append("<descEvento>"); xml.Append(rEvento.Descricao_evento.Trim()); xml.Append("</descEvento>\n"); if (rEvento.Tp_evento.Trim().ToUpper().Equals("CC"))//Carta Correcao { xml.Append("<xCorrecao>"); xml.Append(rEvento.Ds_evento.Trim()); xml.Append("</xCorrecao>\n"); xml.Append("<xCondUso>"); xml.Append(rCfgNfe.Ds_condusoCCe.Trim()); xml.Append("</xCondUso>\n"); } else if (rEvento.Tp_evento.Trim().ToUpper().Equals("CA"))//Cancelamento { xml.Append("<nProt>"); xml.Append(rEvento.Nr_protocoloNfe); xml.Append("</nProt>\n"); xml.Append("<xJust>"); xml.Append(rEvento.Ds_evento.Trim()); xml.Append("</xJust>\n"); } else if (!string.IsNullOrEmpty(rEvento.Ds_evento)) { xml.Append("<xJust>"); xml.Append(rEvento.Ds_evento.Trim()); xml.Append("</xJust>\n"); } xml.Append("</detEvento>\n"); #endregion xml.Append("</infEvento>\n"); #endregion xml.Append("</evento>\n"); #endregion xml.Append("</envEvento>\n"); //Assinar documento XML string xmlassinado = new Utils.Assinatura.TAssinatura2(rCfgNfe.Nr_certificado_nfe, Utils.Assinatura.TAssinatura2.TTpArq.tpCCe, xml.ToString()).Assinar(); //Validar Schema XML Utils.ValidaSchema.ValidaXML2.validaXML(xmlassinado, rCfgNfe.Path_nfe_schemas.SeparadorDiretorio() + (rEvento.Tp_evento.Trim().ToUpper().Equals("CC") ? "envCCe_v" + rCfgNfe.Cd_versaoEvento.Trim() : rEvento.Tp_evento.Trim().ToUpper().Equals("CA") ? "envEventoCancNFe_v" + rCfgNfe.Cd_versaoEvento.Trim() : "envConfRecebto_v" + rCfgNfe.Cd_versaoEvento.Trim()) + ".xsd", "NFE"); if (!string.IsNullOrEmpty(Utils.ValidaSchema.ValidaXML2.Retorno)) { throw new Exception(Utils.ValidaSchema.ValidaXML2.Retorno.Trim()); } //Enviar arquivo para Receita XmlDocument doc = new XmlDocument(); doc.LoadXml(xmlassinado); if (rEvento.Tp_evento.Trim().ToUpper().Equals("CA")) { rCfgNfe.St_nfecontingencia = new CamadaDados.Faturamento.NotaFiscal.TCD_LanFaturamento().BuscarEscalar( new TpBusca[] { new TpBusca() { vNM_Campo = "a.cd_empresa", vOperador = "=", vVL_Busca = "'" + rEvento.Cd_empresa.Trim() + "'" }, new TpBusca() { vNM_Campo = "a.nr_lanctofiscal", vOperador = "=", vVL_Busca = rEvento.Nr_lanctofiscalstr }, new TpBusca() { vNM_Campo = "a.tp_emissaonfe", vOperador = "<>", vVL_Busca = "'1'" } }, "1") != null; } XmlNode retorno = ConectarWebService(doc.DocumentElement, rEvento.Tp_evento, rCfgNfe); //Tratar retorno if (retorno != null) { if (retorno["cStat"].InnerText.Trim().Equals("128")) { if (retorno["retEvento"]["infEvento"]["cStat"].InnerText.Trim().Equals("135") || retorno["retEvento"]["infEvento"]["cStat"].InnerText.Trim().Equals("136")) { rEvento.St_registro = "T"; try { rEvento.Nr_protocolo = decimal.Parse(retorno["retEvento"]["infEvento"]["nProt"].InnerText); } catch { } rEvento.Xml_evento = xmlassinado; rEvento.Xml_retevento = retorno.InnerXml; CamadaNegocio.Faturamento.NFE.TCN_EventoNFe.Gravar(rEvento, null); return(string.Empty); } else { return(retorno["retEvento"]["infEvento"]["xMotivo"].InnerText); } } else { return(retorno["xMotivo"].InnerText); } } else { throw new Exception("Ocorreu um erro ao enviar EVENTO para receita."); } }