public void Vender() // Aceitar pedidos realizados pelos clientes { List <Produto> pacote = new List <Produto>(); List <int> ids = new List <int>(); bool venda = false; try{ foreach (Cliente c in clientes) // O processo é realizado pra cada cliente individualmente { pacote.Clear(); pacote.AddRange(c.Vender(produtos)); if (pacote.Count > 0) { double[] coord = new double[2]; coord = c.getCoord(); double frete = Caminhao.CalcularDistancia(0, coord[0], 0, coord[1]) * 0.60; int dist = (int)(Caminhao.CalcularDistancia(0, coord[0], 0, coord[1]) * 0.60); ids.Clear(); ids.Add(0); foreach (Encomenda e in encomendas) { ids.Add(e.getId()); } encomendas.Add(new Encomenda(ids.Max() + 1, pacote, getClientes(c.getNome()), coefLucro, frete, dist)); DownEstoque(pacote); // abater do estoque o que foi vendido venda = true; } } if (venda) { //OrganizarEncomendas(); // Otimizar encomendas, organizando em ordem decrescente por lucratividade Salvar(); Console.WriteLine("Pedidos aceitos!\nEncomendas geradas!\n"); } else { Console.WriteLine("Não há pedidos pendentes\n"); } } catch (IndexOutOfRangeException e) { LogisticaException.ExceptionGrave("LE_IndexOutOfRangeException", e, "Distribuidora", "Vender"); } catch (Exception e) { LogisticaException.ExceptionGrave("LE_ExceptionNaoTratada", e, "Distribuidora", "Vender"); } }
public double getDist(double la, double lo) { return(Caminhao.CalcularDistancia(lat, lon, la, lo)); }