Пример #1
0
        /// <summary>
        /// Расчитывает тек. кол-во комплектующих, переданных в записях о неснижаемых запасах на заданном складу
        /// </summary>
        /// <param name="itemsStock">Записи о неснижаемом запасе</param>
        /// <param name="store">Задает склад, на котором надо проверить данные о неснижаемых запасах</param>
        public void CalculateStock(IEnumerable <StockComponentInfo> itemsStock, Store store)
        {
            var allStorescomponents     = new List <Entities.General.Accessory.Component>();
            var baseComponentCollection = new List <BaseComponent>(_componentCore.GetStoreBaseComponents(store.ItemId));

            allStorescomponents.AddRange(_componentCore.GetStoreComponents(store).ToArray());

            //////////////////////////////////////////////////////
            //   проверка на установленные базовые компоненты   //
            //////////////////////////////////////////////////////
            var lastInstalledBaseComponents = _casEnvironment.BaseComponents.GetLastInstalledComponentsOn(store);

            foreach (var baseComponent in lastInstalledBaseComponents)
            {
                //удаление данного компонента из коллекции
                //т.к. его отображать не нужно
                baseComponentCollection.Remove(baseComponent);
            }

            if (baseComponentCollection.Count > 0)
            {
                allStorescomponents.AddRange(baseComponentCollection.ToArray());
                allStorescomponents.AddRange(_componentCore.GetComponents(baseComponentCollection).ToArray());
            }

            foreach (var component in allStorescomponents)
            {
                foreach (StockComponentInfo t in itemsStock)
                {
                    if (t.GoodsClass != component.GoodsClass ||
                        t.PartNumber.Replace(" ", "").ToLower() != component.PartNumber.Replace(" ", "").ToLower())
                    {
                        continue;
                    }

                    if (component.Quantity <= 0)
                    {
                        component.Quantity = 1;
                    }
                    t.Current += component.Quantity;
                }
            }
        }