public static void DeleteStage(IApprovalStage stage) { if (stage != null) { ApprovalStages.Delete(stage); } }
public static List <IEmployee> GetStagePerformers(IApprovalTask task, IApprovalStage stage, List <Sungero.CoreEntities.IRecipient> additionalApprovers) { var recipients = Functions.ApprovalStage.GetStageRecipients(stage, task, additionalApprovers); var performers = Docflow.Functions.Module.GetEmployeesFromRecipients(recipients); return(performers.Distinct().ToList()); }
public static IEmployee GetStagePerformer(IApprovalTask task, IApprovalStage stage, IEmployee signatory, IEmployee addressee) { if (stage.AssigneeType == Docflow.ApprovalStage.AssigneeType.Role) { return(Functions.ApprovalRoleBase.GetRolePerformer(stage.ApprovalRole, task)); } else { return(Functions.ApprovalRuleBase.GetEmployeeByAssignee(stage.Assignee)); } }
public static bool ClerkCanRegister(IApprovalStage registerStage) { var canRegister = true; var clerk = Functions.ApprovalRuleBase.GetEmployeeByAssignee(registerStage.Assignee); if (registerStage.StageType == StageType.Register && clerk != null) { canRegister = IncomingDocumentBases.AccessRights.CanRegister(clerk) || OutgoingDocumentBases.AccessRights.CanRegister(clerk) || InternalDocumentBases.AccessRights.CanRegister(clerk) || ContractualDocumentBases.AccessRights.CanRegister(clerk); } return(canRegister); }
public static IEmployee GetStagePerformer(IApprovalTask task, IApprovalStage stage) { return(GetStagePerformer(task, stage, null, null)); }
public static bool HasRules(IApprovalStage stage) { return(ApprovalRuleBases.GetAll(r => r.Stages.Any(s => s.Stage == stage)).Any()); }
public static List <IEmployee> GetStagePerformers(IApprovalTask task, IApprovalStage stage) { return(GetStagePerformers(task, stage, null)); }
/// <summary> /// Получить согласующих, которые будут реально согласовывать на текущей итерации. /// </summary> /// <param name="task">Задача согласования.</param> /// <param name="stage">Этап согласования (обязательных или доп. согласующих).</param> /// <returns>Согласующие.</returns> public static List <Company.IEmployee> GetCurrentIterationEmployees(IApprovalTask task, IApprovalStage stage) { var result = new List <Company.IEmployee>(); var lastReworkAssignment = Functions.ApprovalTask.GetLastReworkAssignment(task); if (lastReworkAssignment != null) { Logger.DebugFormat("Find last rework assignment id {0}.", lastReworkAssignment.Id); } var approvers = Docflow.PublicFunctions.ApprovalStage.Remote.GetStagePerformers(task, stage); // Исключить согласующих, если они уже подписали документ, либо в последнем задании на доработку было указано, что повторно не отправлять. foreach (var approver in approvers) { Logger.DebugFormat("Find approver id {0}.", approver.Id); if (lastReworkAssignment == null || lastReworkAssignment.Approvers.Any(a => Equals(a.Approver, approver) && a.Action == Sungero.Docflow.ApprovalReworkAssignmentApprovers.Action.SendForApproval) || !lastReworkAssignment.Approvers.Any(a => Equals(a.Approver, approver))) { if (!Functions.ApprovalTask.HasValidSignature(task, approver)) { Logger.DebugFormat("Add approver id {0} to current iteration employees.", approver.Id); result.Add(approver); } } } return(result); }