private void ValidateCosts()
        {
            if (CostDescriptions == null)
            {
                return;
            }

            validCosts = CostDescriptions
                         .Where(c => !String.IsNullOrEmpty(c.FieldName))
                         .Where(c => _priceData.Columns.Contains(c.FieldName))
                         .ToList();

            if (CostDescriptions.Count == 0 && !_priceInfo.IsAssortmentPrice)
            {
                throw new WarningFormalizeException(PriceProcessor.Settings.Default.CostsNotExistsError, _priceInfo);
            }

            //Если прайс является не ассортиментным прайсом-родителем с мультиколоночными ценами, то его надо проверить на базовую цену
            if (!_priceInfo.IsAssortmentPrice && _priceInfo.CostType == CostTypes.MultiColumn)
            {
                var baseCosts = CostDescriptions.Where(c => c.IsBaseCost).ToArray();
                if (baseCosts.Length == 0)
                {
                    throw new WarningFormalizeException(PriceProcessor.Settings.Default.BaseCostNotExistsError, _priceInfo);
                }
            }
        }
Exemple #2
0
        public IEnumerable <FormalizationPosition> Read()
        {
            var cost = CostDescriptions.First();

            while (ReadFromReader())
            {
                if (_inPrice && _reader.Name == "Позиция" && _reader.NodeType == XmlNodeType.Element)
                {
                    yield return(new FormalizationPosition {
                        PositionName = _reader.GetAttribute("Наименование"),
                        FirmCr = _reader.GetAttribute("Производитель"),
                        Offer = new NewOffer {
                            Code = _reader.GetAttribute("КодТовара"),
                            CodeCr = _reader.GetAttribute("КодПроизводителя"),
                            MaxBoundCost = GetNullable <decimal>("МаксЦена"),
                            Quantity = _reader.GetAttribute("Количество"),
                            Volume = _reader.GetAttribute("Упаковка"),
                            Period = _reader.GetAttribute("СрокГодности"),
                            RegistryCost = GetNullable <decimal>("ЦенаГР"),
                            RequestRatio = GetNullable <uint>("Кратность"),
                            OrderCost = GetNullable <decimal>("МинСумма"),
                            MinOrderCount = GetNullable <uint>("МинКоличество"),
                            Await = _reader.GetAttribute("Ожидаем") == "да",
                            Junk = _reader.GetAttribute("Уцененно") == "да",
                            VitallyImportant = _reader.GetAttribute("ЖВЛС") == "да",
                            Costs = new[] { new Cost(cost, GetNullable <decimal>("Цена")), },
                        }
                    });
                }
                else if (_reader.Name != "Позиция" && _reader.NodeType == XmlNodeType.Element)
                {
                    _inPrice = false;
                    yield break;
                }
            }
        }