ifmb 0.0.2 → 0.0.3
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.
- data/.rspec +2 -1
- data/lib/ifmb/generator.rb +28 -16
- data/lib/ifmb/version.rb +1 -1
- data/spec/generator_spec.rb +3 -3
- metadata +2 -2
data/.rspec
CHANGED
@@ -1 +1,2 @@
|
|
1
|
-
--color
|
1
|
+
--color
|
2
|
+
--format documentation
|
data/lib/ifmb/generator.rb
CHANGED
@@ -27,22 +27,18 @@ module Ifmb
|
|
27
27
|
|
28
28
|
def valid?
|
29
29
|
if (entidade.to_s.length < 5)
|
30
|
-
@errors[:entidade]
|
30
|
+
@errors[:entidade] = 'nao e valida! Tem que ter 5 digitos'
|
31
31
|
return false
|
32
32
|
elsif (entidade.to_s.length > 5)
|
33
|
-
@errors[:entidade]
|
33
|
+
@errors[:entidade] = 'nao e valida! Tem que ter 5 digitos'
|
34
34
|
return false
|
35
35
|
end
|
36
36
|
|
37
37
|
if (sub_entidade.to_s.length == 0)
|
38
|
-
|
38
|
+
@erros[:sub_entidade] = 'sub entidade invalida'
|
39
39
|
return false
|
40
|
-
elsif (sub_entidade.to_s.length == 1)
|
41
|
-
sub_entidade = '00' + sub_entidade.to_s
|
42
|
-
elsif (sub_entidade.to_s.length == 2)
|
43
|
-
sub_entidade = '0' + sub_entidade.to_s
|
44
40
|
elsif (sub_entidade.to_s.length > 3)
|
45
|
-
|
41
|
+
@erros[:sub_entidade] = 'sub entidade invalida +'
|
46
42
|
return false
|
47
43
|
end
|
48
44
|
true
|
@@ -59,10 +55,26 @@ module Ifmb
|
|
59
55
|
def generate
|
60
56
|
raise ArgumentError.new "arguments are invalid! #{@errors}" unless valid?
|
61
57
|
|
58
|
+
if ((order_value.to_f * 100).round < 1)
|
59
|
+
raise RuntimeError.new 'impossivel de realizar pagamentos de 1 euro'
|
60
|
+
end
|
61
|
+
|
62
|
+
if ((order_value.to_f * 100).round >= 1_000_000)
|
63
|
+
# this is not implemented
|
64
|
+
# related with the while loop
|
65
|
+
raise RuntimeError.new 'Aviso: Pagamento Fraccionado por exceder o valor limite para pagamentos por multibanco'
|
66
|
+
end
|
67
|
+
|
68
|
+
temp_order_id = order_id
|
69
|
+
temp_order_value = order_value
|
70
|
+
temp_entidade = entidade
|
71
|
+
temp_sub_entidade = sub_entidade
|
72
|
+
|
62
73
|
check_val = 0
|
63
|
-
|
74
|
+
temp_order_id = "00000#{temp_order_id}"[-4..-1].to_i
|
64
75
|
|
65
|
-
#
|
76
|
+
# temp_order_id = temp_order_id[-4..-1]
|
77
|
+
temp_order_value = (order_value * 100).to_i
|
66
78
|
|
67
79
|
if ((order_value.to_f * 100).round < 1)
|
68
80
|
raise RuntimeError.new 'impossivel de realizar pagamentos de 1 euro'
|
@@ -75,14 +87,14 @@ module Ifmb
|
|
75
87
|
end
|
76
88
|
|
77
89
|
# this is not implemented
|
78
|
-
# while (
|
79
|
-
#
|
80
|
-
# generate_mb_ref(entidade, sub_entidade,
|
81
|
-
#
|
90
|
+
# while (temp_order_value.to_i >= 1_000_000)
|
91
|
+
# temp_order_id += temp_order_id
|
92
|
+
# generate_mb_ref(entidade, sub_entidade, temp_order_id, 999999.99)
|
93
|
+
# temp_order_value = temp_order_value.to_f - 999999.99
|
82
94
|
# end
|
83
95
|
|
84
96
|
|
85
|
-
check_str = sprintf('%05u%03u%04u%08u',
|
97
|
+
check_str = sprintf('%05u%03u%04u%08u', temp_entidade, temp_sub_entidade, temp_order_id.to_s, temp_order_value)
|
86
98
|
|
87
99
|
chk_array = [3, 30, 9, 90, 27, 76, 81, 34, 49, 5, 50, 15, 53, 45, 62, 38, 89, 17, 73, 51]
|
88
100
|
|
@@ -95,7 +107,7 @@ module Ifmb
|
|
95
107
|
|
96
108
|
check_digits = sprintf('%02u', 98-check_val);
|
97
109
|
|
98
|
-
@referencia = "#{
|
110
|
+
@referencia = "#{temp_sub_entidade}#{check_str[8,3]}#{check_str[11,1]}#{check_digits}".to_i
|
99
111
|
end
|
100
112
|
|
101
113
|
private
|
data/lib/ifmb/version.rb
CHANGED
data/spec/generator_spec.rb
CHANGED
@@ -7,7 +7,7 @@ describe Ifmb::Generator do
|
|
7
7
|
before(:each) do
|
8
8
|
@g1 = G.new entidade: 18282, sub_entidade: 123, order_id: 162, order_value: 234.23
|
9
9
|
@g2 = G.new entidade: 11604, sub_entidade: 999, order_id: 1234, order_value: 25.86
|
10
|
-
@g3 = G.new entidade:
|
10
|
+
@g3 = G.new entidade: 12345, sub_entidade: 123, order_id: 6789123, order_value: 62.47
|
11
11
|
end
|
12
12
|
|
13
13
|
it "has attributes" do
|
@@ -26,13 +26,13 @@ describe Ifmb::Generator do
|
|
26
26
|
end
|
27
27
|
|
28
28
|
describe "Generator#generate" do
|
29
|
-
it "retrives a valid reference" do
|
29
|
+
it "retrives a valid reference (Based on example)" do
|
30
30
|
@g2.order_value.should_not be_nil
|
31
31
|
@g2.generate.should == 999123490
|
32
32
|
end
|
33
33
|
|
34
34
|
it 'works with octal like numbers' do
|
35
|
-
@g3.generate.should ==
|
35
|
+
@g3.generate.should == 123912386
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ifmb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-11-
|
13
|
+
date: 2012-11-23 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rake
|