luca-jp 0.16.1 → 0.16.3

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: 4a6dbb648afd83fd8f7240fcda13d1ab94f7cbff8d3499edfd3dba0641a94ab6
4
- data.tar.gz: '087559b7426943953b6ece1cfc8e25b3dfed1da12a0047fbc6367884751e1bb9'
3
+ metadata.gz: fa9b6007a2a529b1d17eaca40694c831f8c1be63343571c5c3d7e926b7f52949
4
+ data.tar.gz: cb198bc844cc2d905ac9aab9c6bb35693f0b16de1d57331aac58c31c5f5a2300
5
5
  SHA512:
6
- metadata.gz: 290000091d4b1fcbff40cbd11ed97d477d4a3c6144bc668cc93ad4d40568869ad1ad69bf0bdad3df1301dcc76c3c4322eff30bb4f602ede1d120f579801af8da
7
- data.tar.gz: 1fc13e4658ed8735f80abdb087cfae9f3abbc18dfed81709d9174b0e70a10ceb0bb11ec535e690ca4c1ea414b4c6d183c6ef5dae25dd71b49cb1af4a1cee63e4
6
+ metadata.gz: ef9754c6618cfe2eaeb27f0e14a0a6f3b302853e73f4138128a23b1e688a33a715a11cef549ac98f942e759430ea11f0af2e134875590bcea4aba497a0a23f36
7
+ data.tar.gz: 56827cd19f691db069c42503ee2175477763f164abcdfbc46dea99ae3f942cc025c47aed8abf28b9f7f546a2f7bec709e915f10bebecefbb17df7a23895093ea
data/exe/luca-jp CHANGED
@@ -7,6 +7,8 @@ require 'luca_salary/jp_payreport'
7
7
  require 'luca_cmd'
8
8
  require 'luca_support/const'
9
9
 
10
+ EXT_CONF = 'config-lucajp.yml'
11
+
10
12
  class LucaCmd
11
13
  def self.syouhizei(args, params)
12
14
  if params[:export]
@@ -56,26 +58,6 @@ class LucaCmd
56
58
  [r[0].year, r[0].month, r[1].year, r[1].month]
57
59
  end
58
60
  end
59
-
60
- def self.check_dir_jp(target)
61
- check_dir(target) do
62
- begin
63
- ex_conf = YAML.safe_load(
64
- File.read(Pathname(LucaSupport::CONST.pjdir) / 'config-lucajp.yml'),
65
- permitted_classes: [Date]
66
- )
67
- if ex_conf
68
- LucaSupport::CONST.set_config(
69
- LucaSupport::CONST.config.merge(ex_conf)
70
- )
71
- end
72
- rescue Errno::ENOENT
73
- nil
74
- end
75
-
76
- yield
77
- end
78
- end
79
61
  end
80
62
 
81
63
  module LucaSalaryCmd
@@ -97,7 +79,7 @@ when 'h', /hou?jinzei/
97
79
  opt.on('--export', 'export json') { |_v| params[:export] = true }
98
80
  opt.on('--lastyear', 'report on last Financial year') { |_v| params[:lastyear] = true }
99
81
  args = opt.parse!(ARGV)
100
- LucaCmd.check_dir_jp('journals') do
82
+ LucaCmd.check_dir('journals', ext_conf: EXT_CONF) do
101
83
  LucaCmd.houjinzei(args, params)
102
84
  end
103
85
  end
@@ -107,7 +89,7 @@ when 's', /s[yh]ou?hizei/
107
89
  opt.on('--export', 'export json') { |_v| params[:export] = true }
108
90
  opt.on('--lastyear', 'report on last Financial year') { |_v| params[:lastyear] = true }
109
91
  args = opt.parse!(ARGV)
110
- LucaCmd.check_dir_jp('journals') do
92
+ LucaCmd.check_dir('journals', ext_conf: EXT_CONF) do
111
93
  LucaCmd.syouhizei(args, params)
112
94
  end
113
95
  end
@@ -117,7 +99,7 @@ when 'c', /chihou?zei/
117
99
  opt.on('--export', 'export json') { |_v| params[:export] = true }
118
100
  opt.on('--lastyear', 'report on last Financial year') { |_v| params[:lastyear] = true }
119
101
  args = opt.parse!(ARGV)
120
- LucaCmd.check_dir_jp('journals') do
102
+ LucaCmd.check_dir('journals', ext_conf: EXT_CONF) do
121
103
  LucaCmd.chihouzei(args, params)
122
104
  end
123
105
  end
@@ -127,7 +109,7 @@ when /urikake/
127
109
  opt.on('--total VAL', '売掛金総額') { |v| params[:total] = v&.to_i }
128
110
  opt.on('--utf8', 'UTF-8でファイル生成') { |_v| params[:encode] = 'UTF-8' }
129
111
  args = opt.parse!(ARGV)
130
- LucaCmd.check_dir_jp('invoices') do
112
+ LucaCmd.check_dir('invoices', ext_conf: EXT_CONF) do
131
113
  LucaCmd.urikake(args, params)
132
114
  end
133
115
  end
@@ -135,7 +117,7 @@ when 'k', 'kyuyo', 'salary'
135
117
  OptionParser.new do |opt|
136
118
  opt.banner = 'Usage: luca-jp kyuyo [--export] year'
137
119
  args = opt.parse(ARGV)
138
- LucaCmd.check_dir_jp('profiles') do
120
+ LucaCmd.check_dir('profiles', ext_conf: EXT_CONF) do
139
121
  LucaSalaryCmd::Export.payreport(args)
140
122
  end
141
123
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Luca
4
4
  module Jp
5
- VERSION = '0.16.1'
5
+ VERSION = '0.16.3'
6
6
  end
7
7
  end
@@ -49,7 +49,7 @@ def 給与支払報告明細行(slip, company, year)
49
49
  支払を受ける者の詳細(slip, year),
50
50
  company['tax_id'], # 法人番号
51
51
  支払を受ける者の扶養情報(slip['profile'], year),
52
- slip['911'], # 基礎控除の額
52
+ slip['911'] == 480_000 ? nil : slip['911'], # 基礎控除の額、48万の場合記載しない
53
53
  nil, # 所得金額調整控除額 TODO: 未実装 措法41の3の3
54
54
  nil, # ひとり親
55
55
  提出先判定(slip), # 必須:作成区分(国税のみ0, 地方のみ1, 両方2)
@@ -82,6 +82,7 @@ end
82
82
 
83
83
  def 支払(slip, year)
84
84
  配偶者控除等 = [slip['916'], slip['917']].compact.sum
85
+ 扶養対象 = 扶養親族分類(slip.dig('profile', 'family'), year)
85
86
  [
86
87
  '給料', # 種別
87
88
  slip['1'], # 支払金額
@@ -93,12 +94,12 @@ def 支払(slip, year)
93
94
  配偶者控除等 > 0 ? 1 : 2, # 控除対象配偶者の有無 TODO: 従たる給与
94
95
  老人控除対象配偶者(slip.dig('profile', 'spouse'), year),
95
96
  配偶者控除等, # 配偶者控除の額
96
- nil, # 控除対象扶養親族の数 特定 主
97
+ 扶養対象['特定'].length, # 控除対象扶養親族の数 特定 主
97
98
  nil, # 控除対象扶養親族の数 特定 従
98
- nil, # 控除対象扶養親族の数 老人 主
99
+ 扶養対象['老人'].length, # 控除対象扶養親族の数 老人 主
99
100
  nil, # 控除対象扶養親族の数 老人 上の内訳
100
101
  nil, # 控除対象扶養親族の数 老人 従
101
- nil, # 控除対象扶養親族の数 その他 主
102
+ 扶養対象['その他'].length, # 控除対象扶養親族の数 その他 主
102
103
  nil, # 控除対象扶養親族の数 その他 従
103
104
  nil, # 障害者の数 特別障害者
104
105
  nil, # 障害者の数 上の内訳 NOTE: 同居・同一生計
@@ -122,7 +123,7 @@ def 支払を受ける者の詳細(slip, year)
122
123
  nil, # 地震保険料の控除額
123
124
  nil, # 住宅借入金等特別控除等の額
124
125
  nil, # 旧個人年金保険料の額
125
- slip.dig('spouse', 'income'), # 配偶者の合計所得
126
+ slip.dig('profile', 'spouse', 'income', year), # 配偶者の合計所得
126
127
  nil, # 旧長期損害保険料の額
127
128
  生年月日[0], # 必須:受給者の生年月日 元号
128
129
  生年月日[1], # 必須:受給者の生年月日 年
@@ -174,7 +175,7 @@ def 支払を受ける者の扶養情報(profile, year)
174
175
  nil, # 青色専従者
175
176
  nil, # 条約免除
176
177
  半角変換(profile['katakana']), # 必須:支払を受ける者のフリガナ(半角)
177
- nil, # 需給者番号
178
+ nil, # 受給者番号
178
179
  profile.dig('resident', 'area_code'), # 必須:提出先市町村コード
179
180
  profile.dig('resident', 'tax_id'), # 指定番号
180
181
  ]
@@ -203,17 +204,27 @@ end
203
204
  def 扶養親族分類(family, year)
204
205
  return {} if family.nil?
205
206
 
206
- { '16才以上' => [], '16才未満' => [] }.tap do |result|
207
+ this_year = Date.new(year, 12, -1)
208
+ { '16才以上' => [], '16才未満' => [], '老人' => [], '特定' => [], 'その他' => [] }.tap do |result|
207
209
  family.each do |p|
208
210
  if !p['birth_date']
209
211
  result['16才以上'] << p
212
+ result['その他'] << p
210
213
  else
211
214
  date = p['birth_date']
212
215
  date = Date.parse(date) if date.is_a?(String)
213
- if date.next_year(16) < Date.new(year, 12, -1)
216
+ if date.next_year(16) <= this_year
214
217
  result['16才以上'] << p
218
+ if date.next_year(70) <= this_year
219
+ result['老人'] << p
220
+ elsif date.next_year(19) <= this_year and date.next_year(23) > this_year
221
+ result['特定'] << p
222
+ else
223
+ result['その他'] << p
224
+ end
215
225
  else
216
226
  result['16才未満'] << p
227
+ result['その他'] << p
217
228
  end
218
229
  end
219
230
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: luca-jp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.16.1
4
+ version: 0.16.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chuma Takahiro
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-01-10 00:00:00.000000000 Z
11
+ date: 2024-01-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lucabook
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: 0.7.0
47
+ version: 0.7.3
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: 0.7.0
54
+ version: 0.7.3
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: jp-national-tax
57
57
  requirement: !ruby/object:Gem::Requirement