Ir para conteúdo
Fórum Script Brasil
  • 0

Postgresql deletando registro da tabel ao dar upDate


Nilson Claiton Morgenstern

Pergunta

Boa tarde

estou desenvolvendo uma Web api, tenho uma função que e usada para tranferir produto de uma mesa para outra mesa.

Quando solicito a transferencia o produto que foi solicitado a transferencia e deletado, o mais estranho que a função finaliza o update com o commit.

Veja a função.

 public List<TransfereItensMesaMesa> TransfereItenMesaMesa(long OpOr, long MesaOr, long MesaDest, long Codigo, long CodProduto, double Quantidade, long CodCaixa, DateTime DataCaixa, long CodUsuario)
 {
     List<TransfereItensMesaMesa> _Estorna = new List<TransfereItensMesaMesa>();
     bool Retorno = false;

     NpgsqlTransaction Trans;

     NpgsqlConnection Cnx = new NpgsqlConnection(Variaveis.StringConexaoPG);
     Cnx.Open();
     Trans = Cnx.BeginTransaction();

     try
     {
         var StatusOr = ffuncaobd.RetDadosString("Select \"Status\" From \"MesaOP\" Where \"Fechada\"='N' And \"Codigo\"=" + OpOr + " And \"Estorno\"='N' And \"Impressa\"='N' Order by \"Codigo\" Desc LIMIT 1");

         if (StatusOr.ToUpper() != "Impressa".ToUpper())
         {

             if (ffuncaobd.RetDados("Select \"Codigo\",\"DataAbertura\",\"Status\" From \"MesaOP\" Where \"Fechada\"='N' And \"Mesa\"=" + MesaDest + " And \"Estorno\"='N' Order by \"Codigo\" Desc LIMIT 1"
             , new string[] { "Codigo", "DataAbertura", "Status" }, 3) == true)
             {
                 if (Variaveis.Dados is Array)
                 {
                     if (Variaveis.Dados is null)
                     {

                     }
                     else
                     {
                         if (ffuncao.IsNumeric(Variaveis.Dados[0]) == true)
                         {
                             CodigoVenda = Convert.ToInt64(Variaveis.Dados[0]);
                             Status = Variaveis.Dados[2].ToString();
                             if (Status.ToUpper() == "Impressa".ToUpper())
                             {
                                 Variaveis.Mensage = "A mesa de destino já foi impressa, para tranferir um item debloqueie a mesa";
                                 Retorno = false;
                                 Trans.Rollback();
                                 Cnx.Close();
                                 goto Sair;
                             }
                         }
                     }
                 }
             }
             else
             {
                 Trans.Rollback();
                 Cnx.Close();
                 Variaveis.Mensage = "Erro ao caregar a mesa de destino";
                 Retorno = false;
                 goto Sair;
             }

             if (CodigoVenda == 0)
             {
                 if (ffuncaobd.GravaTrans_Novo(Cnx, Trans, "Insert Into \"MesaOP\" "
                 , new string[] { "Mesa", "DataCaixa", "Usuario", "Caixa", "DataAbertura" }
                 , new string[] { MesaDest.ToString(), DataCaixa.ToString(), CodUsuario.ToString(), CodCaixa.ToString(), DateTime.Now.ToString() }
                 , new string[] { "bi", "d", "bi", "bi", "DT" }) == true)
                 {

                     if (ffuncaobd.RetDadosTrans_Novo(Cnx, Trans, "Select \"Codigo\",\"DataAbertura\",\"Status\" From \"MesaOP\" Where \"Fechada\"='N' And \"Mesa\"=" + MesaDest + " And \"Estorno\"='N' Order by \"Codigo\" Desc LIMIT 1"
                          , new string[] { "Codigo", "DataAbertura", "Status" }, 3) == true)
                     {
                         if (Variaveis.Dados is Array)
                         {
                             if (Variaveis.Dados is null)
                             {
                                 Trans.Rollback();
                                 Cnx.Close();
                                 Variaveis.Mensage = "Erro ao caregar a mesa";
                                 Retorno = false;
                                 goto Sair;
                             }
                             else
                             {
                                 if (ffuncao.IsNumeric(Variaveis.Dados[0]) == true)
                                 {
                                     CodigoVenda = Convert.ToInt64(Variaveis.Dados[0]);
                                     Status = Variaveis.Dados[2].ToString();
                                 }
                                 else
                                 {
                                     Trans.Rollback();
                                     Cnx.Close();
                                     Variaveis.Mensage = "Erro ao caregar a mesa";
                                     Retorno = false;
                                     goto Sair;
                                 }
                             }
                         }
                         else
                         {
                             Trans.Rollback();
                             Cnx.Close();
                             Variaveis.Mensage = "Erro ao caregar a mesa";
                             Retorno = false;
                             goto Sair;
                         }
                     }
                     else
                     {
                         Trans.Rollback();
                         Cnx.Close();
                         Variaveis.Mensage = "Erro ao caregar a mesa";
                         Retorno = false;
                         goto Sair;
                     }
                 }
                 else
                 {
                     Trans.Rollback();
                     Cnx.Close();
                     Variaveis.Mensage = "Erro ao cadastrar a mesa, para recebar a transferencia";
                     Retorno = false;
                     goto Sair;
                 }
             }
             if (CodigoVenda > 0)
             {


                 string Sql = "UpDate \"MesaDetalhe\" Set \"Operacao\"=" + CodigoVenda + " Where \"Codigo\"=" + Codigo + ";";


                 if (ffuncaobd.GravaTrans_Novo_RetAfect(Cnx, Trans, "UpDate \"MesaDetalhe\" Set "
                      , new string[] { "Operacao" }
                      , new string[] { CodigoVenda.ToString() }
                      , new string[] { "bi" }
                      , Codigo
                      , new string[] { "Codigo" }
                      , new string[] { Codigo.ToString() }
                      , false) > 0)
                 //if (ffuncaobd.DeletarNovoTrans_RetNUmero_Novo(Cnx, Trans, Sql, false) > 0)
                 {

                     if (ffuncaobd.RetDadosNumeroInt64Trans_Novo(Cnx, Trans, "Select count(*) From \"MesaDetalhe\" where \"Operacao\"=" + OpOr) == 0)
                     {

                         string SqlOp = "Delete from \"MesaOP\" Where \"Codigo\"=" + OpOr + ";";
                         if (ffuncaobd.DeletarNovoTrans_RetNUmero_Novo(Cnx, Trans, SqlOp, false) > 0)
                         {
                             Trans.Commit();
                             Cnx.Close();
                             Variaveis.Mensage = "Tranferencia Realizada com Sucesso!!!";
                             Retorno = true;
                         }
                         else
                         {
                             Trans.Rollback();
                             Cnx.Close();
                             Variaveis.Mensage = "Não foi possível tranferir o item selecionado, Deletar a Mesa de Origem Sem Produtos";
                             Retorno = false;
                             goto Sair;
                         }


                     }
                     else
                     {
                         Trans.Commit();
                         Cnx.Close();
                         Variaveis.Mensage = "Tranferencia Realizada com Sucesso!!!";
                         Retorno = true;
                     }
                 }
                 else
                 {
                     Trans.Rollback();
                     Cnx.Close();
                     Variaveis.Mensage = "Não foi possível tranferir o item selecionado para a mesa de destino";
                     Retorno = false;
                     goto Sair;
                 }
             }
             else
             {
                 Trans.Rollback();
                 Cnx.Close();
                 Variaveis.Mensage = "Não foi possível carregar a operação da mesa de destino";
                 Retorno = false;
                 goto Sair;
             }

         }
         else
         {
             Trans.Rollback();
             Cnx.Close();
             Variaveis.Mensage = "A mesa de origem já foi impressa, para tranferir um item debloqueie a mesa";
         }
     }
     catch (Exception ex)
     {
         Variaveis.Erros = ex.Message;
         Variaveis.Mensage = "Não foi possivel Transfere o Iten da Mesa " + ex.Message;
         try
         {
             Trans.Rollback();
             Cnx.Close();
         }
         catch
         {
             try
             {
                 Cnx.Close();
             }
             catch
             {

             }
         }

     }
 Sair:
     _Estorna.Add(new TransfereItensMesaMesa()
     {
         Op = OpOr,
         Codigo = Codigo,
         CodProduto = CodProduto,
         Quantidade = Quantidade,
         CodCaixa = CodCaixa,
         DataCaixa = DataCaixa,
         CodUsuario = CodUsuario,
         Menssagem = Variaveis.Mensage,
         Erro = Variaveis.Erros,
         Retorno = Retorno
     });

     Variaveis.Erros = "";
     Variaveis.Mensage = "";
     return _Estorna;

 }

 

Obs:
O registro e deletado somente quando na tabela mãe o registro e criado junto com a alteração(UpDate)
Se o restro na tabela mãe já existe faz tudo certinho.

Editado por Nilson Claiton Morgenstern
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...