ruby_ufebs 0.2.19 → 0.2.20
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/ufebs/documents/package.rb +17 -8
- data/lib/ufebs/documents/payment_order.rb +5 -1
- data/lib/ufebs/entities/ed_info.rb +26 -0
- data/lib/ufebs/entities/processing_details.rb +3 -2
- data/lib/ufebs/entities/session.rb +11 -2
- data/lib/ufebs/requests/group_status_answer.rb +54 -0
- data/lib/ufebs/requests/negative_status_notification.rb +4 -3
- data/lib/ufebs/requests/receipt.rb +5 -4
- data/lib/ufebs/version.rb +1 -1
- data/lib/ufebs.rb +75 -65
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1d3c1f68438ac107f636161af2a6ac45ed75ce8e1bdff4dba5a875ef42a433ab
|
4
|
+
data.tar.gz: 57ceac1b56e7be8cd87285f71518ceed7b3a24f6d6a5fdedf57f1d51d414d0fd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5ea377537e98ed3d0562f835d41671f8593467c5ee74a8fabd9d67563a638d7c23d773634d09690e92eb08bd41bb933b966359ceaa95259e32efd280129470f5
|
7
|
+
data.tar.gz: a0b2a79b5a0c53b709bd73eecb71f2d87155e869631652702fc03d624d91a673abdf3b9b86a339b333567cf0891949b11385bbdddf045f48ad474a25b33cc9ff
|
@@ -4,25 +4,33 @@ require_relative '../entities/session'
|
|
4
4
|
module Ufebs
|
5
5
|
module Documents
|
6
6
|
class Package
|
7
|
+
SYSTEM_CODE = '02'.freeze
|
8
|
+
|
7
9
|
include HappyMapper
|
8
10
|
SYSTEM_CODE = '02'
|
9
11
|
register_namespace 'ed', "urn:cbr-ru:ed:v2.0"
|
10
12
|
tag 'PacketEPD'
|
11
13
|
namespace 'ed'
|
12
14
|
|
13
|
-
attribute :ed_date,
|
14
|
-
attribute :ed_author,
|
15
|
+
attribute :ed_date, String, tag: 'EDDate'
|
16
|
+
attribute :ed_author, String, tag: 'EDAuthor'
|
15
17
|
attribute :ed_receiver, String, tag: 'EDReceiver'
|
16
|
-
attribute :number,
|
17
|
-
attribute :quantity,
|
18
|
-
attribute :sum,
|
18
|
+
attribute :number, String, tag: 'EDNo'
|
19
|
+
attribute :quantity, String, tag: 'EDQuantity'
|
20
|
+
attribute :sum, String, tag: 'Sum'
|
19
21
|
attribute :system_code, String, tag: 'SystemCode'
|
20
22
|
|
21
|
-
has_many :payment_orders,
|
22
|
-
|
23
|
+
has_many :payment_orders,
|
24
|
+
::Ufebs::Documents::PaymentOrder
|
25
|
+
|
26
|
+
has_one :session,
|
27
|
+
::Ufebs::Entities::Session,
|
28
|
+
tag: 'Session',
|
29
|
+
state_when_nil: false
|
23
30
|
|
24
|
-
def initialize(payment_orders=[], params = {})
|
31
|
+
def initialize(payment_orders = [], params = {})
|
25
32
|
@payment_orders = payment_orders
|
33
|
+
|
26
34
|
@ed_date = Date.parse(params.fetch(:ed_date){Time.now}.to_s).strftime('%Y-%m-%d')
|
27
35
|
@ed_author = params[:ed_author]
|
28
36
|
@ed_receiver = params[:ed_receiver]
|
@@ -30,6 +38,7 @@ module Ufebs
|
|
30
38
|
@quantity = params[:quantity] || payment_orders.size
|
31
39
|
@sum = params[:sum]
|
32
40
|
@system_code = params.fetch(:system_code) { SYSTEM_CODE }
|
41
|
+
|
33
42
|
super()
|
34
43
|
end
|
35
44
|
|
@@ -1,4 +1,3 @@
|
|
1
|
-
require_relative '../entities/bank'
|
2
1
|
require_relative '../entities/acc_doc'
|
3
2
|
require_relative '../entities/departmental_info'
|
4
3
|
require_relative '../entities/participant'
|
@@ -27,6 +26,7 @@ module Ufebs
|
|
27
26
|
attribute :receipt_date, String, tag: 'ReceiptDate'
|
28
27
|
attribute :system_code, String, tag: 'SystemCode'
|
29
28
|
attribute :priority, String, tag: 'Priority'
|
29
|
+
attribute :payment_precedence, String, tag: 'PaymentPrecedence'
|
30
30
|
has_one :acc_doc, ::Ufebs::Entities::AccDoc, tag: 'AccDoc'
|
31
31
|
has_one :payer, ::Ufebs::Entities::Participant, tag: 'Payer'
|
32
32
|
has_one :payee, ::Ufebs::Entities::Participant, tag: 'Payee'
|
@@ -57,6 +57,9 @@ module Ufebs
|
|
57
57
|
purpose: '',
|
58
58
|
uin: nil,
|
59
59
|
payt_kind: nil,
|
60
|
+
payment_precedence: nil,
|
61
|
+
processing_details: nil,
|
62
|
+
|
60
63
|
system_code: SYSTEM_CODE,
|
61
64
|
departmental_info: nil
|
62
65
|
)
|
@@ -75,6 +78,7 @@ module Ufebs
|
|
75
78
|
@departmental_info = departmental_info.is_a?(Hash) ? Ufebs::Entities::DepartmentalInfo.new(departmental_info) : departmental_info
|
76
79
|
@uin = uin
|
77
80
|
@payt_kind = payt_kind
|
81
|
+
@payment_precedence = payment_precedence
|
78
82
|
|
79
83
|
@ed_author = ed_author
|
80
84
|
@type_number = DOCUMENT_NUMBER_TYPE
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require_relative 'ed_ref_id'
|
2
|
+
|
3
|
+
module Ufebs
|
4
|
+
module Entities
|
5
|
+
class EdInfo
|
6
|
+
include HappyMapper
|
7
|
+
register_namespace 'ed', 'urn:cbr-ru:ed:v2.0'
|
8
|
+
namespace 'ed'
|
9
|
+
tag 'EDInfo'
|
10
|
+
|
11
|
+
attribute :sum, String, tag: 'Sum'
|
12
|
+
|
13
|
+
has_one :ed_ref_id,
|
14
|
+
::Ufebs::Entities::EdRefId
|
15
|
+
|
16
|
+
def initialize(params = {})
|
17
|
+
params.each do |key, value|
|
18
|
+
case key.to_sym
|
19
|
+
when :ed_ref_id then @ed_ref_id = Ufebs::Entities::EdRefId.new(value)
|
20
|
+
else instance_variable_set("@#{key}".to_sym, value)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -12,9 +12,10 @@ module Ufebs
|
|
12
12
|
attribute :credit_date, String, tag: 'CreditDate'
|
13
13
|
has_one :session, ::Ufebs::Entities::Session, tag: 'Session', state_when_nil: false
|
14
14
|
|
15
|
-
def initialize(debit_date: Time.now, credit_date: Time.now)
|
16
|
-
@debit_date
|
15
|
+
def initialize(debit_date: Time.now, credit_date: Time.now, session: nil)
|
16
|
+
@debit_date = Date.parse(debit_date.to_s).strftime('%Y-%m-%d')
|
17
17
|
@credit_date = Date.parse(credit_date.to_s).strftime('%Y-%m-%d')
|
18
|
+
@session = session.is_a?(Hash) ? ::Ufebs::Entities::Session.new(session) : session
|
18
19
|
end
|
19
20
|
end
|
20
21
|
end
|
@@ -7,10 +7,19 @@ module Ufebs
|
|
7
7
|
register_namespace 'ed', "urn:cbr-ru:ed:v2.0"
|
8
8
|
namespace 'ed'
|
9
9
|
|
10
|
+
attribute :session_type, String, tag: 'SessionType'
|
11
|
+
|
10
12
|
element :session_id, String, tag: 'SessionID'
|
13
|
+
element :settlement_time, String, tag: 'SettlementTime'
|
11
14
|
|
12
|
-
def initialize(
|
13
|
-
|
15
|
+
def initialize(params = {})
|
16
|
+
params.each do |key, value|
|
17
|
+
case key.to_sym
|
18
|
+
when :session_id then @session_id = value
|
19
|
+
when :session_type then @session_type = value
|
20
|
+
when :settlement_time then @settlement_time = value
|
21
|
+
end
|
22
|
+
end
|
14
23
|
end
|
15
24
|
end
|
16
25
|
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module Ufebs
|
2
|
+
module Requests
|
3
|
+
class GroupStatusAnswer
|
4
|
+
include HappyMapper
|
5
|
+
register_namespace 'ed', 'urn:cbr-ru:ed:v2.0'
|
6
|
+
tag 'ED207'
|
7
|
+
namespace 'ed'
|
8
|
+
|
9
|
+
attribute :ed_author, String, tag: 'EDAuthor'
|
10
|
+
attribute :ed_date, String, tag: 'EDDate'
|
11
|
+
attribute :ed_no, String, tag: 'EDNo'
|
12
|
+
attribute :ed_receiver, String, tag: 'EDReceiver'
|
13
|
+
attribute :status_code, String, tag: 'StatusCode'
|
14
|
+
attribute :quantity_ed, String, tag: 'QuantityED'
|
15
|
+
attribute :sum, String, tag: 'Sum'
|
16
|
+
attribute :ed_day_no, String, tag: 'EDDayNo'
|
17
|
+
|
18
|
+
has_one :initial_ed,
|
19
|
+
Ufebs::Entities::EdRefId,
|
20
|
+
tag: 'InitialED'
|
21
|
+
|
22
|
+
has_many :ed_infos, tag: 'EDInfo'
|
23
|
+
|
24
|
+
def initialize(params = {})
|
25
|
+
params.each do |key, value|
|
26
|
+
case key.to_sym
|
27
|
+
when :initial_ed then @initial_ed = Ufebs::Entities::EdRefId.new(value)
|
28
|
+
when :ed_infos then @ed_infos = set_ed_infos(value)
|
29
|
+
else instance_variable_set("@#{key}".to_sym, value)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def set_ed_infos(value)
|
35
|
+
value.map { |params| Ufebs::Entities::EdInfo.new(params) }
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
# <?xml version="1.0" encoding="WINDOWS-1251"?>
|
42
|
+
# <ED207 xmlns="urn:cbr-ru:ed:v2.0"
|
43
|
+
# EDNo="90" EDDate="2018-07-16" EDAuthor="4583001999"
|
44
|
+
# EDReceiver="4525545000"
|
45
|
+
# StatusCode="01" QuantityED="2" Sum="6000000" EDDayNo="10">
|
46
|
+
# <InitialED EDNo="9" EDDate="2018-07-16"
|
47
|
+
# EDAuthor="4525545000"></InitialED>
|
48
|
+
# <EDInfo Sum="2400000">
|
49
|
+
# <EDRefID EDNo="7" EDDate="2018-07-16" EDAuthor="4525545000"/>
|
50
|
+
# </EDInfo>
|
51
|
+
# <EDInfo Sum="3600000">
|
52
|
+
# <EDRefID EDNo="16" EDDate="2018-07-16" EDAuthor="4525545000"/>
|
53
|
+
# </EDInfo>
|
54
|
+
# </ED207>
|
@@ -10,9 +10,10 @@ module Ufebs
|
|
10
10
|
tag 'ED201'
|
11
11
|
namespace 'ed'
|
12
12
|
|
13
|
-
attribute :ctrl_code,
|
14
|
-
attribute :ctrl_time,
|
15
|
-
element :annotation,
|
13
|
+
attribute :ctrl_code, String, tag: 'CtrlCode'
|
14
|
+
attribute :ctrl_time, String, tag: 'CtrlTime'
|
15
|
+
element :annotation, String, tag: 'Annotation'
|
16
|
+
element :error_diagnostic, String, tag: 'ErrorDiagnostic'
|
16
17
|
|
17
18
|
has_one :ed_ref_id, ::Ufebs::Entities::EdRefId
|
18
19
|
|
@@ -30,10 +30,11 @@ module Ufebs
|
|
30
30
|
def initialize(params = {})
|
31
31
|
params.each do |key, value|
|
32
32
|
case key.to_sym
|
33
|
-
when :abstract_date
|
34
|
-
when :end_time
|
35
|
-
when :last_movet_date
|
36
|
-
when :trans_infos
|
33
|
+
when :abstract_date then @abstract_date = Date.parse(value.to_s).strftime('%Y-%m-%d')
|
34
|
+
when :end_time then @end_time = DateTime.parse(value.to_s).strftime('%H:%M:%S')
|
35
|
+
when :last_movet_date then @last_movet_date = Date.parse(value.to_s).strftime('%Y-%m-%d')
|
36
|
+
when :trans_infos then @trans_infos = set_trans_infos(value)
|
37
|
+
when :processing_details then @processing_details = Ufebs::Entities::ProcessingDetails.new(value)
|
37
38
|
else instance_variable_set("@#{key}".to_sym, value)
|
38
39
|
end
|
39
40
|
end
|
data/lib/ufebs/version.rb
CHANGED
data/lib/ufebs.rb
CHANGED
@@ -39,71 +39,6 @@ module Ufebs
|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
|
-
def ED201(params)
|
43
|
-
Ufebs::Requests::NegativeStatusNotification.parse(params)
|
44
|
-
end
|
45
|
-
|
46
|
-
def ED208(params)
|
47
|
-
Ufebs::Requests::PositiveStatusNotification.parse(params)
|
48
|
-
end
|
49
|
-
|
50
|
-
# XML запрос-зонд
|
51
|
-
# @param params [Hash]
|
52
|
-
# @option :number аттрибут EDNo
|
53
|
-
# @option :ed_date аттрибут EDDate
|
54
|
-
# @option :ed_author аттрибут EDAuthor
|
55
|
-
def ED999(params)
|
56
|
-
Ufebs::Requests::TestRequest.new(params)
|
57
|
-
end
|
58
|
-
|
59
|
-
def ED210(params)
|
60
|
-
end
|
61
|
-
|
62
|
-
def ED205(params)
|
63
|
-
Ufebs::Requests::StatusAnswer.parse(params)
|
64
|
-
end
|
65
|
-
|
66
|
-
# Создание/Парсинг выписки ED211
|
67
|
-
# @example Пример
|
68
|
-
# ed211 = Ufebs::Requests::Receipt.new(
|
69
|
-
# number: '8',
|
70
|
-
# ed_date: '2003-04-14',
|
71
|
-
# ed_author: '4525545000',
|
72
|
-
# ed_receiver: '4525000000',
|
73
|
-
# abstract_date: Date.today,
|
74
|
-
# abstract_kind: '1',
|
75
|
-
# acc: '30101810945250000420',
|
76
|
-
# bic: '044525000',
|
77
|
-
# end_time: '00:47:07',
|
78
|
-
# enter_bal: '72619100',
|
79
|
-
# inquiry_session: '0',
|
80
|
-
# last_movet_date: Date.today,
|
81
|
-
# out_bal: '72619100',
|
82
|
-
# rtgs_unconfirmed_ed: '0'
|
83
|
-
# )
|
84
|
-
def ED211(params)
|
85
|
-
params.is_a?(Hash) ? Ufebs::Requests::Receipt.new(params) : Ufebs::Requests::Receipt.parse(params)
|
86
|
-
end
|
87
|
-
|
88
|
-
def ED243(params)
|
89
|
-
if params.is_a?(Hash)
|
90
|
-
Ufebs::Requests::DefineRequest.new(params)
|
91
|
-
else
|
92
|
-
Ufebs::Requests::DefineRequest.parse(params)
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
def ED218(params)
|
97
|
-
end
|
98
|
-
|
99
|
-
def ED244(params)
|
100
|
-
if params.is_a?(Hash)
|
101
|
-
Ufebs::Requests::DefineAnswer.new(params)
|
102
|
-
else
|
103
|
-
Ufebs::Requests::DefineAnswer.parse(params)
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
42
|
# Создание XML по формату ED101(Платежное поручение)
|
108
43
|
# @param params [Hash, String] Hash значений документа или его строковое представление в виде XML
|
109
44
|
# @option params [Integer] :number номер документа аттрибут EDNo
|
@@ -168,6 +103,15 @@ module Ufebs
|
|
168
103
|
params.is_a?(Hash) ? Ufebs::Documents::PaymentOrder.new(params) : Ufebs::Documents::PaymentOrder.parse(params)
|
169
104
|
end
|
170
105
|
|
106
|
+
|
107
|
+
def ED201(params)
|
108
|
+
Ufebs::Requests::NegativeStatusNotification.parse(params)
|
109
|
+
end
|
110
|
+
|
111
|
+
def ED205(params)
|
112
|
+
Ufebs::Requests::StatusAnswer.parse(params)
|
113
|
+
end
|
114
|
+
|
171
115
|
def ED104(params)
|
172
116
|
params.is_a?(Hash) ? Ufebs::Documents::InvoiceOrder.new(params) : Ufebs::Documents::InvoiceOrder.parse(params)
|
173
117
|
end
|
@@ -181,6 +125,72 @@ module Ufebs
|
|
181
125
|
Ufebs::Documents::PaymentResponse.parse(params)
|
182
126
|
end
|
183
127
|
|
128
|
+
def ED207(params)
|
129
|
+
return Ufebs::Requests::GroupStatusAnswer.new(params) if params.is_a?(Hash)
|
130
|
+
Ufebs::Requests::GroupStatusAnswer.parse(params)
|
131
|
+
end
|
132
|
+
|
133
|
+
def ED208(params)
|
134
|
+
Ufebs::Requests::PositiveStatusNotification.parse(params)
|
135
|
+
end
|
136
|
+
|
137
|
+
def ED210(params)
|
138
|
+
end
|
139
|
+
|
140
|
+
# Создание/Парсинг выписки ED211
|
141
|
+
# @example Пример
|
142
|
+
# ed211 = Ufebs::Requests::Receipt.new(
|
143
|
+
# number: '8',
|
144
|
+
# ed_date: '2003-04-14',
|
145
|
+
# ed_author: '4525545000',
|
146
|
+
# ed_receiver: '4525000000',
|
147
|
+
# abstract_date: Date.today,
|
148
|
+
# abstract_kind: '1',
|
149
|
+
# acc: '30101810945250000420',
|
150
|
+
# bic: '044525000',
|
151
|
+
# end_time: '00:47:07',
|
152
|
+
# enter_bal: '72619100',
|
153
|
+
# inquiry_session: '0',
|
154
|
+
# last_movet_date: Date.today,
|
155
|
+
# out_bal: '72619100',
|
156
|
+
# rtgs_unconfirmed_ed: '0'
|
157
|
+
# )
|
158
|
+
def ED211(params)
|
159
|
+
params.is_a?(Hash) ? Ufebs::Requests::Receipt.new(params) : Ufebs::Requests::Receipt.parse(params)
|
160
|
+
end
|
161
|
+
|
162
|
+
def ED218(params)
|
163
|
+
end
|
164
|
+
|
165
|
+
def ED243(params)
|
166
|
+
if params.is_a?(Hash)
|
167
|
+
Ufebs::Requests::DefineRequest.new(params)
|
168
|
+
else
|
169
|
+
Ufebs::Requests::DefineRequest.parse(params)
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
def ED244(params)
|
174
|
+
if params.is_a?(Hash)
|
175
|
+
Ufebs::Requests::DefineAnswer.new(params)
|
176
|
+
else
|
177
|
+
Ufebs::Requests::DefineAnswer.parse(params)
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
181
|
+
# XML запрос-зонд
|
182
|
+
# @param params [Hash]
|
183
|
+
# @option :number аттрибут EDNo
|
184
|
+
# @option :ed_date аттрибут EDDate
|
185
|
+
# @option :ed_author аттрибут EDAuthor
|
186
|
+
def ED999(params)
|
187
|
+
Ufebs::Requests::TestRequest.new(params)
|
188
|
+
end
|
189
|
+
|
190
|
+
def PacketEPD(payment_eds, params)
|
191
|
+
Ufebs::Documents::Package.new(payment_eds, params)
|
192
|
+
end
|
193
|
+
|
184
194
|
def PacketESID(params)
|
185
195
|
Ufebs::Documents::PackageResponse.parse(params)
|
186
196
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_ufebs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.20
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Evgeniy Burdaev
|
@@ -404,6 +404,7 @@ files:
|
|
404
404
|
- lib/ufebs/entities/ed_define_answer_info.rb
|
405
405
|
- lib/ufebs/entities/ed_define_request_info.rb
|
406
406
|
- lib/ufebs/entities/ed_field_list.rb
|
407
|
+
- lib/ufebs/entities/ed_info.rb
|
407
408
|
- lib/ufebs/entities/ed_reestr_info.rb
|
408
409
|
- lib/ufebs/entities/ed_ref_id.rb
|
409
410
|
- lib/ufebs/entities/initial_packet.rb
|
@@ -417,6 +418,7 @@ files:
|
|
417
418
|
- lib/ufebs/requests/define_answer.rb
|
418
419
|
- lib/ufebs/requests/define_request.rb
|
419
420
|
- lib/ufebs/requests/group_request.rb
|
421
|
+
- lib/ufebs/requests/group_status_answer.rb
|
420
422
|
- lib/ufebs/requests/negative_status_notification.rb
|
421
423
|
- lib/ufebs/requests/package_request.rb
|
422
424
|
- lib/ufebs/requests/positive_status_notification.rb
|