qr-bills 0.1.2 → 0.2

Sign up to get free protection for your applications and to get access to all the features.
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