public bool Atualizar(Doc_CTe p, List <AnexoDocumento> ListaAnexos, List <EventoEletronicoDocumento> ListaEventoEletronico) { try { Doc_CTe p2 = new Doc_CTe(); p2 = PesquisarDocumento(Convert.ToDecimal(p.CodigoDocumento)); //GerarLog(p, p2); AbrirConexao(); strSQL = "update DOCUMENTO set NR_DOCUMENTO = @v2," + "DG_SR_DOCUMENTO = @v3," + "CD_SITUACAO = @v4," + "OB_DOCUMENTO = @v5," + "DT_HR_EMISSAO = @v6," + "DT_HR_ENTRADA = @v7," + "CD_EMPRESA = @v8," + // "CD_GER_SEQ_DOC = @v9," + "CD_TIPO_OPERACAO = @v10," + "VL_TOTAL_GERAL = @v11," + "CD_CHAVE_ACESSO = @v12 where CD_DOCUMENTO = @v1"; Cmd = new SqlCommand(strSQL, Con); Cmd.Parameters.AddWithValue("@v1", p.CodigoDocumento); Cmd.Parameters.AddWithValue("@v2", p.NumeroDocumento); Cmd.Parameters.AddWithValue("@v3", p.DGSRDocumento); Cmd.Parameters.AddWithValue("@v4", p.CodigoSituacao); Cmd.Parameters.AddWithValue("@v5", p.ObservacaoDocumento); Cmd.Parameters.AddWithValue("@v6", p.DataHoraEmissao); Cmd.Parameters.AddWithValue("@v7", p.DataHoraLancamento); Cmd.Parameters.AddWithValue("@v8", p.CodigoEmpresa); //Cmd.Parameters.AddWithValue("@v9", p.CodigoGeracaoSequencialDocumento); Cmd.Parameters.AddWithValue("@v10", p.CodigoTipoOperacao); Cmd.Parameters.AddWithValue("@v11", p.ValorTotal); Cmd.Parameters.AddWithValue("@v12", p.ChaveAcesso); Cmd.ExecuteNonQuery(); return(true); } catch (Exception ex) { throw new Exception("Erro ao gravar CTe: " + ex.Message.ToString()); } finally { FecharConexao(); AtualizarPessoaDocumento(p.CodigoDocumento, p.Cpl_CodigoTransportador, 7); //Pessoa do Documento Transportador AtualizarPessoaDocumento(p.CodigoDocumento, p.Cpl_CodigoRemetente, 8); //Pessoa do Documento Remetente AtualizarPessoaDocumento(p.CodigoDocumento, p.Cpl_CodigoDestinatario, 9); //Pessoa do Documento Destinatario AtualizarPessoaDocumento(p.CodigoDocumento, p.Cpl_CodigoTomador, 10); //Pessoa do Documento Tomador AtualizarPessoaDocumento(p.CodigoDocumento, p.Cpl_CodigoRecebedor, 11); //Pessoa do Documento Recebedor AnexoDocumentoDAL AnexoDAL = new AnexoDocumentoDAL(); AnexoDAL.Inserir(p.CodigoDocumento, ListaAnexos); EventoEletronicoDocumentoDAL EventoEletronicoDAL = new EventoEletronicoDocumentoDAL(); EventoEletronicoDAL.Inserir(ListaEventoEletronico, p.CodigoDocumento); } }
public List <Doc_CTe> ListarCTe(string strNomeCampo, string strTipoCampo, string strValor, string strOrdem) { try { AbrirConexao(); string strSQL = "Select * from [VW_DOC_CTE] "; if (strValor != "") { strSQL = strSQL + " Where " + MontaFiltro(strNomeCampo, strTipoCampo, strValor); } if (strOrdem != "") { strSQL = strSQL + "Order By " + strOrdem; } Cmd = new SqlCommand(strSQL, Con); Dr = Cmd.ExecuteReader(); List <Doc_CTe> lista = new List <Doc_CTe>(); while (Dr.Read()) { Doc_CTe p = new Doc_CTe(); p.CodigoDocumento = Convert.ToDecimal(Dr["CD_DOCUMENTO"]); p.NumeroDocumento = Convert.ToDecimal(Dr["NR_DOCUMENTO"]); p.DataHoraEmissao = Convert.ToDateTime(Dr["DT_HR_EMISSAO"]); p.DataHoraLancamento = Convert.ToDateTime(Dr["DT_HR_ENTRADA"]); p.CodigoEmpresa = Convert.ToInt32(Dr["CD_EMPRESA"]); p.CodigoSituacao = Convert.ToInt32(Dr["CD_SITUACAO"]); p.CodigoTipoOperacao = Convert.ToInt32(Dr["CD_TIPO_OPERACAO"]); p.DGSRDocumento = Convert.ToString(Dr["DG_SR_DOCUMENTO"]); p.ValorTotal = Convert.ToDecimal(Dr["VL_TOTAL_GERAL"]); p.ObservacaoDocumento = Convert.ToString(Dr["OB_DOCUMENTO"]); p.ChaveAcesso = Convert.ToString(Dr["CD_CHAVE_ACESSO"]); p.CodigoGeracaoSequencialDocumento = Convert.ToInt64(Dr["CD_GER_SEQ_DOC"]); p.Cpl_DsSituacao = Dr["DS_SITUACAO"].ToString(); lista.Add(p); } return(lista); } catch (Exception ex) { throw new Exception("Erro ao Listar CTe: " + ex.Message.ToString()); } finally { FecharConexao(); } }
public Doc_CTe PesquisarDocumento(decimal CodDocumento) { try { long CodTransportador = PesquisarPessoaDocumento(CodDocumento, 7); long CodRemetente = PesquisarPessoaDocumento(CodDocumento, 8); long CodDestinatario = PesquisarPessoaDocumento(CodDocumento, 9); long CodTomador = PesquisarPessoaDocumento(CodDocumento, 10); long CodRecebedor = PesquisarPessoaDocumento(CodDocumento, 11); AbrirConexao(); string comando = "Select * from VW_DOC_CTE Where CD_DOCUMENTO= @v1 "; if (CodDocumento == 0) { comando = "SELECT TOP 1 * FROM DOCUMENTO ORDER BY CD_DOCUMENTO DESC "; } Cmd = new SqlCommand(comando, Con); Cmd.Parameters.AddWithValue("@v1", CodDocumento); Dr = Cmd.ExecuteReader(); Doc_CTe p = new Doc_CTe(); if (Dr.Read()) { p.CodigoDocumento = Convert.ToDecimal(Dr["CD_DOCUMENTO"]); p.NumeroDocumento = Convert.ToDecimal(Dr["NR_DOCUMENTO"]); p.DataHoraEmissao = Convert.ToDateTime(Dr["DT_HR_EMISSAO"]); p.DataHoraLancamento = Convert.ToDateTime(Dr["DT_HR_ENTRADA"]); p.CodigoEmpresa = Convert.ToInt32(Dr["CD_EMPRESA"]); p.CodigoSituacao = Convert.ToInt32(Dr["CD_SITUACAO"]); p.CodigoTipoOperacao = Convert.ToInt32(Dr["CD_TIPO_OPERACAO"]); p.DGSRDocumento = Convert.ToString(Dr["DG_SR_DOCUMENTO"]); p.ValorTotal = Convert.ToDecimal(Dr["VL_TOTAL_GERAL"]); p.ObservacaoDocumento = Convert.ToString(Dr["OB_DOCUMENTO"]); p.ChaveAcesso = Convert.ToString(Dr["CD_CHAVE_ACESSO"]); p.CodigoGeracaoSequencialDocumento = Convert.ToInt64(Dr["CD_GER_SEQ_DOC"]); p.Cpl_CodigoTransportador = CodTransportador; p.Cpl_CodigoDestinatario = CodDestinatario; p.Cpl_CodigoRecebedor = CodRecebedor; p.Cpl_CodigoTomador = CodTomador; p.Cpl_CodigoRemetente = CodRemetente; } return(p); } catch (Exception ex) { throw new Exception("Erro ao Pesquisar CTe: " + ex.Message.ToString()); } finally { FecharConexao(); } }
public void AtualizarSituacaoDocumentoCTe(Doc_CTe p) { try { AbrirConexao(); strSQL = "update [DOCUMENTO] set CD_SITUACAO = @v3 Where [CD_DOCUMENTO] = @v1"; Cmd = new SqlCommand(strSQL, Con); Cmd.Parameters.AddWithValue("@v1", p.CodigoDocumento); Cmd.Parameters.AddWithValue("@v3", p.CodigoSituacao); Cmd.ExecuteNonQuery(); } catch (Exception ex) { throw new Exception("Erro ao atualizar CTE: " + ex.Message.ToString()); } finally { FecharConexao(); } }
public List <Doc_CTe> ListarCTEsCompleto(List <DBTabelaCampos> ListaFiltros) { try { AbrirConexao(); string strValor = ""; strSQL = "Select * from [VW_DOC_CTE] "; strValor = MontaFiltroIntervalo(ListaFiltros); strSQL = strSQL + strValor; if (strValor == "") { strSQL = strSQL + " WHERE CD_SITUACAO != 37"; } else { strSQL = strSQL + " AND CD_SITUACAO != 37"; } strSQL = strSQL + " ORDER BY CD_DOCUMENTO DESC "; Cmd = new SqlCommand(strSQL, Con); Dr = Cmd.ExecuteReader(); List <Doc_CTe> lista = new List <Doc_CTe>(); while (Dr.Read()) { Doc_CTe p = new Doc_CTe(); p.CodigoDocumento = Convert.ToDecimal(Dr["CD_DOCUMENTO"]); p.NumeroDocumento = Convert.ToDecimal(Dr["NR_DOCUMENTO"]); p.DataHoraEmissao = Convert.ToDateTime(Dr["DT_HR_EMISSAO"]); p.DataHoraLancamento = Convert.ToDateTime(Dr["DT_HR_ENTRADA"]); p.CodigoEmpresa = Convert.ToInt32(Dr["CD_EMPRESA"]); p.CodigoSituacao = Convert.ToInt32(Dr["CD_SITUACAO"]); p.CodigoTipoOperacao = Convert.ToInt32(Dr["CD_TIPO_OPERACAO"]); p.DGSRDocumento = Convert.ToString(Dr["DG_SR_DOCUMENTO"]); p.ValorTotal = Convert.ToDecimal(Dr["VL_TOTAL_GERAL"]); p.ObservacaoDocumento = Convert.ToString(Dr["OB_DOCUMENTO"]); p.ChaveAcesso = Convert.ToString(Dr["CD_CHAVE_ACESSO"]); p.CodigoGeracaoSequencialDocumento = Convert.ToInt64(Dr["CD_GER_SEQ_DOC"]); p.Cpl_DsSituacao = Dr["DS_SITUACAO"].ToString(); p.Cpl_Transportador = Dr["RAZ_SOCIAL_TRANSPORTADOR"].ToString(); p.Cpl_Remetente = Dr["RAZ_SOCIAL_REMETENTE"].ToString(); p.Cpl_Destinatario = Dr["RAZ_SOCIAL_DESTINATARIO"].ToString(); lista.Add(p); } return(lista); } catch (Exception ex) { throw new Exception("Erro ao Listar CTe: " + ex.Message.ToString()); } finally { FecharConexao(); } }
public bool Inserir(Doc_CTe p, List <AnexoDocumento> ListaAnexos, List <EventoEletronicoDocumento> ListaEventoEletronico) { try { AbrirConexao(); strSQL = "insert into DOCUMENTO (CD_TIPO_DOCUMENTO," + "NR_DOCUMENTO," + "DG_SR_DOCUMENTO," + "CD_SITUACAO," + "OB_DOCUMENTO," + "DT_HR_EMISSAO," + "DT_HR_ENTRADA," + "CD_EMPRESA," + "CD_GER_SEQ_DOC," + "CD_TIPO_OPERACAO," + "VL_TOTAL_GERAL," + "CD_CHAVE_ACESSO) values (@v1,@v2,@v3,@v4,@v5,@v6,@v7,@v8,@v9,@v10,@v11,@v12); SELECT SCOPE_IDENTITY();"; Cmd = new SqlCommand(strSQL, Con); GeradorSequencialDocumentoEmpresaDAL gerDAL = new GeradorSequencialDocumentoEmpresaDAL(); decimal CodigoGerado = gerDAL.IncluirTabelaGerador(p.Cpl_NomeTabela, Convert.ToInt32(p.CodigoGeracaoSequencialDocumento), p.Cpl_Usuario, p.Cpl_Maquina); Cmd.Parameters.AddWithValue("@v1", 7); Cmd.Parameters.AddWithValue("@v2", p.NumeroDocumento); Cmd.Parameters.AddWithValue("@v3", p.DGSRDocumento); Cmd.Parameters.AddWithValue("@v4", p.CodigoSituacao); Cmd.Parameters.AddWithValue("@v5", p.ObservacaoDocumento); Cmd.Parameters.AddWithValue("@v6", p.DataHoraEmissao); Cmd.Parameters.AddWithValue("@v7", p.DataHoraLancamento); Cmd.Parameters.AddWithValue("@v8", p.CodigoEmpresa); Cmd.Parameters.AddWithValue("@v9", p.CodigoGeracaoSequencialDocumento); Cmd.Parameters.AddWithValue("@v10", p.CodigoTipoOperacao); Cmd.Parameters.AddWithValue("@v11", p.ValorTotal); Cmd.Parameters.AddWithValue("@v12", p.ChaveAcesso); p.CodigoDocumento = Convert.ToDecimal(Cmd.ExecuteScalar()); return(true); } catch (SqlException ex) { if (ex.Errors.Count > 0) // Assume the interesting stuff is in the first error { switch (ex.Errors[0].Number) { case 2601: // Primary key violation throw new DuplicateNameException("Inclusão não Permitida!!! Chave já consta no Banco de Dados. Mensagem :" + ex.Message.ToString(), ex); case 2627: // Primary key violation throw new DuplicateNameException("Inclusão não Permitida!!! Chave já consta no Banco de Dados. Mensagem :" + ex.Message.ToString(), ex); default: throw new Exception("Erro ao Incluir CTe: " + ex.Message.ToString()); } } return(false); } catch (Exception ex) { throw new Exception("Erro ao gravar CTe: " + ex.Message.ToString()); } finally { FecharConexao(); InserirPessoaDocumento(p.CodigoDocumento, p.Cpl_CodigoTransportador, 7); //Pessoa do Documento Transportador InserirPessoaDocumento(p.CodigoDocumento, p.Cpl_CodigoRemetente, 8); //Pessoa do Documento Remetente InserirPessoaDocumento(p.CodigoDocumento, p.Cpl_CodigoDestinatario, 9); //Pessoa do Documento Destinatario InserirPessoaDocumento(p.CodigoDocumento, p.Cpl_CodigoTomador, 10); //Pessoa do Documento Tomador InserirPessoaDocumento(p.CodigoDocumento, p.Cpl_CodigoRecebedor, 11); //Pessoa do Documento Recebedor AnexoDocumentoDAL AnexoDAL = new AnexoDocumentoDAL(); AnexoDAL.Inserir(p.CodigoDocumento, ListaAnexos); EventoEletronicoDocumentoDAL EventoEletronicoDAL = new EventoEletronicoDocumentoDAL(); EventoEletronicoDAL.Inserir(ListaEventoEletronico, p.CodigoDocumento); } }
public void EnviarDesacordo() { try { DBTabelaCampos rowp2 = new DBTabelaCampos(); rowp2.Filtro = "IN_REG_DEVOLVIDO"; rowp2.Inicio = "0"; rowp2.Fim = "0"; rowp2.Tipo = "SMALLINT"; listaT.Add(rowp2); IntegraDocumentoEletronicoDAL integraDAL = new IntegraDocumentoEletronicoDAL(); ListaIntegracaoDocEletronico = integraDAL.ListarIntegracaoDocEletronicoCompleto(listaT); int Contador = 0; foreach (IntegraDocumentoEletronico integracao in ListaIntegracaoDocEletronico) { if (integracao.CodigoAcao == 124 && integracao.IntegracaoProcessando == 0 && integracao.IntegracaoRecebido == 0 && integracao.IntegracaoRetorno == 0 && integracao.RegistroDevolvido == 0 && integracao.RegistroEnviado == 1 && integracao.Mensagem == "") { Doc_CTe doc = new Doc_CTe(); Doc_CTeDAL docDAL = new Doc_CTeDAL(); doc = docDAL.PesquisarDocumento(integracao.CodigoDocumento); Empresa empresa = new Empresa(); EmpresaDAL empresaDAL = new EmpresaDAL(); empresa = empresaDAL.PesquisarEmpresa(doc.CodigoEmpresa); Pessoa pes = new Pessoa(); PessoaDAL pesDAL = new PessoaDAL(); pes = pesDAL.PesquisarViewPessoa(empresa.CodigoPessoa); Pessoa pesEmitente = new Pessoa(); pesEmitente = pesDAL.PesquisarViewPessoa(doc.Cpl_CodigoTransportador); GerandoArquivoLog("Carregando .INI", 1); string DiretorioEXE = Path.GetDirectoryName(System.AppDomain.CurrentDomain.BaseDirectory.ToString()) + @"\..\..\..\..\Modulos"; _spdCTeX.LoadConfig(DiretorioEXE + @"\TecnoSpeed\CTe\Arquivos\cteConfig.ini"); GerandoArquivoLog("Configurando .INI", 1); if (pesEmitente.Cpl_Estado.Length >= 2) { _spdCTeX.UF = pesEmitente.Cpl_Estado.Substring(0, 2);//UF do Emitente } _spdCTeX.DiretorioEsquemas = DiretorioEXE + @"\TecnoSpeed\CTe\Arquivos\Esquemas"; _spdCTeX.DiretorioTemplates = DiretorioEXE + @"\TecnoSpeed\CTe\Arquivos\Templates"; _spdCTeX.ArquivoServidoresHom = DiretorioEXE + @"\TecnoSpeed\CTe\Arquivos\cteServidoresHom.ini"; _spdCTeX.ArquivoServidoresProd = DiretorioEXE + @"\TecnoSpeed\CTe\Arquivos\cteServidoresProd.ini"; _spdCTeX.ImpressaoModeloRetrato = DiretorioEXE + @"\TecnoSpeed\CTe\Arquivos\Templates\3.00\DACTE\Retrato.rtm"; _spdCTeX.ImpressaoModeloPaisagem = DiretorioEXE + @"\TecnoSpeed\CTe\Arquivos\Templates\cce\Impressao\modeloCCe.rtm"; _spdCTeX.CNPJ = pes.Cpl_Inscricao; string c = _spdCTeX.VersaoManual.ToString(); DBTabelaDAL db = new DBTabelaDAL(); List <EventoEletronicoDocumento> ListaEventoDocEletronico = new List <EventoEletronicoDocumento>(); EventoEletronicoDocumentoDAL eventosEletronicosDAL = new EventoEletronicoDocumentoDAL(); ListaEventoDocEletronico = eventosEletronicosDAL.ObterEventosEletronicos(doc.CodigoDocumento); foreach (var evento in ListaEventoDocEletronico) { if (Contador == 0) { if (evento.CodigoSituacao != 121 && evento.CodigoTipoEvento == 120) { Contador++; try { integracao.IntegracaoRecebido = 1; integraDAL.AtualizarIntegraDocEletronico(integracao); string consultaCTE = _spdCTeX.ConsultarCT(doc.ChaveAcesso); string CodigoSituacaoConsulta = BuscarValorTagXML(consultaCTE, "infProt", "cStat"); GerandoArquivoLog("Fazendo consulta do CT-e " + doc.ChaveAcesso, 1); if (CodigoSituacaoConsulta == "100") { // _spdCTeX.UF = pes.Cpl_Estado.Substring(0, 2);//UF do remetente GerandoArquivoLog("CT-e está Autorizado...", 1); doc.CodigoSituacao = 40; string XML = _spdCTeX.EnviarDesacordo(doc.ChaveAcesso, evento.DataHoraEvento.ToString("yyyy-MM-ddTHH:mm:ss") + "-03:00", evento.Motivo, evento.NumeroSequencia.ToString()); GerandoArquivoLog("Evento Eletronico do documento " + evento.CodigoEvento + " enviado... aguardando retorno ", 1); integracao.IntegracaoProcessando = 1; integraDAL.AtualizarIntegraDocEletronico(integracao); evento.Retorno = BuscarValorTagXML(XML, "infEvento", "xMotivo"); string CodigoRetorno = BuscarValorTagXML(XML, "infEvento", "cStat"); GerandoArquivoLog("Evento enviado... retorno - " + evento.Retorno, 1); integracao.IntegracaoRetorno = 1; integraDAL.AtualizarIntegraDocEletronico(integracao); if (CodigoRetorno == "135" || CodigoRetorno == "134" || CodigoRetorno == "136") { evento.CodigoSituacao = 121; byte[] XMLRetorno = null; XMLRetorno = Encoding.UTF8.GetBytes(XML); DBTabelaDAL dt = new DBTabelaDAL(); SalvarAnexos(doc.CodigoDocumento, XMLRetorno, dt.ObterDataHoraServidor(), integracao, "Retorno do Envio de Desacordo!"); GerandoArquivoLog("Salvando XML em anexo...", 1); } else { evento.CodigoSituacao = 122; } } else if (CodigoSituacaoConsulta == "218") { GerandoArquivoLog("Impossível efetuar o desacordo, CT-e está CANCELADO", 1); GerandoArquivoLog("CT-e " + doc.ChaveAcesso + " está CANCELADO...", 1); evento.CodigoSituacao = 122; doc.CodigoSituacao = 41; } else if (CodigoSituacaoConsulta == "") { evento.Retorno = BuscarValorTagXML(consultaCTE, "retConsSitCTe", "xMotivo"); evento.CodigoSituacao = 122; doc.CodigoSituacao = 39; } else { GerandoArquivoLog("Impossível efetuar o desacordo, CT-e não AUTORIZADO", 1); GerandoArquivoLog("CT-e " + doc.ChaveAcesso + " não está autorizada...", 1); evento.CodigoSituacao = 122; doc.CodigoSituacao = 39; } //docDAL.Atualizar, } catch (Exception ex) { evento.Retorno = ex.ToString(); GerandoArquivoLog("ERRO - " + ex.ToString(), 1); } //ListaEventoDocEletronico.RemoveAll(x => x.CodigoEvento == evento.CodigoEvento); //EventoEletronicoDocumento NovoEvento = new EventoEletronicoDocumento(); //NovoEvento = evento; //ListaEventoDocEletronico.Add(NovoEvento); } } eventosEletronicosDAL.AtualizarEventoEletronico(evento); GerandoArquivoLog("Evento eletronico do documento " + doc.CodigoDocumento + " atualizado com sucesso", 1); integracao.Mensagem = evento.Retorno; integracao.RegistroDevolvido = 1; integraDAL.AtualizarIntegraDocEletronico(integracao); } integraDAL.AtualizarSituacaoDocumentoCTe(doc); GerandoArquivoLog("Documento " + doc.CodigoDocumento + " Atualizado com sucesso", 1); } } if (Contador == 0) { GerandoArquivoLog("Nenhum desacordo enviado para CT-e", 1); } } catch (Exception ex) { GerandoArquivoLog("ERRO: " + ex.ToString(), 1); } }