ApprovalRuleBaseHandlers.cs
6.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using Sungero.Docflow.ApprovalRuleBase;
namespace Sungero.Docflow
{
partial class ApprovalRuleBaseClientHandlers
{
public virtual void ReworkDeadlineValueInput(Sungero.Presentation.IntegerValueInputEventArgs e)
{
if (e.NewValue.HasValue && e.NewValue <= 0)
e.AddError(Sungero.Docflow.ApprovalRuleBases.Resources.IncorrectReworkDeadline);
if (e.NewValue.HasValue && e.NewValue > Docflow.Constants.ApprovalRuleBase.MaxReworkDeadline)
e.AddError(Sungero.Docflow.ApprovalRuleBases.Resources.IncorrectMaxReworkDeadlineFormat(Docflow.Constants.ApprovalRuleBase.MaxReworkDeadline));
}
public override void Refresh(Sungero.Presentation.FormRefreshEventArgs e)
{
var hintsInfo = 0;
if (!e.Params.TryGetValue(Constants.ApprovalRuleBase.HintsInfoParam, out hintsInfo))
{
hintsInfo = Functions.ApprovalRuleBase.Remote.CanRegisterAndHasTaskInProcess(_obj);
e.Params.Add(Constants.ApprovalRuleBase.HintsInfoParam, hintsInfo);
}
var сanRegister = Constants.ApprovalRuleBase.HintMask.CanRegister == (hintsInfo & Constants.ApprovalRuleBase.HintMask.CanRegister);
var hasTasksInProcess = Constants.ApprovalRuleBase.HintMask.HasTaskInProcess == (hintsInfo & Constants.ApprovalRuleBase.HintMask.HasTaskInProcess);
_obj.State.Controls.FlowChart.IsEnabled = !hasTasksInProcess;
if (!_obj.State.Controls.FlowChart.IsInitialized)
{
_obj.State.Controls.FlowChart.Blocks.Bind(_obj.Stages,
_obj.Info.Properties.Stages.Properties.Number,
FlowchartBlockType.Process,
Docflow.Client.ApprovalRuleBaseFunctions.GetStageIcon,
Docflow.Client.ApprovalRuleBaseFunctions.GetPlaceHolder);
_obj.State.Controls.FlowChart.Blocks.Bind(_obj.Conditions, _obj.Info.Properties.Conditions.Properties.Number, FlowchartBlockType.Condition);
_obj.State.Controls.FlowChart.Edges.Bind(_obj.Transitions,
_obj.Info.Properties.Transitions.Properties.SourceStage,
_obj.Info.Properties.Transitions.Properties.TargetStage,
_obj.Info.Properties.Transitions.Properties.ConditionValue);
_obj.State.Controls.FlowChart.Blocks.Actions.Add(_obj.Info.Actions.ChartConfigStage);
_obj.State.Controls.FlowChart.Blocks.Actions.Add(_obj.Info.Actions.ChartConfigCondition);
// Если нет прав на изменение или правило заблокировано другим пользователем
// или по правилу есть задачи в работе, то добавлять действия не надо.
if (_obj.AccessRights.CanUpdate() &&
(_obj.State.IsInserted || (Locks.GetLockInfo(_obj) != null && Locks.GetLockInfo(_obj).IsLockedByMe)) &&
!hasTasksInProcess)
{
_obj.State.Controls.FlowChart.Blocks.Actions.Add(_obj.Info.Actions.ChartSelectStage);
_obj.State.Controls.FlowChart.Blocks.Actions.Add(_obj.Info.Actions.ChartDeleteStage);
_obj.State.Controls.FlowChart.Blocks.Actions.Add(_obj.Info.Actions.ChartDeleteCondition);
_obj.State.Controls.FlowChart.Actions.Add(ApprovalRuleBases.Resources.ChartGroupConditions, FlowchartBlockType.Condition, _obj.Info.Actions.ChartAddCondition);
_obj.State.Controls.FlowChart.Actions.Add(ApprovalRuleBases.Resources.ChartGroupApproval,
_obj.Info.Actions.ChartAddManagerStage,
_obj.Info.Actions.ChartAddApproversStage,
_obj.Info.Actions.ChartAddSignStage,
_obj.Info.Actions.ChartAddReviewStage);
_obj.State.Controls.FlowChart.Actions.Add(ApprovalRuleBases.Resources.ChartGroupDocumentHandling,
_obj.Info.Actions.ChartAddPrintStage,
_obj.Info.Actions.ChartAddRegisterStage,
_obj.Info.Actions.ChartAddExecutionStage,
_obj.Info.Actions.ChartAddSimpleAgrStage,
_obj.Info.Actions.ChartAddNoticeStage,
_obj.Info.Actions.ChartAddFunctionStage);
_obj.State.Controls.FlowChart.Actions.Add(ApprovalRuleBases.Resources.ChartGroupCounterpartyEndorsing,
_obj.Info.Actions.ChartAddSendingStage,
_obj.Info.Actions.ChartAddControlReturnStage);
}
}
if (_obj.ParentRule != null)
_obj.State.Properties.DocumentFlow.IsEnabled = false;
if (_obj.Status == ApprovalRuleBase.Status.Closed)
_obj.State.Properties.Name.IsEnabled = false;
Functions.ApprovalRuleBase.SetStateProperties(_obj);
// Если нет прав на изменение, то хинты выводить не надо.
if (!_obj.AccessRights.CanUpdate())
return;
if (!сanRegister)
e.AddWarning(ApprovalRuleBases.Resources.CantRegisterAllDocumentKinds);
if (!(_obj.State.IsInserted || _obj.State.IsCopied) && hasTasksInProcess)
{
e.AddInformation(ApprovalRuleBases.Resources.RuleHasTasksInProcess, _obj.Info.Actions.CreateVersion);
_obj.State.Properties.Stages.IsEnabled = false;
_obj.State.Properties.Conditions.IsEnabled = false;
_obj.State.Properties.Transitions.IsEnabled = false;
_obj.State.Properties.DocumentFlow.IsEnabled = false;
e.Params.AddOrUpdate(Constants.ApprovalRuleBase.CanEditSchema, false);
}
}
}
}