Пример #1
0
        /// <summary>
        /// Calcula el precio total de una receta, que consta de consultar cada ingrediente de la receta en el listado
        /// de precios y calcular cuanto vale la cantidad que lleva ese ingrediente dentro de la receta
        /// El precio del ingrediente en el listado de precios tiene asignada una cantidad y unidad, que
        /// no necesariamente sera la misma que lleve la receta a preparar
        /// </summary>
        /// <param name="receta">Receta a calcular su precio</param>
        /// <returns>Precio total de la receta</returns>
        public decimal CalularPrecio(Receta receta)
        {
            if (receta == null)
            {
                throw new OBMCateringException(Resources.BL_Validaciones_RecetaNull);
            }

            decimal precioTotal = 0m;

            foreach (IngredienteReceta ingredienteReceta in receta.Ingredientes)
            {
                Ingrediente       ingrediente       = ingredienteReceta.Ingrediente;
                PrecioIngrediente precioIngrediente = preciosIngredientesBL.Obtener(ingrediente);

                if (precioIngrediente.Precio != null && ingredienteReceta.Unidad == precioIngrediente.Unidad)
                {
                    //Regla de tres simple
                    decimal precio = (ingredienteReceta.Cantidad * precioIngrediente.Precio.Value) / precioIngrediente.Cantidad.Value;

                    precioTotal = precioTotal + precio;
                }
            }

            return(precioTotal);
        }
Пример #2
0
        internal ItemOrdenCompra ObtenerItem(Datos.ItemOrdenCompra itemDAL)
        {
            Ingrediente     ingrediente = ingredientesBL.Obtener(itemDAL.Ingrediente);
            UnidadMedida    unidad      = (UnidadMedida)Enum.Parse(typeof(UnidadMedida), itemDAL.Unidad.Unidad);
            ItemOrdenCompra item        = new ItemOrdenCompra
            {
                Id          = itemDAL.ID,
                Ingrediente = ingrediente,
                Cantidad    = itemDAL.Cantidad,
                Unidad      = unidad
            };

            return(item);
        }
Пример #3
0
        /// <summary>
        /// Obtiene el listado completo de ingredientes existentes en el sistema
        /// </summary>
        /// <returns>Listado de ingredientes</returns>
        public IEnumerable <Ingrediente> Obtener()
        {
            Datos.IngredientesDAL           dalIngredientes = dal.ObtenerIngredientesDAL();
            IEnumerable <Datos.Ingrediente> ingredientesDAL = dalIngredientes.Obtener();
            List <Ingrediente> ingredientes = new List <Ingrediente>();

            foreach (Datos.Ingrediente ingredienteDAL in ingredientesDAL)
            {
                Ingrediente ingrediente = Obtener(ingredienteDAL);

                ingredientes.Add(ingrediente);
            }

            return(ingredientes);
        }
Пример #4
0
        Datos.IngredienteReceta BuscarIngredienteReceta(Ingrediente ingrediente, Datos.Receta recetaDAL)
        {
            Datos.IngredienteReceta resultado = null;

            foreach (Datos.IngredienteReceta ingredienteRecetaDAL in recetaDAL.Ingredientes)
            {
                if (ingredienteRecetaDAL.Ingrediente.Nombre == ingrediente.Nombre)
                {
                    resultado = ingredienteRecetaDAL;
                    break;
                }
            }

            return(resultado);
        }
Пример #5
0
        Datos.Ingrediente PrepararIngrediente(Ingrediente ingrediente)
        {
            Datos.IngredientesDAL dalIngredientes = dal.ObtenerIngredientesDAL();
            Datos.Ingrediente     ingredienteDAL  = dalIngredientes.Obtener(ingrediente.Nombre);

            if (ingredienteDAL == null)
            {
                ingredienteDAL = new Datos.Ingrediente
                {
                    Nombre      = ingrediente.Nombre,
                    Descripcion = ingrediente.Descripcion
                };
            }

            return(ingredienteDAL);
        }
Пример #6
0
        PrecioIngrediente Obtener(Datos.PrecioIngrediente precioIngredienteDAL)
        {
            UnidadMedida unidad      = (UnidadMedida)Enum.Parse(typeof(UnidadMedida), precioIngredienteDAL.Unidad.Unidad);
            Ingrediente  ingrediente = new Ingrediente
            {
                Id          = precioIngredienteDAL.Ingrediente.ID,
                Nombre      = precioIngredienteDAL.Ingrediente.Nombre,
                Descripcion = precioIngredienteDAL.Ingrediente.Descripcion
            };

            return(new PrecioIngrediente
            {
                Id = precioIngredienteDAL.ID,
                Ingrediente = ingrediente,
                Precio = precioIngredienteDAL.Precio,
                Cantidad = precioIngredienteDAL.Cantidad,
                Unidad = unidad
            });
        }
Пример #7
0
        /// <summary>
        /// Obtiene un precio en particular para un ingrediente dado
        /// </summary>
        /// <param name="ingrediente">Ingrediente para obtener su precio y caracteristicas</param>
        /// <returns>Entrada en el listado de precios para ese ingrediente</returns>
        public PrecioIngrediente Obtener(Ingrediente ingrediente)
        {
            if (ingrediente == null)
            {
                throw new OBMCateringException(Resources.BL_Validaciones_IngredienteNull);
            }

            Datos.IngredientesDAL dalIngredientes = dal.ObtenerIngredientesDAL();
            Datos.Ingrediente     ingredienteDAL  = dalIngredientes.Obtener(ingrediente.Nombre);

            if (ingredienteDAL == null)
            {
                throw new OBMCateringException(string.Format(Resources.BL_Validaciones_IngredienteInvalido, ingrediente.Nombre));
            }

            Datos.PreciosIngredientesDAL dalPreciosIngredientes = dal.ObtenerPreciosIngredientesDAL();
            Datos.PrecioIngrediente      precioIngredienteDAL   = dalPreciosIngredientes.Obtener(ingredienteDAL);

            return(Obtener(precioIngredienteDAL));
        }
Пример #8
0
        /// <summary>
        /// Obtiene todas las recetas que contengan determinado ingrediente en su composicion
        /// </summary>
        /// <param name="ingrediente">Ingrediente a buscar dentro de las recetas</param>
        /// <returns>Listado de recetas</returns>
        public IEnumerable <Receta> Obtener(Ingrediente ingrediente)
        {
            if (ingrediente == null)
            {
                throw new OBMCateringException(Resources.BL_Validaciones_IngredienteNull);
            }

            Datos.IngredientesDAL dalIngredientes = dal.ObtenerIngredientesDAL();
            Datos.Ingrediente     ingredienteDAL  = dalIngredientes.Obtener(ingrediente.Nombre);

            if (ingredienteDAL == null)
            {
                throw new OBMCateringException(string.Format(Resources.BL_Validaciones_IngredienteInvalido, ingrediente.Nombre));
            }

            Datos.RecetasDAL           dalRecetas = dal.ObtenerRecetasDAL();
            IEnumerable <Datos.Receta> recetasDAL = dalRecetas.Obtener(ingredienteDAL);

            return(Obtener(recetasDAL));
        }
Пример #9
0
        /// <summary>
        /// Crea una nueva orden de compra en el sistema, lo que implica que una determinada orden de venta ha sido aprobada
        /// Por cada orden de venta o pedido debera crearse una orden de compra que la respalde
        /// </summary>
        /// <param name="ordenVenta">Orden de venta necesaria para poder crear la orden de compra</param>
        public void Crear(OrdenVenta ordenVenta)
        {
            if (ordenVenta == null)
            {
                throw new OBMCateringException(Resources.BL_Validaciones_OrdenVentaNull);
            }

            if (ordenVenta.Comensales <= 0)
            {
                throw new OBMCateringException(Resources.BL_Validaciones_OrdenVentaSinComensales);
            }

            Datos.OrdenCompra ordenCompraDAL = new Datos.OrdenCompra();
            Dictionary <string, Datos.ItemOrdenCompra> itemsDALPorIngrediente = new Dictionary <string, Datos.ItemOrdenCompra>();

            foreach (Receta receta in ordenVenta.Recetas)
            {
                foreach (IngredienteReceta ingredienteReceta in receta.Ingredientes)
                {
                    Datos.ItemOrdenCompra itemOrdenCompraDAL;
                    Ingrediente           ingrediente = ingredienteReceta.Ingrediente;

                    if (ingredienteReceta.Cantidad <= 0)
                    {
                        throw new OBMCateringException(string.Format(Resources.OrdenesCompraBL_Validaciones_RecetaSinIngredientes, ingrediente.Nombre, receta.Nombre));
                    }

                    decimal cantidad = ingredienteReceta.Cantidad * ordenVenta.Comensales;

                    if (itemsDALPorIngrediente.ContainsKey(ingrediente.Nombre))
                    {
                        itemOrdenCompraDAL          = itemsDALPorIngrediente[ingrediente.Nombre];
                        itemOrdenCompraDAL.Cantidad = itemOrdenCompraDAL.Cantidad + cantidad;
                    }
                    else
                    {
                        itemOrdenCompraDAL = new Datos.ItemOrdenCompra();

                        Datos.IngredientesDAL dalIngredientes = dal.ObtenerIngredientesDAL();
                        Datos.Ingrediente     ingredienteDAL  = dalIngredientes.Obtener(ingrediente.Nombre);

                        if (ingredienteDAL == null)
                        {
                            throw new OBMCateringException(string.Format(Resources.OrdenesCompraBL_Validaciones_IngredienteInvalido, ingrediente.Nombre, receta.Nombre));
                        }

                        Datos.RecetasDAL   dalRecetas = dal.ObtenerRecetasDAL();
                        Datos.UnidadMedida unidadDAL  = dalRecetas.ObtenerUnidad(ingredienteReceta.Unidad.ToString());

                        if (unidadDAL == null)
                        {
                            throw new OBMCateringException(string.Format(Resources.BL_Validaciones_UnidadMedidaInvalida, ingredienteReceta.Unidad));
                        }

                        itemOrdenCompraDAL.Ingrediente = ingredienteDAL;
                        itemOrdenCompraDAL.Cantidad    = cantidad;
                        itemOrdenCompraDAL.Unidad      = unidadDAL;
                    }

                    itemsDALPorIngrediente[ingrediente.Nombre] = itemOrdenCompraDAL;
                }
            }

            Datos.OrdenesVentaDAL dalOrdenesVenta = dal.ObtenerOrdenesVentaDAL();
            Datos.OrdenVenta      ordenVentaDAL   = dalOrdenesVenta.Obtener(ordenVenta.Id);

            if (ordenVentaDAL == null)
            {
                throw new OBMCateringException(Resources.BL_Validaciones_OrdenVentaInvalida);
            }

            Datos.OrdenesCompraDAL  dalOrdenesCompra = dal.ObtenerOrdenesCompraDAL();
            Datos.EstadoOrdenCompra estadoDAL        = dalOrdenesCompra.ObtenerEstado(EstadoOrdenCompra.Generada.ToString());

            ordenCompraDAL.Fecha      = DateTime.Now;
            ordenCompraDAL.Estado     = estadoDAL;
            ordenCompraDAL.OrdenVenta = ordenVentaDAL;

            foreach (Datos.ItemOrdenCompra itemOrdenCompra in itemsDALPorIngrediente.Values)
            {
                ordenCompraDAL.ItemsOrdenesCompra.Add(itemOrdenCompra);
            }

            dalOrdenesCompra.Crear(ordenCompraDAL);
            dal.Guardar();
        }