sepa_file_parser 0.8.1 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6a416863e01eac08c6e608b5a1191b121af6a39e89123d193c0c462b805670b6
4
- data.tar.gz: afc850d51e4b8ab193e264544772d80d9e13b1190df967c554c609d157d03aac
3
+ metadata.gz: 3bc89d325dfff3184b2c7c1e9246bf300624cec80eb694371b8ffed66a86ff3b
4
+ data.tar.gz: ce7ed8c47d0c158a235f662fd8af44148fce23f5c46b6a31c96559ea146ce126
5
5
  SHA512:
6
- metadata.gz: de0bac5811b638f4cba7e5b3cca25139ccfd68a7527b2bfb7f5f5dab748a9b46461996312df6b8ba00095265836fe1d3703cfcec043291c112c178109f886f68
7
- data.tar.gz: 27062970e0dc3f83366a4beffde363254e7460672fceb00d67087396472a88c76090f00e25fe5dd6159dc4a9bcca500b9c4374268af9932156c29c6badb8c21f
6
+ metadata.gz: aa561758b2159891d6bb31e9282e8f9466e6156f86f96d61e2070388f5fcb34654347bb8c769ba797e70dbf64a78e5e0f4fa002b592d228298852615cc380fdd
7
+ data.tar.gz: f82b5c6a1599d02b59e408b4cc734a362294bcd443e647c0d8ff798087d756b52358ef4cefdc6b52b88e2bd8b64d3b858127c6c6be71aeb4b06029e9e22e6df4
@@ -7,6 +7,20 @@ module SepaFileParser
7
7
 
8
8
  def initialize(xml_data)
9
9
  @xml_data = xml_data
10
+ @amount = xml_data.xpath('TtlAmt/text()').text
11
+ end
12
+
13
+ def total_amount
14
+ SepaFileParser::Misc.to_amount(@amount)
15
+ end
16
+
17
+ def total_amount_in_cents
18
+ SepaFileParser::Misc.to_amount_in_cents(@amount)
19
+ end
20
+
21
+ # @return [String]
22
+ def currency
23
+ @currency ||= xml_data.xpath('TtlAmt/@Ccy').text
10
24
  end
11
25
 
12
26
  def payment_information_identification
@@ -16,6 +30,7 @@ module SepaFileParser
16
30
  def msg_id # may be missing
17
31
  @msg_id ||= xml_data.xpath('MsgId/text()').text
18
32
  end
33
+ alias_method :message_id, :msg_id # same like in transaction.rb
19
34
 
20
35
  def number_of_transactions
21
36
  @number_of_transactions ||= xml_data.xpath('NbOfTxs/text()').text
@@ -32,6 +32,14 @@ module SepaFileParser
32
32
  @debitor ||= SepaFileParser::Debitor.new(xml_data)
33
33
  end
34
34
 
35
+ def ultimate_debitor
36
+ if xml_data.xpath('RltdPties/UltmtDbtr').any?
37
+ @ultimate_debitor ||= SepaFileParser::UltimateDebitor.new(xml_data)
38
+ else
39
+ nil
40
+ end
41
+ end
42
+
35
43
  def name
36
44
  credit? ? debitor.name : creditor.name
37
45
  end
@@ -129,6 +137,11 @@ module SepaFileParser
129
137
  @payment_information ||= xml_data.xpath('Refs/PmtInfId/text()').text
130
138
  end
131
139
 
140
+ def uetr # May be missing
141
+ @uetr ||= xml_data.xpath('Refs/UETR/text()').text
142
+ end
143
+ alias_method :unique_e2e_reference, :uetr
144
+
132
145
  def additional_information # May be missing
133
146
  @addition_information ||= xml_data.xpath('AddtlTxInf/text()').text
134
147
  end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SepaFileParser
4
+ class UltimateDebitor
5
+
6
+ attr_reader :xml_data
7
+
8
+ def initialize(xml_data)
9
+ @xml_data = xml_data
10
+ end
11
+
12
+ def name
13
+ @name ||= [
14
+ xml_data.xpath('RltdPties/UltmtDbtr/Nm/text()').text,
15
+ xml_data.xpath('RltdPties/UltmtDbtr/Pty/Nm/text()').text,
16
+ ].reject(&:empty?).first.to_s
17
+ end
18
+
19
+ # @return [SepaFileParser::PostalAddress, nil]
20
+ def postal_address # May be missing
21
+ postal_address = [
22
+ xml_data.xpath('RltdPties/Dbtr/PstlAdr'),
23
+ xml_data.xpath('RltdPties/Dbtr/Pty/PstlAdr'),
24
+ ].reject(&:empty?).first
25
+
26
+ return nil if postal_address == nil || postal_address.empty?
27
+
28
+ @address ||= SepaFileParser::PostalAddress.new(postal_address)
29
+ end
30
+ end
31
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module SepaFileParser
4
4
 
5
- VERSION = '0.8.1'
5
+ VERSION = '0.10.0'
6
6
 
7
7
  end
@@ -22,6 +22,7 @@ require_relative 'sepa_file_parser/general/transaction'
22
22
  require_relative 'sepa_file_parser/general/type/builder'
23
23
  require_relative 'sepa_file_parser/general/type/code'
24
24
  require_relative 'sepa_file_parser/general/type/proprietary'
25
+ require_relative 'sepa_file_parser/general/ultimate_debitor'
25
26
  require_relative 'sepa_file_parser/camt052/report'
26
27
  require_relative 'sepa_file_parser/camt052/base'
27
28
  require_relative 'sepa_file_parser/camt053/statement'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sepa_file_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tobias Schoknecht
@@ -29,14 +29,14 @@ dependencies:
29
29
  requirements:
30
30
  - - "~>"
31
31
  - !ruby/object:Gem::Version
32
- version: 3.13.0
32
+ version: 3.13.2
33
33
  type: :development
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: 3.13.0
39
+ version: 3.13.2
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: builder
42
42
  requirement: !ruby/object:Gem::Requirement
@@ -124,6 +124,7 @@ files:
124
124
  - lib/sepa_file_parser/general/type/builder.rb
125
125
  - lib/sepa_file_parser/general/type/code.rb
126
126
  - lib/sepa_file_parser/general/type/proprietary.rb
127
+ - lib/sepa_file_parser/general/ultimate_debitor.rb
127
128
  - lib/sepa_file_parser/misc.rb
128
129
  - lib/sepa_file_parser/pain001/base.rb
129
130
  - lib/sepa_file_parser/pain001/payment_information.rb
@@ -157,7 +158,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
157
158
  - !ruby/object:Gem::Version
158
159
  version: '0'
159
160
  requirements: []
160
- rubygems_version: 4.0.3
161
+ rubygems_version: 4.0.10
161
162
  specification_version: 4
162
163
  summary: Gem for parsing camt, pain, ... files into a speaking object.
163
164
  test_files: []