tax_jp 0.3.8 → 0.3.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9a43aaec956106c36f659c104e7d510cf4b215d7eeae29bf432450f9740484c9
4
- data.tar.gz: 9d9adafd2806e64fd000fa4a13a985322148e3b047fb19cfb23b1320b5b79bfd
3
+ metadata.gz: 632197e7a4ca68adc85f5689770b5774bcb178378a86a37a76624b9e89d37c59
4
+ data.tar.gz: b4d2f57719978e42d0072cca1583d838e0d49ef48db453fc96e6978376caebe5
5
5
  SHA512:
6
- metadata.gz: 8c8fbf69da268962136b3b54018d8919ed070c3764d3b5e6750c611114062560805db3a38d4928961e088ba096e8bee52631fca7d6f7c5bf4e297e29be51e372
7
- data.tar.gz: 7c4c8931ab6f810e1a1706d8451eff439fa6e2905b94355371c2289d6b256342f1458dfbff9784640420ad14602dc04fbef508fc4add4e818ab3385aeca04ea9
6
+ metadata.gz: 2a7dfdc637abb213879c09688c5686444b7e46711d913d6f8c309cf64361738d44862ff7c781f29bcf7149c61eff0bfdc72cd57e0b21355e263e175686c811fa
7
+ data.tar.gz: c98001b6d618aff6620ef7d7b51204446f6121833198261cc04aa916e33c1fb0399ee17a8914684ea8a2ac76a40bf6db482a179577c582ec82683de2b43ddfc3
data/HISTORY.md CHANGED
@@ -1,3 +1,9 @@
1
+ # バージョン 0.3.9
2
+ リリース日: 2018-03-06
3
+
4
+ ### 追加
5
+ * 雇用保険料
6
+
1
7
  # バージョン 0.3.8
2
8
  リリース日: 2018-02-04
3
9
  * 源泉徴収税
@@ -0,0 +1,10 @@
1
+ create table employment_insurances (
2
+ valid_from date not null,
3
+ valid_until date not null,
4
+ employee_general decimal(1,5) not null,
5
+ employer_general decimal(1,5) not null,
6
+ employee_agric decimal(1,5) not null,
7
+ employer_agric decimal(1,5) not null,
8
+ employee_const decimal(1,5) not null,
9
+ employer_const decimal(1,5) not null
10
+ );
@@ -0,0 +1,4 @@
1
+ 適用開始日 適用終了日 労働者負担(一般) 事業主負担(一般) 労働者負担(農林水産・清酒製造) 事業主負担(農林水産・清酒製造) 労働者負担(建設) 事業主負担(建設)
2
+ 2012-04-01 2016-03-31 0.005 0.0085 0.006 0.0095 0.006 0.0105
3
+ 2016-04-01 2017-03-31 0.004 0.007 0.005 0.008 0.005 0.009
4
+ 2017-04-01 2019-03-31 0.003 0.006 0.004 0.007 0.004 0.008
@@ -1,8 +1,10 @@
1
1
  require 'rake'
2
2
  require 'tax_jp'
3
+ require 'tax_jp/db_builder'
3
4
  require 'tax_jp/addresses/db_builder'
4
5
  require 'tax_jp/corporate_taxes/db_builder'
5
6
  require 'tax_jp/depreciation_rates/db_builder'
7
+ require 'tax_jp/labor_insurances/employment_insurance_db_builder'
6
8
  require 'tax_jp/social_insurances/db_builder'
7
9
  require 'tax_jp/withheld_taxes/db_builder'
8
10
 
@@ -28,12 +30,18 @@ namespace :taxjp do
28
30
  TaxJp::DepreciationRates::DbBuilder.new.run
29
31
  end
30
32
 
31
- desc '社会保険料DBを構築します。'
33
+ desc '社会保険DBを構築します。'
32
34
  task :social_insurance do
33
35
  puts '社会保険料'
34
36
  TaxJp::SocialInsurances::DbBuilder.new.run
35
37
  end
36
38
 
39
+ desc '労働保険DBを構築します。'
40
+ task :labor_insurance do
41
+ puts '雇用保険料'
42
+ TaxJp::LaborInsurances::EmploymentInsuranceDbBuilder.new.run
43
+ end
44
+
37
45
  desc '源泉徴収税DBを構築します。'
38
46
  task :withheld_tax do
39
47
  puts '源泉徴収税'
@@ -0,0 +1,30 @@
1
+ module TaxJp
2
+ class DbBuilder
3
+
4
+ attr_reader :db_path
5
+
6
+ def initialize(db_path)
7
+ @db_path = db_path
8
+ end
9
+
10
+ protected
11
+
12
+ def with_database(options = {})
13
+ recreate = options.fetch(:recreate, true)
14
+
15
+ FileUtils.rm_f(db_path) if recreate
16
+ db = SQLite3::Database.new(db_path)
17
+ recreate_schema(db) if recreate
18
+
19
+ begin
20
+ yield db
21
+ ensure
22
+ db.close
23
+ end
24
+ end
25
+
26
+ def recreate_schema(db)
27
+ raise 'サブクラスでオーバライド'
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,9 @@
1
+ module TaxJp
2
+ module LaborInsurances
3
+ require_relative 'labor_insurances/employment_insurance'
4
+ end
5
+
6
+ # 労働保険
7
+ class LaborInsurance
8
+ end
9
+ end
@@ -0,0 +1,55 @@
1
+ # 雇用保健
2
+ class TaxJp::LaborInsurances::EmploymentInsurance
3
+ DB_PATH = File.join(TaxJp::Utils.data_dir, '雇用保険料.db')
4
+
5
+ attr_reader :valid_from # 適用開始日
6
+ attr_reader :valid_until # 適用終了日
7
+ attr_reader :employee_general # 労働者負担(一般)
8
+ attr_reader :employer_general # 事業主負担(一般)
9
+ attr_reader :employee_agric # 労働者負担(農林水産・清酒製造)
10
+ attr_reader :employer_agric # 事業主負担(農林水産・清酒製造)
11
+ attr_reader :employee_const # 労働者負担(建設)
12
+ attr_reader :employer_const # 事業主負担(建設)
13
+
14
+ def initialize(row)
15
+ @valid_from = row[0]
16
+ @valid_until = row[1]
17
+ @employee_general = row[2]
18
+ @employer_general = row[3]
19
+ @employee_agric = row[4]
20
+ @employer_agric = row[5]
21
+ @employee_const = row[6]
22
+ @employer_const = row[7]
23
+ end
24
+
25
+ def self.find_all
26
+ TaxJp::Utils.with_database(DB_PATH) do |db|
27
+ sql = 'select * from employment_insurances order by valid_from desc'
28
+
29
+ ret = []
30
+ db.execute(sql) do |row|
31
+ ret << self.new(row)
32
+ end
33
+ ret
34
+ end
35
+ end
36
+
37
+ def self.find_by_date(date)
38
+ date = TaxJp::Utils.convert_to_date(date)
39
+
40
+ TaxJp::Utils.with_database(DB_PATH) do |db|
41
+ sql = 'select * from employment_insurances where valid_from <= ? and valid_until >= ?'
42
+
43
+ ret = nil
44
+ db.execute(sql, [date, date]) do |row|
45
+ if ret
46
+ raise "雇用保険料が重複して登録されています。date=#{date}"
47
+ else
48
+ ret = self.new(row)
49
+ end
50
+ end
51
+ ret
52
+ end
53
+ end
54
+
55
+ end
@@ -0,0 +1,40 @@
1
+ require 'csv'
2
+ require 'date'
3
+
4
+ class TaxJp::LaborInsurances::EmploymentInsuranceDbBuilder < TaxJp::DbBuilder
5
+
6
+ def initialize(db_path = nil)
7
+ super(db_path || TaxJp::LaborInsurances::EmploymentInsurance::DB_PATH)
8
+ end
9
+
10
+ def run(options = {})
11
+ with_database(options) do |db|
12
+ header = true
13
+ CSV.foreach(File.join(TaxJp::Utils.data_dir, '労働保険', '雇用保険.tsv'), col_sep: "\t", skip_blanks: true) do |row|
14
+ if header
15
+ header = false
16
+ next
17
+ end
18
+ db.execute(insert_sql, row)
19
+ end
20
+ end
21
+ end
22
+
23
+ private
24
+
25
+ def recreate_schema(db)
26
+ db.execute(TaxJp::Utils.load_file(File.join('労働保険', 'schema_employment_insurances.sql')))
27
+ end
28
+
29
+ def insert_sql
30
+ columns = %w{valid_from valid_until employee_general employer_general employee_agric employer_agric employee_const employer_const}
31
+
32
+ ret = 'insert into employment_insurances ( '
33
+ ret << columns.join(',')
34
+ ret << ') values ('
35
+ ret << columns.map{|c| '?' }.join(',')
36
+ ret << ')'
37
+ ret
38
+ end
39
+
40
+ end
@@ -1,10 +1,10 @@
1
1
  require 'csv'
2
2
  require 'date'
3
3
 
4
- class TaxJp::SocialInsurances::DbBuilder
4
+ class TaxJp::SocialInsurances::DbBuilder < TaxJp::DbBuilder
5
5
 
6
6
  def initialize(db_path = nil)
7
- @db_path = db_path || TaxJp::SocialInsurance::DB_PATH
7
+ super(db_path || TaxJp::SocialInsurance::DB_PATH)
8
8
  end
9
9
 
10
10
  def run(options = {})
@@ -66,22 +66,10 @@ class TaxJp::SocialInsurances::DbBuilder
66
66
 
67
67
  private
68
68
 
69
- def with_database(options = {})
70
- if options.fetch(:recreate, true)
71
- FileUtils.rm_f(@db_path)
72
- db = SQLite3::Database.new(@db_path)
73
- db.execute(TaxJp::Utils.load_file(File.join('社会保険料', 'schema_grades.sql')))
74
- db.execute(TaxJp::Utils.load_file(File.join('社会保険料', 'schema_health_insurances.sql')))
75
- db.execute(TaxJp::Utils.load_file(File.join('社会保険料', 'schema_welfare_pensions.sql')))
76
- else
77
- db = SQLite3::Database.new(@db_path)
78
- end
79
-
80
- begin
81
- yield db
82
- ensure
83
- db.close
84
- end
69
+ def recreate_schema(db)
70
+ db.execute(TaxJp::Utils.load_file(File.join('社会保険料', 'schema_grades.sql')))
71
+ db.execute(TaxJp::Utils.load_file(File.join('社会保険料', 'schema_health_insurances.sql')))
72
+ db.execute(TaxJp::Utils.load_file(File.join('社会保険料', 'schema_welfare_pensions.sql')))
85
73
  end
86
74
 
87
75
  def insert_sql_grade
@@ -1,3 +1,3 @@
1
1
  module TaxJp
2
- VERSION = '0.3.8'
2
+ VERSION = '0.3.9'
3
3
  end
data/lib/tax_jp.rb CHANGED
@@ -27,9 +27,12 @@ module TaxJp
27
27
  # 減価償却率
28
28
  require 'tax_jp/depreciation_rate'
29
29
 
30
- # 社会保険料
30
+ # 社会保険
31
31
  require 'tax_jp/social_insurance'
32
32
 
33
+ # 労働保険
34
+ require 'tax_jp/labor_insurance'
35
+
33
36
  # 源泉徴収税
34
37
  require 'tax_jp/withheld_tax'
35
38
  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.3.8
4
+ version: 0.3.9
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: 2018-02-04 00:00:00.000000000 Z
12
+ date: 2018-03-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sqlite3
@@ -122,6 +122,8 @@ files:
122
122
  - data/住所/addresses.csv
123
123
  - data/住所/schema_addresses.sql
124
124
  - data/元号.yml
125
+ - data/労働保険/schema_employment_insurances.sql
126
+ - data/労働保険/雇用保険.tsv
125
127
  - data/区分番号.db
126
128
  - data/法人税/schema_applicable_items.sql
127
129
  - data/法人税/区分番号-20171001-20991231.tsv
@@ -155,6 +157,7 @@ files:
155
157
  - data/社会保険料/等級-20160401-20160930.tsv
156
158
  - data/社会保険料/等級-20161001-20991231.tsv
157
159
  - data/都道府県.yml
160
+ - data/雇用保険料.db
158
161
  - features/.gitignore
159
162
  - features/01.都道府県.feature
160
163
  - features/02.消費税.feature
@@ -174,9 +177,13 @@ files:
174
177
  - lib/tax_jp/consumption_tax.rb
175
178
  - lib/tax_jp/corporate_tax.rb
176
179
  - lib/tax_jp/corporate_taxes/db_builder.rb
180
+ - lib/tax_jp/db_builder.rb
177
181
  - lib/tax_jp/depreciation_rate.rb
178
182
  - lib/tax_jp/depreciation_rates/db_builder.rb
179
183
  - lib/tax_jp/gengou.rb
184
+ - lib/tax_jp/labor_insurance.rb
185
+ - lib/tax_jp/labor_insurances/employment_insurance.rb
186
+ - lib/tax_jp/labor_insurances/employment_insurance_db_builder.rb
180
187
  - lib/tax_jp/prefecture.rb
181
188
  - lib/tax_jp/rails/engine.rb
182
189
  - lib/tax_jp/rails/railtie.rb
@@ -212,7 +219,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
212
219
  version: '0'
213
220
  requirements: []
214
221
  rubyforge_project:
215
- rubygems_version: 2.7.3
222
+ rubygems_version: 2.7.6
216
223
  signing_key:
217
224
  specification_version: 4
218
225
  summary: 税金計算ライブラリ