tax_jp 0.3.8 → 0.3.9

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
  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: 税金計算ライブラリ