Ejemplo n.º 1
0
        public virtual void Forward(Sungero.Workflow.Client.ExecuteResultActionArgs e)
        {
            if (!e.Validate())
            {
                return;
            }

            if (_obj.Addressee == null)
            {
                e.AddError(FreeApprovalTasks.Resources.CantRedirectWithoutAddressee);
                e.Cancel();
            }

            if (_obj.Addressee == _obj.Performer)
            {
                e.AddError(FreeApprovalAssignments.Resources.ApproverAlreadyExistsFormat(_obj.Addressee.Person.ShortName));
                e.Cancel();
            }

            if (!Functions.Module.ShowDialogGrantAccessRightsWithConfirmationDialog(_obj,
                                                                                    _obj.OtherGroup.All.ToList(),
                                                                                    new List <IRecipient> {
                _obj.Addressee
            },
                                                                                    e.Action,
                                                                                    Constants.FreeApprovalTask.FreeApprovalAssignmentConfirmDialogID.Forward))
            {
                e.Cancel();
            }
        }
        /// <summary>
        /// Установка ЭП.
        /// </summary>
        /// <param name="e">Параметр действия.</param>
        /// <param name="comment">Комментарий.</param>
        public void SetSignature(Sungero.Workflow.Client.ExecuteResultActionArgs e, string comment)
        {
            // Не подписывать, если это внесение результата рассмотрения.
            if (_obj.IsResultSubmission == true)
            {
                return;
            }

            var needStrongSign = _obj.Stage.NeedStrongSign ?? false;

            var document            = _obj.DocumentGroup.OfficialDocuments.FirstOrDefault();
            var addenda             = _obj.AddendaGroup.OfficialDocuments.ToList();
            var addendaToElectronic = _obj.AddendaGroup.OfficialDocuments.ToList <Sungero.Content.IElectronicDocument>();
            var performer           = Company.Employees.As(_obj.Performer);
            var signatories         = Functions.OfficialDocument.Remote.GetSignatories(document);
            var currentEmployee     = Company.Employees.Current;

            // Подписать утверждающей подписью, если нет прав, то согласующей.
            if (document.AccessRights.CanApprove() && signatories.Any(s => currentEmployee != null && Equals(s.EmployeeId, currentEmployee.Id)))
            {
                // Для утверждения необходимо, чтобы документ не был заблокирован.
                var lockInfo = Functions.OfficialDocument.GetDocumentLockInfo(document);
                if (lockInfo != null && lockInfo.IsLocked)
                {
                    e.AddError(Sungero.Docflow.ApprovalReviewAssignments.Resources.CanNotSetSignatureFormat(lockInfo.OwnerName, lockInfo.LockTime));
                    return;
                }
                Functions.Module.ApproveDocument(document, addenda, performer, needStrongSign, comment, e);
            }
            else
            {
                Functions.Module.EndorseDocument(document, addendaToElectronic, performer, true, needStrongSign, comment, e);
            }
        }
        public virtual void Complete(Sungero.Workflow.Client.ExecuteResultActionArgs e)
        {
            if (!Functions.ApprovalTask.Remote.HasDocumentAndCanRead(ApprovalTasks.As(_obj.Task)))
            {
                e.AddError(ApprovalTasks.Resources.NoRightsToDocument);
                return;
            }

            // Проверить зарегистрированность документа, если схлопнуто с этапом регистрации.
            if (_obj.CollapsedStagesTypesExe.Any(s => s.StageType == Docflow.ApprovalStage.StageType.Register))
            {
                var registrationState = _obj.DocumentGroup.OfficialDocuments.First().RegistrationState;
                if (registrationState == null || registrationState != Docflow.OfficialDocument.RegistrationState.Registered)
                {
                    e.AddError(ApprovalTasks.Resources.ToPerformNeedRegisterDocument);
                    return;
                }
            }

            var confirmationAccepted = Functions.Module.ShowConfirmationDialogCreationActionItem(_obj, _obj.DocumentGroup.OfficialDocuments.FirstOrDefault(), e);
            var sendDialog           = Functions.Module.ShowConfirmationDialogSendToCounterparty(_obj, _obj.CollapsedStagesTypesExe.Select(x => x.StageType), e);

            if (Docflow.PublicFunctions.Module.ShowDialogGrantAccessRightsWithConfirmationDialog(_obj, _obj.OtherGroup.All.ToList(), (confirmationAccepted || sendDialog) ? null : e.Action,
                                                                                                 Constants.ApprovalTask.ApprovalExecutionAssignmentConfirmDialogID.Complete) == false)
            {
                e.Cancel();
            }
        }
        public virtual void Execute(Sungero.Workflow.Client.ExecuteResultActionArgs e)
        {
            if (!Functions.ApprovalTask.Remote.HasDocumentAndCanRead(ApprovalTasks.As(_obj.Task)))
            {
                e.AddError(ApprovalTasks.Resources.NoRightsToDocument);
                return;
            }

            // Проверить зарегистрированность документа.
            var document          = _obj.DocumentGroup.OfficialDocuments.First();
            var registrationState = document.RegistrationState;

            if (registrationState == null || (Enumeration)registrationState != OfficialDocument.RegistrationState.Registered)
            {
                e.AddError(ApprovalTasks.Resources.ToPerformNeedRegisterDocument);
                return;
            }

            var sendDialog = Functions.Module.ShowConfirmationDialogSendToCounterparty(_obj, _obj.CollapsedStagesTypesReg.Select(x => x.StageType), e);

            if (!Functions.Module.ShowDialogGrantAccessRightsWithConfirmationDialog(_obj,
                                                                                    _obj.OtherGroup.All.ToList(),
                                                                                    sendDialog ? null : e.Action,
                                                                                    Constants.ApprovalTask.ApprovalRegistrationAssignmentConfirmDialogID.Execute))
            {
                e.Cancel();
            }
        }
Ejemplo n.º 5
0
 public virtual void Complete(Sungero.Workflow.Client.ExecuteResultActionArgs e)
 {
     if (!Functions.Module.ShowDialogGrantAccessRightsWithConfirmationDialog(_obj, _obj.OtherGroup.All.ToList(), e.Action,
                                                                             Constants.FreeApprovalTask.FinishConfirmDialogID))
     {
         e.Cancel();
     }
 }
Ejemplo n.º 6
0
 public virtual void Agree(Sungero.Workflow.Client.ExecuteResultActionArgs e)
 {
     if (!Docflow.PublicFunctions.Module.ShowDialogGrantAccessRightsWithConfirmationDialog(_obj, _obj.OtherGroup.All.ToList(), e.Action,
                                                                                           Constants.ActionItemExecutionTask.ActionItemSupervisorAssignmentConfirmDialogID.Agree))
     {
         e.Cancel();
     }
 }
Ejemplo n.º 7
0
        /// <summary>
        /// Диалог подтверждения старта поручений из проекта резолюции.
        /// </summary>
        /// <param name="e">Аргументы.</param>
        /// <returns>True, если диалог был, иначе false.</returns>
        public bool ShowConfirmationDialogStartDraftResolution(Sungero.Workflow.Client.ExecuteResultActionArgs e)
        {
            var dialogText            = PreparingDraftResolutionAssignments.Resources.ExecuteAndStartDraftResolution;
            var dialogTextDescription = PreparingDraftResolutionAssignments.Resources.ExecuteAndStartDraftResolutionDescription;
            var dialogID = Constants.DocumentReviewTask.PreparingDraftResolutionAssignmentConfirmDialogID.AddAssignment;

            return(Docflow.PublicFunctions.Module.ShowConfirmationDialog(dialogText, dialogTextDescription, null, dialogID));
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Диалог подтверждения отправки документа на рассмотрение.
        /// </summary>
        /// <param name="e">Аргументы.</param>
        /// <returns>True, если диалог был, иначе false.</returns>
        public bool ShowConfirmationDialogSendForReview(Sungero.Workflow.Client.ExecuteResultActionArgs e)
        {
            var actionItemsExist = _obj.ResolutionGroup.All.Count != 0;
            var dialogText       = actionItemsExist ? PreparingDraftResolutionAssignments.Resources.SendForReviewWithResolution :
                                   PreparingDraftResolutionAssignments.Resources.SendForReviewWithoutResolution;
            var dialogID = Constants.DocumentReviewTask.PreparingDraftResolutionAssignmentConfirmDialogID.SendForReview;

            return(Docflow.PublicFunctions.Module.ShowConfirmationDialog(dialogText, null, null, dialogID));
        }
Ejemplo n.º 9
0
 public virtual void Accept(Sungero.Workflow.Client.ExecuteResultActionArgs e)
 {
     if (!Docflow.PublicFunctions.Module.ShowDialogGrantAccessRightsWithConfirmationDialog(_obj,
                                                                                           _obj.OtherGroup.All.ToList(),
                                                                                           e.Action))
     {
         e.Cancel();
     }
 }
Ejemplo n.º 10
0
 public virtual void Accept(Sungero.Workflow.Client.ExecuteResultActionArgs e)
 {
     if (!Docflow.PublicFunctions.Module.ShowDialogGrantAccessRightsWithConfirmationDialog(_obj,
                                                                                           _obj.OtherGroup.All.ToList(),
                                                                                           e.Action,
                                                                                           Constants.StatusReportRequestTask.ReportRequestCheckAssignmentConfirmDialogID.Accept))
     {
         e.Cancel();
     }
 }
Ejemplo n.º 11
0
        /// <summary>
        /// Проверить просроченные поручения, вывести ошибку в случае просрочки.
        /// </summary>
        /// <param name="e">Аргументы события.</param>
        public virtual void CheckOverdueActionItemExecutionTasks(Sungero.Workflow.Client.ExecuteResultActionArgs e)
        {
            var overdueTasks = Functions.DocumentReviewTask.GetDraftOverdueActionItemExecutionTasks(_obj);

            if (overdueTasks.Any())
            {
                e.AddError(RecordManagement.Resources.ImpossibleSpecifyDeadlineLessThanTodayCorrectIt);
                e.Cancel();
            }
        }
Ejemplo n.º 12
0
        public virtual void AddAssignment(Sungero.Workflow.Client.ExecuteResultActionArgs e)
        {
            var confirmationAccepted = Functions.Module.ShowConfirmationDialogCreationActionItem(_obj, _obj.DocumentForReviewGroup.OfficialDocuments.FirstOrDefault(), e);

            if (!Docflow.PublicFunctions.Module.ShowDialogGrantAccessRightsWithConfirmationDialog(_obj, _obj.OtherGroup.All.ToList(), confirmationAccepted ? null : e.Action,
                                                                                                  Constants.DocumentReviewTask.ReviewResolutionAssignmentConfirmDialogID))
            {
                e.Cancel();
            }
        }
Ejemplo n.º 13
0
        public virtual void Abort(Sungero.Workflow.Client.ExecuteResultActionArgs e)
        {
            if (!Functions.Module.HasCurrentUserExchangeServiceCertificate(_obj.BusinessUnitBox))
            {
                e.AddError(Resources.RejectCertificateNotFoundReadressToResponsible);
                return;
            }

            if (string.IsNullOrEmpty(_obj.ActiveText))
            {
                e.AddError(ExchangeDocumentProcessingAssignments.Resources.NeedCommentToAbort);
                return;
            }
            else if (_obj.ActiveText.Length > 1000)
            {
                e.AddError(ExchangeDocumentProcessingAssignments.Resources.TextOverlong);
                return;
            }

            if (!Sungero.Docflow.PublicFunctions.Module.ShowConfirmationDialog(e.Action.ConfirmationMessage, null, null,
                                                                               Constants.ExchangeDocumentProcessingTask.ExchangeDocumentProcessingAssignmentConfirmDialogID.Abort))
            {
                e.Cancel();
                return;
            }

            var certificate = Functions.Module.GetCurrentUserExchangeCertificate(_obj.Box, Company.Employees.Current);

            if (!Functions.ExchangeDocumentProcessingAssignment.SendDeliveryConfirmation(_obj, certificate))
            {
                e.Cancel();
                return;
            }

            var documents = _obj.AllAttachments.Select(d => Docflow.OfficialDocuments.As(d)).Where(d => d != null).ToList();
            var error     = Exchange.PublicFunctions.Module.SendAmendmentRequest(documents, _obj.Counterparty, _obj.ActiveText, false, _obj.Box, certificate, false);

            if (!string.IsNullOrWhiteSpace(error))
            {
                if (error == Resources.CertificateNotFound)
                {
                    e.AddError(Resources.RejectCertificateNotFoundReadressToResponsible);
                }
                else if (error == Resources.AllAnswersIsAlreadySent)
                {
                    e.AddError(error);
                }
                else
                {
                    e.AddError(Resources.CannotSendAmendmentNotice);
                }
            }
        }
        public virtual void ConfirmSign(Sungero.Workflow.Client.ExecuteResultActionArgs e)
        {
            if (!Functions.ApprovalTask.Remote.HasDocumentAndCanRead(ApprovalTasks.As(_obj.Task)))
            {
                e.AddError(ApprovalTasks.Resources.NoRightsToDocument);
                return;
            }

            // Проверить зарегистрированность документа, если схлопнуто с этапом регистрации.
            if (_obj.CollapsedStagesTypesSig.Any(s => s.StageType == Docflow.ApprovalStage.StageType.Register))
            {
                var registrationState = _obj.DocumentGroup.OfficialDocuments.First().RegistrationState;
                if (registrationState == null || registrationState != Docflow.OfficialDocument.RegistrationState.Registered)
                {
                    e.AddError(ApprovalTasks.Resources.ToPerformNeedRegisterDocument);
                    return;
                }
            }

            // Запросить подтверждение "не создания" поручений, если схлопнуто с созданием поручений.
            var confirmationAccepted = false;

            if (_obj.CollapsedStagesTypesSig.Any(s => s.StageType == Docflow.ApprovalStage.StageType.Execution))
            {
                confirmationAccepted = Functions.Module.ShowConfirmationDialogCreationActionItem(_obj, _obj.DocumentGroup.OfficialDocuments.FirstOrDefault(), e);
            }

            confirmationAccepted = confirmationAccepted || Functions.Module.ShowConfirmationDialogSendToCounterparty(_obj, _obj.CollapsedStagesTypesSig.Select(x => x.StageType), e);
            var accessRightsGranted = Functions.Module.ShowDialogGrantAccessRights(_obj, _obj.OtherGroup.All.ToList());

            if (accessRightsGranted == false)
            {
                e.Cancel();
            }

            var document = _obj.DocumentGroup.OfficialDocuments.First();

            if (!confirmationAccepted && accessRightsGranted == null &&
                !Functions.ApprovalTask.ConfirmCompleteAssignment(document, e.Action.ConfirmationMessage, Constants.ApprovalTask.ApprovalSigningAssignmentConfirmDialogID.ConfirmSign, true))
            {
                e.Cancel();
            }

            var task = ApprovalTasks.As(_obj.Task);

            // TODO Котегов: запилить в одну функцию, чтобы уменьшить число запросов.
            // Заполнить статус согласования "Подписан".
            Functions.OfficialDocument.Remote.SetInternalApprovalStateToSigned(document);

            // Заполнить подписывающего в карточке документа.
            Functions.OfficialDocument.Remote.SetDocumentSignatory(document, task.Signatory);
        }
        public virtual void Accept(Sungero.Workflow.Client.ExecuteResultActionArgs e)
        {
            if (!Functions.ApprovalTask.Remote.HasDocumentAndCanRead(ApprovalTasks.As(_obj.Task)))
            {
                e.AddError(ApprovalTasks.Resources.NoRightsToDocument);
                return;
            }

            if (!Docflow.PublicFunctions.Module.ShowDialogGrantAccessRightsWithConfirmationDialog(_obj, _obj.OtherGroup.All.ToList(), e.Action, Constants.ApprovalTask.ApprovalCheckingAssignmentConfirmDialogID.Accept))
            {
                e.Cancel();
            }
        }
        public virtual void Reworked(Sungero.Workflow.Client.ExecuteResultActionArgs e)
        {
            var assignees = _obj.Approvers.Where(a => a.Approver != null).Select(a => Recipients.As(a.Approver)).ToList();

            if (!Functions.Module.ShowDialogGrantAccessRightsWithConfirmationDialog(_obj,
                                                                                    _obj.OtherGroup.All.ToList(),
                                                                                    assignees,
                                                                                    e.Action,
                                                                                    Constants.FreeApprovalTask.ReworkAssignmentConfirmDialogID.Reworked))
            {
                e.Cancel();
            }
        }
Ejemplo n.º 17
0
        public virtual void ForRework(Sungero.Workflow.Client.ExecuteResultActionArgs e)
        {
            if (!Functions.DeadlineRejectionAssignment.ValidateDeadlineRejectionAssignment(_obj, e))
            {
                return;
            }

            if (!Docflow.PublicFunctions.Module.ShowConfirmationDialog(e.Action.ConfirmationMessage, null, null,
                                                                       Constants.DeadlineExtensionTask.DeadlineRejectionAssignmentConfirmDialogID))
            {
                e.Cancel();
            }
        }
Ejemplo n.º 18
0
        public virtual void AddResolution(Sungero.Workflow.Client.ExecuteResultActionArgs e)
        {
            if (!Functions.ApprovalTask.Remote.HasDocumentAndCanRead(ApprovalTasks.As(_obj.Task)))
            {
                e.AddError(ApprovalTasks.Resources.NoRightsToDocument);
                return;
            }

            var haveError = false;

            if (string.IsNullOrWhiteSpace(_obj.ActiveText))
            {
                e.AddError(ApprovalReviewAssignments.Resources.ResolutionTextNeeded);
                haveError = true;
            }
            // Проверить зарегистрированность документа, если схлопнуто с этапом регистрации.
            if (_obj.CollapsedStagesTypesRe.Any(s => s.StageType == Docflow.ApprovalStage.StageType.Register))
            {
                var registrationState = _obj.DocumentGroup.OfficialDocuments.First().RegistrationState;
                if (registrationState == null || registrationState != Docflow.OfficialDocument.RegistrationState.Registered)
                {
                    e.AddError(ApprovalTasks.Resources.ToPerformNeedRegisterDocument);
                    haveError = true;
                }
            }

            var document       = _obj.DocumentGroup.OfficialDocuments.First();
            var needStrongSign = _obj.Stage.NeedStrongSign ?? false;

            if (document.HasVersions && needStrongSign && !PublicFunctions.Module.Remote.GetCertificates(document).Any())
            {
                e.AddError(ApprovalReviewAssignments.Resources.CertificateNeeded);
                haveError = true;
            }

            if (haveError)
            {
                return;
            }

            var sendDialog = Functions.Module.ShowConfirmationDialogSendToCounterparty(_obj, _obj.CollapsedStagesTypesRe.Select(x => x.StageType), e);

            if (!Functions.Module.ShowDialogGrantAccessRightsWithConfirmationDialog(_obj, _obj.OtherGroup.All.ToList(), sendDialog ? null : e.Action,
                                                                                    Constants.ApprovalTask.ApprovalReviewAssignmentConfirmDialogID.AddResolution))
            {
                e.Cancel();
            }

            // Подписать ЭП.
            Functions.ApprovalReviewAssignment.SetSignature(_obj, e, ApprovalReviewAssignments.Resources.ResolutionAdded);
        }
Ejemplo n.º 19
0
        public virtual void Forward(Sungero.Workflow.Client.ExecuteResultActionArgs e)
        {
            if (!e.Validate())
            {
                return;
            }

            if (!Functions.ApprovalTask.Remote.HasDocumentAndCanRead(ApprovalTasks.As(_obj.Task)))
            {
                e.AddError(ApprovalTasks.Resources.NoRightsToDocument);
                return;
            }

            if (_obj.ForwardPerformer == null)
            {
                e.AddError(ApprovalReworkAssignments.Resources.CantRedirectWithoutForwardPerformer);
                e.Cancel();
            }

            var document     = _obj.DocumentGroup.OfficialDocuments.FirstOrDefault();
            var stages       = Functions.ApprovalTask.Remote.GetStages(ApprovalTasks.As(_obj.Task));
            var hasSignStage = Functions.ApprovalRuleBase.HasApprovalStage(_obj.ApprovalRule, Docflow.ApprovalStage.StageType.Sign, document, stages.Stages);

            // Проверить, имеет ли право подписывающий на подпись.
            if (hasSignStage &&
                !Functions.ApprovalTask.Remote.CheckSignatory(ApprovalTasks.As(_obj.Task), _obj.Signatory, stages.Stages))
            {
                e.AddError(ApprovalTasks.Resources.IncorrectSignatory);
                return;
            }

            var giveRights = Functions.Module.ShowDialogGrantAccessRights(_obj, _obj.OtherGroup.All.ToList(), new List <IRecipient>()
            {
                _obj.ForwardPerformer
            });

            // Замена стандартного диалога подтверждения выполнения действия.
            if (giveRights == null)
            {
                if (!Functions.Module.ShowConfirmationDialog(e.Action.ConfirmationMessage, e.Action.ConfirmationDescription, null,
                                                             Constants.ApprovalTask.ApprovalReworkAssignmentConfirmDialogID.Forward))
                {
                    e.Cancel();
                }
            }
            else if (giveRights == false)
            {
                e.Cancel();
            }
        }
Ejemplo n.º 20
0
 public virtual void AddResolution(Sungero.Workflow.Client.ExecuteResultActionArgs e)
 {
     // Проверить заполненность текста резолюции при выполнении задания с результатом "Вынести резолюцию".
     if (string.IsNullOrWhiteSpace(_obj.ActiveText))
     {
         e.AddError(ReviewManagerAssignments.Resources.ResolutionTextNeeded);
         return;
     }
     if (!Docflow.PublicFunctions.Module.ShowDialogGrantAccessRightsWithConfirmationDialog(_obj, _obj.OtherGroup.All.ToList(), e.Action,
                                                                                           Constants.DocumentReviewTask.ReviewManagerAssignmentConfirmDialogID.AddResolution))
     {
         e.Cancel();
     }
 }
Ejemplo n.º 21
0
        public virtual void Approved(Sungero.Workflow.Client.ExecuteResultActionArgs e)
        {
            if (!e.Validate())
            {
                return;
            }

            if (!Functions.ApprovalTask.Remote.HasDocumentAndCanRead(ApprovalTasks.As(_obj.Task)))
            {
                e.AddError(ApprovalTasks.Resources.NoRightsToDocument);
                return;
            }

            var document       = _obj.DocumentGroup.OfficialDocuments.First();
            var needStrongSign = _obj.Stage.NeedStrongSign ?? false;

            if (document.HasVersions && needStrongSign && !PublicFunctions.Module.Remote.GetCertificates(document).Any())
            {
                e.AddError(ApprovalTasks.Resources.CertificateNeeded);
                e.Cancel();
            }

            var assignees = new List <IRecipient>();

            if (_obj.Signatory != null)
            {
                assignees.Add(_obj.Signatory);
            }
            assignees.AddRange(_obj.AddApprovers.Where(a => a.Approver != null).Select(a => a.Approver));
            var accessRightsGranted = Functions.Module.ShowDialogGrantAccessRights(_obj, _obj.OtherGroup.All.ToList(), assignees);

            if (accessRightsGranted == false)
            {
                e.Cancel();
            }

            var confirmationMessage = e.Action.ConfirmationMessage;

            if (_obj.AddendaGroup.OfficialDocuments.Any())
            {
                confirmationMessage = Docflow.ApprovalAssignments.Resources.ApprovalConfirmationMessage;
            }
            if (accessRightsGranted == null && !Functions.ApprovalTask.ConfirmCompleteAssignment(document, confirmationMessage, Constants.ApprovalTask.ApprovalManagerAssignmentConfirmDialogID.Approved, false))
            {
                e.Cancel();
            }

            Functions.Module.EndorseDocument(_obj, true, needStrongSign, e);
        }
Ejemplo n.º 22
0
        /// <summary>
        /// Показать диалог выбора исполнителя доработки с запросом выдачи прав на вложения.
        /// </summary>
        /// <param name="assignment">Задание.</param>
        /// <param name="attachments">Вложения.</param>
        /// <param name="additionalAssignees">Дополнительные согласующие.</param>
        /// <param name="reworkPerformer">Ответственный за доработку.</param>
        /// <param name="e">Аргументы.</param>
        /// <param name="dialogId">Ид диалога.</param>
        public virtual void ShowReworkConfirmationDialog(IAssignmentBase assignment, List <Domain.Shared.IEntity> attachments,
                                                         List <IRecipient> additionalAssignees, Sungero.Company.IEmployee reworkPerformer,
                                                         Sungero.Workflow.Client.ExecuteResultActionArgs e, string dialogId)
        {
            if (reworkPerformer != null)
            {
                additionalAssignees.Add(reworkPerformer);
            }

            // Диалог выдачи прав (отображается, если нет прав на вложения).
            if (Functions.Module.ShowDialogGrantAccessRightsWithConfirmationDialog(_obj, attachments, additionalAssignees, e.Action, dialogId) == false)
            {
                e.Cancel();
            }
        }
Ejemplo n.º 23
0
        public virtual void ForRework(Sungero.Workflow.Client.ExecuteResultActionArgs e)
        {
            if (string.IsNullOrWhiteSpace(_obj.ActiveText))
            {
                e.AddError(StatusReportRequestTasks.Resources.ReportCommentNotFilled);
                return;
            }

            if (!Docflow.PublicFunctions.Module.ShowDialogGrantAccessRightsWithConfirmationDialog(_obj,
                                                                                                  _obj.OtherGroup.All.ToList(),
                                                                                                  e.Action,
                                                                                                  Constants.StatusReportRequestTask.ReportRequestCheckAssignmentConfirmDialogID.ForRework))
            {
                e.Cancel();
            }
        }
        public virtual void ForRework(Sungero.Workflow.Client.ExecuteResultActionArgs e)
        {
            // Проверить заполненность причины отказа.
            if (string.IsNullOrWhiteSpace(_obj.ActiveText))
            {
                e.AddError(DeadlineExtensionAssignments.Resources.RefusalReasonNotFilled);
                return;
            }

            // Замена стандартного диалога подтверждения выполнения действия.
            if (!Docflow.PublicFunctions.Module.ShowConfirmationDialog(e.Action.ConfirmationMessage, null, null,
                                                                       Constants.DeadlineExtensionTask.DeadlineExtensionAssignmentConfirmDialogID.ForRework))
            {
                e.Cancel();
            }
        }
Ejemplo n.º 25
0
        public virtual void Complete(Sungero.Workflow.Client.ExecuteResultActionArgs e)
        {
            if (!Functions.ApprovalTask.Remote.HasDocumentAndCanRead(ApprovalTasks.As(_obj.Task)))
            {
                e.AddError(ApprovalTasks.Resources.NoRightsToDocument);
                return;
            }

            var sendDialog = Functions.Module.ShowConfirmationDialogSendToCounterparty(_obj, _obj.CollapsedStagesTypesSen.Select(x => x.StageType), e);

            if (!Docflow.PublicFunctions.Module.ShowDialogGrantAccessRightsWithConfirmationDialog(_obj,
                                                                                                  _obj.OtherGroup.All.ToList(),
                                                                                                  sendDialog ? null : e.Action, Constants.ApprovalTask.ApprovalSendingAssignmentConfirmDialogID.Complete))
            {
                e.Cancel();
            }
        }
Ejemplo n.º 26
0
        public virtual void Approved(Sungero.Workflow.Client.ExecuteResultActionArgs e)
        {
            var accessRightsGranted = Functions.Module.ShowDialogGrantAccessRights(_obj, _obj.OtherGroup.All.ToList());

            if (accessRightsGranted == false)
            {
                e.Cancel();
            }

            if (accessRightsGranted == null && !Functions.FreeApprovalAssignment.ConfirmCompleteAssignment(_obj, e.Action))
            {
                e.Cancel();
            }

            // Подписание согласующей подписью с результатом "согласовано".
            Functions.Module.EndorseDocument(_obj, true, false, e);
        }
Ejemplo n.º 27
0
        public virtual void Forward(Sungero.Workflow.Client.ExecuteResultActionArgs e)
        {
            if (_obj.Addressee == null)
            {
                e.AddError(DocumentReviewTasks.Resources.CantRedirectWithoutAddressee);
                e.Cancel();
            }

            // Подтверждение удаления проекта резолюции.
            var hasActionItems = _obj.ResolutionGroup.ActionItemExecutionTasks.Any();
            var dropDialogId   = Constants.DocumentReviewTask.ReviewDraftResolutionAssignmentConfirmDialogID.ForwardWithDrop;

            if (hasActionItems)
            {
                var dropIsConfirmed = Docflow.PublicFunctions.Module.ShowConfirmationDialog(e.Action.ConfirmationMessage,
                                                                                            Resources.ConfirmDeleteDraftResolutionAssignment,
                                                                                            null, dropDialogId);
                if (!dropIsConfirmed)
                {
                    e.Cancel();
                }
            }

            // Запрос прав на группу "Дополнительно".
            var grandRightDialogResult = Docflow.PublicFunctions.Module
                                         .ShowDialogGrantAccessRights(_obj, _obj.OtherGroup.All.ToList(), new List <IRecipient>()
            {
                _obj.Addressee
            });

            if (grandRightDialogResult == false)
            {
                e.Cancel();
            }

            // Подтверждение выполнения действия.
            var dialogId = Constants.DocumentReviewTask.ReviewDraftResolutionAssignmentConfirmDialogID.Forward;

            if (!hasActionItems && grandRightDialogResult == null &&
                !Docflow.PublicFunctions.Module.ShowConfirmationDialog(e.Action.ConfirmationMessage, null, null, dialogId))
            {
                e.Cancel();
            }

            _obj.NeedDeleteActionItems = hasActionItems;
        }
Ejemplo n.º 28
0
        public virtual void Forward(Sungero.Workflow.Client.ExecuteResultActionArgs e)
        {
            if (_obj.Addressee == null)
            {
                e.AddError(DocumentReviewTasks.Resources.CantRedirectWithoutAddressee);
                e.Cancel();
            }

            // В качестве проектов резолюции нельзя отправить поручения-непроекты.
            if (_obj.ResolutionGroup.ActionItemExecutionTasks.Any(a => a.IsDraftResolution != true))
            {
                e.AddError(DocumentReviewTasks.Resources.FindNotDraftResolution);
                e.Cancel();
            }

            var hasActionItems = _obj.ResolutionGroup.ActionItemExecutionTasks.Any();

            if (hasActionItems)
            {
                var dropDialogId    = Constants.DocumentReviewTask.PreparingDraftResolutionAssignmentConfirmDialogID.ForwardWithDeletingDraftResolutions;
                var dropIsConfirmed = Docflow.PublicFunctions.Module.ShowConfirmationDialog(e.Action.ConfirmationMessage,
                                                                                            Resources.ConfirmDeleteDraftResolutionAssignment,
                                                                                            null, dropDialogId);

                if (!dropIsConfirmed)
                {
                    e.Cancel();
                }
            }

            var confirmDialogId = Constants.DocumentReviewTask.PreparingDraftResolutionAssignmentConfirmDialogID.Forward;

            if (!Docflow.PublicFunctions.Module.ShowDialogGrantAccessRightsWithConfirmationDialog(_obj,
                                                                                                  _obj.OtherGroup.All.ToList(),
                                                                                                  new List <IRecipient>()
            {
                _obj.Addressee
            },
                                                                                                  hasActionItems ? null : e.Action,
                                                                                                  confirmDialogId))
            {
                e.Cancel();
            }

            _obj.NeedDeleteActionItems = hasActionItems;
        }
Ejemplo n.º 29
0
        public virtual void Complete(Sungero.Workflow.Client.ExecuteResultActionArgs e)
        {
            if (!Functions.Module.HasCurrentUserExchangeServiceCertificate(_obj.Box))
            {
                e.AddError(Resources.CertificateNotFound);
                return;
            }

            // Замена стандартного диалога подтверждения выполнения действия.
            if (!Docflow.PublicFunctions.Module.ShowConfirmationDialog(e.Action.ConfirmationMessage, null, null,
                                                                       Constants.ReceiptNotificationSendingTask.ReceiptNotificationSendingAssignmentConfirmDialogID.Complete))
            {
                e.Cancel();
            }

            Functions.ReceiptNotificationSendingAssignment.SendReceiptNotification(_obj, e);
        }
Ejemplo n.º 30
0
        public virtual void ForRework(Sungero.Workflow.Client.ExecuteResultActionArgs e)
        {
            // Валидация заполненности активного текста.
            if (!Functions.FreeApprovalTask.ValidateBeforeRework(_obj, FreeApprovalTasks.Resources.NeedTextForRework, e))
            {
                e.Cancel();
            }

            if (!Functions.Module.ShowDialogGrantAccessRightsWithConfirmationDialog(_obj, _obj.OtherGroup.All.ToList(), e.Action,
                                                                                    Constants.FreeApprovalTask.FreeApprovalAssignmentConfirmDialogID.ForRework))
            {
                e.Cancel();
            }

            // Подписание согласующей подписью с результатом "не согласовано".
            Functions.Module.EndorseDocument(_obj, false, false, e);
        }