luca-jp 0.1.2 → 0.1.7

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: 5c49087082344b219aa575860edc352d9aeaa9f6ec330198ca6564144625b1b5
4
- data.tar.gz: '058ea66e0a93be29b3fdcdb6639b28589de79b40159e49c59f4dab1ea36563f7'
3
+ metadata.gz: 4040cfe74aa1a54345ead8ecae4ef23bfb7afcb45add127ae244c955caddf4b7
4
+ data.tar.gz: d11e300d1a69fef846ffebdf58179f4c85206329b8f950baa2332e39416416e5
5
5
  SHA512:
6
- metadata.gz: 021d11b98374b99a0cdcc34f305a4858d615190b9911e37c4b33c80106c973997f2614d3d2e5ab0eb7a78b8bab21494bf99a4f3d009a65718ebe210a2a617679
7
- data.tar.gz: 65477750f24b8e4c2f5d9a4cbe0268686e58999620d3beb1bd2ff2be5375dd1771923d1ee58e5bbf86b7f4d9779a7a482757c37aeb861e438072e2ff3f71ec41
6
+ metadata.gz: 724fe70197721883fe486b603ef6e9239a6da2c813165d5322a45ee927bead70d7fe54085fc4ab3d7ecf63886b72f01acc261e2a9be1eb6a10009cb474b17d1e
7
+ data.tar.gz: 46bc67bcbf9bc7935d31fa10a31da6692138705933c0b90d57b415344278b53b942a24abc92eeaeeb8ed1753a79470b15133bbbf32a07c55c57a33ec5aac8d64
data/lib/luca/jp.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'luca/jp/version'
4
+ require 'luca_support/config'
4
5
 
5
6
  module Luca
6
7
  module Jp
@@ -10,6 +11,13 @@ module Luca
10
11
  autoload :Chihouzei, 'luca/jp/chihouzei'
11
12
  autoload :Common, 'luca/jp/common'
12
13
  autoload :ItPart, 'luca/jp/it_part'
14
+ autoload :Sonshitsu, 'luca/jp/sonshitsu'
13
15
  autoload :Util, 'luca/jp/util'
14
16
  end
17
+
18
+ EX_CONF = begin
19
+ YAML.load_file(Pathname(LucaSupport::PJDIR) / 'config-lucajp.yml')
20
+ rescue Errno::ENOENT
21
+ nil
22
+ end
15
23
  end
data/lib/luca/jp/aoiro.rb CHANGED
@@ -24,8 +24,9 @@ module Luca
24
24
  set_pl(4)
25
25
  set_bs(4)
26
26
  @issue_date = Date.today
27
- @company = CGI.escapeHTML(LucaSupport::CONFIG.dig('company', 'name'))
27
+ @company = CGI.escapeHTML(config.dig('company', 'name'))
28
28
  @software = 'LucaJp'
29
+
29
30
  @税額 = 税額計算
30
31
  @確定法人税額 = @税額.dig(:houjin, :kokuzei)
31
32
  @法人税額 = 中小企業の軽減税額 + 一般区分の税額
@@ -50,18 +51,24 @@ module Luca
50
51
  @procedure_code = 'RHO0012'
51
52
  @procedure_name = '内国法人の確定申告(青色)'
52
53
  @version = '20.0.2'
53
- @都道府県民税中間納付 = prepaid_tax('1859') + prepaid_tax('185A')
54
- @市民税中間納付 = prepaid_tax('185D') + prepaid_tax('185E')
54
+ @都道府県民税法人税割中間納付 = prepaid_tax('1859')
55
+ @都道府県民税均等割中間納付 = prepaid_tax('185A')
56
+ @都道府県民税中間納付 = @都道府県民税法人税割中間納付 + @都道府県民税均等割中間納付
57
+ @市民税法人税割中間納付 = prepaid_tax('185D')
58
+ @市民税均等割中間納付 = prepaid_tax('185E')
59
+ @市民税中間納付 = @市民税法人税割中間納付 + @市民税均等割中間納付
55
60
  @法人税期中増, @法人税期中減 = 未納法人税期中増減
56
61
  @都道府県民税期中増, @都道府県民税期中減 = 未納都道府県民税期中増減
57
62
  @市民税期中増, @市民税期中減 = 未納市民税期中増減
58
63
  @事業税期中増, @事業税期中減 = 未納事業税期中増減
64
+ @事業税中間納付 = prepaid_tax('1854') + prepaid_tax('1855') + prepaid_tax('1856') + prepaid_tax('1857') + prepaid_tax('1858')
59
65
  @納税充当金期中増, @納税充当金期中減 = 納税充当金期中増減
66
+ @翌期還付法人税 = 中間還付税額(@確定法人税額 + @確定地方法人税額, @法人税中間納付 + @地方法人税中間納付)
60
67
  @概況売上 = gaikyo('A0')
61
- @form_sec = ['HOA112', 'HOA116', 'HOA201', 'HOA420', 'HOA511', 'HOA522', 'HOE200', 'HOE990', 'HOI010', 'HOI100', 'HOI141', 'HOK010'].map{ |c| form_rdf(c) }.join('')
68
+ @form_sec = ['HOA112', 'HOA116', 'HOA201', 'HOA420', 'HOA511', 'HOA522', 別表七フォーム, 'HOE200', 適用額明細フォーム, 'HOI010', 'HOI100', 'HOI141', 'HOK010'].compact.map{ |c| form_rdf(c) }.join('')
62
69
  #@extra_form_sec = ['HOI040', 'HOI060', 'HOI090', 'HOI110']
63
70
  @it = it_part
64
- @form_data = [別表一, 別表一次葉, 別表二, 別表四簡易, 別表五一, 別表五二, 別表十五, 適用額明細, 預貯金内訳, 仮受金内訳, 役員報酬内訳, 概況説明].join("\n")
71
+ @form_data = [別表一, 別表一次葉, 別表二, 別表四簡易, 別表五一, 別表五二, 別表七, 別表十五, 適用額明細, 預貯金内訳, 仮受金内訳, 役員報酬内訳, 概況説明].compact.join("\n")
65
72
  render_erb(search_template('aoiro.xtx.erb'))
66
73
  end
67
74
  end
@@ -81,7 +88,7 @@ module Luca
81
88
  else
82
89
  item['credit'] << { 'label' => '未払法人税', 'amount' => dat[:kokuzei][:zeigaku] - dat[:kokuzei][:chukan] }
83
90
  end
84
- item['debit'] << { 'label' => '法人税、住民税及び事業税', 'amount' => dat[:kokuzei][:zeigaku] }
91
+ item['debit'] << { 'label' => '法人税、住民税及び事業税', 'amount' => dat[:kokuzei][:zeigaku] } if dat[:kokuzei][:zeigaku] > 0
85
92
  if dat[:chihou][:chukan] > 0
86
93
  item['credit'] << { 'label' => '仮払法人税(地方)', 'amount' => dat[:chihou][:chukan] }
87
94
  end
@@ -90,7 +97,7 @@ module Luca
90
97
  else
91
98
  item['credit'] << { 'label' => '未払法人税', 'amount' => dat[:chihou][:zeigaku] - dat[:chihou][:chukan] }
92
99
  end
93
- item['debit'] << { 'label' => '法人税、住民税及び事業税', 'amount' => dat[:chihou][:zeigaku] }
100
+ item['debit'] << { 'label' => '法人税、住民税及び事業税', 'amount' => dat[:chihou][:zeigaku] } if dat[:chihou][:zeigaku] > 0
94
101
  item['x-editor'] = 'LucaJp'
95
102
  res << item
96
103
  puts JSON.dump(res)
@@ -114,8 +121,17 @@ module Luca
114
121
  @当期純損益 = readable(@pl_data.dig('HA'))
115
122
  @法人税等 = readable(@pl_data.dig('H0'))
116
123
  _, @納付事業税 = 未納事業税期中増減
117
- @還付事業税 = readable(還付事業税 || 0)
118
- @別表四調整所得 = @当期純損益 + @法人税等 + @還付事業税 - @納付事業税
124
+ @別表四調整所得 = @当期純損益 + @法人税等 - @納付事業税
125
+
126
+ @当期還付法人税 = refund_tax('1502')
127
+ @当期還付都道府県住民税 = refund_tax('1503')
128
+ @翌期還付都道府県住民税 = 中間還付税額(@税額.dig(:kenmin, :kintou), @都道府県民税均等割中間納付) + 中間還付税額(@税額.dig(:kenmin, :houjinzei), @都道府県民税法人税割中間納付)
129
+ @当期還付市民税 = refund_tax('1505')
130
+ @翌期還付市民税 = 中間還付税額(@税額.dig(:shimin, :kintou), @市民税均等割中間納付) + 中間還付税額(@税額.dig(:shimin, :houjinzei), @市民税法人税割中間納付)
131
+ @当期還付事業税 = 還付事業税
132
+ @事業税期首残高 = 期首未納事業税 > 0 ? 期首未納事業税 : (@当期還付事業税 * -1)
133
+ @翌期還付事業税 = 中間還付税額(確定事業税, @事業税中間納付)
134
+ @仮払税金 = @翌期還付法人税 + @翌期還付都道府県住民税 + @翌期還付事業税 + @翌期還付市民税
119
135
 
120
136
  render_erb(search_template('beppyo4.xml.erb'))
121
137
  end
@@ -125,10 +141,26 @@ module Luca
125
141
  end
126
142
 
127
143
  def 別表五二
144
+ @消費税中間納付額 = 消費税中間納付額 + 地方消費税中間納付額
145
+ @当期還付消費税 = refund_tax('1501')
146
+ @消費税期首残高 = 期首未納消費税 > 0 ? 期首未納消費税 : (@当期還付消費税 * -1)
147
+ @翌期還付消費税 = 中間還付税額(@消費税期中増, @消費税中間納付額)
128
148
  @その他事業税 = 租税公課
129
149
  render_erb(search_template('beppyo52.xml.erb'))
130
150
  end
131
151
 
152
+ def 別表七フォーム
153
+ return nil if @繰越損失管理.records.length == 0
154
+
155
+ 'HOB710'
156
+ end
157
+
158
+ def 別表七
159
+ return nil if @繰越損失管理.records.length == 0
160
+
161
+ render_erb(search_template('beppyo7.xml.erb'))
162
+ end
163
+
132
164
  def 別表十五
133
165
  @交際費 = readable(@pl_data.dig('C1B') || 0)
134
166
  @限度額 = @交際費 < 4_000_000 ? @交際費 : 4_000_000
@@ -141,7 +173,7 @@ module Luca
141
173
  next unless /^110[0-9A-Z]/.match(k)
142
174
  next unless readable(v || 0) > 0
143
175
 
144
- h[@dict.dig(k)[:label]] = readable(v)
176
+ h[@@dict.dig(k)[:label]] = readable(v)
145
177
  end
146
178
  render_erb(search_template('yokin-meisai.xml.erb'))
147
179
  end
@@ -158,7 +190,15 @@ module Luca
158
190
  render_erb(search_template('yakuin-meisai.xml.erb'))
159
191
  end
160
192
 
193
+ def 適用額明細フォーム
194
+ return nil if @確定法人税額 == 0
195
+
196
+ 'HOE990'
197
+ end
198
+
161
199
  def 適用額明細
200
+ return nil if @確定法人税額 == 0
201
+
162
202
  render_erb(search_template('tekiyougaku.xml.erb'))
163
203
  end
164
204
 
@@ -212,13 +252,72 @@ module Luca
212
252
  end
213
253
 
214
254
  def 租税公課
215
- readable(LucaBook::State.gross(@start_date.year, @start_date.month, @end_date.year, @end_date.month, code: 'C1I')[:debit]) || 0
255
+ readable(LucaBook::State.gross(@start_date.year, @start_date.month, @end_date.year, @end_date.month, code: 'C1I')[:debit]['C1I']) || 0
256
+ end
257
+
258
+ def 別表四還付法人税等金額
259
+ refund_tax()
216
260
  end
217
261
 
218
262
  def 別表四還付事業税
219
- return nil if @還付事業税 == 0
263
+ return nil if @当期還付事業税 == 0
220
264
 
221
- "<ARC00220><ARC00230>仮払事業税消却(未収計上した還付事業税)</ARC00230>#{render_attr('ARC00240', @還付事業税)}#{render_attr('ARC00250', @還付事業税)}</ARC00220>\n"
265
+ "<ARC00220><ARC00230>仮払事業税消却(未収計上した還付事業税)</ARC00230>#{render_attr('ARC00240', @当期還付事業税)}#{render_attr('ARC00250', @当期還付事業税)}</ARC00220>\n"
266
+ end
267
+
268
+ def 別表五一仮払税金
269
+ 未収仮払税金 = [@start_balance['1502'], @start_balance['1503'], @start_balance['1504'], @start_balance['1505']].compact.sum
270
+ 還付税金 = [@当期還付法人税, @当期還付都道府県住民税, @当期還付事業税, @当期還付市民税].compact.sum
271
+ return '' if 未収仮払税金 == 0 && 還付税金 == 0 && @仮払税金 == 0
272
+
273
+ %Q(<ICB00140>
274
+ #{render_attr('ICB00150', '仮払税金')}
275
+ #{render_attr('ICB00160', 未収仮払税金 * -1)}
276
+ <ICB00170>
277
+ #{render_attr('ICB00190', 還付税金 * -1)}
278
+ #{render_attr('ICB00200', @仮払税金 * -1)}
279
+ </ICB00170>
280
+ #{render_attr('ICB00210', @仮払税金 * -1)}
281
+ </ICB00140>)
282
+ end
283
+
284
+ def 別表五一還付法人税
285
+ return '' if (@start_balance['1502']||0) == 0 && @翌期還付法人税 == 0
286
+
287
+ %Q(<ICB00220>
288
+ #{render_attr('ICB00230', @start_balance['1502'] || 0)}
289
+ <ICB00240>
290
+ #{render_attr('ICB00250', @当期還付法人税)}
291
+ #{render_attr('ICB00260', @翌期還付法人税)}
292
+ </ICB00240>
293
+ #{render_attr('ICB00270', @翌期還付法人税)}
294
+ </ICB00220>)
295
+ end
296
+
297
+ def 別表五一還付都道府県住民税
298
+ return '' if (@start_balance['1503']||0) == 0 && @翌期還付都道府県住民税 == 0
299
+
300
+ %Q(<ICB00280>
301
+ #{render_attr('ICB00290', @start_balance['1503'] || 0)}
302
+ <ICB00300>
303
+ #{render_attr('ICB00310', @当期還付都道府県住民税)}
304
+ #{render_attr('ICB00320', @翌期還付都道府県住民税)}
305
+ </ICB00300>
306
+ #{render_attr('ICB00330', @翌期還付都道府県住民税)}
307
+ </ICB00280>)
308
+ end
309
+
310
+ def 別表五一還付市民税
311
+ return '' if (@start_balance['1505']||0) == 0 && @翌期還付市民税 == 0
312
+
313
+ %Q(<ICB00340>
314
+ #{render_attr('ICB00350', @start_balance['1505'] || 0)}
315
+ <ICB00360>
316
+ #{render_attr('ICB00370', @当期還付市民税)}
317
+ #{render_attr('ICB00380', @翌期還付市民税)}
318
+ </ICB00360>
319
+ #{render_attr('ICB00390', @翌期還付市民税)}
320
+ </ICB00340>)
222
321
  end
223
322
 
224
323
  def 期首繰越損益
@@ -233,16 +332,11 @@ module Luca
233
332
  readable(@start_balance.dig('515')) || 0
234
333
  end
235
334
 
236
- def 期末納税充当金
237
- readable(@bs_data.dig('515')) || 0
238
- end
239
-
240
335
  def 納税充当金期中増減
241
- r = LucaBook::State.gross(@start_date.year, @start_date.month, @end_date.year, @end_date.month, code: '515')
242
- [
243
- readable(r[:credit] || 0) + @法人税期中増 + @都道府県民税期中増 + @市民税期中増 + @事業税期中増,
244
- readable(r[:debit] || 0) + @法人税期中減 + @都道府県民税期中減 + @市民税期中減 + @事業税期中減
245
- ]
336
+ r = debit_amount('515', @start_date.year, @start_date.month, @end_date.year, @end_date.month)
337
+ 納付 = 納付税額(@確定法人税額 + @確定地方法人税額, @法人税中間納付 + @地方法人税中間納付) + 期末未納都道府県民税 + 期末未納市民税 + 納付税額(確定事業税, @事業税中間納付)
338
+
339
+ [納付, readable(r)]
246
340
  end
247
341
 
248
342
  def 期首未納法人税
@@ -250,12 +344,12 @@ module Luca
250
344
  end
251
345
 
252
346
  def 期末未納法人税
253
- readable(@bs_data.dig('5151')) || 0
347
+ 納付税額(@確定法人税額 + @確定地方法人税額, @法人税中間納付 + @地方法人税中間納付)
254
348
  end
255
349
 
256
350
  def 未納法人税期中増減
257
- r = LucaBook::State.gross(@start_date.year, @start_date.month, @end_date.year, @end_date.month, code: '5151')
258
- [readable(r[:credit] || 0), readable(r[:debit] || 0)]
351
+ r = debit_amount('5151', @start_date.year, @start_date.month, @end_date.year, @end_date.month)
352
+ [(@確定法人税額 + @確定地方法人税額), readable(r)]
259
353
  end
260
354
 
261
355
  # 中間納付した金額のうち税額とならず、還付されるべき額
@@ -279,20 +373,21 @@ module Luca
279
373
  end
280
374
 
281
375
  def 期末未納都道府県民税
282
- readable(@bs_data.dig('5153')) || 0
376
+ 納付税額(@税額.dig(:kenmin, :kintou), @都道府県民税均等割中間納付) + 納付税額(@税額.dig(:kenmin, :houjinzei), @都道府県民税法人税割中間納付)
283
377
  end
284
378
 
285
379
  def 未納都道府県民税期中増減
286
- r = LucaBook::State.gross(@start_date.year, @start_date.month, @end_date.year, @end_date.month, code: '5153')
287
- [readable(r[:credit] || 0), readable(r[:debit] || 0)]
380
+ r = debit_amount('5153', @start_date.year, @start_date.month, @end_date.year, @end_date.month)
381
+ [確定都道府県住民税, readable(r)]
288
382
  end
289
383
 
290
384
  def 都道府県民税仮払納付
291
385
  [(@都道府県民税中間納付 - 確定都道府県住民税), 0].max
386
+ 中間還付税額(@税額.dig(:kenmin, :kintou), @都道府県民税均等割中間納付) + 中間還付税額(@税額.dig(:kenmin, :houjinzei), @都道府県民税法人税割中間納付)
292
387
  end
293
388
 
294
389
  def 都道府県民税損金納付
295
- [確定都道府県住民税, @都道府県民税中間納付].min
390
+ [@都道府県民税均等割中間納付, @税額.dig(:kenmin, :kintou)].min + [@都道府県民税法人税割中間納付, @税額.dig(:kenmin, :houjinzei)].min
296
391
  end
297
392
 
298
393
  def 確定市民税
@@ -304,20 +399,28 @@ module Luca
304
399
  end
305
400
 
306
401
  def 期末未納市民税
307
- readable(@bs_data.dig('5154')) || 0
402
+ 納付税額(@税額.dig(:shimin, :kintou), @市民税均等割中間納付) + 納付税額(@税額.dig(:shimin, :houjinzei), @市民税法人税割中間納付)
308
403
  end
309
404
 
310
405
  def 未納市民税期中増減
311
- r = LucaBook::State.gross(@start_date.year, @start_date.month, @end_date.year, @end_date.month, code: '5154')
312
- [readable(r[:credit] || 0), readable(r[:debit] || 0)]
406
+ r = debit_amount('5154', @start_date.year, @start_date.month, @end_date.year, @end_date.month)
407
+ [確定市民税, readable(r)]
313
408
  end
314
409
 
315
410
  def 市民税仮払納付
316
- [0, (@市民税中間納付 - 確定市民税)].max
411
+ 中間還付税額(@税額.dig(:shimin, :kintou), @市民税均等割中間納付) + 中間還付税額(@税額.dig(:shimin, :houjinzei), @市民税法人税割中間納付)
317
412
  end
318
413
 
319
414
  def 市民税損金納付
320
- [@市民税中間納付, 確定市民税].min
415
+ [@市民税均等割中間納付, @税額.dig(:shimin, :kintou)].min + [@市民税法人税割中間納付, @税額.dig(:shimin, :houjinzei)].min
416
+ end
417
+
418
+ def 確定事業税
419
+ @税額.dig(:kenmin, :shotoku) + @税額.dig(:kenmin, :tokubetsu)
420
+ end
421
+
422
+ def 事業税損金納付
423
+ [@事業税中間納付, 確定事業税].min
321
424
  end
322
425
 
323
426
  def 別表五一期首差引金額
@@ -325,15 +428,42 @@ module Luca
325
428
  end
326
429
 
327
430
  def 別表五一期末差引金額
328
- 期末繰越損益 + 期末納税充当金 - 期末未納法人税 - 期末未納都道府県民税 - 期末未納市民税
431
+ 期末繰越損益 + @納税充当金期中増 - 期末未納法人税 - 期末未納都道府県民税 - 期末未納市民税 - @翌期還付事業税
329
432
  end
330
433
 
331
434
  def 別表五一期中減差引金額
332
- 期首繰越損益 + @納税充当金期中減 - @法人税期中減 - @都道府県民税期中減 - @市民税期中減
435
+ 期首繰越損益 + @納税充当金期中減 - @法人税期中減 - @都道府県民税期中減 - @市民税期中減 - @翌期還付法人税 - @翌期還付都道府県住民税 - @翌期還付市民税
333
436
  end
334
437
 
335
438
  def 別表五一期中増差引金額
336
- 期末繰越損益 + @納税充当金期中増 - @法人税期中増 - @都道府県民税期中増 - @市民税期中増
439
+ 期末繰越損益 + 納付税額(確定事業税, @事業税中間納付) - @法人税中間納付 - @地方法人税中間納付 - @都道府県民税中間納付 - @市民税中間納付 - @翌期還付事業税
440
+ end
441
+
442
+ def 期末未収税金(code)
443
+ readable((@bs_data[code] || 0) * -1)
444
+ end
445
+
446
+ def 別表七各期青色損失
447
+ tags = @繰越損失管理.records
448
+ .filter { |record| record['start_date'] > @end_date.prev_year(10) && record['end_date'] < @start_date }
449
+ .map do |record|
450
+ deduction = record['decrease']&.filter{ |r| r['date'] >= @start_date }&.dig(0, 'val') || 0
451
+ next if deduction == 0 && record['amount'] == 0
452
+
453
+ %Q(<MCB00110>
454
+ <MCB00120>
455
+ #{render_attr('MCB00130', etax_date(record['start_date']))}
456
+ #{render_attr('MCB00140', etax_date(record['end_date']))}
457
+ </MCB00120>
458
+ <MCB00150>
459
+ <MCB00160><kubun_CD>1</kubun_CD></MCB00160>
460
+ </MCB00150>
461
+ #{render_attr('MCB00190', deduction + record['amount'])}
462
+ #{render_attr('MCB00200', deduction)}
463
+ #{render_attr('MCB00210', record['amount'])}
464
+ </MCB00110)
465
+ end
466
+ tags.compact.join("\n")
337
467
  end
338
468
 
339
469
  def 期首資本金
@@ -361,8 +491,9 @@ module Luca
361
491
  end
362
492
 
363
493
  def 未納消費税期中増減
364
- r = LucaBook::State.gross(@start_date.year, @start_date.month, @end_date.year, @end_date.month, code: '516')
365
- [readable(r[:credit] || 0), readable(r[:debit] || 0)]
494
+ increase = debit_amount('C1I1', @start_date.year, @start_date.month, @end_date.year, @end_date.month)
495
+ r = debit_amount('516', @start_date.year, @start_date.month, @end_date.year, @end_date.month)
496
+ [readable(increase), readable(r)]
366
497
  end
367
498
 
368
499
  def 概況月(idx)
@@ -387,13 +518,13 @@ module Luca
387
518
 
388
519
  def 概況月源泉徴収(idx)
389
520
  target = @start_date.next_month(idx)
390
- readable(LucaBook::State.gross(target.year, target.month, code: '5191')[:credit] || 0)
391
- + readable(LucaBook::State.gross(target.year, target.month, code: '5193')[:credit] || 0)
521
+ readable(LucaBook::State.gross(target.year, target.month, code: '5191')[:credit]['5191'] || 0)
522
+ + readable(LucaBook::State.gross(target.year, target.month, code: '5193')[:credit]['5193'] || 0)
392
523
  end
393
524
 
394
525
  def 概況源泉徴収
395
- readable(LucaBook::State.gross(@start_date.year, @start_date.month, @end_date.year, @end_date.month, code: '5191')[:credit] || 0)
396
- + readable(LucaBook::State.gross(@start_date.year, @start_date.month, @end_date.year, @end_date.month, code: '5193')[:credit] || 0)
526
+ readable(LucaBook::State.gross(@start_date.year, @start_date.month, @end_date.year, @end_date.month, code: '5191')[:credit]['5191'] || 0)
527
+ + readable(LucaBook::State.gross(@start_date.year, @start_date.month, @end_date.year, @end_date.month, code: '5193')[:credit]['5193'] || 0)
397
528
  end
398
529
 
399
530
  def gaikyo(code)
@@ -22,10 +22,10 @@ module Luca
22
22
  set_pl(4)
23
23
  set_bs(4)
24
24
  @issue_date = Date.today
25
- @company = CGI.escapeHTML(LucaSupport::CONFIG.dig('company', 'name'))
25
+ @company = CGI.escapeHTML(config.dig('company', 'name'))
26
26
  @software = 'LucaJp'
27
- @jimusho_code = LucaSupport::CONFIG.dig('jp', 'eltax', 'jimusho_code')
28
- @jimusho_name = '都税事務所長'
27
+ @jimusho_code = eltax_config('jimusho_code')
28
+ @jimusho_name = eltax_config('jimusho_name')
29
29
 
30
30
  @税額 = 税額計算
31
31
  @均等割 = @税額.dig(:kenmin, :kintou)
@@ -62,9 +62,9 @@ module Luca
62
62
  else
63
63
  @procedure_code = 'R0102100'
64
64
  @procedure_name = '法人都道府県民税・事業税・特別法人事業税又は地方法人特別税 確定申告'
65
- @form_sec = ['R0102AA190', 'R0102AG120'].map{ |c| form_attr(c) }.join('')
66
- @user_inf = render_erb(search_template('el-userinf.xml.erb'))
67
- @form_data = [第六号, 別表四三].join("\n")
65
+ @form_sec = ['R0102AA190', 'R0102AG120', 別表九フォーム].compact.map{ |c| form_attr(c) }.join('')
66
+ @user_inf = render_erb(search_template('eltax-userinf.xml.erb'))
67
+ @form_data = [第六号, 別表四三, 別表九].compact.join("\n")
68
68
  render_erb(search_template('eltax.xml.erb'))
69
69
  end
70
70
  end
@@ -81,22 +81,22 @@ module Luca
81
81
  item['credit'] << { 'label' => karibarai_label(k), 'amount' => dat[:chukan] }
82
82
  end
83
83
  if dat[:chukan] > dat[:zeigaku]
84
- item['debit'] << { 'label' => '未収法人税', 'amount' => dat[:chukan] - dat[:zeigaku] }
84
+ item['debit'] << { 'label' => '未収地方事業税', 'amount' => dat[:chukan] - dat[:zeigaku] }
85
85
  else
86
86
  item['credit'] << { 'label' => '未払地方事業税', 'amount' => dat[:zeigaku] - dat[:chukan] }
87
87
  end
88
- item['debit'] << { 'label' => '法人税、住民税及び事業税', 'amount' => dat[:zeigaku] }
88
+ item['debit'] << { 'label' => '法人税、住民税及び事業税', 'amount' => dat[:zeigaku] } if dat[:zeigaku] > 0
89
89
  end
90
90
  records[:juminzei].each do |k, dat|
91
91
  if dat[:chukan] > 0
92
92
  item['credit'] << { 'label' => karibarai_label(k), 'amount' => dat[:chukan] }
93
93
  end
94
94
  if dat[:chukan] > dat[:zeigaku]
95
- item['debit'] << { 'label' => '未収法人税', 'amount' => dat[:chukan] - dat[:zeigaku] }
95
+ item['debit'] << { 'label' => '未収都道府県住民税', 'amount' => dat[:chukan] - dat[:zeigaku] }
96
96
  else
97
97
  item['credit'] << { 'label' => '未払都道府県民税', 'amount' => dat[:zeigaku] - dat[:chukan] }
98
98
  end
99
- item['debit'] << { 'label' => '法人税、住民税及び事業税', 'amount' => dat[:zeigaku] }
99
+ item['debit'] << { 'label' => '法人税、住民税及び事業税', 'amount' => dat[:zeigaku] } if dat[:zeigaku] > 0
100
100
  end
101
101
  item['x-editor'] = 'LucaJp'
102
102
  res << item
@@ -109,10 +109,22 @@ module Luca
109
109
  end
110
110
 
111
111
  def 別表四三
112
- @office_23ku = LucaSupport::CONFIG.dig('jp', 'eltax', 'office_23ku')
112
+ @office_23ku = config.dig('jp', 'eltax', 'office_23ku')
113
113
  render_erb(search_template('el-no6-43.xml.erb'))
114
114
  end
115
115
 
116
+ def 別表九フォーム
117
+ return nil if @繰越損失管理.records.length == 0
118
+
119
+ 'R0102AM190'
120
+ end
121
+
122
+ def 別表九
123
+ return nil if @繰越損失管理.records.length == 0
124
+
125
+ render_erb(search_template('el-no6-9.xml.erb'))
126
+ end
127
+
116
128
  private
117
129
 
118
130
  def 法人税割課税標準
@@ -124,8 +136,54 @@ module Luca
124
136
  @所得割中間納付
125
137
  end
126
138
 
139
+ # TODO: 損失の区分
140
+ #
141
+ def 別表九各期青色損失
142
+ tags = @繰越損失管理.records
143
+ .filter { |record| record['start_date'] > @end_date.prev_year(10) && record['end_date'] < @start_date }
144
+ .map do |record|
145
+ deduction = record['decrease']&.filter{ |r| r['date'] >= @start_date }&.dig(0, 'val') || 0
146
+ next if deduction == 0 && record['amount'] == 0
147
+
148
+ %Q(<AMB00200>
149
+ <AMB00210>#{etax_date(@start_date)}</AMB00210>
150
+ <AMB00220>#{etax_date(@end_date)}</AMB00220>
151
+ <AMB00225 />
152
+ #{render_attr('AMB00230', deduction + record['amount'])}
153
+ #{render_attr('AMB00240', deduction)}
154
+ #{render_attr('AMB00250', record['amount'])}
155
+ </AMB00200>)
156
+ end
157
+ return tags.compact.join("\n") if tags.length > 0
158
+
159
+ %Q(<AMB00200>
160
+ <AMB00210><gen:era /><gen:yy /><gen:mm /><gen:dd /></AMB00210>
161
+ <AMB00220><gen:era /><gen:yy /><gen:mm /><gen:dd /></AMB00220>
162
+ <AMB00225 />
163
+ <AMB00230 />
164
+ <AMB00240 />
165
+ <AMB00250 />
166
+ </AMB00200>)
167
+ end
168
+
169
+ def eltax_kouza
170
+ items = it_part_config('kanpu_kinyukikan').split('-')
171
+ %Q(<gen:kubun_CD />
172
+ <gen:kinyukikan_NM>#{items[0]}</gen:kinyukikan_NM>
173
+ <gen:shiten_NM>#{items[1]}</gen:shiten_NM>
174
+ <gen:kinyukikan_CD />
175
+ <gen:shiten_CD />
176
+ <gen:yokin>1</gen:yokin>
177
+ <gen:koza>#{items[3]}</gen:koza>)
178
+ end
179
+
127
180
  def form_attr(code)
128
- "<FORM_ATTR><FORM_ID>#{code}</FORM_ID><FORM_NAME></FORM_NAME><FORM_FILE_NAME></FORM_FILE_NAME><FORM_XSL_NAME></FORM_XSL_NAME></FORM_ATTR>"
181
+ name = {
182
+ 'R0102AA' => '中間・確定申告書',
183
+ 'R0102AG' => '均等割額の計算に関する明細書',
184
+ 'R0102AM' => '欠損金額等及び災害損失金の控除明細書'
185
+ }[code[0,7]]
186
+ "<FORM_ATTR><FORM_ID>#{code}</FORM_ID><FORM_NAME>#{name}</FORM_NAME><FORM_FILE_NAME></FORM_FILE_NAME><FORM_XSL_NAME></FORM_XSL_NAME></FORM_ATTR>"
129
187
  end
130
188
 
131
189
  def karibarai_label(key)
@@ -140,7 +198,7 @@ module Luca
140
198
  '仮払地方税資本割'
141
199
  when :fukakachi
142
200
  '仮払地方税付加価値割'
143
- when :hojinzei
201
+ when :houjinzei
144
202
  '仮払地方税法人税割'
145
203
  when :kinto
146
204
  '仮払地方税均等割'