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 +4 -4
- data/lib/qr-bills.rb +5 -0
- data/lib/qr-bills/qr-creditor-reference.rb +75 -0
- data/lib/qr-bills/qr-html-layout.rb +2 -2
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1e1fe21f94c47f9bf2a75366c84c57613da064450e93c9d1392ae29a0e4a1cb4
|
4
|
+
data.tar.gz: 603a98f65633d442e67644113b531165fcc2cbff6160496ad15ff5ae8b075122
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a29968031cea9c22e8e48e07e34b142e24045b75324a2708680af7ce1b95f3041432b3fb158a7a8a38233ca49da30225371ce3857f053cfba7331a0a16ff99b8
|
7
|
+
data.tar.gz: 22dfd9f688aebf73e2aef1fc0f72f7a126ccfd7d08bff9c5495756bcedff293bd69c30e10a24bccaa843e05ac916e5609c302aa913c70ff2e7f2b60a09326020
|
data/lib/qr-bills.rb
CHANGED
@@ -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.
|
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
|