private static void ObterAcerto(string consulta, Dictionary<string, Balanço.SaquinhoBalanço> hash) { IDbConnection conexão; IDataReader leitor = null; conexão = Conexão; using (IDbCommand cmd = conexão.CreateCommand()) { cmd.CommandText = consulta; lock (conexão) { try { using (leitor = cmd.ExecuteReader()) { while (leitor.Read()) { string referência = leitor.GetString((int)OrdemAcerto.Referência); byte dígito = leitor.GetByte((int)OrdemAcerto.Dígito); double qtd = leitor.GetDouble((int)OrdemAcerto.Quantidade); double peso = leitor.GetDouble((int)OrdemAcerto.Peso); double índice = leitor.GetDouble((int)OrdemAcerto.Índice); //SaquinhoAcerto itemNovo = new SaquinhoAcerto(new Mercadoria.Mercadoria(referência, dígito, peso, índice), 0, peso, índice); SaquinhoBalanço itemNovo = new SaquinhoBalanço(new Mercadoria.Mercadoria(referência, dígito, peso, índice), 0, peso, índice); // Item a ser utilizado SaquinhoBalanço item; Mercadoria.Mercadoria mercadoria = new Mercadoria.Mercadoria(referência, dígito, peso, null); bool itemJáExistente = hash.TryGetValue(itemNovo.IdentificaçãoAgrupável(), out item); // Primeira vez deste item: utiliza um novinho if (!itemJáExistente) item = itemNovo; item.QtdSedex += qtd; if (!itemJáExistente) hash.Add(item.IdentificaçãoAgrupável(), item); } } } finally { if (leitor != null) leitor.Close(); } } } }
private void Agrupar() { List<SaquinhoBalanço> original = new List<SaquinhoBalanço>(ColeçãoSaquinhos); foreach (SaquinhoBalanço s in original) if (s.Mercadoria.Referência.StartsWith("2")) { SaquinhoBalanço grupo; if (hash.TryGetValue(s.Mercadoria.Referência, out grupo)) { grupo.QtdRetorno += s.QtdRetorno; grupo.QtdSaída += s.QtdSaída; grupo.QtdVenda += s.QtdVenda; } else { grupo = new SaquinhoBalanço(new Entidades.Mercadoria.Mercadoria( s.Mercadoria.ReferênciaNumérica, s.Mercadoria.Dígito, s.Mercadoria.ForaDeLinha, true, 0, 0, s.Mercadoria.Referência, s.Mercadoria.Faixa, s.Mercadoria.Grupo, s.Mercadoria.Teor), s.Quantidade, 0, s.Índice); grupo.QtdRetorno = s.QtdRetorno; grupo.QtdSaída = s.QtdSaída; grupo.QtdVenda = s.QtdVenda; hash[s.Mercadoria.Referência] = grupo; } hash.Remove(s.IdentificaçãoAgrupável()); } else if ((s.Mercadoria.ReferênciaNumérica[3] == '8' || s.Mercadoria.ReferênciaNumérica[3] == '9') && s.Mercadoria.DePeso) { SaquinhoBalanço grupo; if (hash.TryGetValue(s.Mercadoria.Referência.Substring(0, 3), out grupo)) { grupo.QtdRetorno += s.QtdRetorno * s.Peso; grupo.QtdSaída += s.QtdSaída * s.Peso; grupo.QtdVenda += s.QtdVenda * s.Peso; } else { grupo = new SaquinhoBalanço(new Entidades.Mercadoria.Mercadoria( s.Mercadoria.ReferênciaNumérica.Substring(0, 3), 0, s.Mercadoria.ForaDeLinha, true, 0, 0, s.Mercadoria.Referência, s.Mercadoria.Faixa, s.Mercadoria.Grupo, s.Mercadoria.Teor), s.Quantidade, 0, s.Índice); grupo.QtdRetorno = s.QtdRetorno * s.Peso; grupo.QtdSaída = s.QtdSaída * s.Peso; grupo.QtdVenda = s.QtdVenda * s.Peso; hash[s.Mercadoria.Referência.Substring(0, 3)] = grupo; } hash.Remove(s.IdentificaçãoAgrupável()); } }