BankSharedFunctions.cs
5.38 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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using Sungero.Parties.Bank;
namespace Sungero.Parties.Shared
{
partial class BankFunctions
{
/// <summary>
/// Проверить корректность SWIFT.
/// </summary>
/// <param name="swift">SWIFT.</param>
/// <returns>Текст ошибки.
/// Для верного SWIFT - пустая строка.</returns>
[Public]
public static string CheckSwift(string swift)
{
if (string.IsNullOrWhiteSpace(swift))
return string.Empty;
swift = swift.Trim();
return System.Text.RegularExpressions.Regex.IsMatch(swift, @"(^[0-9A-Z]{8}$)|(^[0-9A-Z]{11}$)") ? string.Empty : Banks.Resources.IncorrectSwiftLength;
}
/// <summary>
/// Проверка БИК по количеству символов.
/// </summary>
/// <param name="bic">БИК.</param>
/// <returns>Пустая строка, если длина БИК в порядке.
/// Иначе текст ошибки.</returns>
[Public]
public static string CheckBicLength(string bic)
{
if (string.IsNullOrWhiteSpace(bic))
return string.Empty;
bic = bic.Trim();
return System.Text.RegularExpressions.Regex.IsMatch(bic, @"(^[0-9]{9}$)") ? string.Empty : Banks.Resources.IncorrectBicLength;
}
/// <summary>
/// Проверка корр. счета по количеству символов.
/// </summary>
/// <param name="corr">Корр. счет.</param>
/// <returns>Пустая строка, если длина корр. счета в порядке.
/// Иначе текст ошибки.</returns>
[Public]
public static string CheckCorrLength(string corr)
{
if (string.IsNullOrWhiteSpace(corr))
return string.Empty;
corr = corr.Trim();
return System.Text.RegularExpressions.Regex.IsMatch(corr, @"(^\d{20}$)") ? string.Empty : Banks.Resources.IncorrectCorrLength;
}
/// <summary>
/// Проверка корр. счета для нерезидента.
/// </summary>
/// <param name="corr">Корр. счет.</param>
/// <returns>Пустая строка, если корр. счет в порядке.
/// Иначе текст ошибки.</returns>
[Public]
public static string CheckCorrAccountForNonresident(string corr)
{
if (string.IsNullOrWhiteSpace(corr))
return string.Empty;
corr = corr.Trim();
return System.Text.RegularExpressions.Regex.IsMatch(corr, @"(^[0-9A-Z]*$)") ? string.Empty : Banks.Resources.IncorrectCorrNonresident;
}
/// <summary>
/// Предупреждение о банке с аналогичным БИКом.
/// </summary>
/// <returns>Текст предупреждения с наименованием банка.</returns>
[Public, Obsolete]
public virtual string GetBankWithSameBicWarning()
{
var bankSameBic = Functions.Bank.Remote.GetBanksWithSameBic(_obj, true);
if (bankSameBic.Any())
return Banks.Resources.SameBICFormat(bankSameBic.First());
return string.Empty;
}
/// <summary>
/// Получить текст ошибки о наличии дублей контрагента.
/// </summary>
/// <returns>Текст ошибки.</returns>
public override string GetCounterpartyDuplicatesErrorText()
{
var searchByBic = !string.IsNullOrWhiteSpace(_obj.BIC);
var searchBySwift = !string.IsNullOrWhiteSpace(_obj.SWIFT);
var foundByField = string.Empty;
if (_obj.Status == Sungero.CoreEntities.DatabookEntry.Status.Closed)
return base.GetCounterpartyDuplicatesErrorText();
var duplicates = new List<IBank>();
if (searchByBic)
{
duplicates.AddRange(Functions.Bank.Remote.GetBanksWithSameBic(_obj, true));
foundByField += _obj.Info.Properties.BIC.LocalizedName;
}
if (searchBySwift)
{
duplicates.AddRange(Functions.Bank.Remote.GetBanksWithSameSwift(_obj, true));
foundByField += searchByBic ? "/" + _obj.Info.Properties.SWIFT.LocalizedName : _obj.Info.Properties.SWIFT.LocalizedName;
}
if (duplicates.Any())
{
var firstDuplicate = duplicates.OrderByDescending(x => x.Id).First();
var duplicateTypeInNominative = GetTypeDisplayValue(firstDuplicate, CommonLibrary.DeclensionCase.Nominative);
return Banks.Resources.SameBicAndOrSwiftFormat(foundByField, duplicateTypeInNominative.ToLower(), firstDuplicate);
}
return base.GetCounterpartyDuplicatesErrorText();
}
/// <summary>
/// Получить банки, участвующие в договорах.
/// </summary>
/// <returns>Список ИД банков.</returns>
[Public]
public static List<int> GetBankIds()
{
return Functions.Bank.Remote.GetBankIdsServer();
}
/// <summary>
/// Установить обязательность свойств в зависимости от заполненных данных.
/// </summary>
[Public]
public void SetRequiredProperties()
{
var isNonresident = _obj.Nonresident == true;
_obj.State.Properties.BIC.IsRequired = !isNonresident;
_obj.State.Properties.SWIFT.IsRequired = isNonresident;
}
}
}