wire_client 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7fe3d4be5caa3ebae64c94b38c977bd67e8abcbbb7d9a46d1de9996b61991471
4
- data.tar.gz: 1e55ddca145585809e267c61fc6f489ea0f4b6295832c26d1ec9bb61743f9254
3
+ metadata.gz: 2e53215215f03709ef8df3daa7fa130af6d57ceefc4c1bcb3aaec38d679ae007
4
+ data.tar.gz: a68bab84ea944f30839b31773aba3eaccaebea3f529788b40ad77541cd0ebdae
5
5
  SHA512:
6
- metadata.gz: e177224667d221c78644bddd1184a8f9fdf0684f453afbd6a38ecac79047bd12d1226cca96ed636ba1f86f01cd861cb449f488d46a7e45801356a570b0cab5e5
7
- data.tar.gz: 8122ad4427363ad9f8c6a82d82856320cdef75d0043736dab0f93e399b36ed8730363bb0f5fb933d2649325185cf410089b753970da43352bf6b03730d03a3ad
6
+ metadata.gz: 153180ab9e2aac835e68d27e19b5190de1ed74c250d26a91af34ecff6aedcc5cad605fb33d0e03be4f46a180a39d2281bc49749fe68a899c4e6303cfe16371a5
7
+ data.tar.gz: f73d31053413ea8188d168fd874ba66a537b8369e30d4c608170fb581cb974893b79301e71b557dd5defdb6120c1d13b1d89ab2ef4d8497ca0dd580a9ae66323
@@ -1,9 +1,11 @@
1
1
  require_relative '../base/converters'
2
2
  require_relative '../base/validators'
3
+ require_relative '../base/account_transaction_helpers'
3
4
 
4
5
  module WireClient
5
6
  class Account
6
7
  include ActiveModel::Validations
8
+ include AccountTransactionHelpers
7
9
  extend Converter
8
10
 
9
11
  attr_accessor :name,
@@ -12,21 +14,25 @@ module WireClient
12
14
  :account_number,
13
15
  :wire_routing_number,
14
16
  :clear_system_code,
17
+ :postal_code,
18
+ :address_line,
19
+ :city,
20
+ :country_subdivision,
21
+ :country,
22
+ :currency,
15
23
  :schema_code,
16
24
  :identifier,
17
- :country,
18
- :country_subdivision,
19
- :charge_bearer,
20
- :currency
25
+ :charge_bearer
21
26
 
22
27
  convert :name, to: :text
28
+ validates_length_of :currency, is: 3
23
29
  validates_length_of :name, within: 1..70
24
30
  validates_with CurrencyValidator,
25
31
  CountryValidator,
26
32
  CountrySubdivisionValidator,
27
- CreditorIdentifierValidator,
28
33
  BICValidator,
29
34
  IBANValidator,
35
+ CreditorIdentifierValidator,
30
36
  message: "%{value} is invalid"
31
37
 
32
38
  def initialize(attributes = {})
@@ -35,25 +41,14 @@ module WireClient
35
41
  end
36
42
 
37
43
  @currency ||= 'USD'
44
+ @postal_code ||= 'NA'
45
+ @address_line ||= 'NA'
46
+ @city ||= 'NA'
38
47
  @country ||= 'US'
39
48
  @country_subdivision ||= 'MA' if self.country == 'US'
40
49
  @schema_code ||= 'CUST'
41
50
  @clear_system_code ||= 'USABA'
42
51
  custom_defaults if self.respond_to? :custom_defaults
43
52
  end
44
-
45
- def country_subdivision_abbr
46
- if @country == 'US' && !@country_subdivision.match(/\A[A-Z]{2,2}\z/)
47
- return US_STATES[@country_subdivision]
48
- end
49
- @country_subdivision
50
- end
51
-
52
- def country_subdivision_name
53
- if @country == 'US' && @country_subdivision.match(/\A[A-Z]{2,2}\z/)
54
- return US_STATES.key(@country_subdivision)
55
- end
56
- @country_subdivision
57
- end
58
53
  end
59
54
  end
@@ -0,0 +1,31 @@
1
+ module WireClient
2
+ module AccountTransactionHelpers
3
+ def country_subdivision_abbr
4
+ return US_STATES[@country_subdivision] if a_full_name_us_state?
5
+ @country_subdivision
6
+ end
7
+
8
+ def country_subdivision_name
9
+ return US_STATES.key(@country_subdivision) if an_abbreviated_us_state?
10
+ @country_subdivision
11
+ end
12
+
13
+ protected
14
+
15
+ def within_the_us?
16
+ @country == 'US'
17
+ end
18
+
19
+ def an_abrreviated_state_name?
20
+ @country_subdivision.match(/\A[A-Z]{2,2}\z/)
21
+ end
22
+
23
+ def an_abbreviated_us_state?
24
+ within_the_us? && an_abrreviated_state_name?
25
+ end
26
+
27
+ def a_full_name_us_state?
28
+ within_the_us? && !an_abrreviated_state_name?
29
+ end
30
+ end
31
+ end
@@ -29,7 +29,9 @@ module WireClient
29
29
  builder.PmtInf do
30
30
  builder.PmtInfId(payment_information_identification(group))
31
31
  builder.PmtMtd('TRF')
32
+ builder.BtchBookg(group[:batch_booking])
32
33
  builder.NbOfTxs(transactions.length)
34
+ builder.CtrlSum('%.2f' % amount_total(transactions))
33
35
  builder.PmtTpInf do
34
36
  builder.InstrPrty(group[:service_priority])
35
37
  builder.SvcLvl do
@@ -37,13 +39,10 @@ module WireClient
37
39
  end
38
40
  end
39
41
  builder.ReqdExctnDt(group[:requested_date].iso8601)
40
- builder.BtchBookg(group[:batch_booking])
41
- builder.CtrlSum('%.2f' % amount_total(transactions))
42
42
  builder.Dbtr do
43
43
  builder.Nm(account.name)
44
44
  builder.PstlAdr do
45
- builder.CtrySubDvsn(account.country_subdivision_abbr)
46
- builder.Ctry(account.country)
45
+ entity_address(builder, account)
47
46
  end
48
47
  end
49
48
  builder.DbtrAcct do
@@ -51,7 +50,7 @@ module WireClient
51
50
  end
52
51
  builder.DbtrAgt do
53
52
  builder.FinInstnId do
54
- account_agent_id(builder, account)
53
+ entity_agent_id(builder, account)
55
54
  builder.PstlAdr do
56
55
  builder.Ctry(account.country)
57
56
  end
@@ -85,7 +84,7 @@ module WireClient
85
84
  end
86
85
  builder.CdtrAgt do
87
86
  builder.FinInstnId do
88
- transaction_agent_id(builder, transaction)
87
+ entity_agent_id(builder, transaction)
89
88
  builder.Nm(transaction.agent_name)
90
89
  builder.PstlAdr do
91
90
  builder.Ctry(transaction.country)
@@ -95,7 +94,7 @@ module WireClient
95
94
  builder.Cdtr do
96
95
  builder.Nm(transaction.name)
97
96
  builder.PstlAdr do
98
- builder.Ctry(transaction.country)
97
+ entity_address(builder, transaction)
99
98
  end
100
99
  end
101
100
  builder.CdtrAcct do
@@ -56,8 +56,7 @@ module WireClient
56
56
  builder.Cdtr do
57
57
  builder.Nm(group[:account].name)
58
58
  builder.PstlAdr do
59
- builder.CtrySubDvsn(account.country_subdivision_name)
60
- builder.Ctry(account.country)
59
+ entity_address(builder, account)
61
60
  end
62
61
  end
63
62
  builder.CdtrAcct do
@@ -65,7 +64,7 @@ module WireClient
65
64
  end
66
65
  builder.CdtrAgt do
67
66
  builder.FinInstnId do
68
- account_agent_id(builder, group[:account])
67
+ entity_agent_id(builder, group[:account])
69
68
  end
70
69
  end
71
70
 
@@ -124,10 +123,10 @@ module WireClient
124
123
  end
125
124
  builder.DbtrAgt do
126
125
  builder.FinInstnId do
127
- transaction_agent_id(builder, transaction)
126
+ entity_agent_id(builder, transaction)
128
127
  builder.Nm(transaction.agent_name)
129
128
  builder.PstlAdr do
130
- builder.Ctry(transaction.country)
129
+ entity_address(builder, transaction)
131
130
  end
132
131
  end
133
132
  end
@@ -151,15 +151,23 @@ module WireClient
151
151
  transaction
152
152
  end
153
153
 
154
- def account_agent_id(builder, account)
155
- if account.bic
156
- builder.BIC(account.bic)
154
+ def entity_address(builder, entity)
155
+ builder.PstCd(entity.postal_code)
156
+ builder.TwnNm(entity.city)
157
+ builder.CtrySubDvsn(entity.country_subdivision_abbr)
158
+ builder.AdrLine(entity.address_line)
159
+ builder.Ctry(entity.country)
160
+ end
161
+
162
+ def entity_agent_id(builder, entity)
163
+ if entity.bic
164
+ builder.BIC(entity.bic)
157
165
  else
158
166
  builder.ClrSysMmbId do
159
167
  builder.ClrSysId do
160
- builder.Cd(account.clear_system_code)
168
+ builder.Cd(entity.clear_system_code)
161
169
  end
162
- builder.MmbId(account.wire_routing_number)
170
+ builder.MmbId(entity.wire_routing_number)
163
171
  end
164
172
  end
165
173
  end
@@ -182,19 +190,6 @@ module WireClient
182
190
  end
183
191
  end
184
192
 
185
- def transaction_agent_id(builder, transaction)
186
- if transaction.bic
187
- builder.BIC(transaction.bic)
188
- else
189
- builder.ClrSysMmbId do
190
- builder.ClrSysId do
191
- builder.Cd(transaction.clear_system_code)
192
- end
193
- builder.MmbId(transaction.wire_routing_number)
194
- end
195
- end
196
- end
197
-
198
193
  def transaction_account_id(builder, transaction)
199
194
  if transaction.iban
200
195
  builder.Id do
@@ -30,14 +30,24 @@ module WireClient
30
30
  # @return [String] The initiating party's Identifier
31
31
  class_attribute :initiator_identifier
32
32
 
33
- # @return [String] The initiating party's country (2 character country
34
- # code; default: US)
35
- class_attribute :initiator_country
33
+ # @return [String] The initiating party's Postal code (default: NA)
34
+ class_attribute :initiator_postal_code
35
+
36
+ # @return [String] The initiating party's Address line (default: NA)
37
+ class_attribute :initiator_address_line
38
+
39
+ # @return [String] The initiating party's City, town or municipality
40
+ # (default: NA)
41
+ class_attribute :initiator_city
36
42
 
37
43
  # @return [String] The initiating party's country subdivision (name or
38
44
  # 2 character code; default: MA)
39
45
  class_attribute :initiator_country_subdivision
40
46
 
47
+ # @return [String] The initiating party's country (2 character country
48
+ # code; default: US)
49
+ class_attribute :initiator_country
50
+
41
51
  ##
42
52
  # @return [Array] A list of arguments to use in the initializer, and as
43
53
  # instance attributes
@@ -101,8 +111,11 @@ module WireClient
101
111
  bic: self.class.initiator_bic,
102
112
  iban: self.class.initiator_iban,
103
113
  identifier: self.class.initiator_identifier,
104
- country: self.class.initiator_country,
105
- country_subdivision: self.class.initiator_country_subdivision
114
+ postal_code: self.class.initiator_postal_code,
115
+ address_line: self.class.initiator_address_line,
116
+ city: self.class.initiator_city,
117
+ country_subdivision: self.class.initiator_country_subdivision,
118
+ country: self.class.initiator_country
106
119
  )
107
120
  else
108
121
  @payment_initiation = klass.new(
@@ -110,8 +123,11 @@ module WireClient
110
123
  wire_routing_number: self.class.initiator_wire_routing_number,
111
124
  account_number: self.class.initiator_account_number,
112
125
  identifier: self.class.initiator_identifier,
113
- country: self.class.initiator_country,
114
- country_subdivision: self.class.initiator_country_subdivision
126
+ postal_code: self.class.initiator_postal_code,
127
+ address_line: self.class.initiator_address_line,
128
+ city: self.class.initiator_city,
129
+ country_subdivision: self.class.initiator_country_subdivision,
130
+ country: self.class.initiator_country
115
131
  )
116
132
  end
117
133
  end
@@ -1,6 +1,7 @@
1
1
  module WireClient
2
2
  class Transaction
3
3
  include ActiveModel::Validations
4
+ include AccountTransactionHelpers
4
5
  extend Converter
5
6
 
6
7
  attr_accessor :name,
@@ -9,8 +10,13 @@ module WireClient
9
10
  :account_number,
10
11
  :wire_routing_number,
11
12
  :clear_system_code,
12
- :agent_name,
13
+ :postal_code,
14
+ :address_line,
15
+ :city,
16
+ :country_subdivision,
13
17
  :country,
18
+ :currency,
19
+ :agent_name,
14
20
  :amount,
15
21
  :instruction,
16
22
  :reference,
@@ -20,14 +26,13 @@ module WireClient
20
26
  :currency,
21
27
  :service_priority,
22
28
  :service_level
29
+
23
30
  convert :name,
24
31
  :instruction,
25
32
  :reference,
26
33
  :remittance_information, to: :text
27
34
  convert :amount, to: :decimal
28
35
 
29
- validates_length_of :name, within: 1..70
30
- validates_length_of :currency, is: 3
31
36
  validates_length_of :instruction, within: 1..35, allow_nil: true
32
37
  validates_length_of :reference, within: 1..35, allow_nil: true
33
38
  validates_length_of :remittance_information,
@@ -36,8 +41,11 @@ module WireClient
36
41
  validates_numericality_of :amount, greater_than: 0
37
42
  validates_presence_of :requested_date
38
43
  validates_inclusion_of :batch_booking, :in => [true, false]
44
+ validates_length_of :currency, is: 3
45
+ validates_length_of :name, within: 1..70
39
46
  validates_with CurrencyValidator,
40
47
  CountryValidator,
48
+ CountrySubdivisionValidator,
41
49
  BICValidator,
42
50
  IBANValidator,
43
51
  message: "%{value} is invalid"
@@ -48,7 +56,11 @@ module WireClient
48
56
  end
49
57
 
50
58
  @currency ||= 'USD'
59
+ @postal_code ||= 'NA'
60
+ @address_line ||= 'NA'
61
+ @city ||= 'NA'
51
62
  @country ||= 'US'
63
+ @country_subdivision ||= 'MA' if self.country == 'US'
52
64
  @clear_system_code ||= 'USABA'
53
65
  @agent_name ||= 'NOTPROVIDED'
54
66
  @requested_date ||= default_requested_date
@@ -1,4 +1,4 @@
1
1
  module WireClient
2
2
  # Increment this when changes are published
3
- VERSION = '0.1.2'
3
+ VERSION = '0.1.3'
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wire_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ewerton Carlos Assis
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2018-03-14 00:00:00.000000000 Z
12
+ date: 2018-04-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ach_client
@@ -327,6 +327,7 @@ files:
327
327
  - lib/wire_client/account/account.rb
328
328
  - lib/wire_client/account/creditor_account.rb
329
329
  - lib/wire_client/account/debitor_account.rb
330
+ - lib/wire_client/base/account_transaction_helpers.rb
330
331
  - lib/wire_client/base/constants.rb
331
332
  - lib/wire_client/base/converters.rb
332
333
  - lib/wire_client/base/invalid_wire_transaction_error.rb