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 +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
|