/*
         * Funcao para alterar uma saida que ja esta gravada no banco de dados -> recebe um objeto do tipo "saida" com os atributos existentes na tabela, localiza o id à ser alterado e grava todos
         * os campos exceto o idMovimentacao que é auto incrementado automaticamente pelo mysql.
         */
        public void AlterarSaida(Objetos.Saida s)

        {
            if (Objetos.Colaborador.tipoAcessoUsuarioLogado == "Alterar-Excluir" |
                Objetos.Colaborador.tipoAcessoUsuarioLogado == "Admin")
            {
                try
                {
                    //Guardar Saida antes de ser alterada
                    Objetos.Saida saida = new Objetos.Saida();

                    saida = ConsultarSaidaObj(s.IdMovimentacao);

                    conectar();

                    comando = new MySqlCommand("UPDATE movimentacao_caixa SET Valor =  @Valor, TipoDespesa = @TipoDespesa,Descricao = @Descricao, FK_IdColaboradorResponsavel = @FK_IdColaboradorResponsavel," +
                                               " NotaFiscal = @NotaFiscal, DataHoraUltimaAlteracao = @DataHoraUltimaAlteracao, FK_UsuarioUltimaAlteracao = @FK_UsuarioUltimaAlteracao " +
                                               "WHERE IdMovimentacao = @IdMovimentacao", conexao);

                    comando.Parameters.AddWithValue("@Valor", s.Valor * -1);
                    comando.Parameters.AddWithValue("@TipoDespesa", s.TipoDespesa);
                    comando.Parameters.AddWithValue("@Descricao", s.Descricao);
                    if (saida.FkNomeColaboradorResponsavel != "")
                    {
                        DAO.UsuarioDAO udao = new DAO.UsuarioDAO();

                        comando.Parameters.AddWithValue("@FK_IdColaboradorResponsavel", udao.IdColaborador(saida.FkNomeColaboradorResponsavel));
                    }
                    else
                    {
                        comando.Parameters.AddWithValue("@FK_IdColaboradorResponsavel", DBNull.Value);
                    }
                    comando.Parameters.AddWithValue("@NotaFiscal", s.NotaFiscal);
                    comando.Parameters.AddWithValue("@DataHoraUltimaAlteracao", DateTime.Now);
                    comando.Parameters.AddWithValue("@FK_UsuarioUltimaAlteracao", Objetos.Colaborador.usuarioLogado);
                    comando.Parameters.AddWithValue("@IdMovimentacao", s.IdMovimentacao);

                    //Salvar saida alterada no historico
                    DAO.HistoricoDAO hDAO = new DAO.HistoricoDAO();
                    hDAO.SalvarSaidaAlterada(saida);

                    comando.ExecuteNonQuery();

                    MessageBox.Show("Saida alterada com sucesso!");
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "sDAO155 - Ocorreu um erro ao tentar alterar a movimentacao_caixa no banco de dados: ");
                }
                finally
                {
                    desconectar();
                }
            }
            else
            {
                MessageBox.Show("Usuario logado nao possui privilegios para alterar dados do sistema.", "Acesso Negado:");
            }
        }