private void btnContingencia_Click(object sender, EventArgs e) { try { #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(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 #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 == null) || (dgvArquivos["ds_cancelamento", i].Value.ToString() == "0")) && (dgvArquivos["st_cte", i].Value.ToString().Equals("0"))) { slistaConhec.Add((string)dgvArquivos["nr_lanc", i].Value); } if ((dgvArquivos["ds_cancelamento", i].Value != null) && (dgvArquivos["ds_cancelamento", i].Value.ToString() == "1")) { 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; } } } #endregion if (slistaConhec.Count == 0) { KryptonMessageBox.Show("Nenhum CT-e válido foi Selecionado para Gerar Xml.", Mensagens.CHeader, MessageBoxButtons.OK, MessageBoxIcon.Information); if (sCanceladas != "") { throw new Exception(sCanceladas); } } 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(slistaConhec); if (objLGerarSeq.Count > 0) { frmGerarNumeroCte objfrmGerarNum = new frmGerarNumeroCte(objLGerarSeq); objfrmGerarNum.ShowDialog(); } #region Popula as Classes e abre form Visualização belPopulaObjetos objObjetos = new belPopulaObjetos(slistaConhec); belPopulaCte objdaoInfCte = new belPopulaCte(); objdaoInfCte.PopulaConhecimentos(objObjetos); frmVisualizaCte objFrm = new frmVisualizaCte(objObjetos); objFrm.ShowDialog(); #endregion if (objFrm.Cancelado) { throw new Exception("Geração do XML Cancelada"); } else { #region Gera XML Contingencia daoGenerator objGerator = new daoGenerator(); int iNumLote = Convert.ToInt32(objGerator.RetornaProximoValorGenerator("GEN_LOTE_CTE")); objGravaDadosRetorno.GravarChave(objFrm.objObjetosAlter); string sRecibo = objCriaXml.GerarXml(objFrm.objObjetosAlter, iNumLote); objGravaDadosRetorno.AlterarStatusCteContingencia(objFrm.objObjetosAlter.objListaConhecimentos[0].ide.nCT); KryptonMessageBox.Show("Arquivo gravado na pasta Contingência com Sucesso!", Mensagens.CHeader, MessageBoxButtons.OK, MessageBoxIcon.Information); PesquisaConhecimentos(); #endregion } } } catch (Exception ex) { new HLPexception(ex); } }
private void btnEnvio_Click(object sender, EventArgs e) { try { bool bContingencia = false; #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(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 #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 == null) || (dgvArquivos["ds_cancelamento", i].Value.ToString() == "0")) && (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 != null) && (dgvArquivos["ds_cancelamento", i].Value.ToString() == "1")) { 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; } } } #endregion if (slistaConhec.Count == 0) { KryptonMessageBox.Show("Nenhum CT-e válido foi Selecionado para Envio.", Mensagens.CHeader, MessageBoxButtons.OK, MessageBoxIcon.Information); if (sCanceladas != "") { throw new Exception(sCanceladas); } } else { if (!bContingencia) { #region Envio Normal //verifica no banco se as sequencias são existentes. List<string> objListaSeq = objGerais.ValidaSeqNoBanco(slistaConhec); if (objListaSeq.Count > 0) { frmGerarNumeroCte objfrmGerarNum = new frmGerarNumeroCte(objListaSeq); objfrmGerarNum.ShowDialog(); } #region Popula as Classes e abre form Visualização belPopulaObjetos objObjetos = new belPopulaObjetos(slistaConhec); belPopulaCte objdaoInfCte = new belPopulaCte(); objdaoInfCte.PopulaConhecimentos(objObjetos); frmVisualizaCte objFrm = new frmVisualizaCte(objObjetos); objFrm.ShowDialog(); #endregion if (objFrm.Cancelado) { throw new Exception("Envio do(s) Conhecimento(s) Cancelado"); } else { #region Envia Lote 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 != "") { objGravaDadosRetorno.GravarRecibo(objFrm.objObjetosAlter, sRecibo); } List<string> lstatusValid = new List<string>(); lstatusValid.Add("218"); lstatusValid.Add("101"); lstatusValid.Add("103"); lstatusValid.Add("104"); lstatusValid.Add("105"); lstatusValid.Add("100"); lstatusValid.Add("204"); foreach (belStatusCte cte in ListaStatus) { if (!lstatusValid.Contains(cte.CodRetorno)) { objGravaDadosRetorno.ApagarRecibo(sRecibo); } else { //objGravaDadosRetorno.GravarProtocoloEnvio(cte.Protocolo, cte.NumeroSeq); if (cte.CodRetorno == "204" || cte.CodRetorno == "100") { cte.Enviado = true; } objGravaDadosRetorno.GravarProtocoloEnvio(cte.Protocolo, cte.NumeroSeq); } } KryptonMessageBox.Show(belTrataMensagem.RetornaMensagem(ListaStatus, belTrataMensagem.Tipo.Envio), Mensagens.CHeader, MessageBoxButtons.OK, MessageBoxIcon.Information); foreach (belStatusCte cte in ListaStatus.Where(C => C.Enviado == true)) { objGravaDadosRetorno.AlterarStatusCte(cte.NumeroSeq); objCriaXml.SalvaArquivoPastaEnviado(objGerais.BuscaNumeroConhecimento(cte.NumeroSeq), cte.Chave); } Pendencias = objGerais.VerificaPendenciasdeEnvio(); if (Pendencias.Count > 0) { btnPendencias.Visible = true; } else { btnPendencias.Visible = false; } PesquisaConhecimentos(); #endregion } #endregion } else { #region Envio Contingencia XmlDocument doc = new XmlDocument(); string sChave = objGerais.BuscaChaveRetornoCteSeq(slistaConhec[0]); DirectoryInfo dPastaContingencia = new DirectoryInfo(Pastas.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 = Pastas.ENVIO + "\\" + arq.Name; string sPathOrigem = Pastas.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 = daoUtil.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 = Pastas.ENVIO + sData.Substring(3, 2) + "-" + sData.Substring(8, 2) + @"\\" + arq.Name; string sPathOrigem = Pastas.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) { doc.Load(sCaminho); string sRetorno = objCriaXml.TransmitirLote(doc); string sRecibo = objCriaXml.BuscaReciboRetornoEnvio(sRetorno); List<belStatusCte> ListaStatus = objCriaXml.ConsultaLoteEnviado(sRecibo); if (sRecibo != "") { objGravaDadosRetorno.SalvarRecibo(sRecibo, slistaConhec[0].ToString()); } 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.Protocolo, cte.NumeroSeq); } } KryptonMessageBox.Show(belTrataMensagem.RetornaMensagem(ListaStatus, belTrataMensagem.Tipo.Envio), Mensagens.CHeader, MessageBoxButtons.OK, MessageBoxIcon.Information); foreach (belStatusCte cte in ListaStatus.Where(C => C.Enviado == true)) { objGravaDadosRetorno.AlterarStatusCte(cte.NumeroSeq); objCriaXml.SalvaArquivoPastaEnviado(objGerais.BuscaNumeroConhecimento(cte.NumeroSeq), cte.Chave); } btnPendencias_Click(sender, e); break; } } if (!ArquivoPastaEnvioMesAtual && !ArquivoPastaEnvio) { KryptonMessageBox.Show("Arquivo para Envio não Encontrado", Mensagens.CHeader, MessageBoxButtons.OK, MessageBoxIcon.Information); } #endregion } } } catch (Exception ex) { new HLPexception(ex); } }