private void btnBuscaRetorno_Click(object sender, EventArgs e) { frmStatusEnvioNfs objfrmStatus = null; try { #region Busca Notas Selecionadas na Grid string sNfCancelada = string.Empty; sListaNotas = new List<string>(); for (int i = 0; i < dgvNF.RowCount; i++) { if (((dgvNF["ASSINANF", i].Value != null) && (dgvNF["ASSINANF", i].Value.ToString().Equals("True"))) && ((dgvNF["CANCELADA", i].Value == null) || (dgvNF["CANCELADA", i].Value.ToString() == "0"))) //Danner - o.s. SEM - 17/12/2009 { sListaNotas.Add((string)dgvNF["CD_NFSEQ", i].Value); } if ((dgvNF["CANCELADA", i].Value != null) && (dgvNF["CANCELADA", i].Value.ToString() == "1")) { sNfCancelada += "Nota Fiscal " + dgvNF["CD_NOTAFIS", i].Value.ToString() + " - Esta Cancelada e não é Permitido o Reenvio da mesma Nota!" + Environment.NewLine + Environment.NewLine; } } if (sListaNotas.Count == 0) { KryptonMessageBox.Show("Nenhuma nota Valida foi Selecionada!", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error); if (sNfCancelada != "") { KryptonMessageBox.Show(sNfCancelada, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error); } return; } #endregion if (sListaNotas.Count == 1) { belRecepcao objBelRecepcao = new belRecepcao(); daoPrestador objdaoPrestador = new daoPrestador(); daoRecepcao objdaoRecepcao = new daoRecepcao(); //Buscar Protocolo no banco objBelRecepcao.Protocolo = objdaoRecepcao.BuscaNumProtocolo(sListaNotas[0]); //Busca Retorno do lote AssinaNFeXml Assinatura = new AssinaNFeXml(); X509Certificate2 cert = Assinatura.BuscaNome(""); if (!ValidaCertificado(cert)) { throw new Exception("Certificado não Selecionado!!"); } else { objBelRecepcao.cert = cert; } objfrmStatus = new frmStatusEnvioNfs(); objfrmStatus.Show(); objfrmStatus.Refresh(); string sMsgErro = objBelRecepcao.BuscaRetorno(objdaoPrestador.RettcIdentificacaoPrestador(cx.get_Conexao(), sListaNotas[0]), objfrmStatus.lblMsg, objfrmStatus.progressBarStatus); if (objBelRecepcao.sCodigoRetorno.Equals("E4")) { objfrmStatus.Close(); KryptonMessageBox.Show(null, sMsgErro + Environment.NewLine + Environment.NewLine + "IMPORTANTE: Tente Buscar Retorno da NFse pois o serviço do Web service está demorando para responder; ", "MENSAGEM DE RETORNO", MessageBoxButtons.OK, MessageBoxIcon.Information); } else if (objBelRecepcao.objListaNfseRetorno.Count > 0) //Lote Enviado { objfrmStatus.lblMsg.Text = "Alterando Status da Nota para Enviada!!"; objfrmStatus.lblMsg.Refresh(); objdaoRecepcao.AlteraStatusDaNota(objBelRecepcao.objListaNfseRetorno); objdaoRecepcao.VerificaNotasParaCancelar(objBelRecepcao.objListaNfseRetorno); for (int i = 0; i < dgvNF.RowCount; i++) { //CD_NFSEQ int ienviado = objBelRecepcao.objListaNfseRetorno.Count(lote => lote.IdentificacaoRps.Nfseq == dgvNF["CD_NFSEQ", i].Value.ToString()); if (ienviado > 0) { dgvNF["ST_NFE", i].Value = true; } } KryptonMessageBox.Show(null, objBelRecepcao.MontaMsgDeRetornoParaCliente(), "MENSAGEM DE RETORNO", MessageBoxButtons.OK, MessageBoxIcon.Information); EnviaEmail(objBelRecepcao.objListaNfseRetorno); } else { objdaoRecepcao.LimpaRecibo(); objfrmStatus.Close(); KryptonMessageBox.Show(null, sMsgErro + Environment.NewLine, "MENSAGEM DE RETORNO", MessageBoxButtons.OK, MessageBoxIcon.Information); } objfrmStatus.Close(); } else { throw new Exception("Selecione apenas uma Nota e o lote ref. a éssa nota será consultado!!"); } VerificaGeneratorLote(); PopulaDataGridView(); } catch (Exception ex) { if (objfrmStatus != null) { objfrmStatus.Close(); } KryptonMessageBox.Show(null, string.Format(Msg_Padrao.CException, Environment.NewLine) + (ex.InnerException != null ? ex.InnerException.Message : ex.Message).ToString(), "AVISO ", MessageBoxButtons.OK, MessageBoxIcon.Information); } finally { cx.Close_Conexao(); } }
private void btnEnviar_Click(object sender, EventArgs e) { frmStatusEnvioNfs objfrmStatus = null; try { Globais objGlobais = new Globais(); if (objGlobais.LeRegConfig("GrupoServico").Equals("")) { throw new Exception("Parametrize o Grupo Padrão de Faturamento (Serviço) no Config do Sistema antes de Enviar Notas"); } for (int i = 0; i < dgvNF.RowCount; i++) { if (dgvNF["ASSINANF", i].Value != null) { if (dgvNF["ASSINANF", i].Value.ToString().Equals("True")) { if (VerificaCampoReciboPreenchido(belStatic.codEmpresaNFe, dgvNF["CD_NFSEQ", i].Value.ToString()) != "") { throw new Exception("A Nota de Sequencia = " + dgvNF["CD_NFSEQ", i].Value.ToString() + " Já tem um retorno Salvo no Banco de Dados, tente Buscar Retorno"); } } } } #region Busca Notas Selecionadas na Grid string sNfCancelada = string.Empty; sListaNotas = new List<string>(); for (int i = 0; i < dgvNF.RowCount; i++) { if (((dgvNF["ASSINANF", i].Value != null) && (dgvNF["ASSINANF", i].Value.ToString().Equals("True"))) && ((dgvNF["CANCELADA", i].Value == null) || (dgvNF["CANCELADA", i].Value.ToString() == "0"))) //Danner - o.s. SEM - 17/12/2009 { sListaNotas.Add((string)dgvNF["CD_NFSEQ", i].Value); } if ((dgvNF["CANCELADA", i].Value != null) && (dgvNF["CANCELADA", i].Value.ToString() == "1")) { sNfCancelada += "Nota Fiscal " + dgvNF["CD_NOTAFIS", i].Value.ToString() + " - Esta Cancelada e não é Permitido o Reenvio da mesma Nota!" + Environment.NewLine + Environment.NewLine; } } if (sListaNotas.Count == 0) { KryptonMessageBox.Show("Nenhuma nota Valida foi Selecionada!", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error); if (sNfCancelada != "") { KryptonMessageBox.Show(sNfCancelada, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error); } return; } #endregion daoLoteRps objdaoLoteRps = new daoLoteRps(); if (ValidaSeqNoBanco()) { tcLoteRps objLoteRps = objdaoLoteRps.BuscaDadosNFes(sListaNotas); //Chamar Form para visualizar; frmVisualizaNfs objFrmVisualiza = new frmVisualizaNfs(objLoteRps); objFrmVisualiza.ShowDialog(); if (objFrmVisualiza.bCancela) { MessageBoxIcon _msgIcon = MessageBoxIcon.Information; throw new Exception("Envio da(s) Nota(s) Cancelado"); } AssinaNFeXml Assinatura = new AssinaNFeXml(); X509Certificate2 cert = Assinatura.BuscaNome(""); if (!ValidaCertificado(cert)) { throw new Exception("Certificado não Selecionado!!"); } objfrmStatus = new frmStatusEnvioNfs(); objfrmStatus.Show(); objfrmStatus.lblMsg.Text = "Montando XML de Acordo com os dados inseridos!!"; objfrmStatus.lblMsg.Refresh(); objfrmStatus.Refresh(); HLP.bel.NFes.belCreateXml objCreateXml = new belCreateXml(cert); objCreateXml.GerarAqruivoXml(objFrmVisualiza.objLoteRpsAlter); objfrmStatus.lblMsg.Text = "Enviando Lote para o Webservice!!"; objfrmStatus.lblMsg.Refresh(); //Envia Lote belRecepcao objBelRecepcao = new belRecepcao(objCreateXml.sXmlLote, cert, objFrmVisualiza.objLoteRpsAlter); if (objBelRecepcao.sMsgTransmissao != "") { throw new Exception(objBelRecepcao.sMsgTransmissao); } daoRecepcao objdaoRecepcao = new daoRecepcao(objBelRecepcao.Protocolo, objFrmVisualiza.objLoteRpsAlter); objfrmStatus.lblMsg.Text = "Gravando recibo na base de dados!!"; objfrmStatus.lblMsg.Refresh(); objdaoRecepcao.GravaRecibo(); string sMsgErro = objBelRecepcao.BuscaRetorno(objFrmVisualiza.objLoteRpsAlter.Rps[0].InfRps.Prestador, objfrmStatus.lblMsg, objfrmStatus.progressBarStatus); if (objBelRecepcao.sCodigoRetorno.Equals("E4")) { objfrmStatus.Close(); KryptonMessageBox.Show(null, sMsgErro + Environment.NewLine + Environment.NewLine + "IMPORTANTE: Tente Buscar Retorno da NFse pois o serviço do Web service está demorando para responder; ", "MENSAGEM DE RETORNO", MessageBoxButtons.OK, MessageBoxIcon.Information); } else if (objBelRecepcao.objListaNfseRetorno.Count > 0) //Lote Enviado { objfrmStatus.lblMsg.Text = "Alterando Status da Nota para Enviada!!"; objfrmStatus.lblMsg.Refresh(); objdaoRecepcao.AlteraStatusDaNota(objBelRecepcao.objListaNfseRetorno); objfrmStatus.Close(); objdaoRecepcao.VerificaNotasParaCancelar(objBelRecepcao.objListaNfseRetorno); for (int i = 0; i < dgvNF.RowCount; i++) { //CD_NFSEQ int ienviado = objBelRecepcao.objListaNfseRetorno.Count(lote => lote.IdentificacaoRps.Nfseq == dgvNF["CD_NFSEQ", i].Value.ToString()); if (ienviado > 0) { dgvNF["ST_NFE", i].Value = true; } } KryptonMessageBox.Show(null, objBelRecepcao.MontaMsgDeRetornoParaCliente(), "MENSAGEM DE RETORNO", MessageBoxButtons.OK, MessageBoxIcon.Information); EnviaEmail(objBelRecepcao.objListaNfseRetorno); } else { objdaoRecepcao.LimpaRecibo(objFrmVisualiza.objLoteRpsAlter); objfrmStatus.Close(); KryptonMessageBox.Show(null, sMsgErro + Environment.NewLine, "MENSAGEM DE RETORNO", MessageBoxButtons.OK, MessageBoxIcon.Information); } } VerificaGeneratorLote(); PopulaDataGridView(); } catch (Exception ex) { if (objfrmStatus != null) { objfrmStatus.Close(); } VerificaGeneratorLote(); KryptonMessageBox.Show(null, string.Format(Msg_Padrao.CException, Environment.NewLine) + (ex.InnerException != null ? ex.InnerException.Message + Environment.NewLine + ex.Message : ex.Message).ToString(), "AVISO ", MessageBoxButtons.OK, MessageBoxIcon.Information); } finally { cx.Close_Conexao(); } }