tax_jp 0.2.5 → 0.2.6

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 68378f3cfab1a24b76cd4e5815dbefe97f8937be
4
- data.tar.gz: 27a278304ee4e9c55ffd4ca2ed7c47a869c21689
3
+ metadata.gz: 168ef822b3f5c9836e33ae118758b4e545ed5fc9
4
+ data.tar.gz: 49b8d79bedb28032200a2a5300a6b369076ae609
5
5
  SHA512:
6
- metadata.gz: 2630cef652ff181cd9d780ff845309c0134588cd6dc5ddcde059ede7b5de39fb7ce998a6b8d40cb6bdb47e6393189296af02433dedbcaeb8f16d37f866550e80
7
- data.tar.gz: 022193eb7252c70d3b7e3900c70255f357312200ea2f1ac9410fa7a2e23f6f3f98f2363dc84219854c7918bdb0e8649b12c9cbc454387be3ff8279158e76c9c4
6
+ metadata.gz: 163d3df21f60b59083c84256a44f3ccd2ea1c552e9ee6886703f8548ce85252ff1baea74e06fe9eb2250e98b79f45548bbeaac8cf284d50ff9a3ee1740deee14
7
+ data.tar.gz: bedea1f069a2570290e7c48f535fda6fcaec699e197cfe5ffa0a9622dfc3af93f8fbe040463e9919917372852915d0c92779d89174a7f8e74ca64bc929daf9a7
data/.travis.yml CHANGED
@@ -1,7 +1,8 @@
1
1
  sudo: false
2
2
  language: ruby
3
3
  rvm:
4
- - 2.1.0
4
+ - 2.2.3
5
+ - 2.1.6
5
6
  - 2.0.0
6
7
  before_install:
7
8
  gem install bundler --version '1.7.9'
@@ -0,0 +1,9 @@
1
+ create table depreciation_rates (
2
+ valid_from date not null,
3
+ valid_until date not null,
4
+ durable_years integer not null,
5
+ fixed_amount_rate decimal(1,6) not null,
6
+ rate decimal(1,6) not null,
7
+ revised_rate decimal(1,6) not null,
8
+ guaranteed_rate decimal(1,6) not null
9
+ );
@@ -0,0 +1,50 @@
1
+ 耐用年数 定額法償却率 定率法償却率 定率法改定償却率 定率法保証率
2
+ 2 0.5 1 0 0
3
+ 3 0.334 0.833 1 0.02789
4
+ 4 0.25 0.625 1 0.05274
5
+ 5 0.2 0.5 1 0.06249
6
+ 6 0.167 0.417 0.5 0.05776
7
+ 7 0.143 0.357 0.5 0.05496
8
+ 8 0.125 0.313 0.334 0.05111
9
+ 9 0.112 0.278 0.334 0.04731
10
+ 10 0.1 0.25 0.334 0.04448
11
+ 11 0.091 0.227 0.25 0.04123
12
+ 12 0.084 0.208 0.25 0.0387
13
+ 13 0.077 0.192 0.2 0.03633
14
+ 14 0.072 0.179 0.2 0.03389
15
+ 15 0.067 0.167 0.2 0.03217
16
+ 16 0.063 0.156 0.167 0.03063
17
+ 17 0.059 0.147 0.167 0.02905
18
+ 18 0.056 0.139 0.143 0.02757
19
+ 19 0.053 0.132 0.143 0.02616
20
+ 20 0.05 0.125 0.143 0.02517
21
+ 21 0.048 0.119 0.125 0.02408
22
+ 22 0.046 0.114 0.125 0.02296
23
+ 23 0.044 0.109 0.112 0.02226
24
+ 24 0.042 0.104 0.112 0.02157
25
+ 25 0.04 0.1 0.112 0.02058
26
+ 26 0.039 0.096 0.1 0.01989
27
+ 27 0.038 0.093 0.1 0.01902
28
+ 28 0.036 0.089 0.091 0.01866
29
+ 29 0.035 0.086 0.091 0.01803
30
+ 30 0.034 0.083 0.084 0.01766
31
+ 31 0.033 0.081 0.084 0.01688
32
+ 32 0.032 0.078 0.084 0.01655
33
+ 33 0.031 0.076 0.077 0.01585
34
+ 34 0.03 0.074 0.077 0.01532
35
+ 35 0.029 0.071 0.072 0.01532
36
+ 36 0.028 0.069 0.072 0.01494
37
+ 37 0.028 0.068 0.072 0.01425
38
+ 38 0.027 0.066 0.067 0.01393
39
+ 39 0.026 0.064 0.067 0.0137
40
+ 40 0.025 0.063 0.067 0.01317
41
+ 41 0.025 0.061 0.063 0.01306
42
+ 42 0.024 0.06 0.063 0.01261
43
+ 43 0.024 0.058 0.059 0.01248
44
+ 44 0.023 0.057 0.059 0.0121
45
+ 45 0.023 0.056 0.059 0.01175
46
+ 46 0.022 0.054 0.056 0.01175
47
+ 47 0.022 0.053 0.056 0.01153
48
+ 48 0.021 0.052 0.053 0.01126
49
+ 49 0.021 0.051 0.053 0.01102
50
+ 50 0.02 0.05 0.053 0.01072
@@ -0,0 +1,50 @@
1
+ 耐用年数 定額法償却率 定率法償却率 定率法改定償却率 定率法保証率
2
+ 2 0.5 1 0 0
3
+ 3 0.334 0.667 1 0.11089
4
+ 4 0.25 0.5 1 0.12499
5
+ 5 0.2 0.4 0.5 0.108
6
+ 6 0.167 0.333 0.334 0.09911
7
+ 7 0.143 0.286 0.334 0.0868
8
+ 8 0.125 0.25 0.334 0.07909
9
+ 9 0.112 0.222 0.25 0.07126
10
+ 10 0.1 0.2 0.25 0.06552
11
+ 11 0.091 0.182 0.2 0.05992
12
+ 12 0.084 0.167 0.2 0.05566
13
+ 13 0.077 0.154 0.167 0.0518
14
+ 14 0.072 0.143 0.167 0.04854
15
+ 15 0.067 0.133 0.143 0.04565
16
+ 16 0.063 0.125 0.143 0.04294
17
+ 17 0.059 0.118 0.125 0.04038
18
+ 18 0.056 0.111 0.112 0.03884
19
+ 19 0.053 0.105 0.112 0.03693
20
+ 20 0.05 0.1 0.112 0.03486
21
+ 21 0.048 0.095 0.1 0.03335
22
+ 22 0.046 0.091 0.1 0.03182
23
+ 23 0.044 0.087 0.091 0.03052
24
+ 24 0.042 0.083 0.084 0.02969
25
+ 25 0.04 0.08 0.084 0.02841
26
+ 26 0.039 0.077 0.084 0.02716
27
+ 27 0.038 0.074 0.077 0.02624
28
+ 28 0.036 0.071 0.072 0.02568
29
+ 29 0.035 0.069 0.072 0.02463
30
+ 30 0.034 0.067 0.072 0.02366
31
+ 31 0.033 0.065 0.067 0.02286
32
+ 32 0.032 0.063 0.067 0.02216
33
+ 33 0.031 0.061 0.063 0.02161
34
+ 34 0.03 0.059 0.063 0.02097
35
+ 35 0.029 0.057 0.059 0.02051
36
+ 36 0.028 0.056 0.059 0.01974
37
+ 37 0.028 0.054 0.056 0.0195
38
+ 38 0.027 0.053 0.056 0.01882
39
+ 39 0.026 0.051 0.053 0.0186
40
+ 40 0.025 0.05 0.053 0.01791
41
+ 41 0.025 0.049 0.05 0.01741
42
+ 42 0.024 0.048 0.05 0.01694
43
+ 43 0.024 0.047 0.048 0.01664
44
+ 44 0.023 0.045 0.046 0.01664
45
+ 45 0.023 0.044 0.046 0.01634
46
+ 46 0.022 0.043 0.044 0.01601
47
+ 47 0.022 0.043 0.044 0.01532
48
+ 48 0.021 0.042 0.044 0.01499
49
+ 49 0.021 0.041 0.042 0.01475
50
+ 50 0.02 0.04 0.042 0.0144
@@ -1,11 +1,13 @@
1
1
  require 'rake'
2
2
  require 'tax_jp'
3
+ require 'tax_jp/depreciation_rates/db_builder'
3
4
  require 'tax_jp/social_insurances/db_builder'
4
5
  require 'tax_jp/withheld_taxes/db_builder'
5
6
 
6
7
  namespace :taxjp do
7
8
  task :build do
8
9
  Rake::Task["taxjp:build:consumption_tax"].invoke
10
+ Rake::Task["taxjp:build:depreciation_rate"].invoke
9
11
  Rake::Task["taxjp:build:social_insurance"].invoke
10
12
  Rake::Task["taxjp:build:withheld_tax"].invoke
11
13
  end
@@ -18,10 +20,10 @@ namespace :taxjp do
18
20
  TaxJp::Utils.render 'app/assets/javascripts/tax.js'
19
21
  end
20
22
 
21
- desc '源泉徴収税DBを構築します。'
22
- task :withheld_tax do
23
- puts '源泉徴収税'
24
- TaxJp::WithheldTaxes::DbBuilder.new.run
23
+ desc '減価償却率DBを構築します。'
24
+ task :depreciation_rate do
25
+ puts '減価償却率'
26
+ TaxJp::DepreciationRates::DbBuilder.new.run
25
27
  end
26
28
 
27
29
  desc '社会保険料DBを構築します。'
@@ -30,5 +32,11 @@ namespace :taxjp do
30
32
  TaxJp::SocialInsurances::DbBuilder.new.run
31
33
  end
32
34
 
35
+ desc '源泉徴収税DBを構築します。'
36
+ task :withheld_tax do
37
+ puts '源泉徴収税'
38
+ TaxJp::WithheldTaxes::DbBuilder.new.run
39
+ end
40
+
33
41
  end
34
42
  end
@@ -0,0 +1,68 @@
1
+ module TaxJp
2
+ module DepreciationRates
3
+ end
4
+
5
+ # 減価償却率
6
+ class DepreciationRate
7
+ DB_PATH = File.join(TaxJp::Utils.data_dir, '減価償却率.db')
8
+
9
+ attr_reader :valid_from, :valid_until
10
+ attr_reader :durable_years
11
+ attr_reader :fixed_amount_rate
12
+ attr_reader :rate, :revised_rate, :guaranteed_rate
13
+
14
+ def initialize(row)
15
+ @valid_from = row[0]
16
+ @valid_until = row[1]
17
+ @durable_years = row[2]
18
+ @fixed_amount_rate = row[3]
19
+ @rate = row[4]
20
+ @revised_rate = row[5]
21
+ @guaranteed_rate = row[6]
22
+ end
23
+
24
+ def self.find_all_by_date(date)
25
+ date = TaxJp::Utils.convert_to_date(date)
26
+
27
+ with_database do |db|
28
+ sql = 'select * from depreciation_rates '
29
+ sql << 'where valid_from <= ? and valid_until >= ? '
30
+ sql << 'order by durable_years '
31
+
32
+ ret = []
33
+ db.execute(sql, [date, date]) do |row|
34
+ ret << TaxJp::DepreciationRate.new(row)
35
+ end
36
+ ret
37
+ end
38
+ end
39
+
40
+ def self.find_by_date_and_durable_years(date, durable_years)
41
+ date = TaxJp::Utils.convert_to_date(date)
42
+
43
+ with_database do |db|
44
+ sql = 'select * from depreciation_rates '
45
+ sql << 'where valid_from <= ? and valid_until >= ? '
46
+ sql << ' and durable_years = ? '
47
+
48
+ ret = nil
49
+ db.execute(sql, [date, date, durable_years]) do |row|
50
+ ret = TaxJp::DepreciationRate.new(row)
51
+ end
52
+ ret
53
+ end
54
+ end
55
+
56
+ private
57
+
58
+ def self.with_database
59
+ db = SQLite3::Database.new(DB_PATH)
60
+ begin
61
+ yield db
62
+ ensure
63
+ db.close
64
+ end
65
+ end
66
+ end
67
+
68
+ end
@@ -0,0 +1,58 @@
1
+ require 'csv'
2
+
3
+ class TaxJp::DepreciationRates::DbBuilder
4
+
5
+ def initialize(db_path = nil)
6
+ @db_path = db_path || TaxJp::DepreciationRate::DB_PATH
7
+ end
8
+
9
+ def run(options = {})
10
+ with_database(options) do |db|
11
+ Dir.glob(File.join(TaxJp::Utils.data_dir, '減価償却', '減価償却率-*.tsv')).each do |filename|
12
+ valid_from, valid_until = filename_to_date(filename)
13
+
14
+ CSV.foreach(filename, :col_sep => "\t") do |row|
15
+ next if row[0].to_i == 0
16
+ db.execute(insert_sql, [valid_from, valid_until] + row)
17
+ end
18
+ end
19
+ end
20
+ end
21
+
22
+ private
23
+
24
+ def with_database(options = {})
25
+ if options.fetch(:recreate, true)
26
+ FileUtils.rm_f(@db_path)
27
+ db = SQLite3::Database.new(@db_path)
28
+ db.execute(TaxJp::Utils.load_file(File.join('減価償却', 'schema_depreciation_rates.sql')))
29
+ else
30
+ db = SQLite3::Database.new(@db_path)
31
+ end
32
+
33
+ begin
34
+ yield db
35
+ ensure
36
+ db.close
37
+ end
38
+ end
39
+
40
+ def insert_sql
41
+ columns = %w{valid_from valid_until durable_years fixed_amount_rate rate revised_rate guaranteed_rate}
42
+
43
+ ret = 'insert into depreciation_rates ( '
44
+ ret << columns.join(',')
45
+ ret << ') values ('
46
+ ret << columns.map{|c| '?' }.join(',')
47
+ ret << ')'
48
+ ret
49
+ end
50
+
51
+ def filename_to_date(filename)
52
+ title, valid_from, valid_until = File.basename(filename).split('.').first.split('-')
53
+ valid_from = Date.strptime(valid_from, '%Y%m%d')
54
+ valid_until = Date.strptime(valid_until, '%Y%m%d')
55
+ [valid_from.strftime('%Y-%m-%d'), valid_until.strftime('%Y-%m-%d')]
56
+ end
57
+
58
+ end
@@ -1,5 +1,3 @@
1
- require 'sqlite3'
2
-
3
1
  module TaxJp
4
2
  module SocialInsurances
5
3
  require_relative 'social_insurances/utils'
@@ -65,7 +63,7 @@ module TaxJp
65
63
  end
66
64
 
67
65
  def self.find_all_by_date_and_prefecture(date, prefecture)
68
- date = convert_to_date(date)
66
+ date = TaxJp::Utils.convert_to_date(date)
69
67
  prefecture_code = convert_to_prefecture_code(prefecture)
70
68
 
71
69
  with_database do |db|
@@ -83,7 +81,7 @@ module TaxJp
83
81
  end
84
82
 
85
83
  def self.find_by_date_and_prefecture_and_salary(date, prefecture, salary)
86
- date = convert_to_date(date)
84
+ date = TaxJp::Utils.convert_to_date(date)
87
85
  prefecture_code = convert_to_prefecture_code(prefecture)
88
86
  salary = salary.to_i
89
87
 
@@ -1,19 +1,5 @@
1
1
  module TaxJp::SocialInsurances::Utils
2
2
 
3
- def convert_to_date(value)
4
- ret = nil
5
-
6
- if value.is_a?(Date)
7
- ret = value.strftime('%Y-%m-%d')
8
- elsif value.is_a?(String)
9
- ret = value
10
- else
11
- raise TypeError.new(value.class)
12
- end
13
-
14
- ret
15
- end
16
-
17
3
  def convert_to_prefecture_code(value)
18
4
  ret = nil
19
5
 
data/lib/tax_jp/utils.rb CHANGED
@@ -27,6 +27,20 @@ module TaxJp
27
27
  File.write(dest, ERB.new(File.read(src), 0, '-').result)
28
28
  end
29
29
 
30
+ def convert_to_date(value)
31
+ ret = nil
32
+
33
+ if value.is_a?(Date)
34
+ ret = value.strftime('%Y-%m-%d')
35
+ elsif value.is_a?(String)
36
+ ret = value
37
+ else
38
+ raise TypeError.new(value.class)
39
+ end
40
+
41
+ ret
42
+ end
43
+
30
44
  end
31
45
  end
32
46
  end
@@ -1,3 +1,3 @@
1
1
  module TaxJp
2
- VERSION = '0.2.5'
2
+ VERSION = '0.2.6'
3
3
  end
@@ -1,5 +1,3 @@
1
- require 'sqlite3'
2
-
3
1
  module TaxJp
4
2
  module WithheldTaxes
5
3
  end
data/lib/tax_jp.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require 'sqlite3'
1
2
  require 'tax_jp/version'
2
3
  require 'tax_jp/const'
3
4
 
@@ -14,6 +15,9 @@ module TaxJp
14
15
  require 'tax_jp/consumption_tax'
15
16
  extend TaxJp::ConsumptionTax
16
17
 
18
+ # 減価償却率
19
+ require 'tax_jp/depreciation_rate'
20
+
17
21
  # 社会保険料
18
22
  require 'tax_jp/social_insurance'
19
23
 
data/tax_jp.gemspec CHANGED
@@ -22,7 +22,7 @@ Gem::Specification.new do |spec|
22
22
  spec.add_runtime_dependency 'sqlite3', '~> 1.3'
23
23
 
24
24
  spec.add_development_dependency 'bundler', '~> 1.7'
25
- spec.add_development_dependency 'closer', '~> 0.0.1'
25
+ spec.add_development_dependency 'closer', '~> 0.3'
26
26
  spec.add_development_dependency 'rake', '~> 10.0'
27
27
  spec.add_development_dependency 'rails', '>= 3.2.0', '< 5.0.0'
28
28
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tax_jp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - ichylinux
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-09-30 00:00:00.000000000 Z
12
+ date: 2015-10-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sqlite3
@@ -45,14 +45,14 @@ dependencies:
45
45
  requirements:
46
46
  - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: 0.0.1
48
+ version: '0.3'
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: 0.0.1
55
+ version: '0.3'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: rake
58
58
  requirement: !ruby/object:Gem::Requirement
@@ -104,6 +104,10 @@ files:
104
104
  - app/assets/javascripts/tax.js
105
105
  - app/assets/javascripts/tax_jp.js
106
106
  - data/消費税.yml
107
+ - data/減価償却/schema_depreciation_rates.sql
108
+ - data/減価償却/減価償却率-20070401-20120331.tsv
109
+ - data/減価償却/減価償却率-20120401-20991231.tsv
110
+ - data/減価償却率.db
107
111
  - data/源泉徴収税.db
108
112
  - data/源泉徴収税/20070101-20121231.tsv
109
113
  - data/源泉徴収税/20130101-20371231.tsv
@@ -134,6 +138,8 @@ files:
134
138
  - lib/tax_jp.rb
135
139
  - lib/tax_jp/const.rb
136
140
  - lib/tax_jp/consumption_tax.rb
141
+ - lib/tax_jp/depreciation_rate.rb
142
+ - lib/tax_jp/depreciation_rates/db_builder.rb
137
143
  - lib/tax_jp/prefecture.rb
138
144
  - lib/tax_jp/rails/engine.rb
139
145
  - lib/tax_jp/rails/railtie.rb