tax-util 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/tax_util.rb +35 -2
  3. metadata +19 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4f52c345aa46739428ad80253c1cb152ddf7bc1e
4
- data.tar.gz: e6b5b046832e8fb13c7e4a72152ad35325931ac6
3
+ metadata.gz: fce6d7d6e79d116dec3602d4d8947da70da4a1ce
4
+ data.tar.gz: c861ce2a3ba1976b0f1ece4e41ae0af01ca907ff
5
5
  SHA512:
6
- metadata.gz: 89beee818c535786b5dec1dcf8c422489e687998ffa293fa3d017110b3999dcb3eb4227bfec768faac065eddfb9af426828f707f1ac101adb3d5e4cc68fa4fd5
7
- data.tar.gz: a979271824ba4f27282d4bea11a9df64cdd8016712c337a1b48b991d2e4cd1b14f213ea3cd1d66bfa606711cfa8a9ffc2dd8d4793ed3af6ce370842435bc557a
6
+ metadata.gz: e08d7c3a8f6afcc03b13b571e1e6ec97fdc1731aebe35ccfafa1605b23ec25e3c28a36f5ab5e8fbacd053ffc044b6e856cfe41ad55933c74b8ec6107a3fe574b
7
+ data.tar.gz: ee6b61214ec86bffe7738655452225a07287eff8c6f04cd786b1ca3ae1eadf6e8ae72810eec642a4363ce74d3fe9f842131159f27c6d158f007484542fc17532
data/lib/tax_util.rb CHANGED
@@ -1,5 +1,38 @@
1
+ Dir.glob('./lib/calc_method/*').each{|i| require i }
2
+
1
3
  class TaxUtil
2
- def self.hi
3
- puts "Hello world"
4
+ def self.calculate(gross_amount, calc_method=:gross_to_nett)
5
+ self.const_get(classify(calc_method[:method])).new(gross_amount).calculate
4
6
  end
7
+
8
+ def self.tax_for(amount, tax_scale, taxes=0)
9
+ range = TAX_SCALE.keys[tax_scale]
10
+ tax = TAX_SCALE.fetch(range)
11
+ max_of_scale = (range.last - range.first) + 1
12
+
13
+ if((current_amount = amount - max_of_scale) >= 0)
14
+ taxes += max_of_scale * tax
15
+ tax_for(current_amount, tax_scale+1, taxes.floor)
16
+ else
17
+ (taxes += (amount * tax)).floor
18
+ end
19
+ end
20
+
21
+ def self.tax_correction?(amount)
22
+ TAX_SCALE.select{|a| a === amount}.values.first == 0
23
+ end
24
+
25
+ private
26
+ TAX_SCALE = {
27
+ (0..19822) => 0.365,
28
+ (19823..33589) => 0.42,
29
+ (33590..57585) => 0.42,
30
+ (57586..Float::INFINITY) => 0.52
31
+ }
32
+
33
+ SCALE_ONE = 0
34
+
35
+ def self.classify(symbol_name)
36
+ "CalcMethod::#{symbol_name.to_s.split('_').map{|name_part| (name_part[0] = name_part[0].upcase!) ; name_part }.join('')}"
37
+ end
5
38
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tax-util
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bryan Oemar
@@ -14,16 +14,30 @@ dependencies:
14
14
  name: rspec
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '3.2'
19
+ version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '3.2'
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: pry
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  description: Holder tax util gem
28
42
  email: bryan.oemar@holder.nl
29
43
  executables: []