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.
publicList<TransfereItensMesaMesa>TransfereItenMesaMesa(longOpOr,longMesaOr,longMesaDest,longCodigo,longCodProduto,doubleQuantidade,longCodCaixa,DateTimeDataCaixa,longCodUsuario){List<TransfereItensMesaMesa>_Estorna=newList<TransfereItensMesaMesa>();boolRetorno=false;NpgsqlTransactionTrans;NpgsqlConnectionCnx=newNpgsqlConnection(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();gotoSair;}}}}}else{Trans.Rollback();Cnx.Close();Variaveis.Mensage="Erro ao caregar a mesa de destino";Retorno=false;gotoSair;}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;gotoSair;}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;gotoSair;}}}else{Trans.Rollback();Cnx.Close();Variaveis.Mensage="Erro ao caregar a mesa";Retorno=false;gotoSair;}}else{Trans.Rollback();Cnx.Close();Variaveis.Mensage="Erro ao caregar a mesa";Retorno=false;gotoSair;}}else{Trans.Rollback();Cnx.Close();Variaveis.Mensage="Erro ao cadastrar a mesa, para recebar a transferencia";Retorno=false;gotoSair;}}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;gotoSair;}}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;gotoSair;}}else{Trans.Rollback();Cnx.Close();Variaveis.Mensage="Não foi possível carregar a operação da mesa de destino";Retorno=false;gotoSair;}}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(newTransfereItensMesaMesa(){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.
Pergunta
Nilson Claiton Morgenstern
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.
Obs:
Editado por Nilson Claiton MorgensternO 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.
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
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.