private IPaqueteCostoMenor ObtenerCostoMenor(IPaqueteEnviado _paquete)
        {
            IPaqueteCostoMenor     PaqueteCostoMenor = null;
            decimal                dCosto            = 0;
            List <ITransportistas> lstTransportistas = EnlistadorPaqueteriaDisponibles.obtenerListadoTransportistas();
            IMediosTransportes     MediosTransportes = null;

            if (lstTransportistas.Any())
            {
                foreach (ITransportistas item in lstTransportistas.Where(x => x.cPaqueteria.ToUpper() != _paquete.cPaqueteria.ToUpper()))
                {
                    MediosTransportes = item.lstMediosTransporte.Where(x => x.cMedioTransporte.ToUpper() == _paquete.cMedioTransporte.ToUpper()).FirstOrDefault();
                    if (MediosTransportes != null)
                    {
                        dCosto = decimal.MaxValue;
                        dCosto = MediosTransportes.ObtenerCostoEnvio(Convert.ToDecimal(_paquete.cDistancia), item.dMargenUtilidad);
                        if (dCosto < _paquete.dCostoEnvio)
                        {
                            dCosto            = _paquete.dCostoEnvio - dCosto;
                            PaqueteCostoMenor = CrearPaqueteCostoMenor(item.cPaqueteria, dCosto);
                        }
                    }
                }
            }
            return(PaqueteCostoMenor);
        }
Exemplo n.º 2
0
        public bool ProcesarDTOPaqueteEnviado(IPaqueteEnviado _dtoPaqueteEnviado)
        {
            bool lReturn = true;

            if (_dtoPaqueteEnviado == null)
            {
                throw new ArgumentNullException(nameof(_dtoPaqueteEnviado));
            }
            IMediosTransportes mediosTransportes = ObtenerTransportista(_dtoPaqueteEnviado.cMedioTransporte);

            if (mediosTransportes == null)
            {
                GeneradorMensajes.GenerarMensajeMedioInexistente(_dtoPaqueteEnviado.cPaqueteria, _dtoPaqueteEnviado.cMedioTransporte);
                lReturn = false;
            }
            else
            {
                AsignarFechaEntrega(_dtoPaqueteEnviado, mediosTransportes);
                _dtoPaqueteEnviado.dCostoEnvio = mediosTransportes.ObtenerCostoEnvio(Convert.ToDecimal(_dtoPaqueteEnviado.cDistancia), dMargenUtilidad);
            }
            return(lReturn);
        }