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 +4 -4
- data/HISTORY.md +6 -0
- data/data//345/212/264/345/203/215/344/277/235/351/231/272/schema_employment_insurances.sql +10 -0
- data/data//345/212/264/345/203/215/344/277/235/351/231/272//351/233/207/347/224/250/344/277/235/351/231/272.tsv +4 -0
- data/data//351/233/207/347/224/250/344/277/235/351/231/272/346/226/231.db +0 -0
- data/lib/build_tasks/build.rake +9 -1
- data/lib/tax_jp/db_builder.rb +30 -0
- data/lib/tax_jp/labor_insurance.rb +9 -0
- data/lib/tax_jp/labor_insurances/employment_insurance.rb +55 -0
- data/lib/tax_jp/labor_insurances/employment_insurance_db_builder.rb +40 -0
- data/lib/tax_jp/social_insurances/db_builder.rb +6 -18
- data/lib/tax_jp/version.rb +1 -1
- data/lib/tax_jp.rb +4 -1
- metadata +10 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 632197e7a4ca68adc85f5689770b5774bcb178378a86a37a76624b9e89d37c59
|
4
|
+
data.tar.gz: b4d2f57719978e42d0072cca1583d838e0d49ef48db453fc96e6978376caebe5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2a7dfdc637abb213879c09688c5686444b7e46711d913d6f8c309cf64361738d44862ff7c781f29bcf7149c61eff0bfdc72cd57e0b21355e263e175686c811fa
|
7
|
+
data.tar.gz: c98001b6d618aff6620ef7d7b51204446f6121833198261cc04aa916e33c1fb0399ee17a8914684ea8a2ac76a40bf6db482a179577c582ec82683de2b43ddfc3
|
data/HISTORY.md
CHANGED
@@ -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
|
+
);
|
data/lib/build_tasks/build.rake
CHANGED
@@ -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 '
|
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,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
|
-
|
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
|
70
|
-
|
71
|
-
|
72
|
-
|
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
|
data/lib/tax_jp/version.rb
CHANGED
data/lib/tax_jp.rb
CHANGED
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.
|
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-
|
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.
|
222
|
+
rubygems_version: 2.7.6
|
216
223
|
signing_key:
|
217
224
|
specification_version: 4
|
218
225
|
summary: 税金計算ライブラリ
|