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