money_s3 2.0.0 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +78 -3
- data/lib/money_s3/utils/bank_statements.rb +80 -0
- data/lib/money_s3.rb +2 -0
- data/money_s3.gemspec +1 -3
- metadata +4 -20
- data/Rakefile +0 -6
- data/bin/console +0 -14
- data/bin/setup +0 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8e219b2f5b8a348583051fceb6947614d4f18cb35581bb98b846b247c587e168
|
4
|
+
data.tar.gz: b773d23e3528107c845406e287ec9df8be91d50f6a374fe871a7feb17222b34b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 370e4c82225e9255754daf03b9bdd5f5d49ad067368959821313e40a3154a099b048675f30d60ebcc277db27736229844ab79c5563ff9bfdf325ec2f67653526
|
7
|
+
data.tar.gz: d2caa678acf50542b67fdc7d3c94fac54071fcc65797dfc14ffcd33e7300569e2169584a71e7a068bec6fa6e597a36d15ff772183d4a17fb1921e2307b9c9642
|
data/README.md
CHANGED
@@ -1,13 +1,88 @@
|
|
1
1
|
# MoneyS3
|
2
2
|
|
3
|
-
This gem allows to parse and build any Money S3 entity defined in theirs XML schemas.
|
3
|
+
This gem allows to parse and build any Money S3 entity defined in theirs XML schemas. All the names and structure are preserved as in the original definitions which can be found [here](https://github.com/Masa331/money_xsd). This gem also includes few utilities for fast and easy XML generation.
|
4
4
|
|
5
|
-
|
5
|
+
## Usage
|
6
|
+
|
7
|
+
### Parsing a XML
|
8
|
+
|
9
|
+
I didn't have time to write docs yet. However parsing works exactly the same as in [Pohoda gem](https://github.com/Masa331/pohoda)
|
10
|
+
|
11
|
+
### Building a XML
|
12
|
+
|
13
|
+
To build a Money S3 XML you need a hash with same structure you get from calling `#to_h` on parsed xml:
|
14
|
+
|
15
|
+
```ruby
|
16
|
+
hash = { seznam_fakt_vyd: [{ doklad: '123' }] }
|
17
|
+
MoneyS3.build(hash)
|
18
|
+
```
|
19
|
+
|
20
|
+
it returns a string like this:
|
21
|
+
```xml
|
22
|
+
<?xml version=\"1.0\"?>
|
23
|
+
<MoneyData>
|
24
|
+
<SeznamFaktVyd>
|
25
|
+
<FaktVyd>
|
26
|
+
<Doklad>123</Doklad>
|
27
|
+
</FaktVyd>
|
28
|
+
</SeznamFaktVyd>
|
29
|
+
</MoneyData>
|
30
|
+
```
|
31
|
+
|
32
|
+
Building works also exactly the same as in [Pohoda gem](https://github.com/Masa331/pohoda)
|
33
|
+
|
34
|
+
### Utilities
|
35
|
+
|
36
|
+
#### `MoneyS3::Utils::BankStatements` class
|
37
|
+
|
38
|
+
Generates XML with bank movements for importing into Money S3.
|
39
|
+
|
40
|
+
Instantiate `MoneyS3::Utils::BankStatements` with hash containing statements config:
|
41
|
+
```
|
42
|
+
config = {
|
43
|
+
my_bank_account_id: 'BAN', # Czech: zkratka bankovniho uctu
|
44
|
+
credit_transactions_rule: 'BP001', # Czech: predkontace pro prijmy
|
45
|
+
debit_transactions_rule: 'BV001', # Czech: predkontace pro vydaje
|
46
|
+
credit_transactions_vat_rule: '19Ř00U', # Czech: cleneni dph pro prijmy
|
47
|
+
debit_transactions_vat_rule: '19Ř00P', # Czech: cleneni dph pro vydaje
|
48
|
+
credit_transactions_series: 'BPrr', # Czech: ciselna rada prijmovych bankovnich dokladu
|
49
|
+
debit_transactions_series: 'BVrr' # Czech: ciselna rada vydajovych bankovnich dokladu
|
50
|
+
}
|
51
|
+
generator = MoneyS3::Utils::BankStatements.new(config)
|
52
|
+
```
|
53
|
+
|
54
|
+
Then call `#to_xml` on the generator and pass it an array containing hashes with movement data:
|
55
|
+
```
|
56
|
+
transactions = [
|
57
|
+
{ :date => #<Date: 2019-12-05 ((2458823j,0s,0n),+0s,2299161j)>,
|
58
|
+
:transaction_id => "121205SI201442",
|
59
|
+
:amount => 8500.0,
|
60
|
+
:statement_id => "012/00001",
|
61
|
+
:variable_symbol => "0000112019",
|
62
|
+
:specific_symbol => "",
|
63
|
+
:constant_symbol => "0000000138",
|
64
|
+
:counterparty_account => "1023706843",
|
65
|
+
:counterparty_bank_code => "0100",
|
66
|
+
:type => :debit, # or :credit for credit transactions
|
67
|
+
:description => "Some description..",
|
68
|
+
:note => "Some note.." },
|
69
|
+
...,
|
70
|
+
...
|
71
|
+
]
|
72
|
+
statements_string = generator.to_xml(transactions)
|
73
|
+
File.open("statements.xml", 'wb') { |f| f.write statements_string }
|
74
|
+
```
|
6
75
|
|
7
76
|
## Changelog
|
8
77
|
|
78
|
+
### 23.02.2020 - v2.1.0
|
79
|
+
|
80
|
+
Add utility class for bank statements generation.
|
81
|
+
|
9
82
|
### 20.10.2019
|
10
83
|
|
11
84
|
Updated gem with new schemas from Money S3 19.603
|
12
85
|
|
13
|
-
|
86
|
+
## License
|
87
|
+
|
88
|
+
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
@@ -0,0 +1,80 @@
|
|
1
|
+
module MoneyS3
|
2
|
+
module Utils
|
3
|
+
class BankStatements
|
4
|
+
TRANSACTION_TYPES = [:credit, :debit]
|
5
|
+
|
6
|
+
def initialize(configuration)
|
7
|
+
@my_bank_account_id = configuration.fetch :my_bank_account_id
|
8
|
+
|
9
|
+
@credit_transactions_rule = configuration.fetch :credit_transactions_rule
|
10
|
+
@debit_transactions_rule = configuration.fetch :debit_transactions_rule
|
11
|
+
|
12
|
+
@credit_transactions_vat_rule = configuration.fetch :credit_transactions_vat_rule
|
13
|
+
@debit_transactions_vat_rule = configuration.fetch :debit_transactions_vat_rule
|
14
|
+
|
15
|
+
@credit_transactions_series = configuration.fetch :credit_transactions_series
|
16
|
+
@debit_transactions_series = configuration.fetch :debit_transactions_series
|
17
|
+
end
|
18
|
+
|
19
|
+
def to_xml(raw)
|
20
|
+
statements = raw.map do |item|
|
21
|
+
amount = item.fetch :amount
|
22
|
+
|
23
|
+
data = {
|
24
|
+
id_polozky: item[:transaction_id],
|
25
|
+
dat_uc_pr: item[:date],
|
26
|
+
dat_vyst: item[:date],
|
27
|
+
dat_plat: item[:date],
|
28
|
+
dat_pln: item[:date],
|
29
|
+
vypis: item[:statement_id],
|
30
|
+
celkem: amount,
|
31
|
+
ucet: { zkrat: @my_bank_account_id },
|
32
|
+
popis: item[:description],
|
33
|
+
pozn: item[:note],
|
34
|
+
var_sym: item[:variable_symbol],
|
35
|
+
spec_sym: item[:specific_symbol],
|
36
|
+
kon_sym: item[:constant_symbol],
|
37
|
+
ad_ucet: item[:counterparty_account],
|
38
|
+
ad_kod: item[:counterparty_bank_code],
|
39
|
+
souhrn_dph: {
|
40
|
+
zaklad0: amount
|
41
|
+
}
|
42
|
+
}
|
43
|
+
|
44
|
+
transaction_type = item.fetch :type
|
45
|
+
fail "Unknown transaction type: #{transaction_type}" unless TRANSACTION_TYPES.include? transaction_type
|
46
|
+
|
47
|
+
if transaction_type == :credit
|
48
|
+
data.merge!({
|
49
|
+
vydej: '0',
|
50
|
+
pr_kont: @credit_transactions_rule,
|
51
|
+
cleneni: @credit_transactions_vat_rule,
|
52
|
+
d_rada: @credit_transactions_series
|
53
|
+
})
|
54
|
+
else
|
55
|
+
data.merge!({
|
56
|
+
vydej: '1',
|
57
|
+
pr_kont: @debit_transactions_rule,
|
58
|
+
cleneni: @debit_transactions_vat_rule,
|
59
|
+
d_rada: @debit_transactions_series
|
60
|
+
})
|
61
|
+
end
|
62
|
+
|
63
|
+
data.delete_if { |_, v| v.nil? || v == '' }
|
64
|
+
data.transform_values! do |value|
|
65
|
+
if value.is_a? Hash
|
66
|
+
value.transform_values! { |value| value.to_s }
|
67
|
+
else
|
68
|
+
value.to_s
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
data
|
73
|
+
end
|
74
|
+
|
75
|
+
money_data = { seznam_bank_dokl: statements }
|
76
|
+
MoneyS3.build(money_data)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
data/lib/money_s3.rb
CHANGED
data/money_s3.gemspec
CHANGED
@@ -3,7 +3,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |spec|
|
5
5
|
spec.name = 'money_s3'
|
6
|
-
spec.version = '2.
|
6
|
+
spec.version = '2.1.0'
|
7
7
|
spec.authors = ['Premysl Donat']
|
8
8
|
spec.email = ['pdonat@seznam.cz']
|
9
9
|
|
@@ -15,14 +15,12 @@ Gem::Specification.new do |spec|
|
|
15
15
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
16
16
|
f.match(%r{^(test|spec|features)/})
|
17
17
|
end
|
18
|
-
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
19
18
|
spec.require_paths = ['lib']
|
20
19
|
|
21
20
|
spec.add_dependency 'ox'
|
22
21
|
spec.add_dependency 'damedata_parser_core'
|
23
22
|
|
24
23
|
spec.add_development_dependency 'bundler'
|
25
|
-
spec.add_development_dependency 'rake'
|
26
24
|
spec.add_development_dependency 'rspec'
|
27
25
|
spec.add_development_dependency 'rspec-its'
|
28
26
|
spec.add_development_dependency 'pry'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: money_s3
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Premysl Donat
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-02-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ox
|
@@ -52,20 +52,6 @@ dependencies:
|
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: rake
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ">="
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ">="
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
56
|
name: rspec
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -149,9 +135,6 @@ files:
|
|
149
135
|
- Gemfile
|
150
136
|
- LICENSE.txt
|
151
137
|
- README.md
|
152
|
-
- Rakefile
|
153
|
-
- bin/console
|
154
|
-
- bin/setup
|
155
138
|
- lib/money_s3.rb
|
156
139
|
- lib/money_s3/builders/adresa_type.rb
|
157
140
|
- lib/money_s3/builders/alternativa_prislusenstvi_type.rb
|
@@ -574,6 +557,7 @@ files:
|
|
574
557
|
- lib/money_s3/parsers/zauctovani_dph_type.rb
|
575
558
|
- lib/money_s3/parsers/zavazek_type.rb
|
576
559
|
- lib/money_s3/requires.rb
|
560
|
+
- lib/money_s3/utils/bank_statements.rb
|
577
561
|
- money_s3.gemspec
|
578
562
|
- xsd/Dochazka/Dochazka.xsd
|
579
563
|
- xsd/Dochazka/Zamestnanci.xsd
|
@@ -617,7 +601,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
617
601
|
- !ruby/object:Gem::Version
|
618
602
|
version: '0'
|
619
603
|
requirements: []
|
620
|
-
rubygems_version: 3.
|
604
|
+
rubygems_version: 3.1.2
|
621
605
|
signing_key:
|
622
606
|
specification_version: 4
|
623
607
|
summary: MoneyS3 XML parser and builder
|
data/Rakefile
DELETED
data/bin/console
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require "bundler/setup"
|
4
|
-
require "money_s3"
|
5
|
-
|
6
|
-
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
-
# with your gem easier. You can also use a different console, if you like.
|
8
|
-
|
9
|
-
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
-
# require "pry"
|
11
|
-
# Pry.start
|
12
|
-
|
13
|
-
require "irb"
|
14
|
-
IRB.start(__FILE__)
|