private void TravaAlterada(BaseEditarRelacionamento sender, RelacionamentoAcerto e, bool vendaTravada)
 {
     Lista.AoMudarTrava(e);
 }
        internal void Abrir(HistóricoRelacionamento coleção, Relacionamento entidade, BaseEditarRelacionamento baseInferior)
        {
            this.baseInferior = baseInferior;
            this.coleção = coleção;
            this.entidade = entidade;

            RelacionamentoAcerto entidadeAcerto = entidade as RelacionamentoAcerto;

            /* Não permitir edição de tabela em documentos cujo
             * acerto possui tabela definida.
             */
            if (entidadeAcerto == null || entidadeAcerto.AcertoConsignado != null && 
                entidadeAcerto.AcertoConsignado.TabelaPreço != null)
            {
                bandejaAgrupada.PermitirSeleçãoTabela = false;
                bandejaHistórico.PermitirSeleçãoTabela = false;
            }

            bool acertoPossuiTabela = entidadeAcerto != null && 
                entidadeAcerto.AcertoConsignado != null && entidadeAcerto.AcertoConsignado.TabelaPreço != null;

            if (entidade.TabelaPreço == null)
            {
                if (acertoPossuiTabela)
                    entidadeAcerto.TabelaPreço = entidadeAcerto.AcertoConsignado.TabelaPreço;
                else
                    QuestionarTabelaPreço(entidadeAcerto);
            }

            // Deve-se garantir que existe uma tabelad e preço definida.
            while (entidade.TabelaPreço == null)
            {
                if (MessageBox.Show(
                    ParentForm,
                    "Por favor, escolha uma tabela de preços para iniciar a sua digitação de mercadorias.",
                    "Digitação de mercadorias",
                    MessageBoxButtons.RetryCancel, MessageBoxIcon.Warning) == DialogResult.Cancel)
                {
                    throw new ExceçãoTabelaVazia();
                }
                else
                    QuestionarTabelaPreço(entidadeAcerto);
            }

            quadroMercadoria.Tabela = entidade.TabelaPreço;
            bandejaAgrupada.Tabela = entidade.TabelaPreço;
            bandejaHistórico.Tabela = entidade.TabelaPreço;
            bandejaAgrupada.Abrir(coleção);
            bandejaHistórico.Abrir(coleção);

            entidade.AoAlterarTabela += new Acesso.Comum.DbManipulação.DbManipulaçãoHandler(AoAlterarTabelaEntidade);

            if (coleção.Count > 0)
                PermitirSeleçãoTabela = false;
            else if (entidade is Entidades.Relacionamento.Venda.Venda &&
                Entidades.Privilégio.PermissãoFuncionário.ValidarPermissão(Entidades.Privilégio.Permissão.PersonalizarVenda))
            {
                bandejaAgrupada.PermitirSeleçãoTabela = true;
                bandejaHistórico.PermitirSeleçãoTabela = true;
            }
        }