private int isInProduct(int itemId, produceItemsItem startItem) { int needAmount = 0; foreach (produceItemsItemSubComponent item in startItem.subComponentList.ToList()) { if (item.id == itemId) { needAmount += item.need; } if (item.typ.Equals("E")) { needAmount += isInProduct(itemId, getItemFromProduceItemList(item.id)); } } return(needAmount); }
private void addRows() { var mapOfPurchaseItems = new Dictionary <int, int>(); exportModel.productionList.ForEach(productionItem => { produceItemsItem produceItem = getItemFromProduceItemList(productionItem.article); produceItem.subComponentList.ToList().ForEach(subComponent => { if (subComponent.typ.Equals("K")) { var amount = 0; if (!mapOfPurchaseItems.TryGetValue(subComponent.id, out amount)) { mapOfPurchaseItems.Add(subComponent.id, subComponent.need * productionItem.quantity); } else { mapOfPurchaseItems[subComponent.id] = amount + subComponent.need * productionItem.quantity; } } }); }); ListOfPurchaseItems.ForEach(item => { var itemNumber = item.id; double normalDeliveryDate = item.deliveryTime; double latestDeliveryDate = item.deliveryTime + item.deliveryTimeVariance; latestDeliveryDate = Math.Floor(latestDeliveryDate * 10) / 10; var hurryUpDeliverydate = item.deliveryTime / 2; resultsWarehousestockArticle articleFromResults = getArticleFromResults(itemNumber); double existingStockValue = -1; if (articleFromResults != null) { var article = articleFromResults; existingStockValue = article.amount; } int usageT0 = mapOfPurchaseItems.ContainsKey(item.id) ? mapOfPurchaseItems[item.id] : -1; int usageT1 = 0; int usageT2 = 0; int usageT3 = 0; if (usageT0 == -1) { usageT0 = 0; } usageT1 = calculateForecastUsage(itemNumber, 1); if (usageT1 < 0) { usageT1 = 0; } usageT2 = calculateForecastUsage(itemNumber, 2); if (usageT2 < 0) { usageT2 = 0; } usageT3 = calculateForecastUsage(itemNumber, 3); if (usageT3 < 0) { usageT3 = 0; } var tm = new TimeModel(usageT0, usageT1, usageT2, usageT3); string openOrders = getOpenOrdersById(item.id, latestDeliveryDate, hurryUpDeliverydate); var discontAmount = item.discountAmount; var purchaseAmount = 0; var purchaseModel = new PurchaseModel(itemNumber, existingStockValue, tm, openOrders, normalDeliveryDate, latestDeliveryDate, hurryUpDeliverydate, discontAmount, purchaseAmount, ""); purchaseModel = calculateIfOrderIsNecessary(purchaseModel); PurchaseModels.Add(purchaseModel); }); }