abo_parser 1.0.2 → 1.0.4
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 +4 -4
- data/CHANGELOG.md +8 -0
- data/abo_parser.gemspec +1 -1
- data/lib/abo.rb +32 -4
- data/lib/abo_parser/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 45bd0bd8188bc2d057ba687fdaf8ca5bf450066e4e4720f93cf2294b58939608
|
4
|
+
data.tar.gz: a0a72dd58fbd376fe2489844eaf4ea22532028e2827334476baf94481da600bf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 03c874077a9838ddc88dfc6d09da0694ce4788b1fc361ef97b9db8f6613b4b2b6bc970b866dc4eb358f79629675b6fdb186c980d8bcb85d38e621d7b8e7a205a
|
7
|
+
data.tar.gz: d1bd96bbe15a616c773cdbbe25d75e707f4cf0f00f9039d14dcd0a159607325b2d6781a29941eae334a28a688a3d3f0a345a95990136860cb80ca2d466d4ca60
|
data/CHANGELOG.md
CHANGED
data/abo_parser.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.summary = "This gem is a parser/export for the ABO bank statements and payment orders."
|
11
11
|
spec.required_ruby_version = ">= 2.6.0"
|
12
12
|
|
13
|
-
spec.metadata["documentation_uri"] = "https://www.rubydoc.info/gems/abo_parser
|
13
|
+
spec.metadata["documentation_uri"] = "https://www.rubydoc.info/gems/abo_parser"
|
14
14
|
|
15
15
|
# spec.metadata["allowed_push_host"] = "Set to your gem server 'https://example.com'"
|
16
16
|
|
data/lib/abo.rb
CHANGED
@@ -6,6 +6,7 @@ require "date"
|
|
6
6
|
class Abo
|
7
7
|
LINE_TYPE_STATEMENT = "statement"
|
8
8
|
LINE_TYPE_TRANSACTION = "transaction"
|
9
|
+
LINE_TYPE_TRANSACTION_NOTE = "transaction_note"
|
9
10
|
|
10
11
|
POSTING_CODE_DEBIT = 1
|
11
12
|
POSTING_CODE_CREDIT = 2
|
@@ -129,6 +130,14 @@ class Abo
|
|
129
130
|
File.open(path, "a:cp1250") do |file|
|
130
131
|
file.puts gpc
|
131
132
|
end
|
133
|
+
|
134
|
+
next if transaction[:note].nil?
|
135
|
+
|
136
|
+
gpc = "078#{transaction[:note].ljust(70, " ")}"
|
137
|
+
|
138
|
+
File.open(path, "a:cp1250") do |file|
|
139
|
+
file.puts gpc
|
140
|
+
end
|
132
141
|
end
|
133
142
|
end
|
134
143
|
|
@@ -174,6 +183,7 @@ class Abo
|
|
174
183
|
|
175
184
|
def parse_bank_statement_file(file_object)
|
176
185
|
@statement = AboStatement.new
|
186
|
+
transaction = nil
|
177
187
|
|
178
188
|
file_object.each_line do |line|
|
179
189
|
line = line.force_encoding("cp1250").encode("utf-8")
|
@@ -183,6 +193,9 @@ class Abo
|
|
183
193
|
when LINE_TYPE_TRANSACTION
|
184
194
|
transaction = parse_transaction_line(line)
|
185
195
|
@statement.transactions << transaction
|
196
|
+
when LINE_TYPE_TRANSACTION_NOTE
|
197
|
+
parse_transaction_note_line(transaction, line)
|
198
|
+
@statement.transactions[@statement.transactions.size - 1] = transaction
|
186
199
|
end
|
187
200
|
end
|
188
201
|
|
@@ -195,6 +208,8 @@ class Abo
|
|
195
208
|
LINE_TYPE_STATEMENT
|
196
209
|
when "075"
|
197
210
|
LINE_TYPE_TRANSACTION
|
211
|
+
when "078"
|
212
|
+
LINE_TYPE_TRANSACTION_NOTE
|
198
213
|
end
|
199
214
|
end
|
200
215
|
|
@@ -205,7 +220,7 @@ class Abo
|
|
205
220
|
# rubocop:disable Lint/UselessAssignment
|
206
221
|
@statement.client_account_prefix_number = line[pos += length, length = 6].gsub(/^0+/, "")
|
207
222
|
@statement.client_account_number = line[pos += length, length = 10].gsub(/^0+/, "")
|
208
|
-
@statement.abbreviated_client_name = line[pos += length, length = 20]
|
223
|
+
@statement.abbreviated_client_name = line[pos += length, length = 20].strip
|
209
224
|
@statement.old_balance_date = DateTime.strptime(line[pos += length, length = 6], "%d%m%y")
|
210
225
|
@statement.old_balance = (line[pos += length,
|
211
226
|
length = 14].to_i / 100.0) * (line[pos += length, length = 1] == "-" ? -1 : 1)
|
@@ -247,7 +262,7 @@ class Abo
|
|
247
262
|
transaction.constant_symbol = constant_symbol.gsub(/^0+/, "")
|
248
263
|
transaction.specific_symbol = line[pos += length, length = 10].gsub(/^0+/, "")
|
249
264
|
transaction.value = DateTime.strptime(line[pos += length, length = 6], "%d%m%y")
|
250
|
-
transaction.additional_information = line[pos += length, length = 20]
|
265
|
+
transaction.additional_information = line[pos += length, length = 20].strip
|
251
266
|
transaction.change_of_item_code = line[pos += length, length = 1]
|
252
267
|
transaction.type_of_data = line[pos += length, length = 4]
|
253
268
|
transaction.due_date = DateTime.strptime(line[pos += length, length = 6], "%d%m%y")
|
@@ -274,6 +289,15 @@ class Abo
|
|
274
289
|
transaction
|
275
290
|
end
|
276
291
|
|
292
|
+
def parse_transaction_note_line(transaction, line)
|
293
|
+
pos = 0
|
294
|
+
length = 3
|
295
|
+
|
296
|
+
# rubocop:disable Lint/UselessAssignment
|
297
|
+
transaction.note = line[pos += length, length = 6]
|
298
|
+
# rubocop:enable Lint/UselessAssignment
|
299
|
+
end
|
300
|
+
|
277
301
|
class AboStatement
|
278
302
|
attr_accessor :client_account_number, :client_account_prefix_number, :abbreviated_client_name, :old_balance_date,
|
279
303
|
:old_balance, :new_balance, :transactions_debit, :transactions_credit, :statement_sequence_number,
|
@@ -314,7 +338,8 @@ class Abo
|
|
314
338
|
attr_accessor :client_account_number, :client_account_prefix_number, :counter_account_number,
|
315
339
|
:counter_account_prefix_number, :document_number, :amount, :posting_code,
|
316
340
|
:variable_symbol, :constant_symbol, :specific_symbol, :value, :additional_information,
|
317
|
-
:change_of_item_code, :type_of_data, :due_date, :debit, :credit, :counter_account_bank_code
|
341
|
+
:change_of_item_code, :type_of_data, :due_date, :debit, :credit, :counter_account_bank_code,
|
342
|
+
:note
|
318
343
|
|
319
344
|
def initialize
|
320
345
|
@client_account_number = nil
|
@@ -336,6 +361,8 @@ class Abo
|
|
336
361
|
@debit = nil
|
337
362
|
@credit = nil
|
338
363
|
@counter_account_bank_code = nil
|
364
|
+
|
365
|
+
@note = nil
|
339
366
|
end
|
340
367
|
|
341
368
|
def to_hash
|
@@ -357,7 +384,8 @@ class Abo
|
|
357
384
|
due_date: @due_date,
|
358
385
|
debit: @debit,
|
359
386
|
credit: @credit,
|
360
|
-
counter_account_bank_code: @counter_account_bank_code
|
387
|
+
counter_account_bank_code: @counter_account_bank_code,
|
388
|
+
note: @note
|
361
389
|
}
|
362
390
|
end
|
363
391
|
end
|
data/lib/abo_parser/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: abo_parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rhemery
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-06-
|
11
|
+
date: 2023-06-11 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description:
|
14
14
|
email:
|
@@ -31,7 +31,7 @@ files:
|
|
31
31
|
homepage:
|
32
32
|
licenses: []
|
33
33
|
metadata:
|
34
|
-
documentation_uri: https://www.rubydoc.info/gems/abo_parser
|
34
|
+
documentation_uri: https://www.rubydoc.info/gems/abo_parser
|
35
35
|
post_install_message:
|
36
36
|
rdoc_options: []
|
37
37
|
require_paths:
|