Exemplo n.º 1
0
        private string investigarMejorPrecio(Pedido pedido)
        {
            string mensaje = "";

            foreach (IPaqueteria paqueteria in this.paqueterias)
            {
                if (!paqueteria.getNombre().Equals(pedido.paqueteria))
                {
                    IMedioTransporte medio = paqueteria.getMedioTransporte(pedido.medioTransporte);
                    if (medio != null)
                    {
                        decimal precio = (medio.getCostoPorKilometro() * pedido.distancia) * (1 + (paqueteria.getUtilidad() / 100));
                        if (pedido.costoEnvio > precio)
                        {
                            mensaje = "\n" + "Si hubieras pedido en " + paqueteria.getNombre() + " te hubiera costado $" + (pedido.costoEnvio - precio) + " más barato.";
                        }
                    }
                }
            }

            return(mensaje);
        }
Exemplo n.º 2
0
        /*(Costo por km del [Medio de Transporte] * [Distancia]) * (1 + Margen de utilidad de la [Paquetería]/100)*/
        public decimal getCostoEnvio(Pedido pedido)
        {
            foreach (IPaqueteria paqueteria in this.paqueterias)
            {
                if (paqueteria.getNombre().Equals(pedido.paqueteria))
                {
                    IMedioTransporte medio = paqueteria.getMedioTransporte(pedido.medioTransporte);
                    if (medio != null)
                    {
                        return((medio.getCostoPorKilometro() * pedido.distancia) * (1 + (paqueteria.getUtilidad() / 100)));
                    }
                    else
                    {
                        throw new Exception(paqueteria.getNombre() + " no ofrece el servicio de transporte " + pedido.medioTransporte + ", te recomendamos cotizar en otra empresa.");
                    }
                }
            }

            throw new Exception("La Paquetería: " + pedido.paqueteria + " no se encuentra registrada en nuestra red de distribución.");

            return(0);
        }