qr-bills 0.1.2 → 0.2

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: e156aa65cb4788eff6c5450aee6dd63f69090432e4f4182d304a31aac808ebe6
4
- data.tar.gz: 3f928ff3b0213a3509f161e4ba2a56e480830e78181740835d294fd087d6e943
3
+ metadata.gz: 1e1fe21f94c47f9bf2a75366c84c57613da064450e93c9d1392ae29a0e4a1cb4
4
+ data.tar.gz: 603a98f65633d442e67644113b531165fcc2cbff6160496ad15ff5ae8b075122
5
5
  SHA512:
6
- metadata.gz: d61b9da6f1620aa1c8f8d05a9d460105087076c96568e061fa3f16d09cfb697c16ffd34084513b4ba397a73b61ba104cf2b5562f380f4d71bf4a3604c3c984a7
7
- data.tar.gz: 88d1f1c246014a9f6f2837d9d6c20760d0fb759fc0c3484e0c5f561a6e4f31622935ddda9a55dcdb25a9888b159b4a2d9918f76fced28118541396174a88b0ef
6
+ metadata.gz: a29968031cea9c22e8e48e07e34b142e24045b75324a2708680af7ce1b95f3041432b3fb158a7a8a38233ca49da30225371ce3857f053cfba7331a0a16ff99b8
7
+ data.tar.gz: 22dfd9f688aebf73e2aef1fc0f72f7a126ccfd7d08bff9c5495756bcedff293bd69c30e10a24bccaa843e05ac916e5609c302aa913c70ff2e7f2b60a09326020
@@ -2,6 +2,7 @@ require 'i18n'
2
2
  require 'qr-bills/qr-exceptions'
3
3
  require 'qr-bills/qr-params'
4
4
  require 'qr-bills/qr-html-layout'
5
+ require 'qr-bills/qr-creditor-reference'
5
6
 
6
7
  class QRBills
7
8
  def self.generate(qr_params)
@@ -36,6 +37,10 @@ class QRBills
36
37
  return bill
37
38
  end
38
39
 
40
+ def self.create_creditor_reference(reference)
41
+ return QRCreditorReference.create(reference)
42
+ end
43
+
39
44
  def self.get_qr_params
40
45
  QRParams.get_qr_params
41
46
  end
@@ -0,0 +1,75 @@
1
+ require 'qr-bills/qr-exceptions'
2
+
3
+ # implement Creditor Reference ISO 11649 generator
4
+ class QRCreditorReference
5
+ PREFIX = "RF"
6
+
7
+ @char_values = {
8
+ "A": 10,
9
+ "B": 11,
10
+ "C": 12,
11
+ "D": 13,
12
+ "E": 14,
13
+ "F": 15,
14
+ "G": 16,
15
+ "H": 17,
16
+ "I": 18,
17
+ "J": 19,
18
+ "K": 20,
19
+ "L": 21,
20
+ "M": 22,
21
+ "N": 23,
22
+ "O": 24,
23
+ "P": 25,
24
+ "Q": 26,
25
+ "R": 27,
26
+ "S": 28,
27
+ "T": 29,
28
+ "U": 30,
29
+ "V": 31,
30
+ "W": 32,
31
+ "X": 33,
32
+ "Y": 34,
33
+ "Z": 35
34
+ }
35
+
36
+ def self.create(reference)
37
+ reference = reference.delete(' ')
38
+ chars = reference.split('')
39
+
40
+ if chars.size == 0
41
+ raise QRExceptions::INVALID_PARAMETERS + ": provided reference too short: must be at least one char"
42
+ end
43
+
44
+ # max 25 chars: 2 chars (RF) + 2 chars (check code) + 21 chars (reference)
45
+ if chars.size > 21
46
+ raise QRExceptions::INVALID_PARAMETERS + ": provided reference too long: must be less than 21 chars"
47
+ end
48
+
49
+ reference_val = ""
50
+
51
+ chars.each do |c|
52
+ reference_val += get_char_value(c).to_s
53
+ end
54
+
55
+ # put RF+00 at the end to resolve check code
56
+ reference_val += @char_values["R".to_sym].to_s + @char_values["F".to_sym].to_s + "00"
57
+
58
+ # get check code
59
+ check_code = 98 - (reference_val.to_i % 97)
60
+
61
+ if check_code < 10
62
+ check_code = "0" + check_code.to_s
63
+ end
64
+
65
+ return PREFIX + check_code.to_s + reference
66
+ end
67
+
68
+ def self.get_char_value(char)
69
+ if char =~ /[0-9]/
70
+ return char.to_i
71
+ end
72
+
73
+ return @char_values[char.upcase.to_sym]
74
+ end
75
+ end
@@ -17,8 +17,8 @@ class QRHTMLLayout
17
17
  layout += " #{params[:bill_params][:creditor][:address][:name]}<br/>\n"
18
18
  layout += " #{params[:bill_params][:creditor][:address][:line1]} #{params[:bill_params][:creditor][:address][:line2]}<br/>\n"
19
19
  layout += " #{params[:bill_params][:creditor][:address][:postal_code]} #{params[:bill_params][:creditor][:address][:town]}<br/>\n"
20
- layout += " </div>"
21
- layout += " <div><br/></div>"
20
+ layout += " </div>\n"
21
+ layout += " <div><br/></div>\n"
22
22
 
23
23
  if !params[:bill_params][:reference].nil? && !params[:bill_params][:reference].empty?
24
24
  layout += " <div class=\"subtitle reference\">#{I18n.t(:reference).capitalize}</div>\n"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qr-bills
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: '0.2'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Damiano Radice
@@ -110,6 +110,7 @@ files:
110
110
  - config/locales/fr.yml
111
111
  - config/locales/it.yml
112
112
  - lib/qr-bills.rb
113
+ - lib/qr-bills/qr-creditor-reference.rb
113
114
  - lib/qr-bills/qr-exceptions.rb
114
115
  - lib/qr-bills/qr-generator.rb
115
116
  - lib/qr-bills/qr-html-layout.rb