public virtual void StartBlock4(Sungero.RecordManagement.Server.ActionItemExecutionAssignmentArguments e) { // Задать тему, исполнителей и срок. if (_obj.ExecutionState == ExecutionState.OnControl) { e.Block.Subject = Functions.ActionItemExecutionTask.GetActionItemExecutionSubject(_obj, ActionItemExecutionTasks.Resources.ActionItemReworkSubject); } else { e.Block.Subject = Functions.ActionItemExecutionTask.GetActionItemExecutionSubject(_obj, ActionItemExecutionTasks.Resources.ActionItemExecutionSubject); } e.Block.Performers.Add(_obj.Assignee); if (_obj.Deadline.HasValue) { e.Block.AbsoluteDeadline = _obj.Deadline.Value; e.Block.ScheduledDate = _obj.Deadline.Value; } // Выдать права на документ. var document = _obj.DocumentsGroup.OfficialDocuments.FirstOrDefault(); if (document != null) { Docflow.PublicFunctions.OfficialDocument.GrantAccessRightsToActionItemAttachment(document, _obj.Assignee); } // Для подзадач соисполнителям заполнять "Выдал" из основной задачи. IActionItemExecutionTask actionItemTask = null; if (_obj.ActionItemType != ActionItemType.Main) { var mainActionItemExecution = ActionItemExecutionTasks.As(_obj.MainTask); if (mainActionItemExecution != null && !(mainActionItemExecution.IsCompoundActionItem ?? false)) { actionItemTask = mainActionItemExecution; } } if (actionItemTask == null) { actionItemTask = _obj; } e.Block.AssignedBy = actionItemTask.AssignedBy; Docflow.PublicFunctions.Module.SynchronizeAddendaAndAttachmentsGroup(_obj.AddendaGroup, document); }
public virtual void CompleteAssignment4(Sungero.RecordManagement.IActionItemExecutionAssignment assignment, Sungero.RecordManagement.Server.ActionItemExecutionAssignmentArguments e) { // Переписка. _obj.Report = assignment.ActiveText; // Завершить задание на продление срока, если оно есть. var extendDeadlineTasks = DeadlineExtensionTasks.GetAll(j => Equals(j.ParentAssignment, assignment) && j.Status == Workflow.Task.Status.InProcess); foreach (var extendDeadlineTask in extendDeadlineTasks) { extendDeadlineTask.Abort(); } // Завершить задание на продление срока, если оно есть. var newExtendDeadlineTasks = Docflow.DeadlineExtensionTasks.GetAll(j => Equals(j.ParentAssignment, assignment) && j.Status == Workflow.Task.Status.InProcess); foreach (var newExtendDeadlineTask in newExtendDeadlineTasks) { newExtendDeadlineTask.Abort(); } // Завершить задание на запрос отчёта, если оно есть. var reportRequestTasks = StatusReportRequestTasks.GetAll(r => Equals(r.ParentTask, assignment.Task) && r.Status == Workflow.Task.Status.InProcess); foreach (var reportRequestTask in reportRequestTasks) { reportRequestTask.Abort(); } // Рекурсивно прекратить подзадачи. if (assignment.NeedAbortChildActionItems ?? false) { Functions.Module.AbortSubtasksAndSendNotices(_obj, assignment.Performer, ActionItemExecutionTasks.Resources.AutoAbortingReason); } // Добавить документы из группы "Результаты исполнения" соисполнителя в группу основновного поручения. if (_obj.ActionItemType == ActionItemType.Additional) { var parentActionItem = ActionItemExecutionTasks.As(_obj.ParentAssignment.Task); if (parentActionItem != null) { var documentGroup = parentActionItem.ResultGroup.OfficialDocuments; foreach (var document in _obj.ResultGroup.OfficialDocuments) { if (!documentGroup.Contains(document)) { documentGroup.Add(document); } } // Выдать права на вложенные документы. Functions.ActionItemExecutionTask.GrantRightsToAttachments(parentActionItem, parentActionItem.ResultGroup.All.ToList(), false); } } // Добавить документы из группы "Результаты исполнения" из подчиненего поручения в задание на исполнение. if (_obj.ActionItemType == ActionItemType.Main && _obj.ParentAssignment != null) { var parentAssignment = ActionItemExecutionAssignments.As(_obj.ParentAssignment); if (parentAssignment != null) { var parentActionItem = ActionItemExecutionTasks.As(parentAssignment.Task); var documentGroup = parentAssignment.ResultGroup.OfficialDocuments; foreach (var document in _obj.ResultGroup.OfficialDocuments) { if (!documentGroup.Contains(document)) { documentGroup.Add(document); } } // Выдать права на вложенные документы. Functions.ActionItemExecutionTask.GrantRightsToAttachments(parentActionItem, parentActionItem.ResultGroup.All.ToList(), false); } } // Выдать права на вложенные документы. Functions.ActionItemExecutionTask.GrantRightsToAttachments(_obj, _obj.ResultGroup.All.ToList(), false); // Связать документы из группы "Результаты исполнения" с основным документом. var mainDocument = _obj.DocumentsGroup.OfficialDocuments.FirstOrDefault(); if (mainDocument != null) { foreach (var document in _obj.ResultGroup.OfficialDocuments.Where(d => !Equals(d, mainDocument))) { document.Relations.AddFrom(Constants.Module.SimpleRelationRelationName, mainDocument); document.Save(); } } }
public virtual void StartAssignment4(Sungero.RecordManagement.IActionItemExecutionAssignment assignment, Sungero.RecordManagement.Server.ActionItemExecutionAssignmentArguments e) { assignment.ActionItem = _obj.ActionItem; assignment.Importance = _obj.Importance; if (_obj.ActionItemType == ActionItemType.Additional) { assignment.Author = Sungero.RecordManagement.ActionItemExecutionTasks.As(_obj.ParentAssignment.Task).AssignedBy; } // Выдать права на изменение для возможности прекращения подзадач. Functions.ActionItemExecutionTask.GrantAccessRightToAssignment(assignment, _obj); }