private decimal ObtenerRetrasoPorEstacion(EEstaciones _eEstacion)
        {
            decimal _dPorcentaje = 0;

            switch (_eEstacion)
            {
            case EEstaciones.Primavera:
                _dPorcentaje = 4;
                break;

            case EEstaciones.Vernao:
                _dPorcentaje = 6;
                break;

            case EEstaciones.Otonio:
                _dPorcentaje = 5;
                break;

            case EEstaciones.Invierno:
                _dPorcentaje = 8;
                break;
            }

            return(_dPorcentaje);
        }
Esempio n. 2
0
        private decimal ObtenerPorcentajeCostoPorEstacion(EEstaciones _eEstacion)
        {
            decimal _dPorcentaje = 0;

            switch (_eEstacion)
            {
            case EEstaciones.Primavera:
                _dPorcentaje = 0;
                break;

            case EEstaciones.Vernao:
                _dPorcentaje = 10;
                break;

            case EEstaciones.Otonio:
                _dPorcentaje = 15;
                break;

            case EEstaciones.Invierno:
                _dPorcentaje = 23;
                break;
            }
            _dPorcentaje = ((_dPorcentaje / 100) + 1);

            return(_dPorcentaje);
        }
Esempio n. 3
0
        private decimal ObtenerPorcentajeVelocidadPorEstacion(EEstaciones _eEstacion)
        {
            decimal _dPorcentaje = 0;

            switch (_eEstacion)
            {
            case EEstaciones.Primavera:
                _dPorcentaje = 0;
                break;

            case EEstaciones.Vernao:
                _dPorcentaje = -10;
                break;

            case EEstaciones.Otonio:
                _dPorcentaje = 15;
                break;

            case EEstaciones.Invierno:
                _dPorcentaje = -30;
                break;
            }

            return(_dPorcentaje / 100);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="_dtFecha"></param>
        /// <returns></returns>
        public EEstaciones ValidarEstacionAnio(DateTime _dtFecha)
        {
            EEstaciones eEstacion = EEstaciones.Otonio;

            ValidarPrimavera(_dtFecha, ref eEstacion);
            ValidarVerano(_dtFecha, ref eEstacion);
            ValidarOtonio(_dtFecha, ref eEstacion);
            ValidarInvierno(_dtFecha, ref eEstacion);
            return(eEstacion);
        }
Esempio n. 5
0
        /// <summary>
        /// /
        /// </summary>
        /// <param name="_iDistancia"></param>
        /// <param name="_eEstacion"></param>
        /// <param name="_dtFechaPedido"></param>
        /// <returns></returns>
        public decimal ObtenerCostoServicio(int _iDistancia, EEstaciones _eEstacion, DateTime _dtFechaPedido)
        {
            decimal dCostoServicio   = 0;
            var     dCostoTransporte = obtenedorDatosEnvioService.ObtenerCostoPorEnvio(_iDistancia, _eEstacion);
            decimal dMargenUtilidad  = recuperadorDatosPaqueteriaService.ObtenerMargenUtilidad(_dtFechaPedido);

            dCostoServicio = dCostoTransporte * dMargenUtilidad;

            return(dCostoServicio);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="_dtFecha"></param>
        /// <param name="_eEstacion"></param>
        /// <returns></returns>
        private void ValidarVerano(DateTime _dtFecha, ref EEstaciones _eEstacion)
        {
            DateTime dtFechaAux    = new DateTime(2020, _dtFecha.Month, _dtFecha.Day);
            DateTime dtFechaInicio = new DateTime(2020, 06, 21);
            DateTime dtFechaFin    = new DateTime(2020, 09, 23);

            if (dtFechaAux >= dtFechaInicio && dtFechaAux <= dtFechaFin)
            {
                _eEstacion = EEstaciones.Vernao;
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="_dtFecha"></param>
        /// <param name="_eEstacion"></param>
        /// <returns></returns>
        private void ValidarPrimavera(DateTime _dtFecha, ref EEstaciones _eEstacion)
        {
            DateTime dtFechaAux    = new DateTime(2020, _dtFecha.Month, _dtFecha.Day);
            DateTime dtFechaInicio = new DateTime(2020, 03, 21);
            DateTime dtFechaFin    = new DateTime(2020, 06, 20);

            if (dtFechaAux >= dtFechaInicio && dtFechaAux <= dtFechaFin)
            {
                _eEstacion = EEstaciones.Primavera;
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="_dtFecha"></param>
        /// <param name="_eEstacion"></param>
        /// <returns></returns>
        private void ValidarInvierno(DateTime _dtFecha, ref EEstaciones _eEstacion)
        {
            DateTime dtFechaAux    = new DateTime(2020, _dtFecha.Month, _dtFecha.Day);
            DateTime dtFechaInicio = new DateTime(2020, 12, 21);
            DateTime dtFechaFin    = new DateTime(2021, 03, 20);

            if (dtFechaAux >= dtFechaInicio && dtFechaAux <= dtFechaFin)
            {
                _eEstacion = EEstaciones.Invierno;
            }
        }
Esempio n. 9
0
        /// <summary>
        /// Método encargado de obtener el precio por kilómetros.
        /// </summary>
        /// <param name="_iDistancia">Distancia de entrega.</param>
        /// <param name="_eEstacion">Estación del año.</param>
        /// <returns>Retorna el precio por kilómetros.</returns>
        public decimal ObtenerCostoPorEnvio(int _iDistancia, EEstaciones _eEstacion)
        {
            decimal dCostoEnvio        = 0;
            decimal dCostoPorKilometro = ObtenerCostoPorKilometro(_iDistancia);
            decimal dCostoPorEnvio     = ObtenerPorcentajeCostoPorEstacion(_eEstacion);

            dCostoEnvio = _iDistancia * dCostoPorKilometro;
            dCostoEnvio = dCostoEnvio * dCostoPorEnvio;

            return(dCostoEnvio);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="_dtFecha"></param>
        /// <param name="_eEstacion"></param>
        /// <returns></returns>
        private void ValidarOtonio(DateTime _dtFecha, ref EEstaciones _eEstacion)
        {
            DateTime dtFechaAux    = new DateTime(2020, _dtFecha.Month, _dtFecha.Day);
            DateTime dtFechaInicio = new DateTime(2020, 09, 24);
            DateTime dtFechaFin    = new DateTime(2020, 12, 20);

            if (dtFechaAux >= dtFechaInicio && dtFechaAux <= dtFechaFin)
            {
                _eEstacion = EEstaciones.Otonio;
            }
        }
Esempio n. 11
0
        /// <summary>
        /// Método encargado de obtener el tiempo de traslado del pedido.
        /// </summary>
        /// <param name="_iDistancia">Distancia de entrega.</param>
        /// <param name="_eEstacion">Estación del año.</param>
        /// <returns>Retorna el tiempo total de traslado.</returns>
        public decimal ObtenerTiempoDeTraslado(int _iDistancia, EEstaciones _eEstacion)
        {
            decimal dTiempoTraslado     = 0M;
            int     iVelocidad          = ObtenerVelocidadEntrega();
            decimal dPorcentajeEstacion = ObtenerPorcentajeVelocidadPorEstacion(_eEstacion);

            decimal dVelocidad = iVelocidad + (iVelocidad * dPorcentajeEstacion);

            dTiempoTraslado = _iDistancia / dVelocidad;
            dTiempoTraslado = (dTiempoTraslado / 24);

            return(Math.Round(dTiempoTraslado, 2));
        }
        /// <summary>
        /// Método encargado de obtener el tiempo de traslado del pedido.
        /// </summary>
        /// <param name="_iDistancia">Distancia de entrega.</param>
        /// <param name="_dtFechaPedido">Fecha del pedido.</param>
        /// <returns>Retorna el tiempo total de traslado.</returns>
        public decimal ObtenerTiempoDeTraslado(int _iDistancia, EEstaciones _eEstacion)
        {
            decimal dTiempoTraslado   = 0;
            int     iHorasPorEscala   = 6;
            int     iVelocidadEntrega = ObtenerVelocidadEntrega();
            decimal dDistanciaEscala  = _iDistancia / 1000;
            decimal dNumeroEscalas    = Math.Truncate(dDistanciaEscala);
            decimal dTiempoExtra      = dNumeroEscalas * iHorasPorEscala;

            dTiempoTraslado = (_iDistancia / iVelocidadEntrega);
            dTiempoTraslado = dTiempoTraslado + dTiempoExtra;

            return(dTiempoTraslado);
        }
        /// <summary>
        /// Método encargado de obtener el precio por kilómetros.
        /// </summary>
        /// <param name="_iDistancia">Distancia de entrega.</param>
        /// <param name="_eEstacion">Estación del año.</param>
        /// <returns>Retorna el precio por kilómetros.</returns>
        public decimal ObtenerCostoPorEnvio(int _iDistancia, EEstaciones _eEstacion)
        {
            decimal dCostoEnvio        = 0;
            decimal dCostoEscala       = ObtenerCostoPorEscala();
            decimal dCostoPorKilometro = ObtenerCostoPorKilometro(_iDistancia);
            decimal dDistanciaEscala   = _iDistancia / 1000;
            decimal dNumeroEscalas     = Math.Truncate(dDistanciaEscala);

            decimal dCargoExtra = dNumeroEscalas * dCostoEscala;

            dCostoEnvio = (_iDistancia * dCostoPorKilometro);
            dCostoEnvio = dCostoEnvio + dCargoExtra;

            return(dCostoEnvio);
        }
        /// <summary>
        /// Método encargado de obtener el tiempo de traslado del pedido.
        /// </summary>
        /// <param name="_iDistancia">Distancia de entrega.</param>
        /// <param name="_dtFechaPedido">Fecha del pedido.</param>
        /// <returns>Retorna el tiempo total de traslado.</returns>
        public decimal ObtenerTiempoDeTraslado(int _iDistancia, EEstaciones _eEstacion)
        {
            decimal dTiempoTraslado      = 0;
            decimal iVelocidadEntrega    = ObtenerVelocidadEntrega();
            decimal dRetrasoEstacion     = ObtenerRetrasoPorEstacion(_eEstacion);
            decimal dTiempoEntrega       = _iDistancia / iVelocidadEntrega;
            decimal dTiempoEntregaEnDias = Math.Round((dTiempoEntrega / 24), 2);

            decimal dTiempoExtra = (dTiempoEntregaEnDias * dRetrasoEstacion) / 24;

            dTiempoExtra    = Math.Round(dTiempoExtra, 2);
            dTiempoTraslado = dTiempoEntregaEnDias + dTiempoExtra;

            return(dTiempoTraslado);
        }
Esempio n. 15
0
 public decimal ObtenerTiempoDeTraslado(int _iDistancia, EEstaciones _eEstacion)
 {
     return(obtenedorDatosEnvio.ObtenerTiempoDeTraslado(_iDistancia, _eEstacion));
 }
Esempio n. 16
0
 public decimal ObtenerCostoPorEnvio(int _iDistancia, EEstaciones _eEstacion)
 {
     return(obtenedorDatosEnvio.ObtenerCostoPorEnvio(_iDistancia, _eEstacion));
 }
 /// <summary>
 /// Método encargado de obtener el precio por kilómetros.
 /// </summary>
 /// <param name="_iDistancia">Distancia de entrega.</param>
 /// <param name="_eEstacion">Estación del año.</param>
 /// <returns>Retorna el precio por kilómetros.</returns>
 public decimal ObtenerCostoPorEnvio(int _iDistancia, EEstaciones _eEstacion)
 {
     return(0);
 }