Beispiel #1
0
        public bool AltaImportacion(int cantidad, DateTime fechaIngreso, DateTime fechaSalidaPrevista, int idProd, decimal precioProducto)
        {
            RepoImportacion repoImp   = new RepoImportacion();
            Importacion     impoNueva = new Importacion()
            {
                FechaIngreso    = fechaIngreso,
                FechaSalida     = fechaSalidaPrevista,
                Producto        = FachadaDistribuidora.BuscarProductoPorId(Convert.ToString(idProd)),
                Cantidad        = cantidad,
                PrecioPorUnidad = precioProducto
            };
            bool exito = repoImp.Alta(impoNueva);

            return(exito);
        }
        public ActionResult CalcularGanancia(string id)
        {
            if (Session["rol"] != null)
            {
                if (Session["rol"].ToString() == "admin")
                {
                    //aca conseguimos todos los decuentos de la base de dato y los guardamos en un objeto
                    RepoDescuento    repoDes          = new RepoDescuento();
                    List <Descuento> descuentos       = repoDes.TraerTodo();
                    Descuento        descuentoObj     = descuentos[0];
                    int     antiguedadAplicableEnDias = descuentoObj.AntiguedadAplicable;
                    decimal comisionDiaria            = descuentoObj.ComisionDiaria;
                    decimal descuentoAplicable        = descuentoObj.DescuentoAplicable;

                    //aca creamos el objeto cliente
                    RepoCliente repoCli = new RepoCliente();
                    Cliente     cliente = repoCli.BuscarPorRut(id);

                    //aca conseguimos la lista de todas las importaciones de la base de datos
                    decimal            costoTotal = 0;
                    RepoImportacion    repoImp    = new RepoImportacion();
                    List <Importacion> listaImp   = repoImp.TraerTodo();

                    //aca filtramos todas las importaciones por las pertinentes a un cliente en particular
                    List <Importacion> importacionesPorCliente = new List <Importacion>();
                    foreach (Importacion impo1 in listaImp)
                    {
                        if (impo1.Producto.Cliente.Rut == id.ToString())
                        {
                            importacionesPorCliente.Add(impo1);
                        }
                    }

                    //aca filtramos las importaciones por aquellas q estan en el rango de fechas que aplica para el calculo
                    // la fecha de ingreso tiene que ser anterior a la fecha de hoy. Y fecha de salida mayor a la de hoy.
                    List <Importacion> importacionesCalculables = new List <Importacion>();
                    foreach (Importacion impo2 in importacionesPorCliente)
                    {
                        if (impo2.EsCalculable())
                        {
                            importacionesCalculables.Add(impo2);
                        }
                    }

                    //aca calculamos el costo de todas las importaciones
                    foreach (Importacion impo3 in importacionesCalculables)
                    {
                        costoTotal += impo3.CalcularCosto();
                    }
                    costoTotal = costoTotal * ((comisionDiaria) / 100);

                    //aca vemos si aplica descuento por antiguedad, en cuyo caso, lo aplicamos
                    if (cliente.CantidadDias() >= antiguedadAplicableEnDias)
                    {
                        costoTotal = costoTotal - (costoTotal * ((descuentoAplicable) / 100));
                    }
                    ViewBag.Mensaje = costoTotal;
                    return(View(cliente));
                }
            }
            else
            {
                return(Redirect("/usuario/Index"));
            }

            return(Redirect("/usuario/Index"));
        }