예제 #1
0
        //For Old
        public UsageManagementModel CalUsageManagementByIngredient(UsageManagementRequest request, string ingredientId)
        {
            request.DateFrom = new DateTime(request.DateFrom.Year, request.DateFrom.Month, request.DateFrom.Day, 0, 0, 0);
            request.DateTo   = new DateTime(request.DateTo.Year, request.DateTo.Month, request.DateTo.Day, 23, 59, 59);
            UsageManagementModel usageManagementModel = new UsageManagementModel();
            //List Sale
            var lstSale = GetDataSale(request);

            if (lstSale != null && lstSale.Count > 0)
            {
                //get all business day
                var _lstBusDayAllStore = _baseFactory.GetBusinessDays(request.DateFrom, request.DateTo, request.StoreId, request.Mode);
                var lstItemIdSale      = lstSale.Select(ss => ss.ItemId).Distinct().ToList();

                var lstRecipeItems    = GetRecipeItem(request.StoreId, ingredientId);
                var lstrecipeModifier = GetRecipeModifier(request.StoreId, ingredientId);
                lstRecipeItems.AddRange(lstrecipeModifier);

                List <ItemSaleForIngredientModel> _lstDetailTmp = new List <ItemSaleForIngredientModel>();

                if (lstRecipeItems != null && lstRecipeItems.Count > 0)
                {
                    lstRecipeItems = lstRecipeItems.Where(ww => lstItemIdSale.Contains(ww.ItemId)).ToList();
                    var lstItemIdInrecipe = lstRecipeItems.Select(ss => ss.ItemId).Distinct().ToList();
                    //Group item sale
                    var lstItemSaleHaveRecipe = lstSale.Where(ww => lstItemIdInrecipe.Contains(ww.ItemId)).ToList();
                    if (lstItemSaleHaveRecipe != null && lstItemSaleHaveRecipe.Count > 0)
                    {
                        UsageManagementDetailModel detail = null;
                        int indexChildPage = 1;
                        foreach (var busDay in _lstBusDayAllStore)
                        {
                            var lstDish = lstItemSaleHaveRecipe.Where(ww => ww.CreatedDate >= busDay.DateFrom && ww.CreatedDate <= busDay.DateTo).ToList();
                            if (lstDish != null && lstDish.Count > 0)
                            {
                                var lstDishGroup = lstDish.GroupBy(gg => gg.ItemId);
                                foreach (var dish in lstDishGroup)
                                {
                                    var recipe = lstRecipeItems.Where(ww => ww.ItemId == dish.Key).FirstOrDefault();
                                    if (recipe != null)
                                    {
                                        detail             = new UsageManagementDetailModel();
                                        detail.BusinessDay = busDay.DateDisplay;
                                        detail.Index       = indexChildPage;
                                        detail.ItemName    = dish.Select(ss => ss.ItemName).FirstOrDefault();
                                        detail.Qty         = dish.Sum(ss => ss.Quantity);
                                        detail.Usage       = detail.Qty * recipe.BaseUsage;

                                        usageManagementModel.ListDetail.Add(detail);
                                        indexChildPage++;
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return(usageManagementModel);
        }
예제 #2
0
        public List <UsageManagementDetailModel> CalUsageManagementByIngredientForInventory(List <StockUsageModel> lstSale,
                                                                                            List <RecipeItemModel> lstRecipeItems, BusinessDayDisplayModels busDay, string ingredientId)
        {
            List <UsageManagementDetailModel> result = new List <UsageManagementDetailModel>();
            var lstItemIdSale = lstSale.Select(ss => ss.ItemId).Distinct().ToList();
            List <ItemSaleForIngredientModel> _lstDetailTmp = new List <ItemSaleForIngredientModel>();

            lstRecipeItems = lstRecipeItems.Where(ww => ww.IngredientId == ingredientId).ToList();
            if (lstRecipeItems != null && lstRecipeItems.Count > 0)
            {
                lstRecipeItems = lstRecipeItems.Where(ww => lstItemIdSale.Contains(ww.ItemId)).ToList();
                var lstItemIdInrecipe = lstRecipeItems.Select(ss => ss.ItemId).Distinct().ToList();
                //Group item sale
                var lstItemSaleHaveRecipe = lstSale.Where(ww => lstItemIdInrecipe.Contains(ww.ItemId)).ToList();
                if (lstItemSaleHaveRecipe != null && lstItemSaleHaveRecipe.Count > 0)
                {
                    UsageManagementDetailModel detail = null;

                    var lstDish = lstItemSaleHaveRecipe.Where(ww => ww.CreatedDate >= busDay.DateFrom && ww.CreatedDate <= busDay.DateTo).ToList();
                    if (lstDish != null && lstDish.Count > 0)
                    {
                        var lstDishGroup = lstDish.GroupBy(gg => gg.ItemId);
                        foreach (var dish in lstDishGroup)
                        {
                            var recipe = lstRecipeItems.Where(ww => ww.ItemId == dish.Key).FirstOrDefault();
                            if (recipe != null)
                            {
                                detail             = new UsageManagementDetailModel();
                                detail.BusinessDay = busDay.DateDisplay;
                                detail.ItemId      = dish.Key;
                                detail.ItemName    = dish.Select(ss => ss.ItemName).FirstOrDefault();
                                detail.Qty         = dish.Sum(ss => ss.Quantity);
                                detail.Usage       = detail.Qty * recipe.BaseUsage;

                                result.Add(detail);
                            }
                        }
                    }
                }
            }
            return(result);
        }
예제 #3
0
        public UsageManagementModel GetUsageManagementItemDetail(List <string> lstUsageManagementDetailId)
        {
            UsageManagementModel usageManagementModel = new UsageManagementModel();

            using (var cxt = new NuWebContext())
            {
                var query = cxt.I_UsageManagementItemDetail.Where(ww => lstUsageManagementDetailId.Contains(ww.UsageManagementDetailId)).ToList();
                UsageManagementDetailModel detail = null;
                int index = 1;
                foreach (var item in query)
                {
                    detail             = new UsageManagementDetailModel();
                    detail.BusinessDay = item.BusinessDay;
                    detail.Index       = index;
                    detail.ItemName    = item.ItemName;
                    detail.Qty         = item.Qty;
                    detail.Usage       = item.Usage;

                    usageManagementModel.ListDetail.Add(detail);
                    index++;
                }
            }
            return(usageManagementModel);
        }
예제 #4
0
        public List <UsageManagementModel> CalUsageManagement(UsageManagementRequest request)
        {
            var result = new List <UsageManagementModel>();

            //List Sale
            var lstSale = GetDataSale(request);

            if (lstSale != null && lstSale.Count > 0)
            {
                //get all business day
                var _lstBusDayAllStore = _baseFactory.GetBusinessDays(request.DateFrom, request.DateTo, request.StoreId, request.Mode);
                var lstItemIdSale      = lstSale.Select(ss => ss.ItemId).Distinct().ToList();

                var lstRecipeItems    = GetRecipeItem(request.StoreId);
                var lstrecipeModifier = GetRecipeModifier(request.StoreId);
                lstRecipeItems.AddRange(lstrecipeModifier);

                List <ItemSaleForIngredientModel> _lstDetailTmp = new List <ItemSaleForIngredientModel>();

                if (lstRecipeItems != null && lstRecipeItems.Count > 0)
                {
                    lstRecipeItems = lstRecipeItems.Where(ww => lstItemIdSale.Contains(ww.ItemId)).ToList();

                    foreach (var item in lstRecipeItems)
                    {
                        var lstSaleItem = lstSale.Where(ww => ww.ItemId == item.ItemId).ToList();
                        foreach (var subItem in lstSaleItem)
                        {
                            item.Usage += item.BaseUsage * subItem.Quantity;

                            _lstDetailTmp.Add(new ItemSaleForIngredientModel()
                            {
                                IngredientId = item.IngredientId,
                                ItemId       = subItem.ItemId,
                                ItemName     = subItem.ItemName,
                                BaseUsage    = item.BaseUsage,
                                CreatedDate  = subItem.CreatedDate,
                                Qty          = subItem.Quantity
                            });
                        }
                    }
                    var lstUsageGroupIngredient = lstRecipeItems.GroupBy(gg => gg.IngredientId);

                    UsageManagementModel       usageManagementModel = null;
                    UsageManagementDetailModel detail = null;
                    int indexPage = 1, indexChildPage = 1;
                    foreach (var item in lstUsageGroupIngredient)
                    {
                        usageManagementModel         = new UsageManagementModel();
                        usageManagementModel.Index   = indexPage;
                        usageManagementModel.Id      = item.Key;
                        usageManagementModel.Code    = item.Select(ss => ss.IngredientCode).FirstOrDefault();
                        usageManagementModel.Name    = item.Select(ss => ss.IngredientName).FirstOrDefault();
                        usageManagementModel.UOMName = item.Select(ss => ss.UOMName).FirstOrDefault();
                        usageManagementModel.Usage   = item.Sum(ss => ss.Usage);

                        indexChildPage = 1;
                        foreach (var busDay in _lstBusDayAllStore)
                        {
                            var lstDish = _lstDetailTmp.Where(ww => ww.IngredientId == usageManagementModel.Id &&
                                                              ww.CreatedDate >= busDay.DateFrom && ww.CreatedDate <= busDay.DateTo).ToList();
                            if (lstDish != null && lstDish.Count > 0)
                            {
                                var lstDishGroup = lstDish.GroupBy(gg => gg.ItemId);
                                foreach (var dish in lstDishGroup)
                                {
                                    detail             = new UsageManagementDetailModel();
                                    detail.BusinessDay = busDay.DateDisplay;
                                    detail.Index       = indexChildPage;
                                    detail.ItemName    = dish.Select(ss => ss.ItemName).FirstOrDefault();
                                    detail.Qty         = dish.Sum(ss => ss.Qty);
                                    detail.Usage       = detail.Qty * dish.Select(ss => ss.BaseUsage).FirstOrDefault();

                                    usageManagementModel.ListDetail.Add(detail);
                                    indexChildPage++;
                                }
                            }
                        }

                        result.Add(usageManagementModel);
                        indexPage++;
                    }
                }
            }



            return(result);
        }