//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); }
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); }
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); }
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); }