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; }
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; }
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); } } } }
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; }