ContractConditionSharedFunctions.cs
3.52 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
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Contracts.ContractCondition;
using Sungero.Core;
using Sungero.CoreEntities;
using Sungero.Docflow;
namespace Sungero.Contracts.Shared
{
partial class ContractConditionFunctions
{
/// <summary>
/// Получить словарь поддерживаемых типов условий.
/// </summary>
/// <returns>
/// Словарь.
/// Ключ - GUID типа документа.
/// Значение - список поддерживаемых условий.
/// </returns>
public override System.Collections.Generic.Dictionary<string, List<Enumeration?>> GetSupportedConditions()
{
var baseConditions = base.GetSupportedConditions();
var contracts = Docflow.PublicFunctions.DocumentKind.GetDocumentGuids(typeof(IContractualDocumentBase));
var accountings = Docflow.PublicFunctions.DocumentKind.GetDocumentGuids(typeof(IAccountingDocumentBase));
var standards = Docflow.PublicFunctions.DocumentKind.GetDocumentGuids(typeof(IContractualDocument));
// Сумма, валюта, нерезидент - для всех договорных(базовых) и финансовых типов.
foreach (var typeGuid in contracts.Concat(accountings))
{
baseConditions[typeGuid].AddRange(new List<Enumeration?> { ConditionType.AmountIsMore,
ConditionType.Currency,
ConditionType.Nonresident });
}
// Условие типовой - только для договорных типов.
foreach (var typeGuid in standards)
baseConditions[typeGuid].Add(ConditionType.Standard);
return baseConditions;
}
/// <summary>
/// Проверить условие.
/// </summary>
/// <param name="document">Документ.</param>
/// <param name="task">Задача на согласование.</param>
/// <returns>True, если условие выполняется, и false - если не выполняется.</returns>
public override Docflow.Structures.ConditionBase.ConditionResult CheckCondition(IOfficialDocument document, IApprovalTask task)
{
if (_obj.ConditionType == ConditionType.Standard)
return this.CheckStandard(document, task);
return base.CheckCondition(document, task);
}
/// <summary>
/// Проверить условие "Типовой".
/// </summary>
/// <param name="document">Документ.</param>
/// <param name="task">Задача на согласование.</param>
/// <returns>True, если документ типовой.</returns>
private Docflow.Structures.ConditionBase.ConditionResult CheckStandard(IOfficialDocument document, IApprovalTask task)
{
if (Sungero.Contracts.ContractualDocuments.Is(document))
{
var contractualDocument = Sungero.Contracts.ContractualDocuments.As(document);
if (!contractualDocument.IsStandard.HasValue)
return Docflow.Structures.ConditionBase.ConditionResult.Create(null, ContractConditions.Resources.TheStandardIsNotFilledInContractCard);
return Docflow.Structures.ConditionBase.ConditionResult.Create(contractualDocument.IsStandard.Value, string.Empty);
}
return Docflow.Structures.ConditionBase.ConditionResult.Create(null, ContractConditions.Resources.StandardFormPropertyCanBeCheckedOnlyForContracts);
}
}
}