예제 #1
0
        /// <summary>
        /// Obtiene el listado de ordenes de compra del sistema segun su estado
        /// </summary>
        /// <param name="estado">Estado de las ordenes de compra a buscar</param>
        /// <returns>Listado de ordenes de compra</returns>
        public IEnumerable <OrdenCompra> Obtener(EstadoOrdenCompra estado)
        {
            Datos.OrdenesCompraDAL  dalOrdenesCompra = dal.ObtenerOrdenesCompraDAL();
            Datos.EstadoOrdenCompra estadoDAL        = dalOrdenesCompra.ObtenerEstado(estado.ToString());

            if (estadoDAL == null)
            {
                throw new OBMCateringException(string.Format(Resources.OrdenesCompraBL_Validaciones_EstadoInvalido, estado));
            }

            IEnumerable <Datos.OrdenCompra> ordenesCompraDAL = dalOrdenesCompra.Obtener(estadoDAL);

            return(Obtener(ordenesCompraDAL));
        }
예제 #2
0
        /// <summary>
        /// Actualiza los datos de una determinada orden de compra
        /// Solo se permite actualizar el estado de la orden
        /// </summary>
        /// <param name="ordenCompra">Orden de compra a actualizar</param>
        public void Actualizar(OrdenCompra ordenCompra)
        {
            ValidarOrdenCompra(ordenCompra);

            Datos.OrdenesCompraDAL dalOrdenesCompra = dal.ObtenerOrdenesCompraDAL();
            Datos.OrdenCompra      ordenCompraDAL   = dalOrdenesCompra.Obtener(ordenCompra.Id);

            if (ordenCompraDAL == null)
            {
                throw new OBMCateringException(Resources.BL_Validaciones_OrdenCompraInvalida);
            }

            Datos.EstadoOrdenCompra estadoDAL = dalOrdenesCompra.ObtenerEstado(ordenCompra.Estado.ToString());

            if (estadoDAL == null)
            {
                throw new OBMCateringException(string.Format(Resources.OrdenesCompraBL_Validaciones_EstadoInvalido, ordenCompra.Estado));
            }

            ordenCompraDAL.Estado = estadoDAL;

            dalOrdenesCompra.Actualizar(ordenCompraDAL);
            dal.Guardar();
        }
예제 #3
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();
        }