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