/// <summary> /// Пересчет показателей возвратов от клиентов при отмене приемки накладной возврата от клиента /// </summary> public void ReturnFromClientWaybillFinalizationCancelled(ReturnFromClientWaybill waybill) { var receiptedIndicators = new List <ReceiptedReturnFromClientIndicator>(); foreach (var row in waybill.Rows) { ValidationUtils.Assert(row.SaleWaybillRow.SaleWaybill.Is <ExpenditureWaybill>(), "Расчет показателя для данного типа накладной реализации еще не реализован."); var saleWaybillRow = row.SaleWaybillRow.As <ExpenditureWaybillRow>(); ValidationUtils.Assert(saleWaybillRow.ReceiptedReturnCount >= row.ReturnCount, String.Format("Недостаточно возвращенного товара «{0}» для отмены приемки возврата.", row.Article.FullName)); saleWaybillRow.SetReturnCounts(saleWaybillRow.AcceptedReturnCount + row.ReturnCount, saleWaybillRow.ReceiptedReturnCount - row.ReturnCount); // уменьшаем точное возвращенное от клиента кол-во var receiptedIndicator = CreateReceiptedReturnFromClientIndicator(waybill.ReceiptDate.Value, row, -1); receiptedIndicators.Add(receiptedIndicator); } receiptedReturnFromClientIndicatorService.Update(waybill.ReceiptDate.Value, waybill.Deal.Id, waybill.Curator.Id, returnFromClientWaybillRepository.GetArticleBatchesSubquery(waybill.Id), receiptedIndicators); }
public Guid Save(ReturnFromClientWaybill returnFromClientWaybill) { // если номер генерируется автоматически if (returnFromClientWaybill.Number == "") { var lastDocumentNumbers = returnFromClientWaybill.Recipient.GetLastDocumentNumbers(returnFromClientWaybill.Date.Year); var number = lastDocumentNumbers.ReturnFromClientWaybillLastNumber + 1; // пока не найдем уникальный номер while (!IsNumberUnique(number.ToString(), Guid.Empty, returnFromClientWaybill.Date, returnFromClientWaybill.Recipient)) { number = number + 1; } returnFromClientWaybill.Number = number.ToString(); lastDocumentNumbers.ReturnFromClientWaybillLastNumber = number; } else { ValidationUtils.Assert(IsNumberUnique(returnFromClientWaybill.Number, returnFromClientWaybill.Id, returnFromClientWaybill.Date, returnFromClientWaybill.Recipient), String.Format("Накладная с номером {0} уже существует. Укажите другой номер.", returnFromClientWaybill.Number)); } //Проверяем имеет ли указанная команда реализации в указанной сделке var teamList = dealRepository.GetTeamListFromSales(returnFromClientWaybill.Deal.Id); ValidationUtils.Assert(teamList.Contains(returnFromClientWaybill.Team), String.Format("Команда «{0}» не имеет реализаций в сделке «{1}».", returnFromClientWaybill.Team.Name, returnFromClientWaybill.Deal.Name)); returnFromClientWaybillRepository.Save(returnFromClientWaybill); return(returnFromClientWaybill.Id); }
/// <summary> /// Проводка /// </summary> /// <returns>true - дата начала действия была автоматически изменена на текущую</returns> public virtual bool Accept(DateTime currentDateTime) { CheckPossibilityToAccept(); bool dateChanged = CheckAndCorrectDates(currentDateTime); State = AccountingPriceListState.Accepted; AcceptanceDate = currentDateTime; foreach (var articlePrice in ArticlePrices) // "забываем", что не получилось использовать заданные правила расчета учетной цены { articlePrice.ErrorLastDigitCalculation = false; articlePrice.ErrorAccountingPriceCalculation = false; } // если дата начала действия РЦ меньше даты проводки - устанавливаем дату начала действия равной дате проводке if (StartDate < AcceptanceDate) { StartDate = AcceptanceDate.Value; } ValidationUtils.Assert(EndDate == null || EndDate > StartDate, "Дата окончания действия реестра цен должна быть больше текущей даты."); return(dateChanged); }
public virtual void CheckPossibilityToDelete() { ValidationUtils.Assert(MovementWaybill.IsDraft, String.Format("Невозможно удалить позицию из накладной со статусом «{0}».", MovementWaybill.State.GetDisplayName())); ValidationUtils.Assert(!AreOutgoingWaybills, "Невозможно удалить позицию, так как по ней уже создана позиция другой исходящей накладной."); }
public void CheckPossibilityToPrintFormInPurchaseCosts(ReturnFromClientWaybill waybill, User user) { CheckPossibilityToPrintForms(waybill, user); ValidationUtils.Assert(user.HasPermission(Permission.PurchaseCost_View_ForEverywhere), "Недостаточно прав для просмотра закупочных цен."); }
private void PopulateSchemaId(ValidationError error) { ValidationUtils.Assert(Schema != null); if (error.SchemaId != null) { return; } Uri?schemaId = null; for (int i = 0; i < Schema.KnownSchemas.Count; i++) { KnownSchema s = Schema.KnownSchemas[i]; if (s.Schema == error.Schema) { schemaId = s.Id; break; } } error.SchemaId = schemaId; // property getter will lazy create a new list // don't create child error list unneeded if (error._childErrors != null) { for (int i = 0; i < error._childErrors.Count; i++) { ValidationError validationError = error._childErrors[i]; PopulateSchemaId(validationError); } } }
/// <summary> /// Добавление квоты по сделке /// </summary> /// <param name="quota">Квота по сделке</param> public virtual void AddQuota(DealQuota quota) { CheckPossibilityToAddQuota(); ValidationUtils.Assert(quota.IsActive, "Невозможно добавить недействующую квоту."); quotas.Add(quota); }
/// <summary> /// Окончательное согласование накладной. Принимает (при необходимости переустановить учетные цены для строчек расхождений) коллекцию учетных цен. /// </summary> /// <param name="totalApproveSum">Согласованная сумма накладной</param> /// <param name="articleAccountingPriceList">Коллекция учетных цен. Необязательный параметр. При передаче - установи данные цены на строчки с расхождениями.</param> /// <param name="approvementDate">Дата согласования. Необязательный параметр. При передаче - установит дату согласования накладной.</param> public virtual void Approve(decimal totalApproveSum, User approvedBy, DateTime approvementDate, IEnumerable <ArticleAccountingPrice> accountingPrices = null) { CheckPossibilityToApprove(); ValidationUtils.Assert(totalApproveSum >= 0, "Согласованная сумма накладной не может быть меньше 0."); ValidationUtils.CheckDecimalScale(totalApproveSum, 2, "Согласованная сумма накладной должна иметь не более 2 знаков после запятой."); ValidationUtils.Assert(totalApproveSum == ApprovedSumByRows, "Сумма накладной не сходится с суммой по позициям."); ApprovedSum = totalApproveSum; ApprovementDate = approvementDate; ApprovedBy = approvedBy; foreach (var row in Rows.Where(x => x.AreDivergencesAfterReceipt)) { // копируем закупочные цены, указанные при согласовании, в текущие row.PurchaseCost = row.ApprovedPurchaseCost.Value; if (row.PendingCount == 0) { // Доустановим учетные цены для товаров, добавленных при согласовании ValidationUtils.NotNull(accountingPrices, "Невозможно выполнить согласование, так как не удалось получить учетную цену."); var articleAccountingPrice = accountingPrices.FirstOrDefault(x => x.Article == row.Article); ValidationUtils.NotNull(articleAccountingPrice, String.Format("Невозможно выполнить согласование, так как на товар «{0}» не установлена учетная цена.", row.Article.FullName)); row.RecipientArticleAccountingPrice = articleAccountingPrice; } // переводим кол-во по позиции в доступное для резервирования row.AvailableToReserveCount = row.ApprovedCount.Value; } State = ReceiptWaybillState.ApprovedFinallyAfterDivergences; // TODO почему так? Надо как-то передавать сюда обстоятельства и выставлять правильный State }
public ProductionOrderBatchRow(Article article, Currency currency, decimal productionOrderBatchRowCostInCurrency, decimal count, decimal packWeight, Country producerCountry, Manufacturer manufacturer) { ValidationUtils.Assert(count > 0, "Количество производимого товара должно быть положительным числом."); ValidationUtils.Assert(packWeight > 0, "Вес упаковки должен быть положительным числом."); ValidationUtils.Assert(productionOrderBatchRowCostInCurrency >= 0, "Невозможно создать позицию партии заказа с отрицательной суммой."); CreationDate = DateTime.Now; Article = article; Currency = currency; ProductionOrderBatchRowCostInCurrency = productionOrderBatchRowCostInCurrency; Count = count; ProductionCountry = producerCountry; this.manufacturer = manufacturer; // По умолчанию размеры берутся из товара PackLength = article.PackLength; PackHeight = article.PackHeight; PackWidth = article.PackWidth; PackVolume = article.PackVolume; PackWeight = packWeight; OrdinalNumber = int.MaxValue; }
/// <summary> /// Конструктор /// </summary> /// <param name="task">Задача</param> /// <param name="executionState">Статус задачи</param> /// <param name="completionPercentage">% выполнения</param> /// <param name="createdBy">Пользователь, создавший исполение</param> /// <param name="creationDate">Дата создания</param> /// <param name="date">Дата исполнения</param> public TaskExecutionItem(Task task, TaskType taskType, TaskExecutionState executionState, byte completionPercentage, User createdBy, bool isCreatedByUser, DateTime creationDate, DateTime date) { ValidationUtils.NotNull(task, "Необходимо указать задачу, к которой относится исполнение."); ValidationUtils.NotNull(createdBy, "Необходимо указать пользователя, создавшего исполнение."); ValidationUtils.Assert(taskType.States.Contains(executionState), String.Format("Статус исполнения «{0}» не допустим для типа задачи «{1}».", executionState.Name, taskType.Name)); history = new HashedSet <TaskExecutionHistoryItem>(); resultDescription = ""; spentTime = 0; task.AddExecutionItem(this); //Добавляем исполнение в задачу Task = task; this.taskType = taskType; this.executionState = executionState; CreatedBy = createdBy; CreationDate = creationDate; this.completionPercentage = completionPercentage; IsCreatedByUser = isCreatedByUser; this.date = date; isDateChanged = isDeletionDateChanged = isResultDescriptionChanged = isSpentTimeChanged = isCompletionPercentageChanged = isExecutionStateChanged = isTaskTypeChanged = true; Task.UpdateByLastExecution(); Task.UpdateTaskExecutionState(this); Task.UpdateCompletionPercentage(this); Task.FactualSpentTime += spentTime; }
public virtual void CheckPossibilityToEdit() { ValidationUtils.Assert(!IsCreatedFromProductionOrderBatch, "Невозможно изменить накладную, созданную по партии заказа."); ValidationUtils.Assert(!IsApproved, "Невозможно изменить окончательно согласованную накладную."); ValidationUtils.Assert(!IsReceipted, "Невозможно изменить принятую на склад накладную."); ValidationUtils.Assert(!IsAccepted, "Невозможно изменить проведенную накладную."); }
public ProductionOrderCustomsDeclaration(string name, DateTime date, decimal importCustomsDutiesSum, decimal exportCustomsDutiesSum, decimal valueAddedTaxSum, decimal exciseSum, decimal customsFeesSum, decimal customsValueCorrection) { CreationDate = DateTime.Now; ValidationUtils.Assert(!String.IsNullOrEmpty(name), "Название не указано."); ValidationUtils.Assert(importCustomsDutiesSum >= 0, "Ввозные таможенные пошлины не могут быть отрицательной величиной."); ValidationUtils.Assert(exportCustomsDutiesSum >= 0, "Вывозные таможенные пошлины не могут быть отрицательной величиной."); ValidationUtils.Assert(exciseSum >= 0, "Акциз не может быть отрицательной величиной."); ValidationUtils.Assert(customsFeesSum >= 0, "Таможенные сборы не могут быть отрицательной величиной."); ValidationUtils.Assert(!(importCustomsDutiesSum == 0 && exportCustomsDutiesSum == 0 && valueAddedTaxSum == 0 && exciseSum == 0 && customsFeesSum == 0 && customsValueCorrection == 0), "Все суммы не могут быть равны 0."); Name = name; this.date = date; ImportCustomsDutiesSum = importCustomsDutiesSum; ExportCustomsDutiesSum = exportCustomsDutiesSum; ValueAddedTaxSum = valueAddedTaxSum; ExciseSum = exciseSum; CustomsFeesSum = customsFeesSum; CustomsValueCorrection = customsValueCorrection; Comment = String.Empty; CustomsDeclarationNumber = String.Empty; payments = new HashedSet <ProductionOrderCustomsDeclarationPayment>(); }
/// <summary> /// Конструктор /// </summary> /// <param name="topic">Тема задачи</param> /// <param name="type">Тип задачи</param> /// <param name="priority">Приоритет задачи</param> /// <param name="state">Стастус задачи</param> /// <param name="createdBy">Пользователь, создавший задачу</param> public Task(string topic, TaskType type, TaskPriority priority, TaskExecutionState state, DateTime creationDate, User createdBy) { ValidationUtils.Assert(!String.IsNullOrEmpty(topic), "Необходимо указать тему задачи."); ValidationUtils.NotNull(type, "Необходимо указать тип задачи."); ValidationUtils.NotNull(priority, "Необходимо указать приоритет задачи."); ValidationUtils.NotNull(state, "Необходимо указать статус задачи."); ValidationUtils.NotNull(createdBy, "Необходимо указать пользователя, создавшего задачу."); ValidationUtils.Assert(type.States.Contains(state), String.Format("Статус исполнения задачи «{0}» не допустим для типа задачи «{1}».", state.Name, type.Name)); Topic = topic; Type = type; ExecutionState = state; Priority = priority; CreatedBy = createdBy; CreationDate = creationDate; Description = ""; history = new HashedSet <TaskHistoryItem>(); executionHistory = new HashedSet <TaskExecutionItem>(); // Устанавливаем признак изменения полей (чтобы они все попали как первое изменение задачи в историю) isContractorChanged = isDeadLineChanged = isDealChanged = isDeletionDateChanged = isDescriptionChanged = isExecutedByChanged = isFactualCompletionDateChanged = isFactualSpentTimeChanged = isFactualStartDateChanged = isPriorityChanged = isProductionOrderChanged = isStartDateChanged = isTopicChanged = isTypeChanged = true; }
/// <summary> /// Добавление пользователя в аккаунт клиента /// </summary> /// <param name="clientUser"></param> public virtual void AddUser(ClientUser clientUser) { ValidationUtils.Assert(!Users.Any(x => x.Login == clientUser.Login), "Пользователь с данным логином уже принадлежит аккаунту клиента."); users.Add(clientUser); clientUser.Client = this; }
/// <summary> /// Проверка, видна ли накладная куратору /// </summary> /// <param name="writeoffWaybill">Накладная</param> /// <param name="curator">Куратор</param> public override void CheckPossibilityToViewDetailsByUser(WriteoffWaybill writeoffWaybill, User curator) { var storages = curator.Teams.SelectMany(x => x.Storages); var result = false; switch (curator.GetPermissionDistributionType(Permission.WriteoffWaybill_List_Details)) { case PermissionDistributionType.None: result = false; break; case PermissionDistributionType.Personal: result = storages.Contains(writeoffWaybill.SenderStorage) && writeoffWaybill.Curator == curator; break; case PermissionDistributionType.Teams: result = storages.Contains(writeoffWaybill.SenderStorage); break; case PermissionDistributionType.All: result = true; break; } ValidationUtils.Assert(result, "Куратор накладной должен имееть право на ее просмотр."); }
/// <summary> /// Конструктор для копирования при разделении партии заказа /// </summary> public ProductionOrderBatchRow(ProductionOrderBatchRow productionOrderBatchRow, decimal productionOrderBatchRowCostInCurrency, decimal count, int ordinalNumber) { ValidationUtils.Assert(count > 0, "Количество производимого товара должно быть положительным числом."); ValidationUtils.Assert(productionOrderBatchRowCostInCurrency >= 0, "Невозможно создать позицию партии заказа с отрицательной суммой."); CreationDate = DateTime.Now; article = productionOrderBatchRow.Article; this.ArticleMeasureUnitScale = productionOrderBatchRow.ArticleMeasureUnitScale; this.PackSize = productionOrderBatchRow.PackSize; this.Count = count; this.ProductionOrderBatchRowCostInCurrency = productionOrderBatchRowCostInCurrency; this.Currency = productionOrderBatchRow.Currency; this.Manufacturer = productionOrderBatchRow.Manufacturer; this.PackHeight = productionOrderBatchRow.PackHeight; this.PackLength = productionOrderBatchRow.PackLength; this.PackWeight = productionOrderBatchRow.PackWeight; this.PackWidth = productionOrderBatchRow.PackWidth; this.ProductionCountry = productionOrderBatchRow.ProductionCountry; OrdinalNumber = ordinalNumber; }
public void Save(WriteoffWaybill waybill) { // если номер генерируется автоматически if (waybill.Number == "") { var lastDocumentNumbers = waybill.Sender.GetLastDocumentNumbers(waybill.Date.Year); var number = lastDocumentNumbers.WriteoffWaybillLastNumber + 1; // пока не найдем уникальный номер while (!IsNumberUnique(number.ToString(), Guid.Empty, waybill.Date, waybill.Sender)) { number = number + 1; } waybill.Number = number.ToString(); lastDocumentNumbers.WriteoffWaybillLastNumber = number; } else { ValidationUtils.Assert(IsNumberUnique(waybill.Number, waybill.Id, waybill.Date, waybill.Sender), String.Format("Накладная с номером {0} уже существует. Укажите другой номер.", waybill.Number)); } writeoffWaybillRepository.Save(waybill); }
public void CheckPossibilityToEditOrganization(Provider provider, ProviderContract contract, User user) { // права CheckPermissionToPerformOperation(provider, user, Permission.Provider_ProviderContract_Edit); ValidationUtils.Assert(!providerContractRepository.AnyReceipts(contract), "Невозможно редактировать организации в договоре, по которому уже есть приходы."); }
public void RaiseError(ValidationError error) { // shared cache information that could be read/populated from multiple threads // lock to ensure that only one thread writes known schemas if (!_knownSchemasPopulated) { ValidationUtils.Assert(Schema != null); lock (Schema.KnownSchemas) { if (!_knownSchemasPopulated) { if (Schema.KnownSchemas.Count == 0) { JSchemaDiscovery discovery = new JSchemaDiscovery(Schema, Schema.KnownSchemas, KnownSchemaState.External); discovery.Discover(Schema, null); } _knownSchemasPopulated = true; } } } PopulateSchemaId(error); SchemaValidationEventHandler?handler = ValidationEventHandler; if (handler != null) { handler(_publicValidator, new SchemaValidationEventArgs(error)); } else { throw JSchemaValidationException.Create(error); } }
/// <summary> /// Проверка возможности удаления договора /// </summary> /// <param name="providerContract">код договора</param> /// <param name="provider">код поставщика, которому принадлежит договор</param> public void CheckPossibilityToDeleteContract(Provider provider, ProviderContract providerContract, User user) { // права CheckPermissionToPerformOperation(provider, user, Permission.Provider_ProviderContract_Delete); ValidationUtils.Assert(!providerContractRepository.AnyReceipts(providerContract), "Невозможно удалить договор, так как по нему существуют приходные накладные."); }
/// <summary> /// Проверка разрешения на редактирование договора по сделке /// </summary> public virtual void CheckPossibilityToChangeContract() { ValidationUtils.NotNull(Contract, "Договор по данной сделке еще не создан."); ValidationUtils.Assert( Stage.ContainsIn(DealStage.ClientInvestigation, DealStage.CommercialProposalPreparation, DealStage.Negotiations, DealStage.ContractSigning), String.Format("Невозможно отредактировать договор по сделке со статусом «{0}».", Stage.GetDisplayName())); }
/// <summary> /// Проверка возможности отгрузки товара по накладной /// </summary> public virtual void CheckPossibilityToShip() { ValidationUtils.Assert(State == ExpenditureWaybillState.ReadyToShip, String.Format("Невозможно отгрузить товар по накладной из состояния «{0}».", State.GetDisplayName())); ValidationUtils.Assert(!IsPrepayment || IsFullyPaid, "Невозможно отгрузить неоплаченную накладную с предоплатой."); }
public void CheckPossibilityToPrintFormInSalePrices(ReturnFromClientWaybill waybill, User user) { CheckPossibilityToPrintForms(waybill, user); ValidationUtils.Assert(user.HasPermissionToViewStorageAccountingPrices(waybill.RecipientStorage), "Недостаточно прав для просмотра отпускных цен."); }
/// <summary> /// Удаление курса валюты /// </summary> /// <param name="rate">Курс валюты</param> public virtual void RemoveRate(CurrencyRate rate) { ValidationUtils.NotNull(rate, String.Format("Указан недопустимый курс для валюты «{0}».", Name)); ValidationUtils.Assert(rates.Contains(rate), String.Format("Указанный курс не принадлежит валюте «{0}».", Name)); rates.Remove(rate); }
/// <summary> /// Проверка, видна ли накладная куратору /// </summary> /// <param name="returnFromClientWaybill">Накладная</param> /// <param name="curator">Куратор</param> public override void CheckPossibilityToViewDetailsByUser(ReturnFromClientWaybill returnFromClientWaybill, User curator) { var deals = curator.Teams.SelectMany(x => x.Deals); var result = false; switch (curator.GetPermissionDistributionType(Permission.ReturnFromClientWaybill_List_Details)) { case PermissionDistributionType.None: result = false; break; case PermissionDistributionType.Personal: result = deals.Contains(returnFromClientWaybill.Deal) && returnFromClientWaybill.Curator == curator; break; case PermissionDistributionType.Teams: result = deals.Contains(returnFromClientWaybill.Deal); break; case PermissionDistributionType.All: result = true; break; } ValidationUtils.Assert(result, "Куратор накладной должен имееть право на ее просмотр."); }
public void CheckPossibilityToPrintFormInRecipientAccountingPrices(MovementWaybill waybill, User user) { CheckPossibilityToPrintForms(waybill, user); ValidationUtils.Assert(user.HasPermissionToViewStorageAccountingPrices(waybill.RecipientStorage), "Недостаточно прав для просмотра учетных цен получателя."); }
/// <summary> /// Получить предполагаемую дату конца этапа (с учетом всего), только дата (без времени) /// </summary> /// <param name="currentDate">Текущая дата</param> public virtual DateTime CalculateSupposedEndDate(DateTime currentDate) { // Если этап уже завершен, возвращаем реальную дату конца if (ActualEndDate.HasValue) { return(ActualEndDate.Value.Date); } ValidationUtils.Assert(!Batch.IsClosed || Batch.IsClosedSuccessfully, "Невозможно рассчитать предполагаемую дату конца незавершенного этапа для неуспешно закрытой партии заказа."); // Значит, текущий этап - это данный (или текущий идет раньше данного) // Вычисляем предполагаемую дату конца текущего этапа, а потом прибавляем к ней планируемые длительности этапов после него до данного этапа short currentStageOrdinalNumber = Batch.CurrentStage.OrdinalNumber; DateTime currentStageSupposedEndDate = Batch.CurrentStage.ExpectedEndDate.Value; // Если текущий этап просрочен, считаем, что он завершится сегодня if (currentDate.Date > currentStageSupposedEndDate) { currentStageSupposedEndDate = currentDate.Date; } foreach (var stage in Batch.Stages.Where(x => x.OrdinalNumber > currentStageOrdinalNumber && x.OrdinalNumber <= OrdinalNumber && x.PlannedDuration.HasValue).OrderBy(x => x.OrdinalNumber)) { currentStageSupposedEndDate = stage.AddDays(currentStageSupposedEndDate, stage.PlannedDuration.Value); } return(currentStageSupposedEndDate); }
/// <summary> /// Конструктор /// </summary> /// <param name="name">Приоритет</param> /// <param name="ordinalNumber">Порядковый номер (для сортировки)</param> public TaskPriority(string name, short ordinalNumber) { ValidationUtils.Assert(!String.IsNullOrEmpty(name), "Необходимо указать название приоритета задачи."); Name = name; OrdinalNumber = ordinalNumber; }
/// <summary> /// Проверка на возможность удаления /// </summary> /// <param name="organization"></param> /// <returns></returns> private void CheckPossibilityToDelete(AccountOrganization organizationToDelete, User user) { userService.CheckPermission(user, Permission.AccountOrganization_Delete); var receiptWaybillList = receiptWaybillRepository.GetList(organizationToDelete); GetExceptionString(receiptWaybillList, 3, "приходной накладной", "и еще в {0} приходных накладных"); var movementWaybillList = movementWaybillRepository.GetList(organizationToDelete); GetExceptionString(movementWaybillList, 3, "накладной перемещения", "и еще в {0} накладных перемещения"); var changeOwnerWaybillList = changeOwnerWaybillRepository.GetList(organizationToDelete); GetExceptionString(changeOwnerWaybillList, 3, "накладной смены собственника", "и еще в {0} накладных смены собственника"); var writeoffWaybillList = writeoffWaybillRepository.GetList(organizationToDelete); GetExceptionString(writeoffWaybillList, 3, "накладной списания", "и еще в {0} накладных списания"); var expenditureWaybillList = expenditureWaybillRepository.GetList(organizationToDelete); GetExceptionString(expenditureWaybillList, 3, "накладной реализации", "и еще в {0} накладных реализации"); var returnFromClientWaybillList = returnFromClientWaybillRepository.GetList(organizationToDelete); GetExceptionString(returnFromClientWaybillList, 3, "накладной возврата от клиента", "и еще в {0} накладных возврата от клиента"); // Проверяем наличие договоров с участием организации ValidationUtils.Assert(!contractRepository.AnyContracts(organizationToDelete), "Невозможно удалить организацию, так как она используется в договорах."); }
/// <summary> /// Подсчет количества строк c отложенным исполнением запроса /// </summary> /// <param name="LazyExecution">Признак необходимости отложенного исполнения</param> /// <remarks>ВАЖНО: Если отложенное исполнение не требуется, необходимо использовать другую перегрузку метода!</remarks> public ICriteria <T> Count(bool LazyExecution = true) { ValidationUtils.Assert(LazyExecution, "Если отложенное исполнение не требуется, необходимо использовать другую перегрузку метода Count."); extraCondition = ExtraCondition.Count; return(this); }