RegistrationSettingHandlers.cs
4.76 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
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using Sungero.Docflow.RegistrationSetting;
namespace Sungero.Docflow
{
partial class RegistrationSettingClientHandlers
{
public override void Showing(Sungero.Presentation.FormShowingEventArgs e)
{
var databooksWithNullCode = Functions.Module.Remote.HasDatabooksWithNullCode();
if (databooksWithNullCode.HasDepartmentWithNullCode)
e.Params.AddOrUpdate(Constants.RegistrationSetting.HasDepartmentWithNullCode, true);
if (databooksWithNullCode.HasBusinessUnitWithNullCode)
e.Params.AddOrUpdate(Constants.RegistrationSetting.HasBusinessUnitWithNullCode, true);
if (databooksWithNullCode.HasDocumentKindWithNullCode)
e.Params.AddOrUpdate(Constants.RegistrationSetting.HasDocumentKindWithNullCode, true);
}
public virtual IEnumerable<Enumeration> DocumentFlowFiltering(IEnumerable<Enumeration> query)
{
// Для входящих документов резервирование не имеет смысла.
// Исключить возможность выбора входящих документов для резервирования.
if (_obj.SettingType == SettingType.Reservation)
query = query.Where(df => !Equals(df, DocumentFlow.Incoming));
return query;
}
public override void Refresh(Sungero.Presentation.FormRefreshEventArgs e)
{
if (!e.IsValid)
return;
_obj.State.Properties.DocumentKinds.IsRequired = true;
_obj.State.Properties.DocumentRegister.IsEnabled = _obj.DocumentFlow != null;
_obj.State.Properties.DocumentKinds.IsEnabled = _obj.DocumentFlow != null;
if (_obj.AccessRights.CanUpdate() && !_obj.State.IsInserted &&
_obj.DocumentRegister != null && _obj.DocumentRegister.RegistrationGroup != null &&
!Functions.Module.CalculateParams(e, _obj.DocumentRegister.RegistrationGroup, true, true, false, false, null))
foreach (var property in _obj.State.Properties)
property.IsEnabled = false;
_obj.State.Properties.DocumentRegister.IsRequired = _obj.State.Properties.DocumentRegister.IsEnabled;
var register = _obj.DocumentRegister;
// Если в формате номера в журнале есть код подразделения, то проверять, что у всех указанных в настройке подразделений заполнены коды.
if (register != null)
{
if (register.NumberFormatItems.Any(f => f.Element == DocumentRegisterNumberFormatItems.Element.DepartmentCode))
{
var hasDepartmentsWithoutCode = _obj.Departments.Any() ?
_obj.Departments.Select(x => x.Department).Any(x => x.Code == null) :
e.Params.Contains(Constants.DocumentRegister.HasDepartmentWithNullCode);
if (hasDepartmentsWithoutCode)
e.AddWarning(DocumentRegisters.Resources.NeedFillDepartmentCodes, _obj.Info.Actions.ShowDepartments);
}
// Если в формате номера в журнале есть код НОР, то проверять, что у всех указанных в настройке НОР заполнены коды.
if (register.NumberFormatItems.Any(f => f.Element == DocumentRegisterNumberFormatItems.Element.BUCode))
{
var hasBusinessUnitsWithoutCode = _obj.BusinessUnits.Any() ?
_obj.BusinessUnits.Select(x => x.BusinessUnit).Any(x => x.Code == null) :
e.Params.Contains(Constants.DocumentRegister.HasBusinessUnitWithNullCode);
if (hasBusinessUnitsWithoutCode)
e.AddWarning(DocumentRegisters.Resources.NeedFillBusinessUnitCodes, _obj.Info.Actions.ShowBusinessUnits);
}
// Если в формате номера в журнале есть код вида документа, то проверять, что у всех указанных в настройке видов документа заполнены коды.
if (register.NumberFormatItems.Any(f => f.Element == DocumentRegisterNumberFormatItems.Element.DocKindCode))
{
var hasDocumentKindWithNullCode = false;
if (_obj.DocumentKinds.Any())
hasDocumentKindWithNullCode = _obj.DocumentKinds.Select(x => x.DocumentKind).Where(x => x.Code == null).Any();
else
hasDocumentKindWithNullCode = e.Params.Contains(Constants.DocumentRegister.HasDocumentKindWithNullCode);
if (hasDocumentKindWithNullCode)
e.AddWarning(DocumentRegisters.Resources.NeedFillDocumentKindCodes, _obj.Info.Actions.ShowDocumentKinds);
}
}
}
}
}