示例#1
0
        public static List<long> ObterAcerto(List<long> códigoRetornos, Dictionary<string, Acerto.SaquinhoAcerto> hash, FórmulaAcerto fórmula)
        {
            string consulta;

            if (códigoRetornos.Count != 0)
            {
                consulta = "select retornoitem.referencia, mercadoria.digito, retornoitem.peso, sum(quantidade) as qtd, retornoitem.indice"
                    + " from retornoitem, retorno, mercadoria WHERE retorno.codigo=retornoitem.retorno AND retorno.codigo IN "
                    + DbTransformarConjunto(códigoRetornos);
                consulta += " AND mercadoria.referencia=retornoitem.referencia group by referencia, digito, peso, indice having qtd != 0 order by referencia, peso";

                ObterAcerto(consulta, hash, fórmula);
            }

            return códigoRetornos;
        }
示例#2
0
        public static List<long> ObterAcerto(List<long> códigoSaídas, Dictionary<string, Acerto.SaquinhoAcerto> hash, FórmulaAcerto fórmula)
        {
            string consulta;
            
            if (códigoSaídas.Count != 0) 
            {
                consulta = "select saidaitem.referencia, mercadoria.digito, saidaitem.peso, sum(quantidade) as qtd, saidaitem.indice"
                    + " from saidaitem, saida, mercadoria WHERE saida.codigo=saidaitem.saida AND saida.codigo IN "
                    + DbTransformarConjunto(códigoSaídas)
                    + " AND mercadoria.referencia=saidaitem.referencia group by referencia, digito, peso, indice having qtd != 0 order by referencia, peso";

                ObterAcerto(consulta, hash, fórmula);
            }

            return códigoSaídas;
        }
示例#3
0
        private static void ObterAcerto(string consulta, Dictionary<string, Acerto.SaquinhoAcerto> hash, FórmulaAcerto fórmula)
        {
            IDbConnection conexão;
            IDataReader leitor = null;

            conexão = Conexão;

            using (IDbCommand cmd = conexão.CreateCommand())
            {
                cmd.CommandText = consulta;

                lock (conexão)
                {
                    Usuários.UsuárioAtual.GerenciadorConexões.RemoverConexão(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 = SaquinhoAcerto.Construir(fórmula, new Mercadoria.Mercadoria(referência, dígito, peso, índice), 0, peso, índice);

                                bool itemJáExistente;


                                // Item a ser utilizado
                                SaquinhoAcerto item;

                                Mercadoria.Mercadoria mercadoria = new Mercadoria.Mercadoria(referência, dígito, peso, null);
                                itemJáExistente = hash.TryGetValue(itemNovo.IdentificaçãoAgrupável(), out item);

                                // Primeira vez deste item: utiliza um novinho
                                if (!itemJáExistente)
                                    item = itemNovo;

                                item.QtdRetorno += qtd;

                                if (!itemJáExistente)
                                    hash.Add(item.IdentificaçãoAgrupável(), item);
                            }
                        }
                    }
                    finally
                    {
                        if (leitor != null)
                            leitor.Close();

                        Usuários.UsuárioAtual.GerenciadorConexões.AdicionarConexão(conexão);
                    }
                }
            }

        }
示例#4
0
        public static List<long> ObterAcerto(List<long> códigoVendas, Dictionary<string, Acerto.SaquinhoAcerto> hash, FórmulaAcerto fórmula)
        {
            StringBuilder consulta = new StringBuilder();

            if (códigoVendas.Count != 0)
            {
                consulta.Append("select vendaitem.referencia, mercadoria.digito, vendaitem.peso, sum(quantidade), vendaitem.indice as qtd from vendaitem, venda, ");
                consulta.Append(" mercadoria where venda.codigo = vendaitem.venda AND venda.codigo IN ");
                consulta.Append(DbTransformarConjunto(códigoVendas));
                consulta.Append(" AND mercadoria.referencia = vendaitem.referencia group by referencia, digito, peso, indice having qtd != 0 order by referencia, peso");

                ObterAcerto(consulta.ToString(), hash, fórmula);

                /* Considerar também a devolução no acerto, contabilizando
                 * negativamente.
                 * -- Júlio, 18/10/2007
                 */

                consulta.Clear();

                consulta.Append("select vendadevolucao.referencia, mercadoria.digito, vendadevolucao.peso, sum(quantidade), vendadevolucao.indice as qtd from vendadevolucao, venda, ");
                consulta.Append(" mercadoria where venda.codigo=vendadevolucao.venda AND venda.codigo IN ");
                consulta.Append(DbTransformarConjunto(códigoVendas));
                consulta.Append(" AND mercadoria.referencia=vendadevolucao.referencia group by referencia, digito, peso, indice having qtd != 0 order by referencia, peso");

                ObterAcertoDevolução(consulta.ToString(), hash, fórmula);
            }

            return códigoVendas;
        }