Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
            });
        }