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 CHANGED
@@ -1 +1,2 @@
1
- --color
1
+ --color
2
+ --format documentation
@@ -27,22 +27,18 @@ module Ifmb
27
27
 
28
28
  def valid?
29
29
  if (entidade.to_s.length < 5)
30
- @errors[:entidade] << 'nao e valida! Tem que ter 5 digitos'
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] << 'nao e valida! Tem que ter 5 digitos'
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
- p 'sub entidade invalida'
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
- p 'sub entidade invalida +'
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
- # order_id = "0000" + order_id.to_s
74
+ temp_order_id = "00000#{temp_order_id}"[-4..-1].to_i
64
75
 
65
- # order_id = order_id.slice((order_id.length - 4)..-1).to_s
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 (order_value.to_i >= 1_000_000)
79
- # order_id += order_id
80
- # generate_mb_ref(entidade, sub_entidade, order_id, 999999.99)
81
- # order_value = order_value.to_f - 999999.99
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', entidade, sub_entidade, order_id.to_s, (order_value.to_f * 100).round)
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 = "#{sub_entidade}#{check_str[8,3]}#{check_str[11,1]}#{check_digits}".to_i
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
@@ -1,3 +1,3 @@
1
1
  module Ifmb
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -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: 18282, sub_entidade: 700, order_id: 700, order_value: 234.23
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 == 700070047
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.2
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-22 00:00:00.000000000 Z
13
+ date: 2012-11-23 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rake