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