luca-jp 0.2.3 → 0.9.0

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: 971706dfd736c70a5dffcdda324a58d897af8a50387c1a69c2af3e22e34c0eff
4
- data.tar.gz: 957ad4e2e2dc19be39a17f390a5f281544e07b7f3417e04be1f5db9f04f31e15
3
+ metadata.gz: 4397cf29a4b348c06c854a7317bf1c7a63feef296635ffe5d8cc8ab237a5ca86
4
+ data.tar.gz: 8f0e650b20dcd79af950dfaf09b3e5df4f7e32094651d3661fe7f232c58685fd
5
5
  SHA512:
6
- metadata.gz: e77e582ac90d74cb43695ee208ca3a9cb90621695d62205418498ebbd21fd59f0ef97640374d1d2094b8a64a91bccb79d10d26db0d5e658f4890ccd9ca53b11e
7
- data.tar.gz: 3b998804fa9e249471af0ce4b041bbba8e67d898e2a1fc9fffae8262257edb75845a0a228cc94fae06c13430d051d1b7e47db762e573de852dae7cc8650d19b4
6
+ metadata.gz: 25b4554065a779fee709b1f32e0120cfddf0ce23fa80397ff470f54d2a20604246781dee7c29c8f565477fedb32aa37a18398053b2411d92db1dd4e6002ce123
7
+ data.tar.gz: ba9dd2935aba7e2609278732f1db875d0896587db70605519282f94eca98264e0f51cc2d2f25ab12249477750c4debfcf74d73b472679367429a25dad2ffb9a1
data/exe/luca-jp CHANGED
@@ -22,9 +22,14 @@ class LucaCmd
22
22
 
23
23
  def self.chihouzei(args, params)
24
24
  if params[:export]
25
- Luca::Jp::Chihouzei.range(*args).export_json
25
+ accounts = Luca::Jp::Util.eltax_config('reports').map do |report|
26
+ Luca::Jp::Chihouzei.range(*args).export_json(report)
27
+ end
28
+ puts JSON.dump(accounts)
26
29
  else
27
- puts Luca::Jp::Chihouzei.range(*args).kani
30
+ Luca::Jp::Util.eltax_config('reports').each do |report|
31
+ File.open("chihouzei-#{report['jichitai_code']}#{report['jimusho_code']}.xml", 'w') { |f| f.puts(Luca::Jp::Chihouzei.range(*args).kani(report))}
32
+ end
28
33
  end
29
34
  end
30
35
 
data/lib/luca/jp/aoiro.rb CHANGED
@@ -27,6 +27,7 @@ module Luca
27
27
  @issue_date = Date.today
28
28
  @company = CGI.escapeHTML(config.dig('company', 'name'))
29
29
  @software = 'LucaJp'
30
+ @shinkoku_kbn = '30' # 確定申告
30
31
 
31
32
  @税額 = 税額計算
32
33
  @確定法人税額 = @税額.dig(:houjin, :kokuzei)
@@ -51,7 +52,8 @@ module Luca
51
52
  else
52
53
  @procedure_code = 'RHO0012'
53
54
  @procedure_name = '内国法人の確定申告(青色)'
54
- @version = '20.0.2'
55
+ @form_vers = proc_version
56
+ @version = @form_vers['proc']
55
57
  @都道府県民税法人税割中間納付 = prepaid_tax('1859')
56
58
  @都道府県民税均等割中間納付 = prepaid_tax('185A')
57
59
  @都道府県民税中間納付 = @都道府県民税法人税割中間納付 + @都道府県民税均等割中間納付
@@ -116,6 +118,7 @@ module Luca
116
118
  end
117
119
 
118
120
  def 別表一
121
+ STDERR.puts "別表一: 「決算確定の日」などの追記が必要"
119
122
  render_erb(search_template('beppyo1.xml.erb'))
120
123
  end
121
124
 
@@ -132,22 +135,32 @@ module Luca
132
135
  @当期純損益 = readable(@pl_data.dig('HA'))
133
136
  @法人税等 = readable(@pl_data.dig('H0'))
134
137
  _, @納付事業税 = 未納事業税期中増減
135
- @別表四調整所得 = @当期純損益 + @法人税等 - @納付事業税
138
+ @当期還付事業税 = 還付事業税
139
+ @翌期還付事業税 = 中間還付税額(確定事業税, @事業税中間納付)
140
+ @別表四調整所得 = @当期純損益 + @法人税等 - @納付事業税 - @翌期還付事業税 + @当期還付事業税
136
141
 
137
142
  @当期還付法人税 = refund_tax('1502')
138
143
  @当期還付都道府県住民税 = refund_tax('1503')
139
144
  @翌期還付都道府県住民税 = 中間還付税額(@税額.dig(:kenmin, :kintou), @都道府県民税均等割中間納付) + 中間還付税額(@税額.dig(:kenmin, :houjinzei), @都道府県民税法人税割中間納付)
140
145
  @当期還付市民税 = refund_tax('1505')
141
146
  @翌期還付市民税 = 中間還付税額(@税額.dig(:shimin, :kintou), @市民税均等割中間納付) + 中間還付税額(@税額.dig(:shimin, :houjinzei), @市民税法人税割中間納付)
142
- @当期還付事業税 = 還付事業税
143
147
  @事業税期首残高 = 期首未納事業税 > 0 ? 期首未納事業税 : (@当期還付事業税 * -1)
144
- @翌期還付事業税 = 中間還付税額(確定事業税, @事業税中間納付)
145
148
  @仮払税金 = @翌期還付法人税 + @翌期還付都道府県住民税 + @翌期還付事業税 + @翌期還付市民税
146
149
 
147
150
  render_erb(search_template('beppyo4.xml.erb'))
148
151
  end
149
152
 
150
153
  def 別表五一
154
+ @期首資本金 = readable(@start_balance.dig('911'))
155
+ @資本金期中減, @資本金期中増 = 純資産期中増減('911')
156
+ @期首資本準備金, @期末資本準備金 = 期首期末残高('9131')
157
+ @資本準備金期中減, @資本準備金期中増 = 純資産期中増減('9131')
158
+ @期首その他資本剰余金, @期末その他資本剰余金 = 期首期末残高('9132')
159
+ @その他資本剰余金期中減, @その他資本剰余金期中増 = 純資産期中増減('9132')
160
+ @期首自己株式, @期末自己株式 = 期首期末残高('916')
161
+ # 自己株式は負の純資産。借方集計は負の増加として認識
162
+ @自己株式期中増, @自己株式期中減 = 純資産期中増減('916').map { |t| t * -1 }
163
+ @資本金等の額期中減, @資本金等の額期中増 = 資本金等の額期中増減
151
164
  render_erb(search_template('beppyo51.xml.erb'))
152
165
  end
153
166
 
@@ -221,7 +234,7 @@ module Luca
221
234
  @代表者報酬 = gaikyo('C11')
222
235
  @代表者借入 = gaikyo('5121')
223
236
  @概況仕入 = gaikyo('B11') + gaikyo('B12')
224
- @概況外注費 = gaikyo('C10')
237
+ @概況外注費 = gaikyo('C1O')
225
238
  @概況人件費 = gaikyo('C11') + gaikyo('C12') + gaikyo('C13')
226
239
  render_erb(search_template('gaikyo.xml.erb'))
227
240
  end
@@ -307,7 +320,12 @@ module Luca
307
320
  return nil if beppyo2_config('total_shares').nil?
308
321
  return nil if beppyo2_config('owners').nil?
309
322
 
310
- (別表二上位株数 * 100.0 / beppyo2_config('total_shares')).round(1)
323
+ total = if beppyo2_config('own_shares').nil?
324
+ beppyo2_config('total_shares')
325
+ else
326
+ beppyo2_config('total_shares') - beppyo2_config('own_shares')
327
+ end
328
+ (別表二上位株数 * 100.0 / total).round(1)
311
329
  end
312
330
 
313
331
  def 別表二上位議決権数
@@ -320,13 +338,20 @@ module Luca
320
338
  return nil if beppyo2_config('total_votes').nil?
321
339
  return nil if beppyo2_config('owners').nil?
322
340
 
323
- (別表二上位議決権数 * 100.0 / beppyo2_config('total_votes')).round(1)
341
+ total = if beppyo2_config('no_votes').nil?
342
+ beppyo2_config('total_votes')
343
+ else
344
+ beppyo2_config('total_votes') - beppyo2_config('no_votes')
345
+ end
346
+ (別表二上位議決権数 * 100.0 / total).round(1)
324
347
  end
325
348
 
326
349
  # TODO: 特定同族会社の判定
327
350
  #
328
351
  def 同族会社?
352
+ return nil if it_part_config('shihon_kin').nil?
329
353
  return nil if it_part_config('shihon_kin') > 100_000_000
354
+ return nil if 別表二上位議決権割合.nil? || 別表二上位株割合.nil?
330
355
 
331
356
  return true if 別表二上位議決権割合 > 50 || 別表二上位株割合 > 50
332
357
  false
@@ -520,6 +545,25 @@ module Luca
520
545
  readable((@bs_data[code] || 0) * -1)
521
546
  end
522
547
 
548
+ def 別表五一期首資本
549
+ readable(@start_balance.dig('911')||0 + @start_balance.dig('913')||0)
550
+ end
551
+
552
+ # 資本金、資本準備金、その他資本剰余金、自己株式(控除)の合算
553
+ #
554
+ def 資本金等の額期中増減
555
+ inc = ['911', '913'].map do |code|
556
+ credit_amount(code, @start_date.year, @start_date.month, @end_date.year, @end_date.month) || 0
557
+ end
558
+ inc << (debit_amount('916', @start_date.year, @start_date.month, @end_date.year, @end_date.month)||0) * -1
559
+ dec = ['911', '913'].map do |code|
560
+ debit_amount(code, @start_date.year, @start_date.month, @end_date.year, @end_date.month) || 0
561
+ end
562
+ dec << (credit_amount('916', @start_date.year, @start_date.month, @end_date.year, @end_date.month)||0) * -1
563
+
564
+ [readable(dec.sum), readable(inc.sum)]
565
+ end
566
+
523
567
  def 別表七各期青色損失
524
568
  tags = @繰越損失管理.records
525
569
  .filter { |record| record['start_date'] > @end_date.prev_year(10) && record['end_date'] < @start_date }
@@ -543,22 +587,6 @@ module Luca
543
587
  tags.compact.join("\n")
544
588
  end
545
589
 
546
- def 期首資本金
547
- readable(@start_balance.dig('911')) || 0
548
- end
549
-
550
- def 期末資本金
551
- readable(@bs_data.dig('911')) || 0
552
- end
553
-
554
- def 別表五一期首資本
555
- 期首資本金
556
- end
557
-
558
- def 別表五一期末資本
559
- 期末資本金
560
- end
561
-
562
590
  def 期首未納消費税
563
591
  readable(@start_balance.dig('516')) || 0
564
592
  end
@@ -575,10 +603,10 @@ module Luca
575
603
 
576
604
  def 概況源泉徴収種類
577
605
  tags = []
578
- if credit_count('5191', @start_date.year, @start_date.month, @end_date.year, @end_date.month)
606
+ if credit_count('5191', @start_date.year, @start_date.month, @end_date.year, @end_date.month) > 0
579
607
  tags << render_attr('IAF03100', '<kubun_CD>1</kubun_CD>')
580
608
  end
581
- if credit_count('5193', @start_date.year, @start_date.month, @end_date.year, @end_date.month)
609
+ if credit_count('5193', @start_date.year, @start_date.month, @end_date.year, @end_date.month) > 0
582
610
  tags << render_attr('IAF03200', '<kubun_CD>1</kubun_CD>')
583
611
  elsif credit_count('5194', @start_date.year, @start_date.month, @end_date.year, @end_date.month)
584
612
  tags << render_attr('IAF03200', '<kubun_CD>1</kubun_CD>')
@@ -603,7 +631,7 @@ module Luca
603
631
  end
604
632
 
605
633
  def 概況月外注費(idx)
606
- gaikyo_month(idx, 'C10')
634
+ gaikyo_month(idx, 'C1O')
607
635
  end
608
636
 
609
637
  def 概況月源泉徴収(idx)
@@ -636,6 +664,14 @@ module Luca
636
664
  readable(@monthly.dig(index, code) || 0)
637
665
  end
638
666
 
667
+ def proc_version
668
+ if @end_date >= Date.parse('2021-4-1')
669
+ { 'proc' => '21.0.2', 'HOA112' => '3.1', 'HOA116' => '2.0', 'HOA420' => '20.0', 'HOA522' => '7.0', 'HOK010' => '6.0' }
670
+ else
671
+ { 'proc' => '20.0.2', 'HOA112' => '2.0', 'HOA116' => '1.0', 'HOA420' => '19.0', 'HOA522' => '6.0', 'HOK010' => '5.0' }
672
+ end
673
+ end
674
+
639
675
  def lib_path
640
676
  __dir__
641
677
  end
@@ -18,20 +18,17 @@ module Luca
18
18
  @dirname = 'journals'
19
19
  @record_type = 'raw'
20
20
 
21
- def kani(export: false)
21
+ def kani(report_cfg, export: false)
22
22
  set_pl(4)
23
23
  set_bs(4)
24
24
  @issue_date = Date.today
25
- @company = CGI.escapeHTML(config.dig('company', 'name'))
26
25
  @software = 'LucaJp'
27
- @jimusho_code = eltax_config('jimusho_code')
28
- @jimusho_name = eltax_config('jimusho_name')
29
- @app_version = eltax_config('app_version')
26
+ @report_category = report_cfg['type']
27
+ @employee = report_cfg['employee'] || 1
30
28
 
31
29
  @税額 = 税額計算
32
30
  @均等割 = @税額.dig(:kenmin, :kintou)
33
- @法人税割課税標準 = 法人税割課税標準
34
- @確定法人税割 = (@税額.dig(:kenmin, :houjinzei) / 100).floor * 100
31
+ @確定法人税割 = @税額.dig(:kenmin, :houjinzei)
35
32
  @地方特別法人事業税中間納付 = prepaid_tax('1854')
36
33
  @所得割中間納付 = prepaid_tax('1855')
37
34
  @法人税割中間納付 = prepaid_tax('1859')
@@ -61,19 +58,42 @@ module Luca
61
58
  }
62
59
  }
63
60
  else
61
+ @company = CGI.escapeHTML(config.dig('company', 'name'))
62
+ @form_vers = proc_version
63
+ @jichitai_code = report_cfg['jichitai_code']
64
+ @jimusho_code = report_cfg['jimusho_code']
65
+ @jimusho_name = report_cfg['jimusho_name']
66
+ @kanri_bango = report_cfg['x_houjin_bango']
67
+ @app_version = report_cfg['app_version']
68
+ @address = report_cfg['address'] || it_part_config('nozeisha_adr')
64
69
  @procedure_code = 'R0102100'
65
70
  @procedure_name = '法人都道府県民税・事業税・特別法人事業税又は地方法人特別税 確定申告'
66
- @form_sec = ['R0102AA190', 'R0102AG120', 別表九フォーム].compact.map{ |c| form_attr(c) }.join('')
71
+ @form_sec = case @report_category
72
+ when 'prefecture'
73
+ ["R0102AA#{@form_vers['R0102AA']}", 別表九フォーム]
74
+ .compact.map{ |c| form_attr(c) }.join('')
75
+ when '23ku'
76
+ ["R0102AA#{@form_vers['R0102AA']}", "R0102AG120", 別表九フォーム]
77
+ .compact.map{ |c| form_attr(c) }.join('')
78
+ when 'city'
79
+ # TODO: implement
80
+ end
67
81
  @user_inf = render_erb(search_template('eltax-userinf.xml.erb'))
68
- @form_data = [第六号, 別表四三, 別表九].compact.join("\n")
82
+ @form_data = case @report_category
83
+ when 'prefecture'
84
+ [第六号, 別表九].compact.join("\n")
85
+ when '23ku'
86
+ [第六号, 別表四三, 別表九].compact.join("\n")
87
+ when 'city'
88
+ # TODO: implement
89
+ end
69
90
  render_erb(search_template('eltax.xml.erb'))
70
91
  end
71
92
  end
72
93
 
73
- def export_json
74
- records = kani(export: true)
75
- [].tap do |res|
76
- item = {}
94
+ def export_json(report_cfg)
95
+ records = kani(report_cfg, export: true)
96
+ {}.tap do |item|
77
97
  item['date'] = @end_date
78
98
  item['debit'] = []
79
99
  item['credit'] = []
@@ -100,13 +120,12 @@ module Luca
100
120
  item['debit'] << { 'label' => '法人税、住民税及び事業税', 'amount' => dat[:zeigaku] } if dat[:zeigaku] > 0
101
121
  end
102
122
  item['x-editor'] = 'LucaJp'
103
- res << item
104
- puts JSON.dump(res)
105
123
  end
106
124
  end
107
125
 
108
126
  def 第六号
109
- @資本金準備金 = eltax_config('shihon') || it_part_config('shihon_kin')
127
+ @資本金準備金 = readable(['911', '9131'].map { |cd| @bs_data.dig(cd) }.compact.sum)
128
+ STDERR.puts "第六号様式: 「決算確定の日」「国外関連者」などの追記が必要"
110
129
  render_erb(search_template('el-no6.xml.erb'))
111
130
  end
112
131
 
@@ -118,7 +137,7 @@ module Luca
118
137
  def 別表九フォーム
119
138
  return nil if @繰越損失管理.records.length == 0
120
139
 
121
- 'R0102AM190'
140
+ "R0102AM#{@form_vers['R0102AM']}"
122
141
  end
123
142
 
124
143
  def 別表九
@@ -206,6 +225,14 @@ module Luca
206
225
  end
207
226
  end
208
227
 
228
+ def proc_version
229
+ if @start_date >= Date.parse('2020-4-1')
230
+ { 'R0102AA' => '200', 'R0102AM' => '200' }
231
+ else
232
+ { 'R0102AA' => '190', 'R0102AM' => '190' }
233
+ end
234
+ end
235
+
209
236
  def lib_path
210
237
  __dir__
211
238
  end
@@ -74,11 +74,12 @@ module Luca
74
74
 
75
75
  # 税引前当期利益をもとに計算
76
76
  # 消費税を租税公課に計上している場合、控除済みの金額
77
- # 未払事業税は精算時に認識
77
+ # 事業税は仮払経理の場合にも納付時損金/還付時益金
78
78
  #
79
79
  def 当期所得金額
80
80
  _, 納付事業税 = 未納事業税期中増減
81
- LucaSupport::Code.readable(@pl_data.dig('GA') - 納付事業税)
81
+ 事業税中間納付 = prepaid_tax('1854') + prepaid_tax('1855') + prepaid_tax('1856') + prepaid_tax('1857') + prepaid_tax('1858')
82
+ LucaSupport::Code.readable(@pl_data.dig('GA') - 納付事業税 - 事業税中間納付 + 還付事業税)
82
83
  end
83
84
 
84
85
  # -----------------------------------------------------
@@ -112,24 +113,56 @@ module Luca
112
113
  # -----------------------------------------------------
113
114
 
114
115
  def 均等割
115
- if config.dig('jp', 'eltax', 'office_23ku')
116
- [70_000, 0]
117
- else
118
- [20_000, 50_000]
119
- end
116
+ tax = if 地方税資本金等の額 <= 10_000_000
117
+ city = @employee > 50 ? 120_000 : 50_000
118
+ [20_000, city]
119
+ elsif 地方税資本金等の額 <= 100_000_000
120
+ city = @employee > 50 ? 150_000 : 130_000
121
+ [50_000, city]
122
+ elsif 地方税資本金等の額 <= 1_000_000_000
123
+ city = @employee > 50 ? 400_000 : 160_000
124
+ [130_000, city]
125
+ elsif 地方税資本金等の額 <= 5_000_000_000
126
+ city = @employee > 50 ? 1_750_000 : 410_000
127
+ [540_000, city]
128
+ else
129
+ city = @employee > 50 ? 3_000_000 : 410_000
130
+ [800_000, city]
131
+ end
132
+ tokyo23? ? [tax.sum, 0] : tax
120
133
  end
121
134
 
135
+ # 100円未満切り捨て
122
136
  def 法人税割(法人税 = nil)
123
137
  課税標準 = if 法人税
124
138
  (法人税 / 1000).floor * 1000
125
139
  else
126
- @法人税割課税標準
140
+ 法人税割課税標準
127
141
  end
128
- if config.dig('jp', 'eltax', 'office_23ku')
129
- [(課税標準 * 7 / 100).floor, 0]
130
- else
131
- [(課税標準 * 1 / 100).floor, (課税標準 * 6 / 100).floor]
132
- end
142
+ 税率 = 法人税割税率(課税標準)
143
+ [
144
+ (課税標準 * 税率[0] / 100 / 100).floor * 100,
145
+ (課税標準 * 税率[1] / 100 / 100).floor * 100
146
+ ]
147
+ end
148
+
149
+ def 法人税割税率(法人税 = nil)
150
+ 課税標準 = if 法人税
151
+ (法人税 / 1000).floor * 1000
152
+ else
153
+ 法人税割課税標準
154
+ end
155
+ rate = if 期末資本金 > 100_000_000 || 課税標準 > 10_000_000
156
+ [2.0, 8.4]
157
+ else
158
+ [1.0, 6.0]
159
+ end
160
+ tokyo23? ? [rate.sum, 0] : rate
161
+ end
162
+
163
+ # 100円未満切り捨て
164
+ def 所得割400万以下(所得 = nil)
165
+ ((所得400万以下(所得) * 所得割税率400万以下(所得) / 100) / 100).floor * 100
133
166
  end
134
167
 
135
168
  def 所得400万以下(所得 = nil)
@@ -143,8 +176,18 @@ module Luca
143
176
  end
144
177
  end
145
178
 
146
- def 所得割400万以下(所得 = nil)
147
- ((所得400万以下(所得) * 3.5 / 100) / 100).floor * 100
179
+ def 所得割税率400万以下(所得 = nil)
180
+ 所得 ||= 所得金額
181
+ if 期末資本金 > 100_000_000 || 所得 > 25_000_000
182
+ 軽減税率不適用法人 ? 7.48 : 3.75
183
+ else
184
+ 軽減税率不適用法人 ? 7.0 : 3.5
185
+ end
186
+ end
187
+
188
+ # 100円未満切り捨て
189
+ def 所得割800万以下(所得 = 0)
190
+ ((所得800万以下(所得) * 所得割税率800万以下(所得) / 100) / 100).floor * 100
148
191
  end
149
192
 
150
193
  def 所得800万以下(所得 = nil)
@@ -160,8 +203,18 @@ module Luca
160
203
  end
161
204
  end
162
205
 
163
- def 所得割800万以下(所得 = nil)
164
- ((所得800万以下(所得) * 5.3 / 100) / 100).floor * 100
206
+ def 所得割税率800万以下(所得 = nil)
207
+ 所得 ||= 所得金額
208
+ if 期末資本金 > 100_000_000 || 所得 > 25_000_000
209
+ 軽減税率不適用法人 ? 7.48 : 5.665
210
+ else
211
+ 軽減税率不適用法人 ? 7.0 : 5.3
212
+ end
213
+ end
214
+
215
+ # 100円未満切り捨て
216
+ def 所得割800万超(所得 = 0)
217
+ ((所得800万超(所得) * 所得割税率800万超(所得) / 100) / 100).floor * 100
165
218
  end
166
219
 
167
220
  def 所得800万超(所得 = nil)
@@ -175,10 +228,16 @@ module Luca
175
228
  end
176
229
  end
177
230
 
178
- def 所得割800万超(所得 = nil)
179
- ((所得800万超(所得) * 7.0 / 100) / 100).floor * 100
231
+ def 所得割税率800万超(所得 = nil)
232
+ 所得 ||= 所得金額
233
+ if 期末資本金 > 100_000_000 || 所得 > 25_000_000
234
+ 7.48
235
+ else
236
+ 7.0
237
+ end
180
238
  end
181
239
 
240
+ # 100円未満切り捨て
182
241
  def 地方法人特別税(事業税)
183
242
  ((事業税 * 37 / 100) / 100).floor * 100
184
243
  end
@@ -224,6 +283,25 @@ module Luca
224
283
  def 地方消費税中間納付額
225
284
  prepaid_tax('185C')
226
285
  end
286
+
287
+ # -----------------------------------------------------
288
+ # :section: 外形標準の計算
289
+ # -----------------------------------------------------
290
+ def 資本金等の額
291
+ readable(['911', '913', '916'].map { |cd| @bs_data.dig(cd) }.compact.sum)
292
+ end
293
+
294
+ def 地方税資本金等の額
295
+ [資本金等の額, readable(['911', '9131'].map { |cd| @bs_data.dig(cd) }.compact.sum)].max
296
+ end
297
+
298
+ def 軽減税率不適用法人
299
+ 期末資本金 > 10_000_000 && eltax_config('no_keigen')
300
+ end
301
+
302
+ def 期末資本金
303
+ readable(@bs_data.dig('911'))
304
+ end
227
305
  end
228
306
  end
229
307
  end
@@ -24,7 +24,7 @@ module Luca
24
24
  entries << %Q(<TETSUZUKI ID="TETSUZUKI"><procedure_CD>#{@procedure_code}</procedure_CD><procedure_NM>#{@procedure_name}</procedure_NM></TETSUZUKI>)
25
25
  entries.concat([jigyo_nendo_from, jigyo_nendo_to, kazei_kikan_from, kazei_kikan_to])
26
26
  entries << render_it_tag('keiri_sekininsha')
27
- entries << '<SHINKOKU_KBN ID="SHINKOKU_KBN"><kubun_CD>30</kubun_CD></SHINKOKU_KBN>'
27
+ entries << %Q(<SHINKOKU_KBN ID="SHINKOKU_KBN"><kubun_CD>#{@shinkoku_kbn}</kubun_CD></SHINKOKU_KBN>)
28
28
  entries.concat(['eltax_id'].map{ |key| render_it_tag(key) })
29
29
  entries << '</IT>'
30
30
  entries.compact.join("\n")
@@ -27,6 +27,7 @@ module Luca
27
27
  @issue_date = Date.today
28
28
  @company = CGI.escapeHTML(config.dig('company', 'name'))
29
29
  @software = 'LucaJp'
30
+ @shinkoku_kbn = '1' # 確定申告
30
31
  税率 = BigDecimal('7.8') # percent
31
32
  地方税率 = BigDecimal('2.2')
32
33
 
@@ -52,7 +53,8 @@ module Luca
52
53
  else
53
54
  @procedure_code = 'RSH0040'
54
55
  @procedure_name = '消費税及び地方消費税申告(簡易課税・法人)'
55
- @version = '20.0.0'
56
+ @form_vers = proc_version
57
+ @version = @form_vers['proc']
56
58
  @form_sec = ['SHA020', 'SHB047', 'SHB067'].map{ |c| form_rdf(c) }.join('')
57
59
  @it = it_part
58
60
  @form_data = [申告書簡易課税, 付表四の三, 付表五の三].join("\n")
@@ -142,6 +144,14 @@ module Luca
142
144
  render_attr(tags[0], [amount, share].join(''))
143
145
  end
144
146
 
147
+ def proc_version
148
+ if @end_date >= Date.parse('2021-4-1')
149
+ { 'proc' => '20.0.1', 'SHA020' => '7.1' }
150
+ else
151
+ { 'proc' => '20.0.0', 'SHA020' => '7.0' }
152
+ end
153
+ end
154
+
145
155
  def lib_path
146
156
  __dir__
147
157
  end
@@ -1,4 +1,4 @@
1
- <HOA116 page="1" VR="1.0" id="HOA116" sakuseiNM="<%= @company %>" softNM="<%= @software %> <%= @company %>" sakuseiDay="<%= @issue_date %>">
1
+ <HOA116 page="1" VR="<%= @form_vers['HOA116'] %>" id="HOA116" sakuseiNM="<%= @company %>" softNM="<%= @software %> <%= @company %>" sakuseiDay="<%= @issue_date %>">
2
2
 
3
3
  <QHA00000><QHA00010>
4
4
  <QHA00020 IDREF="JIGYO_NENDO_FROM"/>
@@ -24,7 +24,9 @@
24
24
  <QHC00000>
25
25
  <%= render_attr('QHC00010', @地方法人税課税標準) %>
26
26
  <QHC00030>
27
- <QHC00040><kubun_CD>2</kubun_CD></QHC00040><%# 10.3% %>
27
+ <% if @form_vers['HOA116'] == '1.0' %>
28
+ <QHC00040><kubun_CD>2</kubun_CD></QHC00040><%# 10.3% %>
29
+ <% end %>
28
30
  <%= render_attr('QHC00050', 地方法人税額(@地方法人税課税標準)) %>
29
31
  </QHC00030>
30
32
  </QHC00000>
@@ -1,4 +1,4 @@
1
- <HOA112 page="1" VR="2.0" id="HOA112" sakuseiNM="<%= @company %>" softNM="<%= @software %> <%= @company %>" sakuseiDay="<%= @issue_date %>">
1
+ <HOA112 page="1" VR="<%= @form_vers['HOA112'] %>" id="HOA112" sakuseiNM="<%= @company %>" softNM="<%= @software %> <%= @company %>" sakuseiDay="<%= @issue_date %>">
2
2
  <BGA00000>
3
3
  <BGA00010 IDREF="TEISYUTSU_DAY"/>
4
4
  <BGA00020 IDREF="ZEIMUSHO"/>
@@ -7,10 +7,12 @@
7
7
  <VAA00040 IDREF="NOZEISHA_NM"/>
8
8
  </VAA00000>
9
9
  <VAB00000>
10
+ <%= render_attr('VAB00005', beppyo2_config('own_shares')) %>
10
11
  <%= render_attr('VAB00010', beppyo2_config('total_shares')) %>
11
12
  <%= render_attr('VAB00020', 別表二上位株数) %>
12
13
  <%= render_attr('VAB00030', 別表二上位株割合) %>
13
14
  <VAB00040>
15
+ <%= render_attr('VAB00050', beppyo2_config('no_votes')) %>
14
16
  <%= render_attr('VAB00060', beppyo2_config('total_votes')) %>
15
17
  </VAB00040>
16
18
  <%= render_attr('VAB00070', 別表二上位議決権数) %>