示例#1
0
        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());
                }
        }