private void btnEnvio_Click(object sender, EventArgs e) { try { objCriaXml = new belCriaXml(); bool bContingencia = false; if (!belStatic.bModoContingencia) { if (Operacao) { #region Verifica se Item Selecionado já foi enviado for (int i = 0; i < dgvArquivos.RowCount; i++) { if (dgvArquivos["cl_assina", i].Value != null) { if (dgvArquivos["cl_assina", i].Value.ToString().Equals("True")) { if (objGerais.VerificaCampoReciboPreenchido(belStatic.CodEmpresaCte, dgvArquivos["nr_lanc", i].Value.ToString()) != "") { throw new Exception("O Conhecimento de Sequência " + dgvArquivos["nr_lanc", i].Value.ToString() + " Já tem um recibo Salvo no Banco de Dados, tente Buscar Retorno."); } } } } #endregion lblStatus.Text = "Carregando Informações..."; #region Pega Notas Selecionadas na Grid string sCanceladas = ""; slistaConhec = new List<string>(); for (int i = 0; i < dgvArquivos.RowCount; i++) { try { if (dgvArquivos["cl_assina", i].Value != null) { if (((dgvArquivos["cl_assina", i].Value != null) && (dgvArquivos["cl_assina", i].Value.ToString().Equals("True"))) && ((dgvArquivos["ds_cancelamento", i].Value.ToString() == "")) && (dgvArquivos["st_cte", i].Value.ToString().Equals("0"))) { if (Convert.ToBoolean(dgvArquivos["st_cte", i].Value) == false && Convert.ToBoolean(dgvArquivos["st_contingencia", i].Value) == true) { bContingencia = true; if (slistaConhec.Count() > 0) { throw new Exception("Os Conhecimentos Pendentes devem ser Enviados um por vez."); } } slistaConhec.Add((string)dgvArquivos["nr_lanc", i].Value); } if (dgvArquivos["ds_cancelamento", i].Value.ToString() != "") { if (Convert.ToBoolean(dgvArquivos["cl_assina", i].Value.ToString()) == true) { sCanceladas += "Conhecimento de Transp. " + dgvArquivos["cd_conheci", i].Value.ToString() + " - Esta Cancelado e não é Permitido o Reenvio do mesmo!" + Environment.NewLine + Environment.NewLine; } } } } catch (Exception) { throw; } } #endregion if (slistaConhec.Count == 0) { KryptonMessageBox.Show("Nenhuma nota Válida foi Selecionada!", "A T E N Ç Ã O", MessageBoxButtons.OK, MessageBoxIcon.Error); if (sCanceladas != "") { throw new Exception(sCanceladas); } lblStatus.Text = ""; } else { if (!bContingencia) { #region Envio Normal //verifica no banco se as sequencias são existentes. List<string> objLGerarSeq = objGerais.ValidaSeqNoBanco(belStatic.CodEmpresaCte, slistaConhec); if (objLGerarSeq.Count > 0) { frmGerarNumeroCte objfrmGerarNum = new frmGerarNumeroCte(belStatic.CodEmpresaCte, objLGerarSeq); objfrmGerarNum.ShowDialog(); } cert = new X509Certificate2(); cert = belCertificadoDigital.BuscaNome(""); if (!belCertificadoDigital.ValidaCertificado(cert)) { lblStatus.Text = ""; throw new Exception("Certificado não Selecionado."); } #region Popula as Classes e abre form Visualização belPopulaObjetos objObjetos = new belPopulaObjetos(belStatic.CodEmpresaCte, slistaConhec, objbelUfEmp.CUF, cert); daoInfCte objdaoInfCte = new daoInfCte(); objdaoInfCte.ImportaConhecInfCte(objObjetos, belStatic.CodEmpresaCte); lblStatus.Text = "Aguardando Envio"; frmVisualizaCte objFrm = new frmVisualizaCte(objObjetos); objFrm.ShowDialog(); #endregion if (objFrm.bCancela) { lblStatus.Text = ""; throw new Exception("Envio do(s) Conhecimento(s) Cancelado"); } else { #region Envia Lote WebService lblStatus.Text = "Enviando Lote para WebService..."; daoGenerator objGerator = new daoGenerator(); int iNumLote = Convert.ToInt32(objGerator.RetornaProximoValorGenerator("GEN_LOTE_CTE")); objGravaDadosRetorno.GravarChave(objFrm.objObjetosAlter); string sRecibo = objCriaXml.GerarXml(objFrm.objObjetosAlter, iNumLote); List<belStatusCte> ListaStatus = objCriaXml.ConsultaLoteEnviado(sRecibo); // if (sRecibo != "") // sicupira { objGravaDadosRetorno.GravarRecibo(objFrm.objObjetosAlter, sRecibo); } foreach (belStatusCte cte in ListaStatus.Where(C => C.Enviado == true)) { if (cte.CodRetorno != "218" && cte.CodRetorno != "101" && cte.CodRetorno != "103" && cte.CodRetorno != "104" && cte.CodRetorno != "105" && cte.CodRetorno != "100" && cte.CodRetorno != "204") { objGravaDadosRetorno.ApagarRecibo(sRecibo); } else { objGravaDadosRetorno.GravarProtocoloEnvio(cte); } } KryptonMessageBox.Show(belTrataMensagem.RetornaMensagem(ListaStatus, belTrataMensagem.Tipo.Envio), "CT-e - Retorno WebService", MessageBoxButtons.OK, MessageBoxIcon.Information); objGerais = new daoBuscaDadosGerais(); foreach (belStatusCte cte in ListaStatus.Where(C => C.Enviado == true)) { lblStatus.Text = "Salvando Arquivos"; objGravaDadosRetorno.AlterarStatusCte(cte); string sChave = objGravaDadosRetorno.BuscaChave(cte.NumeroSeq); objCriaXml.SalvaArquivoPastaEnviado(objGerais.BuscaNumeroConhecimento(cte.NumeroSeq), sChave); if (cte.CodRetorno == "218" || cte.CodRetorno == "101") { objCriaXml.SalvaArquivoPastaCancelado(sChave); } } lblStatus.Text = ""; Pendencias = objGerais.VerificaPendenciasdeEnvio(); if (Pendencias.Count > 0) { txtPendencias.Text = ""; txtPendencias.Visible = true; btnPendencias.Visible = true; foreach (string item in Pendencias) { txtPendencias.Text += "Seq. " + item + Environment.NewLine; } } else { txtPendencias.Visible = false; btnPendencias.Visible = false; } btnPesquisa_Click(sender, e); #endregion } #endregion } else { #region Envio Contingencia cert = new X509Certificate2(); cert = belCertificadoDigital.BuscaNome(""); if (!belCertificadoDigital.ValidaCertificado(cert)) { lblStatus.Text = ""; throw new Exception("Certificado não Selecionado."); } objCriaXml.cert = cert; objGerais = new daoBuscaDadosGerais(); belGlobais objGlobais = new belGlobais(); XmlDocument doc = new XmlDocument(); string sChave = objGerais.BuscaChaveRetornoCteSeq(slistaConhec[0]); DirectoryInfo dPastaContingencia = new DirectoryInfo(belStaticPastas.CONTINGENCIA); FileInfo[] finfo = dPastaContingencia.GetFiles("*.xml", SearchOption.AllDirectories); bool ArquivoPastaEnvio = false; bool ArquivoPastaEnvioMesAtual = false; string sCaminho = ""; foreach (FileInfo arq in finfo) { if (arq.Name.Contains("Lote") && ArquivoPastaEnvio == false) { doc.Load(@arq.FullName); if (doc.GetElementsByTagName("infCte")[0].Attributes["Id"].Value.ToString().Replace("CTe", "").Equals(sChave)) { sCaminho = @arq.FullName; string sPathDest = belStaticPastas.ENVIO + "\\" + arq.Name; string sPathOrigem = belStaticPastas.CONTINGENCIA + "\\" + arq.Name; if (File.Exists(sPathDest)) { File.Delete(sPathDest); } File.Copy(sPathOrigem, sPathDest); ArquivoPastaEnvio = true; } } else if (!arq.Name.Contains("Lote") && ArquivoPastaEnvioMesAtual == false) { string sData = HLP.Util.Util.GetDateServidor().Date.ToString("dd-MM-yyyy"); doc.Load(@arq.FullName); if (doc.GetElementsByTagName("infCte")[0].Attributes["Id"].Value.ToString().Replace("CTe", "").Equals(sChave)) { string sPathDest = belStaticPastas.ENVIO + sData.Substring(3, 2) + "-" + sData.Substring(8, 2) + @"\\" + arq.Name; string sPathOrigem = belStaticPastas.CONTINGENCIA + sData.Substring(3, 2) + "-" + sData.Substring(8, 2) + @"\\" + arq.Name; if (File.Exists(sPathDest)) { File.Delete(sPathDest); } File.Copy(sPathOrigem, sPathDest); ArquivoPastaEnvioMesAtual = true; } } if (ArquivoPastaEnvioMesAtual && ArquivoPastaEnvio) { lblStatus.Text = "Enviando Lote para WebService..."; doc.Load(sCaminho); string sRetorno = objCriaXml.TransmitirLote(doc); string sRecibo = objCriaXml.BuscaReciboRetornoEnvio(sRetorno); List<belStatusCte> ListaStatus = objCriaXml.ConsultaLoteEnviado(sRecibo); if (sRecibo != "") { objGravaDadosRetorno.GravarRecibo(slistaConhec[0], sRecibo); } foreach (belStatusCte cte in ListaStatus) { if (cte.CodRetorno != "103" && cte.CodRetorno != "104" && cte.CodRetorno != "105" && cte.CodRetorno != "100") { objGravaDadosRetorno.ApagarRecibo(sRecibo); } else { objGravaDadosRetorno.GravarProtocoloEnvio(cte); } } KryptonMessageBox.Show(belTrataMensagem.RetornaMensagem(ListaStatus, belTrataMensagem.Tipo.Envio), "CT-e - Retorno WebService", MessageBoxButtons.OK, MessageBoxIcon.Information); objGerais = new daoBuscaDadosGerais(); foreach (belStatusCte cte in ListaStatus.Where(C => C.Enviado == true)) { lblStatus.Text = "Salvando Arquivos"; objGravaDadosRetorno.AlterarStatusCte(cte); string sprot = objGerais.BuscaNumProtocolo(cte.NumeroSeq); objCriaXml.SalvaArquivoPastaEnviado(objGerais.BuscaNumeroConhecimento(cte.NumeroSeq), cte.Chave); } lblStatus.Text = ""; btnPendencias_Click(sender, e); break; } } if (!ArquivoPastaEnvioMesAtual && !ArquivoPastaEnvio) { lblStatus.Text = ""; KryptonMessageBox.Show("Arquivo para Envio não Encontrado", "CONHECIMENTO DE TRANSP. ELETRÔNICO", MessageBoxButtons.OK, MessageBoxIcon.Information); } #endregion } } } else { KryptonMessageBox.Show("Sistema está Indisponível!", "CT-e - AVISO", MessageBoxButtons.OK, MessageBoxIcon.Information); } } else { KryptonMessageBox.Show("Sistema se encontra em Modo de Contingência", "CT-e - AVISO", MessageBoxButtons.OK, MessageBoxIcon.Information); } } catch (Exception ex) { lblStatus.Text = ""; KryptonMessageBox.Show(null, _sMessageException + (ex.InnerException != null ? ex.InnerException.Message : ex.Message).ToString(), "CT-e - AVISO", MessageBoxButtons.OK, MessageBoxIcon.Information); ; } }
private void btnContingencia_Click(object sender, EventArgs e) { try { if (belStatic.bModoContingencia) { #region Verifica se Item Selecionado já foi enviado for (int i = 0; i < dgvArquivos.RowCount; i++) { if (dgvArquivos["cl_assina", i].Value != null) { if (dgvArquivos["cl_assina", i].Value.ToString().Equals("True")) { if (objGerais.VerificaCampoReciboPreenchido(belStatic.CodEmpresaCte, dgvArquivos["nr_lanc", i].Value.ToString()) != "") { throw new Exception("O Conhecimento de Sequência " + dgvArquivos["nr_lanc", i].Value.ToString() + " Já tem um recibo Salvo no Banco de Dados, tente Buscar Retorno."); } else if (Convert.ToBoolean(dgvArquivos["st_cte", i].Value) == false && Convert.ToBoolean(dgvArquivos["st_contingencia", i].Value) == true) { throw new Exception("O Conhecimento de Sequência " + dgvArquivos["nr_lanc", i].Value.ToString() + " Já foi Gerado em Modo de Contingência."); } } } } #endregion lblStatus.Text = "Carregando Informações..."; #region Pega Notas Selecionadas na Grid string sCanceladas = ""; slistaConhec = new List<string>(); for (int i = 0; i < dgvArquivos.RowCount; i++) { if (((dgvArquivos["cl_assina", i].Value != null) && (dgvArquivos["cl_assina", i].Value.ToString().Equals("True"))) && ((dgvArquivos["ds_cancelamento", i].Value.ToString() == "")) && (dgvArquivos["st_cte", i].Value.ToString().Equals("0"))) { slistaConhec.Add((string)dgvArquivos["nr_lanc", i].Value); } if ((dgvArquivos["ds_cancelamento", i].Value.ToString() != "")) { if (dgvArquivos["cl_assina", i].Value == "1") { sCanceladas += "Conhecimento de Transp. " + dgvArquivos["cd_conheci", i].Value.ToString() + " - Esta Cancelado e não é Permitido o Reenvio do mesmo!" + Environment.NewLine + Environment.NewLine; } } } if (slistaConhec.Count == 0) { KryptonMessageBox.Show("Nenhuma nota Válida foi Selecionada!", "A T E N Ç Ã O", MessageBoxButtons.OK, MessageBoxIcon.Error); if (sCanceladas != "") { throw new Exception(sCanceladas); } lblStatus.Text = ""; } else if (slistaConhec.Count > 1) { throw new Exception("Só é Possível Gerar uma XML de Cada vez em Modo de Contingência"); } else { //verifica no banco se as sequencias são existentes. List<string> objLGerarSeq = objGerais.ValidaSeqNoBanco(belStatic.CodEmpresaCte, slistaConhec); if (objLGerarSeq.Count > 0) { frmGerarNumeroCte objfrmGerarNum = new frmGerarNumeroCte(belStatic.CodEmpresaCte, objLGerarSeq); objfrmGerarNum.ShowDialog(); } #endregion cert = new X509Certificate2(); cert = belCertificadoDigital.BuscaNome(""); if (!belCertificadoDigital.ValidaCertificado(cert)) { lblStatus.Text = ""; throw new Exception("Certificado não Selecionado."); } #region Popula as Classes e abre form Visualização belPopulaObjetos objObjetos = new belPopulaObjetos(belStatic.CodEmpresaCte, slistaConhec, objbelUfEmp.CUF, cert); daoInfCte objdaoInfCte = new daoInfCte(); objdaoInfCte.ImportaConhecInfCte(objObjetos, belStatic.CodEmpresaCte); lblStatus.Text = "Aguardando"; frmVisualizaCte objFrm = new frmVisualizaCte(objObjetos); objFrm.ShowDialog(); #endregion if (objFrm.bCancela) { lblStatus.Text = ""; throw new Exception("Geração do XML Cancelada"); } else { #region Gera XML Contingencia lblStatus.Text = "Gerando XML de Contingência..."; daoGenerator objGerator = new daoGenerator(); int iNumLote = Convert.ToInt32(objGerator.RetornaProximoValorGenerator("GEN_LOTE_CTE")); objGravaDadosRetorno.GravarChave(objFrm.objObjetosAlter); objCriaXml = new belCriaXml(); string sRecibo = objCriaXml.GerarXml(objFrm.objObjetosAlter, iNumLote); objGravaDadosRetorno.AlterarStatusCteContingencia(objFrm.objObjetosAlter.objLinfCte[0].ide.nCT); KryptonMessageBox.Show("Arquivo gravado na pasta Contingência com Sucesso!", "CONHECIMENTO DE TRANSP. ELETRÔNICO", MessageBoxButtons.OK, MessageBoxIcon.Information); lblStatus.Text = ""; btnPesquisa_Click(sender, e); #endregion } } } else { KryptonMessageBox.Show("Sistema não se encontra em Modo de Contingência!", "CT-e - AVISO", MessageBoxButtons.OK, MessageBoxIcon.Information); } } catch (Exception ex) { lblStatus.Text = ""; KryptonMessageBox.Show(null, _sMessageException + (ex.InnerException != null ? ex.InnerException.Message : ex.Message).ToString(), "CT-e - AVISO", MessageBoxButtons.OK, MessageBoxIcon.Information); ; } }