/// <summary> /// Adiciona Saquinho na bandeja /// </summary> /// <param name="ISaquinho">Entidades.ISaquinho.ISaquinho a ser adicionado</param> public void Adicionar(Entidades.ISaquinho saquinhoOriginal) { ListViewItem item; UseWaitCursor = true; SinalizarSaquinho(saquinhoOriginal); if (agrupar) { /* É concebido que a bandeja já está completamente agrupado. * Portanto, só devemos olhar por um item apenas. */ string chave = saquinhoOriginal.IdentificaçãoAgrupável(); ISaquinho agrupável = null; if (hashAgrupamento.TryGetValue(chave, out agrupável)) { // O próprio Remover() irá retirar da hashAgrupamento. saquinhoOriginal = saquinhoOriginal.Clone(saquinhoOriginal.Quantidade + agrupável.Quantidade); RemoverInterno(agrupável); hashAgrupamento[chave] = saquinhoOriginal; } } saquinhos.Add(saquinhoOriginal); item = ConstruirListView(saquinhoOriginal); lista.Items.Add(item); item.EnsureVisible(); item.Group = lista.Groups[saquinhoOriginal.Mercadoria.DePeso ? "peso" : "peça"]; // Atualiza contagem para status totalMercadorias += saquinhoOriginal.Quantidade; totalPeso += saquinhoOriginal.Quantidade * saquinhoOriginal.Peso; totalÍndice += saquinhoOriginal.Quantidade * saquinhoOriginal.Mercadoria.ÍndiceArredondado; if (saquinhoOriginal.Mercadoria.DePeso) totalÍndicePeso += saquinhoOriginal.Quantidade * saquinhoOriginal.Mercadoria.ÍndiceArredondado; else totalÍndicePeça += saquinhoOriginal.Quantidade * saquinhoOriginal.Mercadoria.ÍndiceArredondado; if (cotação != null) totalPreço += CalcularValor(saquinhoOriginal); try { MarcarStatusDesatualizado(); } catch { } UseWaitCursor = false; }