luca-jp 0.1.8 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a806b0b50cedaaee6bcf04c226f02fc857a4c7a651a6a06f7a22abd0e4e161cc
4
- data.tar.gz: 9a8188a2595fc6e487b81d073a150995221f9add68768ce2c133267ec084a9b7
3
+ metadata.gz: b52a931f2268427904135b52cac066411eeb52256c0c136b30862a4ea0d4771e
4
+ data.tar.gz: c83a16ff2ae64a8199ce8768da53d0cc2987f2b1ee6955de47a6b5718aa14bbb
5
5
  SHA512:
6
- metadata.gz: 994c9afe22a85581401f8f78853b149bfef194cba11b2c61f24bc43fb26e9dcb6698f79f8919a0aae301e4982d324c9068c4a21b83a756775e92f2d3d61b7326
7
- data.tar.gz: 9e001abecc4c7fd0831b2a82eb112156db3e4b8ea9666f9c42fbaf556c9b527caad948c63f17712d99bb44e2b5bd10b2d34b34a96d327dc637cd445435993dc8
6
+ metadata.gz: 85bad06f6af2920dda348d1a61b4521d16a143937dc710e6ea3dca650a65fd5ca1911beb0dd377c97d17eefab7c5e058490f7129339b7834ff476639b6d0f6e5
7
+ data.tar.gz: '048199e0f592eddc0a987ccb43d7b517955fb783db4484f00ed4d5cfa86e0b2ef1d2c577c7e3acec1e1c0f7ea888b0a42c840131152ba91c618544fb9ce753a6'
data/lib/luca/jp.rb CHANGED
@@ -13,6 +13,7 @@ module Luca
13
13
  autoload :ItPart, 'luca/jp/it_part'
14
14
  autoload :Sonshitsu, 'luca/jp/sonshitsu'
15
15
  autoload :Urikake, 'luca/jp/urikake'
16
+ autoload :Uchiwake, 'luca/jp/uchiwake'
16
17
  autoload :Util, 'luca/jp/util'
17
18
  end
18
19
 
data/lib/luca/jp/aoiro.rb CHANGED
@@ -16,6 +16,7 @@ module Luca
16
16
  include Luca::Jp::Common
17
17
  include Luca::Jp::ItPart
18
18
  include Luca::Jp::Util
19
+ include Luca::Jp::Uchiwake
19
20
 
20
21
  @dirname = 'journals'
21
22
  @record_type = 'raw'
@@ -65,10 +66,20 @@ module Luca
65
66
  @納税充当金期中増, @納税充当金期中減 = 納税充当金期中増減
66
67
  @翌期還付法人税 = 中間還付税額(@確定法人税額 + @確定地方法人税額, @法人税中間納付 + @地方法人税中間納付)
67
68
  @概況売上 = gaikyo('A0')
68
- @form_sec = ['HOA112', 'HOA116', 'HOA201', 'HOA420', 'HOA511', 'HOA522', 別表七フォーム, 'HOE200', 適用額明細フォーム, 'HOI010', 'HOI100', 'HOI141', 'HOK010'].compact.map{ |c| form_rdf(c) }.join('')
69
- #@extra_form_sec = ['HOI040', 'HOI060', 'HOI090', 'HOI110']
69
+ @form_sec = [
70
+ 'HOA112', 'HOA116', 'HOA201', 'HOA420', 'HOA511', 'HOA522', 別表七フォーム,
71
+ 'HOE200', 適用額明細フォーム,
72
+ 'HOI010', 有価証券内訳フォーム, 買掛金内訳フォーム, 'HOI100', 借入金内訳フォーム, 'HOI141', 地代家賃内訳フォーム,
73
+ 'HOK010'
74
+ ].compact.map{ |c| form_rdf(c) }.join('')
75
+ #@extra_form_sec = ['HOI040']
70
76
  @it = it_part
71
- @form_data = [別表一, 別表一次葉, 別表二, 別表四簡易, 別表五一, 別表五二, 別表七, 別表十五, 適用額明細, 預貯金内訳, 仮受金内訳, 役員報酬内訳, 概況説明].compact.join("\n")
77
+ @form_data = [
78
+ 別表一, 別表一次葉, 別表二, 別表四簡易, 別表五一, 別表五二, 別表七, 別表十五,
79
+ 適用額明細,
80
+ 預貯金内訳, 有価証券内訳, 買掛金内訳, 仮受金内訳, 借入金内訳, 役員報酬内訳, 地代家賃内訳,
81
+ 概況説明
82
+ ].compact.join("\n")
72
83
  render_erb(search_template('aoiro.xtx.erb'))
73
84
  end
74
85
  end
@@ -168,28 +179,6 @@ module Luca
168
179
  render_erb(search_template('beppyo15.xml.erb'))
169
180
  end
170
181
 
171
- def 預貯金内訳
172
- @預金 = @bs_data.each.with_object({}) do |(k, v), h|
173
- next unless /^110[0-9A-Z]/.match(k)
174
- next unless readable(v || 0) > 0
175
-
176
- h[@@dict.dig(k)[:label]] = readable(v)
177
- end
178
- render_erb(search_template('yokin-meisai.xml.erb'))
179
- end
180
-
181
- def 仮受金内訳
182
- @源泉給与 = readable(@bs_data.dig('5191') || 0)
183
- @源泉報酬 = readable(@bs_data.dig('5193') || 0)
184
- render_erb(search_template('kariuke-meisai.xml.erb'))
185
- end
186
-
187
- def 役員報酬内訳
188
- @役員報酬 = readable(@pl_data.dig('C11') || 0)
189
- @給料 = readable(@pl_data.dig('C12') || 0)
190
- render_erb(search_template('yakuin-meisai.xml.erb'))
191
- end
192
-
193
182
  def 適用額明細フォーム
194
183
  return nil if @確定法人税額 == 0
195
184
 
@@ -237,6 +226,10 @@ module Luca
237
226
  render_erb(search_template('gaikyo.xml.erb'))
238
227
  end
239
228
 
229
+ def self.dict
230
+ @@dict
231
+ end
232
+
240
233
  private
241
234
 
242
235
  def 期首未納事業税
@@ -252,7 +245,29 @@ module Luca
252
245
  end
253
246
 
254
247
  def 租税公課
255
- readable(LucaBook::State.gross(@start_date.year, @start_date.month, @end_date.year, @end_date.month, code: 'C1I')[:debit]['C1I']) || 0
248
+ readable(debit_amount('C1I', @start_date.year, @start_date.month, @end_date.year, @end_date.month))
249
+ end
250
+
251
+ def 別表一同族区分
252
+ case 同族会社?
253
+ when nil
254
+ nil
255
+ when true
256
+ '<kubun_CD>1</kubun_CD>'
257
+ else
258
+ '<kubun_CD>3</kubun_CD>'
259
+ end
260
+ end
261
+
262
+ def 別表二同族区分
263
+ case 同族会社?
264
+ when nil
265
+ nil
266
+ when true
267
+ '<kubun_CD>2</kubun_CD>'
268
+ else
269
+ '<kubun_CD>3</kubun_CD>'
270
+ end
256
271
  end
257
272
 
258
273
  def 別表二株主リスト
@@ -267,8 +282,8 @@ module Luca
267
282
  <VAE00210>
268
283
  #{render_attr('VAE00220', owner['address'])}
269
284
  #{render_attr('VAE00230', owner['name'])}
270
- #{render_attr('VAE00235', owner['relation'] || 'その他')}
271
285
  </VAE00210>
286
+ #{render_attr('VAE00235', owner['relation'] || '<kubun_CD>90</kubun_CD>')}
272
287
  <VAE00250>
273
288
  <VAE00290>
274
289
  #{render_attr('VAE00300', owner['shares'])}
@@ -292,7 +307,7 @@ module Luca
292
307
  return nil if beppyo2_config('total_shares').nil?
293
308
  return nil if beppyo2_config('owners').nil?
294
309
 
295
- (別表二上位株数 * 100.0 / beppyo2_config('total_shares')).round(1).to_s
310
+ (別表二上位株数 * 100.0 / beppyo2_config('total_shares')).round(1)
296
311
  end
297
312
 
298
313
  def 別表二上位議決権数
@@ -305,7 +320,18 @@ module Luca
305
320
  return nil if beppyo2_config('total_votes').nil?
306
321
  return nil if beppyo2_config('owners').nil?
307
322
 
308
- (別表二上位議決権数 * 100.0 / beppyo2_config('total_votes')).round(1).to_s
323
+ (別表二上位議決権数 * 100.0 / beppyo2_config('total_votes')).round(1)
324
+ end
325
+
326
+ # TODO: 特定同族会社の判定
327
+ #
328
+ def 同族会社?
329
+ return nil if it_part_config('shihon_kin').nil?
330
+ return nil if it_part_config('shihon_kin') > 100_000_000
331
+ return nil if 別表二上位議決権割合.nil? || 別表二上位株割合.nil?
332
+
333
+ return true if 別表二上位議決権割合 > 50 || 別表二上位株割合 > 50
334
+ false
309
335
  end
310
336
 
311
337
  def 別表四還付法人税等金額
@@ -325,9 +351,9 @@ module Luca
325
351
 
326
352
  %Q(<ICB00140>
327
353
  #{render_attr('ICB00150', '仮払税金')}
328
- #{render_attr('ICB00160', 未収仮払税金 * -1)}
354
+ #{render_attr('ICB00160', readable(未収仮払税金) * -1)}
329
355
  <ICB00170>
330
- #{render_attr('ICB00190', 還付税金 * -1)}
356
+ #{render_attr('ICB00190', readable(還付税金) * -1)}
331
357
  #{render_attr('ICB00200', @仮払税金 * -1)}
332
358
  </ICB00170>
333
359
  #{render_attr('ICB00210', @仮払税金 * -1)}
@@ -485,7 +511,7 @@ module Luca
485
511
  end
486
512
 
487
513
  def 別表五一期中減差引金額
488
- 期首繰越損益 + @納税充当金期中減 - @法人税期中減 - @都道府県民税期中減 - @市民税期中減 - @翌期還付法人税 - @翌期還付都道府県住民税 - @翌期還付市民税
514
+ 期首繰越損益 + @納税充当金期中減 - @法人税期中減 - @都道府県民税期中減 - @市民税期中減 - @法人税中間納付 - @地方法人税中間納付 - @都道府県民税中間納付 - @市民税中間納付
489
515
  end
490
516
 
491
517
  def 別表五一期中増差引金額
@@ -549,6 +575,19 @@ module Luca
549
575
  [readable(increase), readable(r)]
550
576
  end
551
577
 
578
+ def 概況源泉徴収種類
579
+ tags = []
580
+ if credit_count('5191', @start_date.year, @start_date.month, @end_date.year, @end_date.month)
581
+ tags << render_attr('IAF03100', '<kubun_CD>1</kubun_CD>')
582
+ end
583
+ if credit_count('5193', @start_date.year, @start_date.month, @end_date.year, @end_date.month)
584
+ tags << render_attr('IAF03200', '<kubun_CD>1</kubun_CD>')
585
+ elsif credit_count('5194', @start_date.year, @start_date.month, @end_date.year, @end_date.month)
586
+ tags << render_attr('IAF03200', '<kubun_CD>1</kubun_CD>')
587
+ end
588
+ tags.compact.join("\n")
589
+ end
590
+
552
591
  def 概況月(idx)
553
592
  @start_date.next_month(idx).month
554
593
  end
@@ -571,13 +610,17 @@ module Luca
571
610
 
572
611
  def 概況月源泉徴収(idx)
573
612
  target = @start_date.next_month(idx)
574
- readable(LucaBook::State.gross(target.year, target.month, code: '5191')[:credit]['5191'] || 0)
575
- + readable(LucaBook::State.gross(target.year, target.month, code: '5193')[:credit]['5193'] || 0)
613
+ [
614
+ readable(credit_amount('5191', target.year, target.month, target.year, target.month)),
615
+ readable(credit_amount('5193', target.year, target.month, target.year, target.month))
616
+ ].sum
576
617
  end
577
618
 
578
619
  def 概況源泉徴収
579
- readable(LucaBook::State.gross(@start_date.year, @start_date.month, @end_date.year, @end_date.month, code: '5191')[:credit]['5191'] || 0)
580
- + readable(LucaBook::State.gross(@start_date.year, @start_date.month, @end_date.year, @end_date.month, code: '5193')[:credit]['5193'] || 0)
620
+ [
621
+ readable(credit_amount('5191', @start_date.year, @start_date.month, @end_date.year, @end_date.month)),
622
+ readable(credit_amount('5193', @start_date.year, @start_date.month, @end_date.year, @end_date.month))
623
+ ].sum
581
624
  end
582
625
 
583
626
  def gaikyo(code)
@@ -30,7 +30,6 @@ module Luca
30
30
 
31
31
  @税額 = 税額計算
32
32
  @均等割 = @税額.dig(:kenmin, :kintou)
33
- @法人税割課税標準 = 法人税割課税標準
34
33
  @確定法人税割 = (@税額.dig(:kenmin, :houjinzei) / 100).floor * 100
35
34
  @地方特別法人事業税中間納付 = prepaid_tax('1854')
36
35
  @所得割中間納付 = prepaid_tax('1855')
@@ -123,7 +123,7 @@ module Luca
123
123
  課税標準 = if 法人税
124
124
  (法人税 / 1000).floor * 1000
125
125
  else
126
- @法人税割課税標準
126
+ 法人税割課税標準
127
127
  end
128
128
  if config.dig('jp', 'eltax', 'office_23ku')
129
129
  [(課税標準 * 7 / 100).floor, 0]
@@ -208,8 +208,8 @@ module Luca
208
208
  end
209
209
 
210
210
  def 未納事業税期中増減
211
- r = LucaBook::State.gross(@start_date.year, @start_date.month, @end_date.year, @end_date.month, code: '5152')
212
- [LucaSupport::Code.readable(r[:credit]['5152'] || 0), LucaSupport::Code.readable(r[:debit]['5152'] || 0)]
211
+ r = gross_amount('5152', @start_date.year, @start_date.month, @end_date.year, @end_date.month)
212
+ [LucaSupport::Code.readable(r[1]), LucaSupport::Code.readable(r[0])]
213
213
  end
214
214
 
215
215
 
@@ -12,6 +12,7 @@ module Luca
12
12
  module Jp
13
13
  class Syouhizei < LucaBook::State
14
14
  include LucaSupport::View
15
+ include Luca::Jp::Common
15
16
  include Luca::Jp::ItPart
16
17
  include Luca::Jp::Util
17
18
 
@@ -14,8 +14,10 @@
14
14
  <BGA00110 IDREF="DAIHYO_NM"/>
15
15
  </BGA00090>
16
16
  <BGA00120 IDREF="DAIHYO_ADR"/>
17
+ <BGA00130><kubun_CD>1</kubun_CD></BGA00130>
17
18
  <BGA00140 IDREF="JIGYO_NAIYO"/>
18
19
  <BGA00150 IDREF="SHIHON_KIN"/>
20
+ <%= render_attr('BGA00170', 別表一同族区分) %>
19
21
  <BGA00210>
20
22
  <BGA00220><kubun_CD>1</kubun_CD></BGA00220>
21
23
  <BGA00230><kubun_CD>1</kubun_CD></BGA00230>
@@ -16,6 +16,7 @@
16
16
  <%= render_attr('VAB00070', 別表二上位議決権数) %>
17
17
  <%= render_attr('VAB00080', 別表二上位議決権割合) %>
18
18
  </VAB00000>
19
+ <%= render_attr('VAD00000', 別表二同族区分) %>
19
20
  <VAE00000>
20
21
  <VAE00010>
21
22
  <VAE00020>
@@ -31,7 +31,7 @@
31
31
  <ICB00530>
32
32
  <%= render_attr('ICB00540', 期首未納法人税) %>
33
33
  <ICB00550>
34
- <%= render_attr('ICB00560', @法人税期中減 + @翌期還付法人税) %>
34
+ <%= render_attr('ICB00560', @法人税期中減 + @法人税中間納付 + @地方法人税中間納付) %>
35
35
  <ICB00570>
36
36
  <%= render_attr('ICB00580', @法人税中間納付 + @地方法人税中間納付) %>
37
37
  <%= render_attr('ICB00590', 期末未納法人税) %>
@@ -42,7 +42,7 @@
42
42
  <ICB00620>
43
43
  <%= render_attr('ICB00630', 期首未納都道府県民税) %>
44
44
  <ICB00640>
45
- <%= render_attr('ICB00650', @都道府県民税期中減 + @翌期還付都道府県住民税) %>
45
+ <%= render_attr('ICB00650', @都道府県民税期中減 + @都道府県民税中間納付) %>
46
46
  <ICB00660>
47
47
  <%= render_attr('ICB00670', @都道府県民税中間納付) %>
48
48
  <%= render_attr('ICB00680', 期末未納都道府県民税) %>
@@ -53,7 +53,7 @@
53
53
  <ICB00710>
54
54
  <%= render_attr('ICB00720', 期首未納市民税) %>
55
55
  <ICB00730>
56
- <%= render_attr('ICB00740', @市民税期中減 + @翌期還付市民税) %>
56
+ <%= render_attr('ICB00740', @市民税期中減 + @市民税中間納付) %>
57
57
  <ICB00750>
58
58
  <%= render_attr('ICB00760', @市民税中間納付) %>
59
59
  <%= render_attr('ICB00770', 期末未納市民税) %>
@@ -0,0 +1,15 @@
1
+ <HOI150 page="1" VR="3.0" id="HOI150" sakuseiNM="<%= @company %>" softNM="<%= @software %> <%= @company %>" sakuseiDay="<%= @issue_date %>">
2
+ <HOB00000>
3
+ <% @地代家賃.values.each do |rent| %>
4
+ <HOB10000>
5
+ <%= render_attr('HOB11000', rent[:rent_type]) %>
6
+ <%= render_attr('HOB12000', rent[:rent_purpose]) %>
7
+ <%= render_attr('HOB13000', rent[:rent_address]) %>
8
+ <%= render_attr('HOB14000', rent[:name]) %>
9
+ <%= render_attr('HOB15000', rent[:address]) %>
10
+ <%= render_attr('HOB17000', rent[:amount]) %>
11
+ <%= render_attr('HOB18000', rent[:note]) %>
12
+ </HOB10000>
13
+ <% end %>
14
+ </HOB00000>
15
+ </HOI150>
@@ -61,7 +61,7 @@
61
61
  <AAA_RPT_KBN idref="RPT_NAME">確定</AAA_RPT_KBN>
62
62
  <AAA01200 />
63
63
  <AAB00100 />
64
- <AAB00110><%= 法人税割課税標準 %></AAB00110>
64
+ <AAB00110><%= @税額.dig(:houjin, :kokuzei) %></AAB00110>
65
65
  <AAB00200 />
66
66
  <AAB00400 />
67
67
  <AAB00500 />
@@ -85,7 +85,7 @@
85
85
  <AAB02100><%= 納付税額(@確定法人税割, @法人税割中間納付) + 納付税額(@均等割, @均等割中間納付) %></AAB02100>
86
86
  <AAB02200 />
87
87
  <AAB02300><%= 納付税額(@確定法人税割, @法人税割中間納付) + 納付税額(@均等割, @均等割中間納付) %></AAB02300>
88
- <AAC00100><%= @法人税割課税標準 %></AAC00100>
88
+ <AAC00100><%= 法人税割課税標準 %></AAC00100>
89
89
  <AAC00200>7.0</AAC00200>
90
90
  <AAC00210><%= 法人税割[0] %></AAC00210>
91
91
  <AAC00300 />
@@ -10,9 +10,46 @@
10
10
  <IAA02200 IDREF="JIGYO_NENDO_TO"/>
11
11
  </IAA02000>
12
12
  <IAA02300 IDREF="NOZEISHA_BANGO"/>
13
+ <IAA02400><kubun_CD><%= gaikyo_config('homepage') ? 1 : 2 %></kubun_CD></IAA02400>
14
+ <%= render_attr('IAA02500', gaikyo_config('homepage')) %>
13
15
  </IAA00000>
14
16
  <%= render_attr('IAS00000', it_part_config('jigyo_naiyo')) %>
17
+ <IAC00000>
18
+ <IAC01000>
19
+ <%= render_attr('IAC01100', gaikyo_config('shiten_kokunai')) %>
20
+ <%= render_attr('IAC01300', gaikyo_config('shiten_kaigai')) %>
21
+ </IAC01000>
22
+ <IAC02000>
23
+ <%= render_attr('IAC02050', gaikyo_config('kogaisha_kokunai')) %>
24
+ <%= render_attr('IAC02100', gaikyo_config('kogaisha_kaigai')) %>
25
+ </IAC02000>
26
+ </IAC00000>
27
+ <IAD00000>
28
+ <IAD01000>
29
+ <%= render_attr('IAD01100', gaikyo_config('yakuin')) %>
30
+ </IAD01000>
31
+ </IAD00000>
32
+ <IAE00000>
33
+ <%= render_attr('IAE01000', gaikyo_config('software_kaikei') ? '<kubun_CD>1</kubun_CD>' : nil) %>
34
+ <IAE03000>
35
+ <%= render_attr('IAE03600', gaikyo_config('software_kaikei') ? '<kubun_CD>1</kubun_CD>' : nil) %>
36
+ </IAE03000>
37
+ <%= render_attr('IAE04300', gaikyo_config('software_kaikei') ? '<kubun_CD>1</kubun_CD>' : nil) %>
38
+ <%= render_attr('IAE04500', gaikyo_config('software_kaikei')) %>
39
+ <%= render_attr('IAE04600', gaikyo_config('software_mail')) %>
40
+ </IAE00000>
15
41
  <IAF00000>
42
+ <IAF01000>
43
+ <IAF01100>
44
+ <%= render_attr('IAF01110', gaikyo_config('genkin_kanrisha')) %>
45
+ </IAF01100>
46
+ <IAF01200>
47
+ <%= render_attr('IAF01210', gaikyo_config('tsucho_kanrisha')) %>
48
+ </IAF01200>
49
+ </IAF01000>
50
+ <IAF03000>
51
+ <%= 概況源泉徴収種類 %>
52
+ </IAF03000>
16
53
  <IAF04000>
17
54
  <%= render_attr('IAF04200', 消費税課税売上高) %>
18
55
  </IAF04000>
@@ -59,6 +96,33 @@
59
96
  </IAI03000>
60
97
  </HOK010-1>
61
98
  <HOK010-2>
99
+ <IAJ00000>
100
+ <IAJ03000>
101
+ <%= render_attr('IAJ03100', gaikyo_config('genkin_share')) %>
102
+ <%= render_attr('IAJ03200', gaikyo_config('kake_share')) %>
103
+ </IAJ03000>
104
+ </IAJ00000>
105
+ <IAL00000>
106
+ <IAL01000>
107
+ <%= render_attr('IAL01100', gaikyo_config('shimekiri_uriage')||gaikyo_config('shimekiri')) %>
108
+ <%= render_attr('IAL01200', gaikyo_config('kessai_uriage')||gaikyo_config('kessai')) %>
109
+ </IAL01000>
110
+ <IAL02000>
111
+ <%= render_attr('IAL02100', gaikyo_config('shimekiri_shiire')||gaikyo_config('shimekiri')) %>
112
+ <%= render_attr('IAL02200', gaikyo_config('kessai_shiire')||gaikyo_config('kessai')) %>
113
+ </IAL02000>
114
+ <IAL03000>
115
+ <%= render_attr('IAL03100', gaikyo_config('shimekiri_gaichu')||gaikyo_config('shimekiri')) %>
116
+ <%= render_attr('IAL03200', gaikyo_config('kessai_gaichu')||gaikyo_config('kessai')) %>
117
+ </IAL03000>
118
+ <IAL04000>
119
+ <%= render_attr('IAL04100', gaikyo_config('shimekiri_kyuryou')||gaikyo_config('shimekiri')) %>
120
+ <%= render_attr('IAL04200', gaikyo_config('kessai_kyuryou')||gaikyo_config('kessai')) %>
121
+ </IAL04000>
122
+ </IAL00000>
123
+ <IAM00000>
124
+ <%= render_attr('IAM01000', '総勘定元帳') %>
125
+ </IAM00000>
62
126
  <IAP00000>
63
127
  <% 12.times do |i| %>
64
128
  <IAP20000>
@@ -0,0 +1,16 @@
1
+ <HOI090 page="1" VR="4.0" id="HOI090" sakuseiNM="<%= @company %>" softNM="<%= @software %> <%= @company %>" sakuseiDay="<%= @issue_date %>">
2
+ <% @買掛金.values.each do |payable| %>
3
+ <HIB00000>
4
+ <%= render_attr('HIB00100', payable[:payable_type]) %>
5
+ <HIB00200>
6
+ <%= render_attr('HIB00210', payable[:name]) %>
7
+ <%= render_attr('HIB00220', payable[:address]) %>
8
+ </HIB00200>
9
+ <%= render_attr('HIB00300', payable[:amount]) %>
10
+ <%= render_attr('HIB00400', payable[:note]) %>
11
+ </HIB00000>
12
+ <% end %>
13
+ <HIC00000>
14
+ <%= render_attr('HIC00100', 買掛金等合計) %>
15
+ </HIC00000>
16
+ </HOI090>
@@ -0,0 +1,13 @@
1
+ <HOI110 page="1" VR="3.0" id="HOI110" sakuseiNM="<%= @company %>" softNM="<%= @software %> <%= @company %>" sakuseiDay="<%= @issue_date %>">
2
+ <% @借入金.values.each do |debt| %>
3
+ <HKB00000>
4
+ <%= render_attr('HKB00100', debt[:name]) %>
5
+ <%= render_attr('HKB00300', debt[:address]) %>
6
+ <%= render_attr('HKB00400', debt[:amount]) %>
7
+ <%= render_attr('HKB00800', debt[:note]) %>
8
+ </HKB00000>
9
+ <% end %>
10
+ <HKC00000>
11
+ <%= render_attr('HKC00100', 借入金合計) %>
12
+ </HKC00000>
13
+ </HOI110>
@@ -0,0 +1,21 @@
1
+ <HOI060 page="1" VR="4.0" id="HOI060" sakuseiNM="<%= @company %>" softNM="<%= @software %> <%= @company %>" sakuseiDay="<%= @issue_date %>">
2
+ <% @有価証券.values.each do |scurity| %>
3
+ <HFB00000>
4
+ <HFB00110>
5
+ <%= render_attr('HFB00120', scurity[:security_purpose]) %>
6
+ <%= render_attr('HFB00130', scurity[:security_genre]) %>
7
+ <%= render_attr('HFB00140', scurity[:name]) %>
8
+ </HFB00110>
9
+ <HFB00200>
10
+ <%= render_attr('HFB00210', scurity[:security_units]) %>
11
+ <HFB00215>
12
+ <%= render_attr('HFB00230', scurity[:amount]) %>
13
+ </HFB00215>
14
+ </HFB00200>
15
+ <%= render_attr('HFB00400', scurity[:note]) %>
16
+ </HFB00000>
17
+ <% end %>
18
+ <HFC00000>
19
+ <%= render_attr('HFC00100', 有価証券合計) %>
20
+ </HFC00000>
21
+ </HOI060>
@@ -89,7 +89,7 @@
89
89
  </ABS00000>
90
90
  <ABV00000>
91
91
  <%= render_attr('ABV00010', @税額) %>
92
- <%= render_attr('ABV00040', @譲渡割額) %>
92
+ <%= render_attr('ABV00040', @税額) %>
93
93
  </ABV00000>
94
94
  </SHA020-2>
95
95
  </SHA020>
@@ -1,13 +1,16 @@
1
1
  <HOI010 page="1" VR="4.0" id="HOI010" sakuseiNM="<%= @company %>" softNM="<%= @software %> <%= @company %>" sakuseiDay="<%= @issue_date %>">
2
- <% @預金.each do |k, v| %>
2
+ <% @預金.values.each do |bank| %>
3
3
  <HAB00000>
4
4
  <HAB00100>
5
- <%= render_attr('HAB00110', k) %>
5
+ <%= render_attr('HAB00110', bank[:name]) %>
6
+ <%= render_attr('HAB00120', bank[:branch]) %>
6
7
  </HAB00100>
7
- <%= render_attr('HAB00400', v) %>
8
+ <%= render_attr('HAB00200', bank[:account_type]) %>
9
+ <%= render_attr('HAB00300', bank[:account_no]) %>
10
+ <%= render_attr('HAB00400', bank[:amount]) %>
8
11
  </HAB00000>
9
12
  <% end %>
10
13
  <HAC00000>
11
- <%= render_attr('HAC00100', @預金.values.sum) %>
14
+ <%= render_attr('HAC00100', @預金.values.map { |b| b[:amount] }.sum) %>
12
15
  </HAC00000>
13
16
  </HOI010>
@@ -0,0 +1,195 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Luca #:nodoc:
4
+ module Jp #:nodoc:
5
+ # 勘定科目内訳明細書のレンダリング
6
+ #
7
+ module Uchiwake
8
+ def 預貯金内訳
9
+ @預金 = @bs_data.each.with_object({}) do |(k, v), h|
10
+ next unless /^110[0-9A-Z]/.match(k)
11
+ next unless readable(v || 0) > 0
12
+
13
+ h[k] = {
14
+ name: self.class.dict.dig(k)[:label],
15
+ amount: readable(v)
16
+ }
17
+ metadata = uchiwake_account_config(k).first
18
+ if metadata && metadata['name']
19
+ h[k][:name] = metadata['name']
20
+ h[k][:branch] = metadata['branch']
21
+ h[k][:account_type] = metadata['account_type'] || '普通預金'
22
+ h[k][:account_no] = metadata['account_no']
23
+ h[k][:note] = metadata['note']
24
+ end
25
+ end
26
+ render_erb(search_template('yokin-meisai.xml.erb'))
27
+ end
28
+
29
+ def 有価証券内訳フォーム
30
+ accounts = uchiwake_account_config('331')
31
+ accounts.concat uchiwake_account_config('332')
32
+ return nil if accounts.length == 0
33
+
34
+ 'HOI060'
35
+ end
36
+
37
+ def 有価証券内訳
38
+ account_codes = uchiwake_account_config('331').map { |account| account['code'].to_s }
39
+ account_codes.concat uchiwake_account_config('332').map { |account| account['code'].to_s }
40
+ return nil if account_codes.length == 0
41
+
42
+ @有価証券 = @bs_data.each.with_object({}) do |(k, v), h|
43
+ next unless account_codes.include?(k.to_s)
44
+ next unless readable(v || 0) > 0
45
+
46
+ h[k] = {
47
+ name: self.class.dict.dig(k)[:label],
48
+ amount: readable(v)
49
+ }
50
+ metadata = uchiwake_account_config(k).first
51
+ if metadata && metadata['name']
52
+ h[k][:name] = metadata['name'][0..9] if metadata['name']
53
+ h[k][:security_purpose] = metadata['security_purpose']
54
+ h[k][:security_genre] = metadata['security_genre']
55
+ h[k][:security_units] = metadata['security_units']
56
+ h[k][:note] = metadata['note']
57
+ end
58
+ h[k][:security_purpose] ||= 'その他' if /^332/.match(k.to_s)
59
+ h[k][:security_genre] ||= '株式' if /^33[12]/.match(k.to_s)
60
+ h[k][:note] ||= '関係会社株式' if /^332/.match(k.to_s)
61
+ end
62
+
63
+ render_erb(search_template('shoken-meisai.xml.erb'))
64
+ end
65
+
66
+ def 有価証券合計
67
+ @bs_data.filter { |k, _v| ['331', '332'].include?(k.to_s) }
68
+ .map { |_k, v| readable(v) || 0 }
69
+ .sum
70
+ end
71
+
72
+ def 買掛金内訳フォーム
73
+ accounts = uchiwake_account_config('511')
74
+ accounts.concat uchiwake_account_config('514')
75
+ accounts.concat uchiwake_account_config('517')
76
+ return nil if accounts.length == 0
77
+
78
+ 'HOI090'
79
+ end
80
+
81
+ def 買掛金内訳
82
+ account_codes = uchiwake_account_config('511').map { |account| account['code'].to_s }
83
+ account_codes.concat uchiwake_account_config('514').map { |account| account['code'].to_s }
84
+ account_codes.concat uchiwake_account_config('517').map { |account| account['code'].to_s }
85
+ return nil if account_codes.length == 0
86
+
87
+ @買掛金 = @bs_data.each.with_object({}) do |(k, v), h|
88
+ next unless account_codes.include?(k.to_s)
89
+ next unless readable(v || 0) > 0
90
+
91
+ h[k] = {
92
+ name: self.class.dict.dig(k)[:label],
93
+ amount: readable(v)
94
+ }
95
+ metadata = uchiwake_account_config(k).first
96
+ if metadata && metadata['name']
97
+ h[k][:name] = metadata['name']
98
+ h[k][:payable_type] = self.class.dict.dig(k[0..2], :label)
99
+ h[k][:address] = metadata['address']
100
+ h[k][:note] = metadata['note']
101
+ end
102
+ end
103
+
104
+ render_erb(search_template('kaikake-meisai.xml.erb'))
105
+ end
106
+
107
+ def 買掛金等合計
108
+ @bs_data.filter { |k, _v| ['511', '514', '517'].include?(k.to_s) }
109
+ .map { |_k, v| readable(v) || 0 }
110
+ .sum
111
+ end
112
+
113
+ def 仮受金内訳
114
+ @源泉給与 = readable(@bs_data.dig('5191') || 0)
115
+ @源泉報酬 = readable(@bs_data.dig('5193') || 0)
116
+ render_erb(search_template('kariuke-meisai.xml.erb'))
117
+ end
118
+
119
+ def 借入金内訳フォーム
120
+ accounts = uchiwake_account_config('512')
121
+ accounts.concat uchiwake_account_config('712')
122
+ return nil if accounts.length == 0
123
+
124
+ 'HOI110'
125
+ end
126
+
127
+ def 借入金内訳
128
+ account_codes = uchiwake_account_config('512').map { |account| account['code'].to_s }
129
+ account_codes.concat uchiwake_account_config('712').map { |account| account['code'].to_s }
130
+ return nil if account_codes.length == 0
131
+
132
+ @借入金 = @bs_data.each.with_object({}) do |(k, v), h|
133
+ next unless account_codes.include?(k.to_s)
134
+ next unless readable(v || 0) > 0
135
+
136
+ h[k] = {
137
+ name: self.class.dict.dig(k)[:label],
138
+ amount: readable(v)
139
+ }
140
+ metadata = uchiwake_account_config(k).first
141
+ if metadata && metadata['name']
142
+ h[k][:name] = metadata['name']
143
+ h[k][:address] = metadata['address']
144
+ h[k][:note] = metadata['note']
145
+ end
146
+ end
147
+
148
+ render_erb(search_template('kariire-meisai.xml.erb'))
149
+ end
150
+
151
+ def 借入金合計
152
+ @bs_data.filter { |k, _v| ['512', '712'].include?(k.to_s) }
153
+ .map { |_k, v| readable(v) || 0 }
154
+ .sum
155
+ end
156
+
157
+ def 地代家賃内訳フォーム
158
+ return nil if uchiwake_account_config('C1E').length == 0
159
+
160
+ 'HOI150'
161
+ end
162
+
163
+ def 地代家賃内訳
164
+ account_codes = uchiwake_account_config('C1E').map { |account| account['code'].to_s }
165
+ return nil if account_codes.length == 0
166
+
167
+ @地代家賃 = @bs_data.each.with_object({}) do |(k, v), h|
168
+ next unless account_codes.include?(k)
169
+ next unless readable(v || 0) > 0
170
+
171
+ h[k] = {
172
+ name: self.class.dict.dig(k)[:label],
173
+ amount: readable(v)
174
+ }
175
+ metadata = uchiwake_account_config(k).first
176
+ if metadata && metadata['name']
177
+ h[k][:name] = metadata['name']
178
+ h[k][:address] = metadata['address']
179
+ h[k][:rent_type] = metadata['rent_type'] || '家賃'
180
+ h[k][:rent_purpose] = metadata['rent_purpose']
181
+ h[k][:rent_address] = metadata['rent_address']
182
+ h[k][:note] = metadata['note']
183
+ end
184
+ end
185
+ render_erb(search_template('chidai-meisai.xml.erb'))
186
+ end
187
+
188
+ def 役員報酬内訳
189
+ @役員報酬 = readable(@pl_data.dig('C11') || 0)
190
+ @給料 = readable(@pl_data.dig('C12') || 0)
191
+ render_erb(search_template('yakuin-meisai.xml.erb'))
192
+ end
193
+ end
194
+ end
195
+ end
data/lib/luca/jp/util.rb CHANGED
@@ -75,6 +75,17 @@ module Luca
75
75
  config.dig('jp', 'beppyo2', key)
76
76
  end
77
77
 
78
+ def gaikyo_config(key)
79
+ config.dig('jp', 'gaikyo', key)
80
+ end
81
+
82
+ def uchiwake_account_config(key)
83
+ account_list = config.dig('jp', 'accounts')
84
+ return [] if account_list.nil?
85
+
86
+ Array(account_list).filter { |account| /^#{key}/.match(account['code'].to_s) }
87
+ end
88
+
78
89
  def eltax_config(key)
79
90
  config.dig('jp', 'eltax', key)
80
91
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Luca
4
4
  module Jp
5
- VERSION = '0.1.8'
5
+ VERSION = '0.2.4'
6
6
  end
7
7
  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.1.8
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chuma Takahiro
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-03-27 00:00:00.000000000 Z
11
+ date: 2021-04-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lucabook
@@ -96,6 +96,7 @@ files:
96
96
  - lib/luca/jp/templates/beppyo51.xml.erb
97
97
  - lib/luca/jp/templates/beppyo52.xml.erb
98
98
  - lib/luca/jp/templates/beppyo7.xml.erb
99
+ - lib/luca/jp/templates/chidai-meisai.xml.erb
99
100
  - lib/luca/jp/templates/consumption.xtx.erb
100
101
  - lib/luca/jp/templates/el-no6-43.xml.erb
101
102
  - lib/luca/jp/templates/el-no6-9.xml.erb
@@ -105,11 +106,15 @@ files:
105
106
  - lib/luca/jp/templates/fuhyo43.xml.erb
106
107
  - lib/luca/jp/templates/fuhyo53.xml.erb
107
108
  - lib/luca/jp/templates/gaikyo.xml.erb
109
+ - lib/luca/jp/templates/kaikake-meisai.xml.erb
110
+ - lib/luca/jp/templates/kariire-meisai.xml.erb
108
111
  - lib/luca/jp/templates/kariuke-meisai.xml.erb
112
+ - lib/luca/jp/templates/shoken-meisai.xml.erb
109
113
  - lib/luca/jp/templates/syouhizei-shinkoku-kanni.xml.erb
110
114
  - lib/luca/jp/templates/tekiyougaku.xml.erb
111
115
  - lib/luca/jp/templates/yakuin-meisai.xml.erb
112
116
  - lib/luca/jp/templates/yokin-meisai.xml.erb
117
+ - lib/luca/jp/uchiwake.rb
113
118
  - lib/luca/jp/urikake.rb
114
119
  - lib/luca/jp/util.rb
115
120
  - lib/luca/jp/version.rb