/// <summary> /// Проверить контрагента на резидент/нерезидент. /// </summary> /// <param name="document">Документ.</param> /// <param name="task">Задача на согласование.</param> /// <returns>Результат проверки условия. Структуру формата - выполнение условия (true, если контрагент нерезидент), сообщение об ошибке.</returns> private Structures.ConditionBase.ConditionResult CheckNonresident(IOfficialDocument document, IApprovalTask task) { if (OutgoingDocumentBases.Is(document)) { var outgoingDocument = OutgoingDocumentBases.As(document); // Если хоть один адресат нерезидент, идем по ветке с нерезидентом. var isNonResident = outgoingDocument.Addressees.Any(x => x.Correspondent.Nonresident == true); return(Structures.ConditionBase.ConditionResult.Create(isNonResident, string.Empty)); } if (ContractualDocumentBases.Is(document)) { var counterparty = ContractualDocumentBases.As(document).Counterparty; var nonresident = counterparty != null ? counterparty.Nonresident : true; return(Structures.ConditionBase.ConditionResult.Create(nonresident, string.Empty)); } if (AccountingDocumentBases.Is(document)) { var counterparty = AccountingDocumentBases.As(document).Counterparty; var nonresident = counterparty != null ? counterparty.Nonresident : true; return(Structures.ConditionBase.ConditionResult.Create(nonresident, string.Empty)); } return(Structures.ConditionBase.ConditionResult.Create(null, ConditionBases.Resources.DocumentNotContainsFieldCounterpartyOrCorrespondent)); }
/// <summary> /// Проверить, требуется ли скрытие создания сопроводительного письма. /// </summary> /// <param name="collapsedStageTypes">Схлопнутые этапы.</param> /// <returns>True, если требуется.</returns> public bool NeedHideCoverLetterAction(List <Enumeration?> collapsedStageTypes) { if (!collapsedStageTypes.Where(s => s == Docflow.ApprovalStage.StageType.Sending).Any()) { return(true); } var document = _obj.DocumentGroup.OfficialDocuments.FirstOrDefault(); if (ContractualDocumentBases.Is(document) || IncomingDocumentBases.Is(document)) { return(false); } return(true); }
/// <summary> /// Проверить сумму документа. /// </summary> /// <param name="document">Документ.</param> /// <param name="task">Задача на согласование.</param> /// <returns>Результат проверки условия. Структуру формата - выполнение условия (true, если сумма документа больше или равна сумме условия), сообщение об ошибке.</returns> private Structures.ConditionBase.ConditionResult CheckAmountIsMore(IOfficialDocument document, IApprovalTask task) { if (!AccountingDocumentBases.Is(document) && !ContractualDocumentBases.Is(document)) { return(Structures.ConditionBase.ConditionResult.Create(null, ConditionBases.Resources.DocumentNotContainsFieldAmount)); } var accounting = AccountingDocumentBases.As(document); var contractual = ContractualDocumentBases.As(document); if (accounting != null && accounting.TotalAmount.HasValue) { return(Structures.ConditionBase.ConditionResult.Create(this.CheckAmount(accounting.TotalAmount), string.Empty)); } if (contractual != null && contractual.TotalAmount.HasValue) { return(Structures.ConditionBase.ConditionResult.Create(this.CheckAmount(contractual.TotalAmount), string.Empty)); } return(Structures.ConditionBase.ConditionResult.Create(null, ConditionBases.Resources.FillTotalAmountInContractCard)); }