private void bandejaAgrupada_AlteraçãoÍndiceSolicitada(Bandeja bandeja, ISaquinho saquinho)
        {
            if (!baseInferior.ConferirTravamento())
            {
                ISaquinho saquinhoParaReAdicionar = saquinho.Clone(saquinho.Quantidade);
                try
                {
                    EscolherÍndice(saquinhoParaReAdicionar.Mercadoria, ModoJanelaÍndice.MostrarSempre);
                    bandejaAgrupada.Remover(saquinho);
                }
                catch
                {
                    return;
                }

                Adicionar(saquinhoParaReAdicionar.Mercadoria, saquinhoParaReAdicionar.Quantidade, ModoJanelaÍndice.NuncaMostrarNãoAlterandoÍndice);
            }
        }
        private void bandejaAgrupada_TabelaAlterada(Bandeja bandeja, Tabela tabela)
        {
            bandejaHistórico.Tabela = tabela;

            if (AoAlterarTabela != null)
                AoAlterarTabela(this, tabela);
        }
        private void bandejaHistórico_TabelaAlterada(Bandeja bandeja, Tabela tabela)
        {
            try
            {
                if (entidade.TabelaPreço != tabela)
                    entidade.TabelaPreço = tabela;
            }
            catch (Exception e)
            {
                MessageBox.Show(
                    ParentForm,
                    "Não foi possível alterar a tabela.\n\n" + e.Message,
                    "Alteração de tabela",
                    MessageBoxButtons.OK, MessageBoxIcon.Error);

                bandeja.Tabela = entidade.TabelaPreço;
                return;
            }

            bandejaAgrupada.Tabela = tabela;
            quadroMercadoria.Tabela = tabela;
        
            if (AoAlterarTabela != null)
                AoAlterarTabela(this, tabela);
        }
        private void bandejaHistórico_SeleçãoMudou(Bandeja bandeja, ISaquinho saquinho)
        {
            // Assim que usuário clica no item do histórico, a bandeja agrupada já encontra o item para facilitar modificação
            if (saquinho != null)
            {
                if (saquinho.Mercadoria.Peso != saquinho.Peso)
                    throw new Exception("Esperava-se que o peso da mercadoria fosse o peso do saquinho.");

                if (bandejaAgrupada.Contém(saquinho.Mercadoria))
                    bandejaAgrupada.Selecionar(saquinho.Mercadoria);
            }
        }
        private void bandejaAgrupada_SeleçãoMudou(Bandeja bandeja, ISaquinho saquinho)
        {
            if (saquinho != null)
            {
                quadroFoto.MostrarFoto(saquinho.Mercadoria);

                if (tipoExibiçãoAtual == TipoExibição.TipoAgrupado)
                    quadroMercadoria.AlternarParaAlteração(saquinho);
            }
            else
            {
                // Des-selecionou
                quadroMercadoria.AlternarParaAdicionar();
            }
        }
 private void bandejaAgrupada_SaquinhoExcluído(Bandeja bandeja, ISaquinho saquinho)
 {
     if (!baseInferior.ConferirTravamento())
     {
         try
         {
             HistóricoRelacionamentoItem item = coleção.Relacionar(saquinho.Mercadoria, saquinho.Quantidade * -1, saquinho.Mercadoria.ÍndiceArredondado);
             bandejaHistórico.Adicionar(new SaquinhoHistóricoRelacionado(item));
         }
         catch (OperaçãoCancelada)
         {
             MessageBox.Show(
                 ParentForm,
                 "A operação foi cancelada pelo sistema. Nenhuma alteração foi realizada no banco de dados.",
                 "Relacionamento de mercadoria",
                 MessageBoxButtons.OK, MessageBoxIcon.Stop);
             return;
         } catch (InvalidAsynchronousStateException)
         {
             RecarregarDocumentoInconsistente();
             throw new OperationCanceledException();
         }
     }
 }
 /// <summary>
 /// Método utilizado pelo designer para definir se um
 /// controle do tipo Bandeja deve ser definido por este controle.
 /// </summary>
 public void SetDefinirTabela(Bandeja controle, bool valor)
 {
     if (valor)
         bandejas.Add(controle);
     else
         bandejas.Remove(controle);
 }
 public bool GetDefinirTabela(Bandeja controle)
 {
     return bandejas.Contains(controle);
 }