Class: Luca::Jp::Aoiro

Inherits:
LucaBook::State
  • Object
show all
Includes:
Common, ItPart, Uchiwake, Util, LucaSupport::Code, LucaSupport::View
Defined in:
lib/luca/jp/aoiro.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Uchiwake

#仮受金内訳, #借入金内訳, #借入金内訳フォーム, #借入金合計, #地代家賃内訳, #地代家賃内訳フォーム, #役員報酬内訳, #有価証券内訳, #有価証券内訳フォーム, #有価証券合計, #買掛金内訳, #買掛金内訳フォーム, #買掛金等合計, #雑益雑損失内訳, #雑益雑損失内訳フォーム, #預貯金内訳

Methods included from Util

beppyo2_config, config, eltax_config, etax_date, form_rdf, gaikyo_config, gengou, it_part_config, prepaid_tax, refund_tax, render_attr, tokyo23?, uchiwake_account_config, wareki, 中間還付税額, 期首期末残高, 納付税額, 純資産期中増減

Methods included from ItPart

#it_part, #jigyo_nendo_from, #jigyo_nendo_to, #kazei_kikan_from, #kazei_kikan_to, #parse_houjinbango, #parse_kinyukikan, #parse_tel, #parse_zeimusho, #parse_zip, #render_it_tag, #teisyutsu_day

Methods included from Common

レポート種別, 一般区分の税額, 一般寄付金の損金算入限度額, 中小企業の軽減税率対象を超える所得, 中小企業の軽減税率対象所得, 中小企業の軽減税額, 中間還付税額, 事業所数による分割課税標準, 事業税の分割課税標準, 別表四所得調整, 地方法人税額, 地方消費税中間納付額, 地方税資本金等の額, 均等割, 寄付金の損金不算入額, 当期控除計, 当期繰越損失, 従業員数による分割課税標準, 所得400万以下, 所得800万以下, 所得800万超, 所得割400万以下, 所得割800万以下, 所得割800万超, 所得割税率400万以下, 所得割税率800万以下, 所得割税率800万超, 所得金額, 期末資本金, 期首繰越損失, 未納事業税期中増減, 法人税割, 法人税割税率, 消費税中間納付額, 消費税課税売上高, 特別法人事業税, 税額計算, 納付税額, 翌期繰越損失, 資本金等の額, 軽減税率不適用法人

Class Method Details

.dictObject



408
409
410
# File 'lib/luca/jp/aoiro.rb', line 408

def self.dict
  @@dict
end

Instance Method Details

#export_json(ext_config: nil, raw: false) ⇒ Object



109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# File 'lib/luca/jp/aoiro.rb', line 109

def export_json(ext_config: nil, raw: false)
  dat = kani(export: true, ext_config: ext_config)
  item = {
    'date' => @end_date,
    'debit' => [],
    'credit' => [],
    'x-editor' => 'LucaJp'
  }
  item['debit'] << { 'label' => '法人税、住民税及び事業税', 'amount' => dat[:kokuzei][:zeigaku] }
  確定仕訳所得税(item, dat)
  確定仕訳国税(item, dat)
  item['debit'] << { 'label' => '法人税、住民税及び事業税', 'amount' => dat[:chihou][:zeigaku] } if dat[:chihou][:zeigaku] > 0
  確定仕訳地方税(item, dat)
  res = [item]

  raw ? res : JSON.dump(res)
end

#kani(ext_config: nil, export: false, no_xbrl: false) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# File 'lib/luca/jp/aoiro.rb', line 23

def kani(ext_config: nil, export: false, no_xbrl: false)
  set_pl(4)
  set_bs(4)
  @issue_date = Date.today
  @company = CGI.escapeHTML(config.dig('company', 'name'))
  @software = 'LucaJp'
  @shinkoku_kbn = '30' # 確定申告
  @no_xbrl = no_xbrl # 決算書XBRLの組み込み省略

  別表四所得調整(ext_config)
  @税額 = 税額計算
  @確定法人税額 = @税額.dig(:houjin, :kokuzei)
  @法人税額 = 中小企業の軽減税額 + 一般区分の税額
  @地方法人税課税標準 = (@法人税額 / 1000).floor * 1000
  @地方法人税額 = 地方法人税額(@地方法人税課税標準)
  @確定地方法人税額 = @税額.dig(:houjin, :chihou)

  @所得税等の仮払額 = prepaid_tax('185F')
  @所得税等の税額控除額 = [
    @所得税等の仮払額,
    @所得税等の損金不算入額
  ].compact.sum
  @法人税中間納付 = prepaid_tax('1851')
  @地方法人税中間納付 = prepaid_tax('1852')
  @所得税等の還付額 = [@所得税等の税額控除額 - @確定法人税額, 0].max
  @差引所得に対する法人税額 = [@確定法人税額 - @所得税等の税額控除額, 0].max
  @法人税中間納付の還付額 = [@法人税中間納付 - @差引所得に対する法人税額, 0].max
  @法人税未払 = [@差引所得に対する法人税額 - @法人税中間納付, 0].max

  if export
    {
      kokuzei: {
        zeigaku: @確定法人税額,
        shotoku: {
          karibarai: @所得税等の仮払額,
          kanpu: @所得税等の還付額,
          modori: [@所得税等の還付額 - @所得税等の仮払額, 0].max
        },
        chukan: {
          karibarai: @法人税中間納付,
          kanpu: @法人税中間納付の還付額
        },
        mibarai: @法人税未払
      },
      chihou: {
        zeigaku: @確定地方法人税額,
        chukan: @地方法人税中間納付
      }
    }
  else
    @procedure_code = 'RHO0012'
    @procedure_name = '内国法人の確定申告(青色)'
    @form_vers = proc_version
    @version = @form_vers['proc']
    @都道府県民税法人税割中間納付 = prepaid_tax('1859')
    @都道府県民税均等割中間納付 = prepaid_tax('185A')
    @都道府県民税中間納付 = @都道府県民税法人税割中間納付 + @都道府県民税均等割中間納付
    @市民税法人税割中間納付 = prepaid_tax('185D')
    @市民税均等割中間納付 = prepaid_tax('185E')
    @市民税中間納付 = @市民税法人税割中間納付 + @市民税均等割中間納付
    @法人税期中増, @法人税期中減 = 未納法人税期中増減
    @都道府県民税期中増, @都道府県民税期中減 = 未納都道府県民税期中増減
    @市民税期中増, @市民税期中減 = 未納市民税期中増減
    @事業税期中増, @事業税期中減 = 未納事業税期中増減
    @翌期還付法人税 = 中間還付税額(@確定法人税額 + @確定地方法人税額, @法人税中間納付 + @地方法人税中間納付)
    @概況売上 = gaikyo('A0')
    @form_sec = [
      'HOA112', 'HOA116', 'HOA201', 'HOA420', 'HOA511', 'HOA522',
      別表六一フォーム, 別表七フォーム, 別表八一フォーム, 別表十四二フォーム, 別表十五フォーム,
      適用額明細フォーム,
      'HOI010', 有価証券内訳フォーム, 買掛金内訳フォーム, 'HOI100', 借入金内訳フォーム, 'HOI141', 地代家賃内訳フォーム, 雑益雑損失内訳フォーム,
      'HOK010'
      ].compact.map{ |c| form_rdf(c) }.join('')
    #@extra_form_sec = ['HOI040']
    @it = it_part
    @form_data = [
      別表一, 別表一次葉, 別表二, 別表四簡易, 別表五一, 別表五二,
      別表六一, 別表七, 別表八一, 別表十四二, 別表十五,
      適用額明細,
      預貯金内訳, 有価証券内訳, 買掛金内訳, 仮受金内訳, 借入金内訳, 役員報酬内訳, 地代家賃内訳, 雑益雑損失内訳,
      概況説明, 決算書
      ].compact.join("\n")
    render_erb(search_template('aoiro.xtx.erb'))
  end
end

#別表一Object



163
164
165
166
# File 'lib/luca/jp/aoiro.rb', line 163

def 別表一
  STDERR.puts "別表一: 「決算確定の日」などの追記が必要"
  render_erb(search_template('beppyo1.xml.erb'))
end

#別表一次葉Object



168
169
170
171
# File 'lib/luca/jp/aoiro.rb', line 168

def 別表一次葉
  @消費税期中増, @消費税期中減 = 未納消費税期中増減
  render_erb(search_template('beppyo1-next.xml.erb'))
end

#別表七Object



283
284
285
286
287
# File 'lib/luca/jp/aoiro.rb', line 283

def 別表七
  return nil if @繰越損失管理.records.length == 0

  render_erb(search_template('beppyo7.xml.erb'))
end

#別表七フォームObject



277
278
279
280
281
# File 'lib/luca/jp/aoiro.rb', line 277

def 別表七フォーム
  return nil if @繰越損失管理.records.length == 0

  'HOB710'
end

#別表二Object



173
174
175
# File 'lib/luca/jp/aoiro.rb', line 173

def 別表二
  render_erb(search_template('beppyo2.xml.erb'))
end

#別表五一Object



234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
# File 'lib/luca/jp/aoiro.rb', line 234

def 別表五一
  @当期還付法人税 = refund_tax('1502')
  @当期還付都道府県住民税 = refund_tax('1503')
  @当期還付市民税 = refund_tax('1505')
  @翌期還付都道府県住民税 = readable(@bs_data['1503']) || 0
  @翌期還付市民税 = readable(@bs_data['1505']) || 0

  @期首資本金 = readable(@start_balance.dig('911')) || 0
  @資本金期中減, @資本金期中増 = 純資産期中増減('911')
  @期首資本準備金, @期末資本準備金 = 期首期末残高('9131')
  @資本準備金期中減, @資本準備金期中増 = 純資産期中増減('9131')
  @期首その他資本剰余金, @期末その他資本剰余金 = 期首期末残高('9132')
  @その他資本剰余金期中減, @その他資本剰余金期中増 = 純資産期中増減('9132')
  @期首自己株式, @期末自己株式 = 期首期末残高('916')
  # 自己株式は負の純資産。借方集計は負の増加として認識
  @自己株式期中増, @自己株式期中減 = 純資産期中増減('916').map { |t| t * -1 }
  @資本金等の額期中減, @資本金等の額期中増 = 資本金等の額期中増減
  render_erb(search_template('beppyo51.xml.erb'))
end

#別表五二Object



254
255
256
257
258
259
260
261
262
# File 'lib/luca/jp/aoiro.rb', line 254

def 別表五二
  @消費税中間納付額 = 消費税中間納付額 + 地方消費税中間納付額
  @当期還付消費税 = refund_tax('1501')
  @消費税期首残高 = 期首未納消費税 > 0 ? 期首未納消費税 : (@当期還付消費税 * -1)
  @翌期還付消費税 = 中間還付税額(@消費税期中増, @消費税中間納付額)
  @事業税期首残高 = 期首未納事業税 > 0 ? 期首未納事業税 : (@当期還付事業税 * -1)
  @その他事業税 = 租税公課 - @消費税期中増
  render_erb(search_template('beppyo52.xml.erb'))
end

#別表八一Object



295
296
297
298
299
300
# File 'lib/luca/jp/aoiro.rb', line 295

def 別表八一
  return nil unless @受取配当金の益金不算入額

  STDERR.puts "別表八(一)「受取配当等の益金算入に関する明細書」: 受取配当額や明細の追記が必要"
  render_erb(search_template('beppyo8-1.xml.erb'))
end

#別表八一フォームObject



289
290
291
292
293
# File 'lib/luca/jp/aoiro.rb', line 289

def 別表八一フォーム
  return nil unless @受取配当金の益金不算入額

  'HOB800'
end

#別表六一Object



270
271
272
273
274
275
# File 'lib/luca/jp/aoiro.rb', line 270

def 別表六一
  return nil if @所得税等の税額控除額 <= 0

  STDERR.puts "別表六一「所得税額の控除に関する明細書」: 受取配当金など所得税額控除の収入金額追記、内訳の追加"
  render_erb(search_template('beppyo6-1.xml.erb'))
end

#別表六一フォームObject



264
265
266
267
268
# File 'lib/luca/jp/aoiro.rb', line 264

def 別表六一フォーム
  return nil if @所得税等の税額控除額 <= 0

  'HOB016'
end

#別表十五Object



323
324
325
326
327
328
329
330
331
# File 'lib/luca/jp/aoiro.rb', line 323

def 別表十五
  @交際費 = readable(@pl_data.dig('C1B') || 0)
  return nil if @交際費 <= 0

  STDERR.puts "別表十五「交際費等の損金算入に関する明細書」: 飲食費など明細の追記が必要"
  @限度額 = @交際費 < 4_000_000 ? @交際費 : 4_000_000
  @不算入額 = @交際費 < 4_000_000 ? 0 : @交際費 - 4_000_000
  render_erb(search_template('beppyo15.xml.erb'))
end

#別表十五フォームObject



317
318
319
320
321
# File 'lib/luca/jp/aoiro.rb', line 317

def 別表十五フォーム
  return nil if readable(@pl_data.dig('C1B') || 0) <= 0

  'HOE200'
end

#別表十四二Object



308
309
310
311
312
313
314
315
# File 'lib/luca/jp/aoiro.rb', line 308

def 別表十四二
  @寄付金 = readable(@pl_data.dig('C1X')||0)
  return nil if @寄付金 <= 0

  STDERR.puts "別表十四(二)「寄附金の損金算入に関する明細書」: 損金算入可能な寄付金の明細追記が必要"
  @指定寄付金 = readable(@pl_data.dig('C1X1')||0)
  render_erb(search_template('beppyo14-2.xml.erb'))
end

#別表十四二フォームObject



302
303
304
305
306
# File 'lib/luca/jp/aoiro.rb', line 302

def 別表十四二フォーム
  return nil if readable(@pl_data.dig('C1X')||0) <= 0

  'HOE099'
end

#別表四簡易Object

NOTE: 別表四所得調整に依存



178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
# File 'lib/luca/jp/aoiro.rb', line 178

def 別表四簡易
  @当期純損益 = readable(@pl_data.dig('HA'))

  ### 損金不算入額の計算

  @損金経理をした法人税及び地方法人税 = 法人税損金納付額
  @損金経理をした道府県民税及び市町村民税 = [
    都道府県民税損金納付,
    市民税損金納付,
  ].compact.sum
  @損金経理をした納税充当金 = 当期納税充当金
  @損金不算入額 = [
    @損金不算入額税額未確定,
    @損金経理をした法人税及び地方法人税,
    @損金経理をした道府県民税及び市町村民税,
    @損金経理をした納税充当金,
  ].compact.sum
  @損金不算入額留保 = [
    @減価償却の償却超過額,
    @当期還付事業税,
    @損金経理をした法人税及び地方法人税,
    @損金経理をした道府県民税及び市町村民税,
    @損金経理をした納税充当金,
  ].compact.sum
  @損金不算入額社外流出 = [
    @役員給与の損金不算入額,
    @交際費等の損金不算入額,
    # TODO: 附帯税
  ].compact.sum

  ### 益金不算入額の計算

  @翌期還付事業税 = ['1504', '1854', '1855', '1856', '1857', '1858']
                      .map{ |code| readable(@bs_data[code]) }
                      .compact.sum
  @益金不算入額 = [
    @益金不算入額税額未確定,
    # NOTE: 確定税額は会計上も費用認識しているため相殺
    (@事業税中間納付 * -1),
    @翌期還付事業税
  ].compact.sum
  @益金不算入額留保 = [
    @納付事業税,
    @減価償却超過額の当期認容額,
    @翌期還付事業税
  ].compact.sum
  @益金不算入額社外流出 = [
    # TODO: 欠損金繰戻還付、欠損金当期控除
    @受取配当金の益金不算入額,
    @受贈益の益金不算入額,
  ].compact.sum
  # TODO: 外国法人税の損金不算入調整

  render_erb(search_template('beppyo4.xml.erb'))
end

#概況説明Object



351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
# File 'lib/luca/jp/aoiro.rb', line 351

def 概況説明
  @概況粗利益 = gaikyo('BA')
  @概況役員報酬 = gaikyo('C11')
  @概況給料 = gaikyo('C12')
  @概況交際費 = gaikyo('C1B')
  @概況減価償却 = gaikyo('C1P')
  @概況地代租税 = ['C1E', 'C1I'].map { |k| gaikyo(k) }.compact.sum
  @概況営業損益 = gaikyo('CA')
  @概況特別利益 = gaikyo('F0')
  @概況特別損失 = gaikyo('G0')
  @概況税引前損益 = gaikyo('GA')
  @概況資産計 = gaikyo('5')
  @概況現預金 = gaikyo('10')
  @概況受取手形 = gaikyo('120')
  @概況売掛金 = gaikyo('130')
  @概況棚卸資産 = gaikyo('160')
  @概況貸付金 = ['140', '333'].map { |k| gaikyo(k) }.compact.sum
  @概況建物 = gaikyo('311')
  @概況機械 = gaikyo('313')
  @概況車船 = ['314', '318'].map { |k| gaikyo(k) }.compact.sum
  @概況土地 = gaikyo('316')
  @概況負債計 = gaikyo('8ZZ')
  @概況支払手形 = gaikyo('510')
  @概況買掛金 = gaikyo('511')
  @概況個人借入金 = gaikyo('5121')
  @概況ほか借入金 =  gaikyo('512') - gaikyo('5121')
  @概況純資産 = gaikyo('9ZZ')
  @代表者報酬 = gaikyo('C11')
  @代表者借入 = gaikyo('5121')
  @概況仕入 = ['B11', 'B12'].map { |k| gaikyo(k) }.compact.sum
  @概況外注費 = gaikyo('C1O')
  @概況人件費 = ['C11', 'C12', 'C13'].map { |k| gaikyo(k) }.compact.sum
  render_erb(search_template('gaikyo.xml.erb'))
end

#決算書Object



396
397
398
399
400
401
402
403
404
405
406
# File 'lib/luca/jp/aoiro.rb', line 396

def 決算書
  if @no_xbrl
    STDERR.puts "決算書XBRLをeTaxソフトに追加インポートする必要あり"
    return nil
  end

  @xbrl_filename = %Q(statement-#{@issue_date.to_s})
  @xbrl, @xsd = LucaBook::State.range(@start_date.year, @start_date.month, @end_date.year, @end_date.month)
                    .render_xbrl(@xbrl_filename)
  render_erb(search_template('xbrl21.xml.erb'))
end

#決算書フォームObject



386
387
388
389
390
391
392
393
394
# File 'lib/luca/jp/aoiro.rb', line 386

def 決算書フォーム
  return %Q(<XBRL2_1_SEC/>) if @no_xbrl

  xsd_filename = %Q(#statement-#{@issue_date.to_s}.xsd)
  %Q(<XBRL2_1_SEC><rdf:Seq>
    <rdf:li><rdf:description><Instance><rdf:Bag><rdf:li><rdf:description about="#HOT010-1"/></rdf:li></rdf:Bag></Instance></rdf:description></rdf:li>
    <rdf:li><rdf:description><taxonomy><rdf:Bag><rdf:li><rdf:description about="#{xsd_filename}"/></rdf:li></rdf:Bag></taxonomy></rdf:description></rdf:li>
    </rdf:Seq></XBRL2_1_SEC>)
end

#確定仕訳国税(item, dat) ⇒ Object



140
141
142
143
144
145
146
147
148
149
150
# File 'lib/luca/jp/aoiro.rb', line 140

def 確定仕訳国税(item, dat)
  if dat.dig(:kokuzei, :chukan, :karibarai) > 0
    item['credit'] << { 'label' => '仮払法人税', 'amount' => dat[:kokuzei][:chukan][:karibarai] }
  end
  if dat.dig(:kokuzei, :chukan, :kanpu) > 0
    item['debit'] << { 'label' => '未収法人税', 'amount' => dat[:kokuzei][:chukan][:kanpu] }
  end
  if dat[:kokuzei][:mibarai] > 0
    item['credit'] << { 'label' => '未払法人税', 'amount' => dat[:kokuzei][:mibarai] }
  end
end

#確定仕訳地方税(item, dat) ⇒ Object



152
153
154
155
156
157
158
159
160
161
# File 'lib/luca/jp/aoiro.rb', line 152

def 確定仕訳地方税(item, dat)
  if dat[:chihou][:chukan] > 0
    item['credit'] << { 'label' => '仮払法人税(地方)', 'amount' => dat[:chihou][:chukan] }
  end
  if dat[:chihou][:chukan] > dat[:chihou][:zeigaku]
    item['debit'] << { 'label' => '未収法人税', 'amount' => dat[:chihou][:chukan] - dat[:chihou][:zeigaku] }
  else
    item['credit'] << { 'label' => '未払法人税', 'amount' => dat[:chihou][:zeigaku] - dat[:chihou][:chukan] }
  end
end

#確定仕訳所得税(item, dat) ⇒ Object



127
128
129
130
131
132
133
134
135
136
137
138
# File 'lib/luca/jp/aoiro.rb', line 127

def 確定仕訳所得税(item, dat)
  if dat.dig(:kokuzei, :shotoku, :karibarai) > 0
    item['credit'] << { 'label' => '仮払所得税', 'amount' => dat[:kokuzei][:shotoku][:karibarai] }
  end
  if dat[:kokuzei][:shotoku][:kanpu] > 0
    item['debit'] << { 'label' => '未収法人税', 'amount' => dat[:kokuzei][:shotoku][:kanpu] }
  end
  if dat[:kokuzei][:shotoku][:modori] > 0
    # TODO: 損金経理する所得税の補助科目追加
    item['credit'] << { 'label' => '法人税、住民税及び事業税', 'amount' => dat[:kokuzei][:shotoku][:modori] }
  end
end

#適用額明細Object



339
340
341
342
343
344
345
346
347
348
349
# File 'lib/luca/jp/aoiro.rb', line 339

def 適用額明細
  if 期末資本金 <= 10_000_000
    STDERR.puts "適用額明細: 必要に応じて「少額減価償却資産の損金算入」(67条の5第1項, 00277。別表16[7])の確認が必要"
  end
  if @確定法人税額 == 0
    STDERR.puts "別表一:適用額明細書の有無の確認が必要"
    return nil
  end

  render_erb(search_template('tekiyougaku.xml.erb'))
end

#適用額明細フォームObject



333
334
335
336
337
# File 'lib/luca/jp/aoiro.rb', line 333

def 適用額明細フォーム
  return nil if @確定法人税額 == 0

  'HOE990'
end