qr-bills 1.0.10 → 1.0.11

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/qr-bills.rb +31 -0
  3. metadata +5 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dbb88b03ca64ef109608926dc972fd7c53f1db3f325e47d652faac6d128ad327
4
- data.tar.gz: 2c7443c74f2a307e4b7d93774454131e723fc73b310d0cc613efac3d92a86450
3
+ metadata.gz: d1e85a0928abfb125572539a4fbf99b331c789e2c21fd425b9c94736cb4fe8d8
4
+ data.tar.gz: 59788940942a55e4f30cf13a17c9ae8a20aeab4a925633bb8967cf2cc8c59fc2
5
5
  SHA512:
6
- metadata.gz: 64d2bb70d15a823c5cf8fe007d4be5f206e299334eee7f8193eda58249d97356a128c1f2782d58c04d1e835a3e52a401a36ccc10973907893ced49c7b050d7e8
7
- data.tar.gz: 1ebf9dbf4363102cb28f4c4b8781b26622f1fe69b4696c2e07fe83caa263cfbf376e566db5196dfa889389458f8e7866a6d5ca21c10e1a5f4b9cc41f44e828d2
6
+ metadata.gz: f9549f75f73c43ec82593358bb088454ce462eef5aa6ad71b2b83f95d432918dd30733abe0818435fe077797b1b9a01c7c9a5f2712bfd47a59596800789ae49b
7
+ data.tar.gz: 522b9bc62b6f80de240080390ca7a62a1ea116731bc2046d0339706c08b90f5a1be257bf31f5414bcb8a53529ada4cd410a3d7edf7195f958a22608551b2442e
data/lib/qr-bills.rb CHANGED
@@ -26,10 +26,41 @@ module QRBills
26
26
  { params: qr_params, output: output }
27
27
  end
28
28
 
29
+ # Given a creditor's IBAN number, this method checks whether an IBAN is of the new qr or the legacy esr type.
30
+ # When generating a bill with a reference number, that number must be generated using the following method if this helper returns:
31
+ # - :qr => create_creditor_reference
32
+ # - :esr => create_esr_creditor_reference
33
+ def self.iban_type(iban)
34
+ return nil if iban.blank?
35
+ iban_institute_identifier = iban.strip.gsub(' ', '')[4..8].to_i
36
+ return iban_institute_identifier.between?(30_000, 31_999) ? :qr : :esr
37
+ end
38
+
29
39
  def self.create_creditor_reference(reference)
30
40
  QRCreditorReference.create(reference)
31
41
  end
32
42
 
43
+ # ESR reference should be considered "deprecated" and is here for backward compatibility
44
+ # This is based on: http://sahits.ch/blog/blog/2007/11/08/uberprufen-esr-referenz-nummer/
45
+ def self.create_esr_creditor_reference(reference)
46
+ raise ArgumentError, "#{QRExceptions::INVALID_PARAMETERS}: You must provide a 26 digit reference for ESR." unless reference.size == 26
47
+ raise ArgumentError, "#{QRExceptions::INVALID_PARAMETERS}: You must provide a valid digit for ESR." unless reference.to_i.to_s == reference
48
+
49
+ esr = "#{reference}0"
50
+ lookup_table = [0, 9, 4, 6, 8, 2, 7, 1, 3, 5]
51
+ next_val = 0
52
+
53
+ (0...esr.length - 1).each do |i|
54
+ ch = esr[i]
55
+ n = ch.to_i
56
+ index = (next_val + n) % 10
57
+ next_val = lookup_table[index]
58
+ end
59
+
60
+ result = (10 - next_val) % 10
61
+ return result
62
+ end
63
+
33
64
  def self.get_qr_params
34
65
  QRParams.get_qr_params
35
66
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qr-bills
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.10
4
+ version: 1.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Damiano Radice
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-12-07 00:00:00.000000000 Z
11
+ date: 2025-09-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: i18n
@@ -134,7 +134,7 @@ files:
134
134
  - web/assets/images/swiss_cross.svg
135
135
  homepage: https://github.com/damoiser/qr-bills
136
136
  licenses:
137
- - MIT
137
+ - BSD-3-Clause
138
138
  metadata:
139
139
  bug_tracker_uri: https://github.com/damoiser/qr-bills/issues
140
140
  changelog_uri: https://github.com/damoiser/qr-bills/CHANGELOG.md
@@ -150,14 +150,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
150
150
  requirements:
151
151
  - - ">="
152
152
  - !ruby/object:Gem::Version
153
- version: 2.7.1
153
+ version: 3.2.2
154
154
  required_rubygems_version: !ruby/object:Gem::Requirement
155
155
  requirements:
156
156
  - - ">="
157
157
  - !ruby/object:Gem::Version
158
158
  version: '0'
159
159
  requirements: []
160
- rubygems_version: 3.1.2
160
+ rubygems_version: 3.4.10
161
161
  signing_key:
162
162
  specification_version: 4
163
163
  summary: QR-bills support for swiss payments