Пример #1
0
        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();
                }
            }
        }
Пример #2
0
        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();
                }
            }
        }
Пример #3
0
 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);
     }
 }
Пример #4
0
        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.");
            }
        }