Example #1
0
		/// <summary>
		/// Apenas adiciona o essencial: Referência e Quantidade.
		/// </summary>
		protected virtual ListViewItem ConstruirListView(Entidades.ISaquinho saquinho)
		{
			ListViewItem novoItemListView;
			
            // Gera o item 
			novoItemListView = new ListViewItem(saquinho.Mercadoria.Referência);

            // Relaciona dos dicionários
            hashListViewItemSaquinho.Add(novoItemListView, saquinho);
            hashSaquinhoListViewItem.Add(saquinho, novoItemListView);

            // Prepara futuro agrupamento com este:
            string identificação = saquinho.IdentificaçãoAgrupável();

            if (!hashAgrupamento.ContainsKey(identificação))
                hashAgrupamento.Add(identificação, saquinho);
						
			// lista.Items.Add(novoItemListView);
			novoItemListView.SubItems.Add(saquinho.Quantidade.ToString());
			novoItemListView.SubItems.AddRange(new string[] {"","","","","","","","","",""});

            // Preenche campos específicos do listviewitem
            AtualizaElementoListView(saquinho, novoItemListView);

			// A tag é necessária para exibição futura da foto.
			novoItemListView.Tag = saquinho.Mercadoria;

            AdicionarFoto(novoItemListView, saquinho.Mercadoria.Ícone);
			return novoItemListView;
		}
Example #2
0
        /// <summary>
        /// Retorna uma lista de saquinhos agrupáveis com o fornecido.
        /// Na lista inclui-se o próprio item de origem.
        /// </summary>
		protected List<Saquinho> ObterAgrupáveis(Entidades.ISaquinho origem)
		{
            List<Saquinho> semelhantes = new List<Saquinho>();

			// Obtem a hash do objeto de origem para comparação
			string identificação = origem.IdentificaçãoAgrupável();

			// Verifica se existe chave de semelhança na hash.
            if (hashAgrupamento.ContainsKey(identificação))
			{
				foreach (Saquinho s in saquinhos)
					if (identificação.Equals(s.IdentificaçãoAgrupável()))
						semelhantes.Add(s);
			}

            return semelhantes;
		}
Example #3
0
        /// <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;
        }