sepa 0.0.14 → 0.0.15

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA512:
3
+ metadata.gz: d57cc7203c00c3f47dc18189cca69b7b7397c424d0cf390f3fd9d4a948cbd9cbcefffe9efbbad0338ccc202c10c9d9199b051b874e99e3b2fd13e5fd37062752
4
+ data.tar.gz: f7a93dafda118a000313bbf186f35fbcdeab9f9d53892cf06dccf6bd1f422019269293f6f1e92035b49b48ee9f1384c97307bbc6c8adffc2706bc1cbcd425847
5
+ SHA1:
6
+ metadata.gz: a02ba9d2473675049d7bcba39addd3e4513d69bd
7
+ data.tar.gz: fba85ca92384748652582373d4d235315969e988
data/README.md CHANGED
@@ -3,16 +3,16 @@
3
3
  An implementation of pain.008.001 CustomerDirectDebitInitiation - versions 02 and 04. WARNING:
4
4
  NO WARRANTY, USE AT YOUR OWN RISK AND PERIL. By using this software, you warrant and represent
5
5
  and declare that having studied and examined and tested the source, you are satisfied, sure, and
6
- certain that the version you use does exactly what you want it to do. This
6
+ certain that the version you use does exactly what you want it to do. This
7
7
 
8
8
  MORE WARNING: This is alpha-quality software. The API is not yet stable. New versions will break
9
9
  compatibility in unpredictable ways. Use at your own risk and peril.
10
10
 
11
11
  ANOTHER WARNING: While I aim for ISO-20022 compatibility in all its glorious detail, this gem
12
12
  implements only a subset of ISO-20022, and possibly does so incorrectly. On top of that, your
13
- bank's interpretation of ISO-20022 may differ from mine, may require some fields that are
13
+ bank's interpretation of ISO-20022 may differ from mine, may require some fields that are
14
14
  optional in the ISO specification, and may ignore some other fields that are mandatory in the
15
- specification.
15
+ specification.
16
16
 
17
17
  I wanted to make it as easy as possible to define message types and components so this library
18
18
  will be easy to grow to implement the entire standard.
@@ -73,6 +73,9 @@ a message-id.
73
73
  The last line returns a string that you will then need to send to your bank one way or another. For example, you might use an EBICS client. Or your bank might provide
74
74
  software to send the file. Or perhaps you can upload it via their website.
75
75
 
76
+ ## History
77
+
78
+ 0.0.15 Ruby 1.8.7 compatibility
76
79
 
77
80
  ## Contributing
78
81
 
@@ -83,3 +86,8 @@ Other message types are totally welcome.
83
86
  3. Commit your changes (`git commit -am 'Add some feature'`)
84
87
  4. Push to the branch (`git push origin my-new-feature`)
85
88
  5. Create new Pull Request
89
+
90
+ ## Contributors
91
+
92
+ Author: [Conan Dalton](http://www.conandalton.net), aka [conanite](https://github.com/conanite)
93
+ With thanks to [corny](https://github.com/corny), [TheConstructor](https://github.com/TheConstructor)
data/lib/sepa/base.rb CHANGED
@@ -3,7 +3,7 @@ module Sepa
3
3
  class Base
4
4
  include Aduki::Initializer
5
5
 
6
- @@attribute_defs = Hash.new { |h,k| h[k] = { } }
6
+ @@attribute_defs = Hash.new { |h,k| h[k] = [] }
7
7
 
8
8
  def build_xml_attributes names
9
9
  result = { }
@@ -19,13 +19,16 @@ module Sepa
19
19
 
20
20
  def normalize str
21
21
  return str if str.is_a? Fixnum
22
- return str if str.is_a? Float
23
- str.gsub(/[àéèûîôüïöÿçÇÉÈáÀÁÜÏÖß]/, {
24
- 'à' => 'a', 'é' => 'e', 'è' => 'e',
25
- 'û' => 'u', 'î' => 'i', 'ô' => 'o', 'ü' => 'u', 'ï' => 'i', 'ö' => 'o',
26
- 'ÿ' => 'y', 'ç' => 'c', 'Ç' => 'C', 'É' => 'E', 'È' => 'E', 'á' => 'a',
27
- 'À' => 'A', 'Á' => 'A', 'Ü' => 'U', 'Ï' => 'I', 'Ö' => 'O', 'ß' => 'ss'
28
- }).gsub(/[^a-zA-Z0-9_@ \.,()'+\/\?-]/, '')
22
+ return ("%.2f" % str) if str.is_a? Float
23
+ replacements = {
24
+ 'à' => 'a', 'é' => 'e', 'è' => 'e',
25
+ 'û' => 'u', 'î' => 'i', 'ô' => 'o', 'ü' => 'u', 'ï' => 'i', 'ö' => 'o',
26
+ 'ÿ' => 'y', 'ç' => 'c', 'Ç' => 'C', 'É' => 'E', 'È' => 'E', 'á' => 'a',
27
+ 'À' => 'A', 'Á' => 'A', 'Ü' => 'U', 'Ï' => 'I', 'Ö' => 'O', 'ß' => 'ss'
28
+ }
29
+ str = replacements.to_a.
30
+ inject(str) { |s, kv| s.gsub(kv[0], kv[1]) }.
31
+ gsub(/[^a-zA-Z0-9_@ \.,()'+\/\?-]/, '')
29
32
  end
30
33
 
31
34
  def to_xml builder
@@ -79,18 +82,18 @@ module Sepa
79
82
  typed_attribute name, tag, type, options
80
83
  else
81
84
  attr_accessor name
82
- attribute_defs[name] = { :tag => tag, :type => type, :options => options }
85
+ attribute_defs << [name, { :tag => tag, :type => type, :options => options }]
83
86
  end
84
87
  end
85
88
 
86
89
  def self.typed_attribute name, tag, type, options
87
- attribute_defs[name] = { :tag => tag, :type => type, :options => options }
90
+ attribute_defs << [name, { :tag => tag, :type => type, :options => options }]
88
91
  attr_accessor name
89
92
  aduki name => type
90
93
  end
91
94
 
92
95
  def self.array_attribute name, tag, member_type=nil, options={ }
93
- attribute_defs[name] = { :tag => tag, :type => :[], :member_type => member_type, :options => options }
96
+ attribute_defs << [name, { :tag => tag, :type => :[], :member_type => member_type, :options => options }]
94
97
  attr_accessor name
95
98
  aduki(name => member_type) if member_type
96
99
  end
@@ -84,7 +84,7 @@ class Sepa::DirectDebitOrder
84
84
  "group_header.control_sum" => creditor_payments.inject(0) { |sum, cp| sum + cp.control_sum },
85
85
  }
86
86
 
87
- hsh = hsh.merge initiating_party.to_properties("group_header.initiating_party", opts.merge({context: :initiating_party}))
87
+ hsh = hsh.merge initiating_party.to_properties("group_header.initiating_party", opts.merge({:context => :initiating_party}))
88
88
 
89
89
  cps = []
90
90
  if opts[:pain_008_001_version] == "02"
@@ -181,7 +181,8 @@ class Sepa::DirectDebitOrder
181
181
  seq_types[dd.sequence_type] << dd
182
182
  end
183
183
 
184
- seq_types.each do |seq_type, dds|
184
+ %w{FRST RCUR FNAL OOFF}.each do |seq_type|
185
+ dds = seq_types[seq_type]
185
186
  next if dds.empty?
186
187
  ncp = CreditorPayment.new(creditor, creditor_account, "#{id}-#{seq_type}", collection_date, sepa_identification, dds)
187
188
  ncp.sequence_type = seq_type
@@ -213,7 +214,7 @@ class Sepa::DirectDebitOrder
213
214
  hsh["#{prefix}.payment_type_information.sequence_type"] = sequence_type
214
215
  end
215
216
 
216
- hsh = hsh.merge creditor.to_properties("#{prefix}.creditor", opts.merge({ context: :creditor }))
217
+ hsh = hsh.merge creditor.to_properties("#{prefix}.creditor", opts.merge({ :context => :creditor }))
217
218
  hsh = hsh.merge creditor_account.to_properties("#{prefix}.creditor", opts)
218
219
  hsh = hsh.merge sepa_identification.to_properties("#{prefix}.creditor_scheme_identification", opts)
219
220
 
data/lib/sepa/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Sepa
2
- VERSION = "0.0.14"
2
+ VERSION = "0.0.15"
3
3
  end
@@ -24,7 +24,7 @@ describe Sepa::DirectDebitOrder do
24
24
  dd20 = Sepa::DirectDebitOrder::DirectDebit.new debtor2, bank_account2, "MONECOLE REG F13793 PVT 3", 1935.35, "EUR", mandate2
25
25
  dd21 = Sepa::DirectDebitOrder::DirectDebit.new debtor2, bank_account2, "MONECOLE REG F13794 PVT 3", 1236.36, "EUR", mandate2
26
26
 
27
- sepa_now = Time.strptime "1992-02-28T18:30:00", "%Y-%m-%dT%H:%M:%S"
27
+ sepa_now = Time.local(1992, 2, 28, 18, 30, 0, 0, 0)
28
28
  Time.stub(:now).and_return sepa_now
29
29
 
30
30
  creditor = Sepa::DirectDebitOrder::Party.new "Mon École", "3, Livva de Getamire", nil, "75022", "Paris", "Frankreich", "M. le Directeur", "+33 999 999 999", "directeur@monecole.softify.com"
@@ -39,25 +39,28 @@ describe Sepa::DirectDebitOrder do
39
39
 
40
40
  it "should produce v02 xml corresponding to the given inputs" do
41
41
  o = order Sepa::DirectDebitOrder::PrivateSepaIdentifier
42
- xml = o.to_xml pain_008_001_version: "02"
42
+ xml = o.to_xml :pain_008_001_version => "02"
43
+ xml = check_doc_header_02 xml
43
44
  expected = File.read(File.expand_path("../expected_customer_direct_debit_initiation_v02.xml", __FILE__))
44
- expected.force_encoding(Encoding::UTF_8)
45
+ expected.force_encoding(Encoding::UTF_8) if expected.respond_to? :force_encoding
45
46
  xml.should == expected
46
47
  end
47
48
 
48
49
  it "should produce v04 xml corresponding to the given inputs" do
49
50
  o = order Sepa::DirectDebitOrder::PrivateSepaIdentifier
50
- xml = o.to_xml pain_008_001_version: "04"
51
+ xml = o.to_xml :pain_008_001_version => "04"
52
+ xml = check_doc_header_04 xml
51
53
  expected = File.read(File.expand_path("../expected_customer_direct_debit_initiation_v04.xml", __FILE__))
52
- expected.force_encoding(Encoding::UTF_8)
54
+ expected.force_encoding(Encoding::UTF_8) if expected.respond_to? :force_encoding
53
55
  xml.should == expected
54
56
  end
55
57
 
56
58
  it "should produce v04 xml corresponding to the given inputs with an organisation identifier for the creditor" do
57
59
  o = order Sepa::DirectDebitOrder::OrganisationSepaIdentifier
58
- xml = o.to_xml pain_008_001_version: "04"
60
+ xml = o.to_xml :pain_008_001_version => "04"
61
+ xml = check_doc_header_04 xml
59
62
  expected = File.read(File.expand_path("../expected_customer_direct_debit_initiation_v04_with_org_id.xml", __FILE__))
60
- expected.force_encoding(Encoding::UTF_8)
63
+ expected.force_encoding(Encoding::UTF_8) if expected.respond_to? :force_encoding
61
64
  xml.should == expected
62
65
  end
63
66
 
@@ -1,5 +1,5 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.008.001.04" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.008.001.04 pain.008.001.04.xsd">
2
+ <Document>
3
3
  <CstmrDrctDbtInitn>
4
4
  <GrpHdr>
5
5
  <MsgId>MSG0001</MsgId>
@@ -1,5 +1,5 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.008.001.02" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.008.001.02 pain.008.001.02.xsd">
2
+ <Document>
3
3
  <CstmrDrctDbtInitn>
4
4
  <GrpHdr>
5
5
  <MsgId>MSG0001</MsgId>
@@ -121,7 +121,7 @@
121
121
  <PmtInfId>MONECOLE_PAYMENTS_20130703-RCUR</PmtInfId>
122
122
  <PmtMtd>DD</PmtMtd>
123
123
  <NbOfTxs>4</NbOfTxs>
124
- <CtrlSum>5536.349999999999</CtrlSum>
124
+ <CtrlSum>5536.35</CtrlSum>
125
125
  <PmtTpInf>
126
126
  <SvcLvl>
127
127
  <Cd>SEPA</Cd>
@@ -1,5 +1,5 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.008.001.04" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.008.001.04 pain.008.001.04.xsd">
2
+ <Document>
3
3
  <CstmrDrctDbtInitn>
4
4
  <GrpHdr>
5
5
  <MsgId>MSG0001</MsgId>
@@ -1,5 +1,5 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.008.001.04" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.008.001.04 pain.008.001.04.xsd">
2
+ <Document>
3
3
  <CstmrDrctDbtInitn>
4
4
  <GrpHdr>
5
5
  <MsgId>MSG0001</MsgId>
@@ -68,16 +68,17 @@ describe Sepa::PaymentsInitiation::Pain00800104::CustomerDirectDebitInitiation d
68
68
 
69
69
  it "should raise an error unless the version is '02' or '04'" do
70
70
  pain = Sepa::PaymentsInitiation::Pain00800104::CustomerDirectDebitInitiation.new(props)
71
- expect { pain.generate_xml(pain_008_001_version: '2') }.to raise_error
72
- expect { pain.generate_xml(pain_008_001_version: 2) }.to raise_error
73
- expect { pain.generate_xml(pain_008_001_version: "") }.to raise_error
71
+ expect { pain.generate_xml(:pain_008_001_version => '2') }.to raise_error
72
+ expect { pain.generate_xml(:pain_008_001_version => 2) }.to raise_error
73
+ expect { pain.generate_xml(:pain_008_001_version => "") }.to raise_error
74
74
  expect { pain.generate_xml({ }) }.to raise_error
75
75
  end
76
76
 
77
77
  it "should produce xml corresponding to the given inputs" do
78
- xml = Sepa::PaymentsInitiation::Pain00800104::CustomerDirectDebitInitiation.new(props).generate_xml(pain_008_001_version: '04')
78
+ xml = Sepa::PaymentsInitiation::Pain00800104::CustomerDirectDebitInitiation.new(props).generate_xml(:pain_008_001_version => '04')
79
+ xml = check_doc_header_04 xml
79
80
  expected = File.read(File.expand_path("../../../expected-simple.xml", __FILE__))
80
- expected.force_encoding(Encoding::UTF_8)
81
+ expected.force_encoding(Encoding::UTF_8) if expected.respond_to? :force_encoding
81
82
  xml.should == expected
82
83
  end
83
84
  end
data/spec/spec_helper.rb CHANGED
@@ -1,7 +1,41 @@
1
1
  require 'sepa'
2
2
 
3
+ #
4
+ # Ruby 1.8 hashes are unordered, which results in xml tag attributes appearing in arbitrary order, so
5
+ # we can't just do a plain string compare of output.
6
+ # XmlHelper replaces <Document blah blah blah> with <Document>, and checks that the "blah blah blah"
7
+ # part is still correct
8
+ #
9
+ module XmlHelper
10
+ XMLNSXSI = 'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"'
11
+ XMLNS_02 = 'xmlns="urn:iso:std:iso:20022:tech:xsd:pain.008.001.02"'
12
+ XSI_02 = 'xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.008.001.02 pain.008.001.02.xsd"'
13
+
14
+ XMLNS_04 = 'xmlns="urn:iso:std:iso:20022:tech:xsd:pain.008.001.04"'
15
+ XSI_04 = 'xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.008.001.04 pain.008.001.04.xsd"'
16
+
17
+ DOCUMENT_TAG = /<Document [^>]+>/
18
+
19
+ def check_doc_header_02 xml
20
+ document_tag = xml.match(DOCUMENT_TAG).to_s
21
+ document_tag.should include XMLNSXSI
22
+ document_tag.should include XMLNS_02
23
+ document_tag.should include XSI_02
24
+ xml.sub(DOCUMENT_TAG, '<Document>')
25
+ end
26
+
27
+ def check_doc_header_04 xml
28
+ document_tag = xml.match(DOCUMENT_TAG).to_s
29
+ document_tag.should include XMLNSXSI
30
+ document_tag.should include XMLNS_04
31
+ document_tag.should include XSI_04
32
+ xml.sub(DOCUMENT_TAG, '<Document>')
33
+ end
34
+ end
35
+
3
36
  RSpec.configure do |config|
4
37
  config.treat_symbols_as_metadata_keys_with_true_values = true
5
38
  config.run_all_when_everything_filtered = true
6
39
  config.order = 'random'
40
+ config.include XmlHelper
7
41
  end
metadata CHANGED
@@ -1,105 +1,73 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: sepa
3
- version: !ruby/object:Gem::Version
4
- version: 0.0.14
5
- prerelease:
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.15
6
5
  platform: ruby
7
- authors:
6
+ authors:
8
7
  - Conan Dalton
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-12-11 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
11
+
12
+ date: 2013-12-31 00:00:00 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
15
  name: builder
16
- requirement: !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: '0'
22
- type: :runtime
23
16
  prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ! '>='
28
- - !ruby/object:Gem::Version
29
- version: '0'
30
- - !ruby/object:Gem::Dependency
31
- name: aduki
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
- requirements:
35
- - - ! '>='
36
- - !ruby/object:Gem::Version
37
- version: '0'
17
+ requirement: &id001 !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - &id002
20
+ - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: "0"
38
23
  type: :runtime
24
+ version_requirements: *id001
25
+ - !ruby/object:Gem::Dependency
26
+ name: aduki
39
27
  prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ! '>='
44
- - !ruby/object:Gem::Version
45
- version: '0'
46
- - !ruby/object:Gem::Dependency
47
- name: countries
48
- requirement: !ruby/object:Gem::Requirement
49
- none: false
50
- requirements:
51
- - - ~>
52
- - !ruby/object:Gem::Version
53
- version: 0.9.3
28
+ requirement: &id003 !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - *id002
54
31
  type: :runtime
32
+ version_requirements: *id003
33
+ - !ruby/object:Gem::Dependency
34
+ name: countries
55
35
  prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
36
+ requirement: &id004 !ruby/object:Gem::Requirement
37
+ requirements:
59
38
  - - ~>
60
- - !ruby/object:Gem::Version
39
+ - !ruby/object:Gem::Version
61
40
  version: 0.9.3
62
- - !ruby/object:Gem::Dependency
41
+ type: :runtime
42
+ version_requirements: *id004
43
+ - !ruby/object:Gem::Dependency
63
44
  name: rspec
64
- requirement: !ruby/object:Gem::Requirement
65
- none: false
66
- requirements:
67
- - - ~>
68
- - !ruby/object:Gem::Version
69
- version: '2.9'
70
- type: :development
71
45
  prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
46
+ requirement: &id005 !ruby/object:Gem::Requirement
47
+ requirements:
75
48
  - - ~>
76
- - !ruby/object:Gem::Version
77
- version: '2.9'
78
- - !ruby/object:Gem::Dependency
79
- name: rspec_numbering_formatter
80
- requirement: !ruby/object:Gem::Requirement
81
- none: false
82
- requirements:
83
- - - ! '>='
84
- - !ruby/object:Gem::Version
85
- version: '0'
49
+ - !ruby/object:Gem::Version
50
+ version: "2.9"
86
51
  type: :development
52
+ version_requirements: *id005
53
+ - !ruby/object:Gem::Dependency
54
+ name: rspec_numbering_formatter
87
55
  prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
- requirements:
91
- - - ! '>='
92
- - !ruby/object:Gem::Version
93
- version: '0'
94
- description: ! ' Generate ISO20022 XML messages. Implements a subset of pain.008.001.02
95
- and pain.008.001.04 CustomerDirectDebitInitiation for now. WARNING: NO WARRANTY,
96
- USE AT YOUR OWN RISK AND PERIL. '
97
- email:
56
+ requirement: &id006 !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - *id002
59
+ type: :development
60
+ version_requirements: *id006
61
+ description: " Generate ISO20022 XML messages. Implements a subset of pain.008.001.02 and pain.008.001.04 CustomerDirectDebitInitiation for now. WARNING: NO WARRANTY, USE AT YOUR OWN RISK AND PERIL. "
62
+ email:
98
63
  - conan@conandalton.net
99
64
  executables: []
65
+
100
66
  extensions: []
67
+
101
68
  extra_rdoc_files: []
102
- files:
69
+
70
+ files:
103
71
  - .gitignore
104
72
  - .rspec
105
73
  - Gemfile
@@ -157,32 +125,29 @@ files:
157
125
  - spec/sepa/payments_initiation/pain00800104/customer_direct_debit_initiation_spec.rb
158
126
  - spec/spec_helper.rb
159
127
  homepage: https://github.com/conanite/sepa
160
- licenses:
128
+ licenses:
161
129
  - MIT
130
+ metadata: {}
131
+
162
132
  post_install_message:
163
133
  rdoc_options: []
164
- require_paths:
134
+
135
+ require_paths:
165
136
  - lib
166
- required_ruby_version: !ruby/object:Gem::Requirement
167
- none: false
168
- requirements:
169
- - - ! '>='
170
- - !ruby/object:Gem::Version
171
- version: '0'
172
- required_rubygems_version: !ruby/object:Gem::Requirement
173
- none: false
174
- requirements:
175
- - - ! '>='
176
- - !ruby/object:Gem::Version
177
- version: '0'
137
+ required_ruby_version: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - *id002
140
+ required_rubygems_version: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - *id002
178
143
  requirements: []
144
+
179
145
  rubyforge_project:
180
- rubygems_version: 1.8.24
146
+ rubygems_version: 2.0.14
181
147
  signing_key:
182
- specification_version: 3
183
- summary: ! 'pain.008.001.04 and pain.008.001.02 CustomerDirectDebitInitiation ISO20022
184
- XML. WARNING: NO WARRANTY, USE AT YOUR OWN RISK AND PERIL.'
185
- test_files:
148
+ specification_version: 4
149
+ summary: "pain.008.001.04 and pain.008.001.02 CustomerDirectDebitInitiation ISO20022 XML. WARNING: NO WARRANTY, USE AT YOUR OWN RISK AND PERIL."
150
+ test_files:
186
151
  - spec/sepa/direct_debit_order_spec.rb
187
152
  - spec/sepa/direct_debit_properties.yml
188
153
  - spec/sepa/expected-simple.xml