Exemplo n.º 1
0
        public void EventoDocumento(Doc_SolCompra doc, int CodigoSituacao)
        {
            List <EventoDocumento> ListaEvento = new List <EventoDocumento>();
            EventoDocumentoDAL     eventoDAL   = new EventoDocumentoDAL();

            ListaEvento = eventoDAL.ObterEventos(doc.CodigoDocumento);
            DBTabelaDAL RnTab = new DBTabelaDAL();

            EventoDocumento eventodoc = new EventoDocumento();

            eventodoc.CodigoDocumento = Convert.ToDecimal(doc.CodigoDocumento);
            //eventodoc.CodigoMaquina = doc.Cpl_Maquina;
            eventodoc.CodigoUsuario  = doc.CodigoUsuario;
            eventodoc.CodigoSituacao = CodigoSituacao;
            eventodoc.DataHoraEvento = RnTab.ObterDataHoraServidor();
            if (ListaEvento.Count() > 0)
            {
                eventodoc.CodigoEvento = ListaEvento.Max(x => x.CodigoEvento) + 1;
            }
            else
            {
                eventodoc.CodigoEvento = 1;
            }
            eventoDAL.Inserir(eventodoc, doc.CodigoDocumento);
        }
Exemplo n.º 2
0
        public void AtualizarSituacao(decimal CodigoDocumento, int CodigoSituacaoNova, int CodigoSituacaoAnterior, int CodigoUsuario, int CodigoMaquina)
        {
            try
            {
                AbrirConexao();
                strSQL = "update [DOCUMENTO] set CD_SITUACAO = @v1 WHERE CD_DOCUMENTO = @v2 ";

                Cmd = new SqlCommand(strSQL, Con);

                Cmd.Parameters.AddWithValue("@v1", CodigoSituacaoNova);
                Cmd.Parameters.AddWithValue("@v2", CodigoDocumento);

                if (CodigoSituacaoAnterior != 0 && CodigoSituacaoAnterior != CodigoSituacaoNova)
                {
                    Doc_SolCompra    doc    = new Doc_SolCompra();
                    Doc_SolCompraDAL docDAL = new Doc_SolCompraDAL();
                    doc               = docDAL.PesquisarSolCompra(CodigoDocumento);
                    doc.Cpl_Maquina   = CodigoMaquina;
                    doc.CodigoUsuario = CodigoUsuario;
                    if (doc != null)
                    {
                        EventoDocumento(doc, CodigoSituacaoNova);
                    }
                }


                Cmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao atualizar situacao Solicitação de Compra: " + ex.Message.ToString());
            }
        }
Exemplo n.º 3
0
        public List <Doc_SolCompra> ListarSolCompraCompleto(List <DBTabelaCampos> ListaFiltros)
        {
            try
            {
                AbrirConexao();
                string strValor = "";
                string strSQL   = "Select * from [VW_DOC_SOL_COMPRA] ";


                strValor = MontaFiltroIntervalo(ListaFiltros);
                strSQL   = strSQL + strValor;

                strSQL = strSQL + " ORDER BY CD_DOCUMENTO DESC ";
                Cmd    = new SqlCommand(strSQL, Con);

                Dr = Cmd.ExecuteReader();

                List <Doc_SolCompra> lista = new List <Doc_SolCompra>();

                while (Dr.Read())
                {
                    Doc_SolCompra p = new Doc_SolCompra();
                    p.CodigoDocumento    = Convert.ToDecimal(Dr["CD_DOCUMENTO"]);
                    p.CodigoEmpresa      = Convert.ToInt32(Dr["CD_EMPRESA"]);
                    p.NumeroDocumento    = Convert.ToInt64(Dr["NR_DOCUMENTO"]);
                    p.DataHoraEmissao    = Convert.ToDateTime(Dr["DT_HR_EMISSAO"]);
                    p.DataValidade       = Convert.ToDateTime(Dr["DT_VENCIMENTO"]);
                    p.ValorTotal         = Convert.ToDecimal(Dr["VL_TOTAL_GERAL"]);
                    p.DescricaoDocumento = Convert.ToString(Dr["OB_DOCUMENTO"]);
                    p.CodigoSituacao     = Convert.ToInt32(Dr["CD_SITUACAO"]);
                    p.Cpl_Pessoa         = Convert.ToString(Dr["RAZ_SOCIAL"]);
                    p.Cpl_CodigoPessoa   = Convert.ToInt64(Dr["CD_PESSOA"]);
                    p.CodigoGeracaoSequencialDocumento = Convert.ToInt32(Dr["CD_GER_SEQ_DOC"]);
                    p.Cpl_Situacao    = Dr["DS_SITUACAO"].ToString();
                    p.CodigoUsuario   = Convert.ToInt32(Dr["CD_USU_RESPONSAVEL"]);
                    p.Cpl_NomeUsuario = Dr["NM_COMPLETO"].ToString();

                    lista.Add(p);
                }

                return(lista);
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao Listar TODos Solicitações de Compra: " + ex.Message.ToString());
            }
            finally
            {
                FecharConexao();
            }
        }
Exemplo n.º 4
0
        public Doc_SolCompra PesquisarSolCompra(decimal Codigo)
        {
            try
            {
                AbrirConexao();
                strSQL = "Select * from [VW_DOC_SOL_COMPRA] Where CD_DOCUMENTO= @v1";
                Cmd    = new SqlCommand(strSQL, Con);
                Cmd.Parameters.AddWithValue("@v1", Codigo);
                Dr = Cmd.ExecuteReader();
                Doc_SolCompra p = null;

                if (Dr.Read())
                {
                    p = new Doc_SolCompra();
                    p.CodigoDocumento    = Convert.ToDecimal(Dr["CD_DOCUMENTO"]);
                    p.NumeroDocumento    = Convert.ToInt64(Dr["NR_DOCUMENTO"]);
                    p.DataHoraEmissao    = Convert.ToDateTime(Dr["DT_HR_EMISSAO"]);
                    p.DataValidade       = Convert.ToDateTime(Dr["DT_VENCIMENTO"]);
                    p.ValorTotal         = Convert.ToDecimal(Dr["VL_TOTAL_GERAL"]);
                    p.DescricaoDocumento = Convert.ToString(Dr["OB_DOCUMENTO"]);
                    p.CodigoSituacao     = Convert.ToInt32(Dr["CD_SITUACAO"]);
                    p.CodigoGeracaoSequencialDocumento = Convert.ToInt32(Dr["CD_GER_SEQ_DOC"]);
                    p.CodigoFornecedor   = Convert.ToInt32(Dr["CD_PESSOA"]);
                    p.MotivoCancelamento = Dr["TX_MOTIVO_BAIXA"].ToString();
                }

                return(p);
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao Pesquisar Doc_SolCompra: " + ex.Message.ToString());
            }
            finally
            {
                FecharConexao();
            }
        }
Exemplo n.º 5
0
        public void AtualizaSituacaoSolicitacaoCompra(decimal CodigoDocumento, int CodigoSituacao, int CodigoUsuario, int CodigoMaquina)
        {
            AbrirConexao();

            SqlCommand cmd1 = new SqlCommand();
            SqlCommand cmd2 = new SqlCommand();
            SqlCommand cmd3 = new SqlCommand();


            SqlTransaction transaction = Con.BeginTransaction();

            try
            {
                //Monta Tela
                List <EventoDocumento>  ListaEvento   = new List <EventoDocumento>();
                List <AnexoDocumento>   ListaAnexo    = new List <AnexoDocumento>();
                List <ProdutoDocumento> ListaProdutos = new List <ProdutoDocumento>();
                ProdutoDocumentoDAL     RnPd          = new ProdutoDocumentoDAL();
                Doc_SolCompra           p1            = new Doc_SolCompra();
                Doc_SolCompraDAL        docDAL        = new Doc_SolCompraDAL();
                EventoDocumentoDAL      eve           = new EventoDocumentoDAL();
                AnexoDocumentoDAL       anexo         = new AnexoDocumentoDAL();

                p1            = docDAL.PesquisarSolCompra(CodigoDocumento);
                ListaProdutos = RnPd.ObterItemSolCompra(CodigoDocumento);
                ListaProdutos = ListaProdutos.Where(x => x.CodigoSituacao != 134).ToList();
                ListaEvento   = eve.ObterEventos(CodigoDocumento);
                ListaAnexo    = anexo.ObterAnexos(CodigoDocumento);

                //Gravar Documento
                p1.Cpl_Maquina = CodigoMaquina;
                p1.Cpl_Usuario = CodigoUsuario;

                p1.CodigoSituacao     = CodigoSituacao;
                p1.MotivoCancelamento = "";
                docDAL.SalvarSolicitacao(p1, ListaProdutos, EventoDocumento2(ListaEvento, p1.CodigoSituacao, p1.Cpl_Usuario, p1.Cpl_Maquina), ListaAnexo);

                transaction.Commit();
            }
            catch (SqlException ex)
            {
                transaction.Rollback();

                if (ex.Errors.Count > 0) // Assume the interesting stuff is in the first error
                {
                    switch (ex.Errors[0].Number)
                    {
                    case 547:     // Foreign Key violation
                        throw new InvalidOperationException("Alteração do Documento não permitida!!! Existe Relacionamentos Obrigatórios com a Tabela. Mensagem :" + ex.Message.ToString(), ex);

                    default:
                        throw new Exception("Erro ao alterar documento: " + ex.Message.ToString());
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao alterar documento: " + ex.Message.ToString());
            }
            finally
            {
                FecharConexao();
            }
        }
Exemplo n.º 6
0
        public void Inserir(Doc_SolCompra p, List <ProdutoDocumento> listaItemSolicitacao, EventoDocumento eventoDocumento, List <AnexoDocumento> ListaAnexoDocumento)
        {
            try
            {
                AbrirConexao();
                strSQL = "insert into DOCUMENTO (CD_TIPO_DOCUMENTO," +
                         "CD_EMPRESA," +
                         "CD_SITUACAO," +
                         "NR_DOCUMENTO," +
                         "DT_HR_EMISSAO," +
                         "DT_VENCIMENTO," +
                         "CD_GER_SEQ_DOC, " +
                         "VL_TOTAL_GERAL, " +
                         "CD_USU_RESPONSAVEL, " +
                         "DT_HR_ENTRADA, OB_DOCUMENTO) values (@v1,@v2,@v3,@v4,@v5,@v6,@v7,@v8,@v9,@v10,@v11) SELECT SCOPE_IDENTITY();";

                Cmd = new SqlCommand(strSQL, Con);

                decimal CodigoGerado = 0;
                GeradorSequencialDocumentoEmpresaDAL gerDAL = new GeradorSequencialDocumentoEmpresaDAL();
                if (p.Cpl_NomeTabela != null)
                {
                    CodigoGerado = gerDAL.IncluirTabelaGerador(p.Cpl_NomeTabela, Convert.ToInt32(p.CodigoGeracaoSequencialDocumento), p.Cpl_Usuario, p.Cpl_Maquina);
                }

                Cmd.Parameters.AddWithValue("@v1", 12);
                Cmd.Parameters.AddWithValue("@v2", p.CodigoEmpresa);
                Cmd.Parameters.AddWithValue("@v3", p.CodigoSituacao);
                Cmd.Parameters.AddWithValue("@v4", p.NumeroDocumento);
                Cmd.Parameters.AddWithValue("@v5", p.DataHoraEmissao);
                Cmd.Parameters.AddWithValue("@v6", p.DataValidade);
                Cmd.Parameters.AddWithValue("@v7", CodigoGerado);
                Cmd.Parameters.AddWithValue("@v8", p.ValorTotal);
                Cmd.Parameters.AddWithValue("@v9", p.CodigoUsuario);
                Cmd.Parameters.AddWithValue("@v10", p.DataHoraEmissao);
                Cmd.Parameters.AddWithValue("@v11", p.DescricaoDocumento);

                p.CodigoDocumento = Convert.ToDecimal(Cmd.ExecuteScalar());
            }
            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 Orcamento: " + ex.Message.ToString());
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao gravar Solicitação de Compra: " + ex.Message.ToString());
            }
            finally
            {
                FecharConexao();

                ExcluirPessoaDocumento(p.CodigoDocumento);                         //Pessoa do Documento Fornecedor
                InserirPessoaDocumento(p.CodigoDocumento, p.CodigoFornecedor, 16); //Pessoa do Documento Fornecedor

                if (eventoDocumento != null)
                {
                    EventoDocumentoDAL eventoDAL = new EventoDocumentoDAL();
                    eventoDAL.Inserir(eventoDocumento, p.CodigoDocumento);
                }
                AnexoDocumentoDAL AnexoDAL = new AnexoDocumentoDAL();
                AnexoDAL.Inserir(p.CodigoDocumento, ListaAnexoDocumento);
                InserirProduto(p.CodigoDocumento, listaItemSolicitacao);
            }
        }
Exemplo n.º 7
0
        public void Atualizar(Doc_SolCompra p, List <ProdutoDocumento> listaItemSolicitacao, EventoDocumento eventoDocumento, List <AnexoDocumento> ListaAnexoDocumento)
        {
            try
            {
                AbrirConexao();
                strSQL = "update [DOCUMENTO] set CD_TIPO_DOCUMENTO = @v1," +
                         " CD_EMPRESA = @v2," +
                         " CD_SITUACAO = @v3," +
                         " NR_DOCUMENTO = @v4," +
                         " DT_HR_EMISSAO = @v5," +
                         " DT_VENCIMENTO = @v6," +
                         " VL_TOTAL_GERAL = @v7," +
                         " OB_DOCUMENTO = @v8, " +
                         " TX_MOTIVO_BAIXA = @v9 " +
                         " Where [CD_DOCUMENTO] = @CODIGO ";

                Cmd = new SqlCommand(strSQL, Con);


                Cmd.Parameters.AddWithValue("@CODIGO", p.CodigoDocumento);
                Cmd.Parameters.AddWithValue("@v1", 12);
                Cmd.Parameters.AddWithValue("@v2", p.CodigoEmpresa);
                Cmd.Parameters.AddWithValue("@v3", p.CodigoSituacao);
                Cmd.Parameters.AddWithValue("@v4", p.NumeroDocumento);
                Cmd.Parameters.AddWithValue("@v5", p.DataHoraEmissao);
                Cmd.Parameters.AddWithValue("@v6", p.DataValidade);
                Cmd.Parameters.AddWithValue("@v7", p.ValorTotal);
                Cmd.Parameters.AddWithValue("@v8", p.DescricaoDocumento);
                Cmd.Parameters.AddWithValue("@v9", p.MotivoCancelamento);

                Cmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao atualizar Solicitação de Compra: " + ex.Message.ToString());
            }
            finally
            {
                FecharConexao();

                DataTable        tbProdDocA = new DataTable();
                DataTable        tbProdDocB = new DataTable();
                List <Habil_Log> listaLog   = new List <Habil_Log>();
                Habil_LogDAL     Rn_Log     = new Habil_LogDAL();

                tbProdDocA = ObterSolicitacaoCompraPessoa(p.CodigoDocumento);
                ExcluirPessoaDocumento(p.CodigoDocumento);                         //Pessoa do Documento Fornecedor
                InserirPessoaDocumento(p.CodigoDocumento, p.CodigoFornecedor, 16); //Pessoa do Documento Fornecedor
                tbProdDocB = ObterSolicitacaoCompraPessoa(p.CodigoDocumento);

                listaLog = Rn_Log.ComparaDataTablesRelacionalPessoa_do_Documento(tbProdDocA, tbProdDocB, Convert.ToDouble(p.CodigoDocumento), p.Cpl_Usuario, p.Cpl_Maquina, 21, 22, 23, "PESSOA_DO_DOCUMENTO", "CD_DOCUMENTO", "TP_PESSOA");
                foreach (Habil_Log item in listaLog)
                {
                    Rn_Log.Inserir(item);
                }

                if (eventoDocumento != null)
                {
                    EventoDocumentoDAL eventoDAL = new EventoDocumentoDAL();
                    eventoDAL.Inserir(eventoDocumento, p.CodigoDocumento);
                }

                AnexoDocumentoDAL AnexoDAL = new AnexoDocumentoDAL();
                AnexoDAL.Inserir(p.CodigoDocumento, ListaAnexoDocumento);

                tbProdDocA = new DataTable();

                tbProdDocA = ObterSolicitacaoCompraProduto(p.CodigoDocumento);
                InserirProduto(p.CodigoDocumento, listaItemSolicitacao);
                tbProdDocB = new DataTable();
                tbProdDocB = ObterSolicitacaoCompraProduto(p.CodigoDocumento);

                listaLog = new List <Habil_Log>();
                listaLog = Rn_Log.ComparaDataTablesRelacionalProduto_do_Documento(tbProdDocA, tbProdDocB, Convert.ToDouble(p.CodigoDocumento), p.Cpl_Usuario, p.Cpl_Maquina, 18, 19, 20, "PRODUTO_DO_DOCUMENTO", "CD_DOCUMENTO", "CD_PROD_DOCUMENTO");
                foreach (Habil_Log item in listaLog)
                {
                    Rn_Log.Inserir(item);
                }
            }
        }
Exemplo n.º 8
0
        public void SalvarSolicitacao(Doc_SolCompra p, List <ProdutoDocumento> listaProdutos, EventoDocumento eventoDocumento, List <AnexoDocumento> ListaAnexoDocumento)
        {
            try
            {
                List <Habil_Log> listaLog = new List <Habil_Log>();
                Habil_LogDAL     Rn_Log   = new Habil_LogDAL();
                DBTabelaDAL      RnTabela = new DBTabelaDAL();


                DataTable tbA, tbB;

                if (p.CodigoDocumento == 0)                 //Registro Novo
                {
                    Inserir(p, listaProdutos, eventoDocumento, ListaAnexoDocumento);
                }
                else
                {
                    tbA = ObterSolicitacaoCompra(p.CodigoDocumento);

                    if (eventoDocumento != null)
                    {
                        Atualizar(p, listaProdutos, eventoDocumento, ListaAnexoDocumento);
                    }
                    else
                    {
                        Atualizar(p, listaProdutos, null, ListaAnexoDocumento);
                    }

                    tbB      = ObterSolicitacaoCompra(p.CodigoDocumento);
                    listaLog = Rn_Log.ComparaDataTables(tbA, tbB, Convert.ToDouble(p.CodigoDocumento), p.Cpl_Usuario, p.Cpl_Maquina, 17, "DOCUMENTO");
                    foreach (Habil_Log item in listaLog)
                    {
                        Rn_Log.Inserir(item);
                    }
                }

                if (p.CodigoSituacao == 201)
                {// Análise
                    LiberacaoDocumento    p1;
                    LiberacaoDocumentoDAL Rn_LibDoc = new LiberacaoDocumentoDAL();

                    p1 = Rn_LibDoc.PesquisarLiberacaoDocumento(p.CodigoDocumento, 1);
                    if (p1 == null)
                    {
                        p1 = new LiberacaoDocumento();
                        p1.CodigoDocumento = p.CodigoDocumento;
                        p1.CodigoBloqueio  = 1;
                        p1.CodigoMaquina   = p.Cpl_Maquina;
                        p1.CodigoUsuario   = p.Cpl_Usuario;
                        p1.DataLancamento  = RnTabela.ObterDataHoraServidor();
                        Rn_LibDoc.Inserir(p1);
                    }
                }
            }
            catch (SqlException ex)
            {
                if (ex.Errors.Count > 0)                 // Assume the interesting stuff is in the first error
                {
                    throw new Exception("Erro ao Incluir Salvar Solicitação de Compras: " + ex.Message.ToString());
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao Salvar Solicitação de Compras: " + ex.Message.ToString());
            }
            finally
            {
                FecharConexao();
            }
        }
Exemplo n.º 9
0
        public void AprovarSolicitacaoCompra(LiberacaoDocumento p)
        {
            AbrirConexao();

            SqlCommand cmd1 = new SqlCommand();
            SqlCommand cmd2 = new SqlCommand();
            SqlCommand cmd3 = new SqlCommand();


            SqlTransaction transaction = Con.BeginTransaction();

            cmd1 = new SqlCommand("update LIBERACAO_DO_DOCUMENTO set DT_LIBERACAO = @v3, CD_USUARIO = @v4, CD_MAQUINA = @v5 " +
                                  "where CD_INDEX = @v1 ", Con, transaction);
            cmd1.Parameters.AddWithValue("@v1", p.CodigoLiberacao);
            cmd1.Parameters.AddWithValue("@v3", p.DataLiberacao);
            cmd1.Parameters.AddWithValue("@v4", p.CodigoUsuario);
            cmd1.Parameters.AddWithValue("@v5", p.CodigoMaquina);

            try
            {
                cmd1.ExecuteNonQuery();

                //Monta Tela
                List <EventoDocumento>  ListaEvento   = new List <EventoDocumento>();
                List <AnexoDocumento>   ListaAnexo    = new List <AnexoDocumento>();
                List <ProdutoDocumento> ListaProdutos = new List <ProdutoDocumento>();
                ProdutoDocumentoDAL     RnPd          = new ProdutoDocumentoDAL();
                Doc_SolCompra           p1            = new Doc_SolCompra();
                Doc_SolCompraDAL        docDAL        = new Doc_SolCompraDAL();
                EventoDocumentoDAL      eve           = new EventoDocumentoDAL();
                AnexoDocumentoDAL       anexo         = new AnexoDocumentoDAL();

                p1            = docDAL.PesquisarSolCompra(p.CodigoDocumento);
                ListaProdutos = RnPd.ObterItemSolCompra(p.CodigoDocumento);
                ListaProdutos = ListaProdutos.Where(x => x.CodigoSituacao != 134).ToList();
                ListaEvento   = eve.ObterEventos(p.CodigoDocumento);
                ListaAnexo    = anexo.ObterAnexos(p.CodigoDocumento);

                //Gravar Documento
                p1.Cpl_Maquina = p.CodigoMaquina;
                p1.Cpl_Usuario = p.CodigoUsuario;

                p1.CodigoSituacao     = 202;
                p1.MotivoCancelamento = "";
                docDAL.SalvarSolicitacao(p1, ListaProdutos, EventoDocumento(ListaEvento, p1.CodigoSituacao, p1.Cpl_Usuario, p1.Cpl_Maquina), ListaAnexo);

                transaction.Commit();
            }
            catch (SqlException ex)
            {
                transaction.Rollback();

                if (ex.Errors.Count > 0) // Assume the interesting stuff is in the first error
                {
                    switch (ex.Errors[0].Number)
                    {
                    case 547:     // Foreign Key violation
                        throw new InvalidOperationException("Alteração do Documento não permitida!!! Existe Relacionamentos Obrigatórios com a Tabela. Mensagem :" + ex.Message.ToString(), ex);

                    default:
                        throw new Exception("Erro ao alterar documento: " + ex.Message.ToString());
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao alterar documento: " + ex.Message.ToString());
            }
            finally
            {
                FecharConexao();
            }
        }
Exemplo n.º 10
0
        public void CancelarSolicitacaoCompra(LiberacaoDocumento LibDocumento, string strMotivo)
        {
            try
            {
                AbrirConexao();

                SqlCommand cmd1 = new SqlCommand();


                cmd1 = new SqlCommand("delete from LIBERACAO_DO_DOCUMENTO where CD_INDEX = @v1;", Con);
                cmd1.Parameters.AddWithValue("@v1", LibDocumento.CodigoDocumento);
                cmd1.ExecuteNonQuery();

                //Monta Tela
                List <EventoDocumento>  ListaEvento   = new List <EventoDocumento>();
                List <AnexoDocumento>   ListaAnexo    = new List <AnexoDocumento>();
                List <ProdutoDocumento> ListaProdutos = new List <ProdutoDocumento>();
                ProdutoDocumentoDAL     RnPd          = new ProdutoDocumentoDAL();
                Doc_SolCompra           p             = new Doc_SolCompra();
                Doc_SolCompraDAL        docDAL        = new Doc_SolCompraDAL();
                EventoDocumentoDAL      eve           = new EventoDocumentoDAL();
                AnexoDocumentoDAL       anexo         = new AnexoDocumentoDAL();

                p             = docDAL.PesquisarSolCompra(LibDocumento.CodigoDocumento);
                ListaProdutos = RnPd.ObterItemSolCompra(p.CodigoDocumento);
                ListaProdutos = ListaProdutos.Where(x => x.CodigoSituacao != 134).ToList();;
                ListaEvento   = eve.ObterEventos(LibDocumento.CodigoDocumento);
                ListaAnexo    = anexo.ObterAnexos(LibDocumento.CodigoDocumento);

                //Gravar Documento

                p.Cpl_Maquina = LibDocumento.CodigoMaquina;
                p.Cpl_Usuario = LibDocumento.CodigoUsuario;

                p.CodigoSituacao     = 203;
                p.MotivoCancelamento = strMotivo;
                docDAL.SalvarSolicitacao(p, ListaProdutos, EventoDocumento(ListaEvento, p.CodigoSituacao, p.Cpl_Usuario, p.Cpl_Maquina), ListaAnexo);
            }
            catch (SqlException ex)
            {
                if (ex.Errors.Count > 0)
                {
                    switch (ex.Errors[0].Number)
                    {
                    case 547:
                        throw new InvalidOperationException("Devolução do Documento não permitida!!! Existe Relacionamentos Obrigatórios com a Tabela. Mensagem :" + ex.Message.ToString(), ex);

                    default:
                        throw new Exception("Erro ao CancelarSolicitacaoCompra: " + ex.Message.ToString());
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao CancelarSolicitacaoCompra: " + ex.Message.ToString());
            }
            finally
            {
                FecharConexao();
            }
        }