luca-jp 0.1.0 → 0.1.5

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.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/exe/luca-jp +57 -0
  3. data/lib/luca/jp.rb +13 -0
  4. data/lib/luca/jp/aoiro.rb +470 -0
  5. data/lib/luca/jp/chihouzei.rb +197 -0
  6. data/lib/luca/jp/common.rb +216 -0
  7. data/lib/luca/jp/it_part.rb +99 -0
  8. data/lib/luca/jp/sonshitsu.rb +102 -0
  9. data/lib/luca/jp/syouhizei.rb +120 -12
  10. data/lib/luca/jp/templates/aoiro.xtx.erb +21 -0
  11. data/lib/luca/jp/templates/beppyo1-next.xml.erb +31 -0
  12. data/lib/luca/jp/templates/beppyo1.xml.erb +71 -0
  13. data/lib/luca/jp/templates/beppyo15.xml.erb +30 -0
  14. data/lib/luca/jp/templates/beppyo2.xml.erb +9 -0
  15. data/lib/luca/jp/templates/beppyo4.xml.erb +84 -0
  16. data/lib/luca/jp/templates/beppyo51.xml.erb +85 -0
  17. data/lib/luca/jp/templates/beppyo52.xml.erb +241 -0
  18. data/lib/luca/jp/templates/beppyo7.xml.erb +31 -0
  19. data/lib/luca/jp/templates/consumption.xtx.erb +21 -0
  20. data/lib/luca/jp/templates/el-no6-43.xml.erb +178 -0
  21. data/lib/luca/jp/templates/el-no6-9.xml.erb +51 -0
  22. data/lib/luca/jp/templates/el-no6.xml.erb +206 -0
  23. data/lib/luca/jp/templates/eltax.xml.erb +117 -0
  24. data/lib/luca/jp/templates/fuhyo43.xml.erb +37 -0
  25. data/lib/luca/jp/templates/fuhyo53.xml.erb +24 -0
  26. data/lib/luca/jp/templates/gaikyo.xml.erb +89 -0
  27. data/lib/luca/jp/templates/kariuke-meisai.xml.erb +37 -0
  28. data/lib/luca/jp/templates/syouhizei-shinkoku-kanni.xml.erb +95 -0
  29. data/lib/luca/jp/templates/tekiyougaku.xml.erb +35 -0
  30. data/lib/luca/jp/templates/yakuin-meisai.xml.erb +13 -0
  31. data/lib/luca/jp/templates/yokin-meisai.xml.erb +13 -0
  32. data/lib/luca/jp/util.rb +69 -0
  33. data/lib/luca/jp/version.rb +1 -1
  34. metadata +30 -2
@@ -0,0 +1,197 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'json'
4
+ require 'cgi/escape'
5
+ require 'luca_book'
6
+ require 'luca_support'
7
+ require 'luca_record/dict'
8
+ require 'luca_support/config'
9
+ require 'luca/jp'
10
+
11
+ module Luca
12
+ module Jp
13
+ class Chihouzei < LucaBook::State
14
+ include LucaSupport::View
15
+ include Luca::Jp::Common
16
+ include Luca::Jp::Util
17
+
18
+ @dirname = 'journals'
19
+ @record_type = 'raw'
20
+
21
+ def kani(export: false)
22
+ set_pl(4)
23
+ set_bs(4)
24
+ @issue_date = Date.today
25
+ @company = CGI.escapeHTML(config.dig('company', 'name'))
26
+ @software = 'LucaJp'
27
+ @jimusho_code = config.dig('jp', 'eltax', 'jimusho_code')
28
+ @jimusho_name = '都税事務所長'
29
+
30
+ @税額 = 税額計算
31
+ @均等割 = @税額.dig(:kenmin, :kintou)
32
+ @法人税割課税標準 = 法人税割課税標準
33
+ @確定法人税割 = (@税額.dig(:kenmin, :houjinzei) / 100).floor * 100
34
+ @地方特別法人事業税中間納付 = prepaid_tax('1854')
35
+ @所得割中間納付 = prepaid_tax('1855')
36
+ @法人税割中間納付 = prepaid_tax('1859')
37
+ @均等割中間納付 = prepaid_tax('185A')
38
+ @所得割 = @税額.dig(:kenmin, :shotoku)
39
+ if export
40
+ {
41
+ jigyouzei: {
42
+ shotoku: {
43
+ zeigaku: @所得割,
44
+ chukan: @所得割中間納付
45
+ },
46
+ tokubetsu: {
47
+ zeigaku: @税額.dig(:kenmin, :tokubetsu),
48
+ chukan: @地方特別法人事業税中間納付
49
+ },
50
+ },
51
+ juminzei: {
52
+ kinto: {
53
+ zeigaku: @均等割,
54
+ chukan: @均等割中間納付
55
+ },
56
+ houjinzei: {
57
+ zeigaku: @確定法人税割,
58
+ chukan: @法人税割中間納付
59
+ }
60
+ }
61
+ }
62
+ else
63
+ @procedure_code = 'R0102100'
64
+ @procedure_name = '法人都道府県民税・事業税・特別法人事業税又は地方法人特別税 確定申告'
65
+ @form_sec = ['R0102AA190', 'R0102AG120', 別表九フォーム].compact.map{ |c| form_attr(c) }.join('')
66
+ @user_inf = render_erb(search_template('el-userinf.xml.erb'))
67
+ @form_data = [第六号, 別表四三, 別表九].compact.join("\n")
68
+ render_erb(search_template('eltax.xml.erb'))
69
+ end
70
+ end
71
+
72
+ def export_json
73
+ records = kani(export: true)
74
+ [].tap do |res|
75
+ item = {}
76
+ item['date'] = @end_date
77
+ item['debit'] = []
78
+ item['credit'] = []
79
+ records[:jigyouzei].each do |k, dat|
80
+ if dat[:chukan] > 0
81
+ item['credit'] << { 'label' => karibarai_label(k), 'amount' => dat[:chukan] }
82
+ end
83
+ if dat[:chukan] > dat[:zeigaku]
84
+ item['debit'] << { 'label' => '未収地方事業税', 'amount' => dat[:chukan] - dat[:zeigaku] }
85
+ else
86
+ item['credit'] << { 'label' => '未払地方事業税', 'amount' => dat[:zeigaku] - dat[:chukan] }
87
+ end
88
+ item['debit'] << { 'label' => '法人税、住民税及び事業税', 'amount' => dat[:zeigaku] } if dat[:zeigaku] > 0
89
+ end
90
+ records[:juminzei].each do |k, dat|
91
+ if dat[:chukan] > 0
92
+ item['credit'] << { 'label' => karibarai_label(k), 'amount' => dat[:chukan] }
93
+ end
94
+ if dat[:chukan] > dat[:zeigaku]
95
+ item['debit'] << { 'label' => '未収都道府県住民税', 'amount' => dat[:chukan] - dat[:zeigaku] }
96
+ else
97
+ item['credit'] << { 'label' => '未払都道府県民税', 'amount' => dat[:zeigaku] - dat[:chukan] }
98
+ end
99
+ item['debit'] << { 'label' => '法人税、住民税及び事業税', 'amount' => dat[:zeigaku] } if dat[:zeigaku] > 0
100
+ end
101
+ item['x-editor'] = 'LucaJp'
102
+ res << item
103
+ puts JSON.dump(res)
104
+ end
105
+ end
106
+
107
+ def 第六号
108
+ render_erb(search_template('el-no6.xml.erb'))
109
+ end
110
+
111
+ def 別表四三
112
+ @office_23ku = config.dig('jp', 'eltax', 'office_23ku')
113
+ render_erb(search_template('el-no6-43.xml.erb'))
114
+ end
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
+
128
+ private
129
+
130
+ def 法人税割課税標準
131
+ national_tax = Luca::Jp::Aoiro.range(@start_date.year, @start_date.month, @end_date.year, @end_date.month).kani(export: true)
132
+ (national_tax[:kokuzei][:zeigaku] / 1000).floor * 1000
133
+ end
134
+
135
+ def 事業税中間納付
136
+ @所得割中間納付
137
+ end
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 form_attr(code)
170
+ "<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>"
171
+ end
172
+
173
+ def karibarai_label(key)
174
+ case key
175
+ when :tokubetsu
176
+ '仮払地方税特別法人事業税'
177
+ when :shotoku
178
+ '仮払地方税所得割'
179
+ when :syunyu
180
+ '仮払地方税収入割'
181
+ when :shihon
182
+ '仮払地方税資本割'
183
+ when :fukakachi
184
+ '仮払地方税付加価値割'
185
+ when :houjinzei
186
+ '仮払地方税法人税割'
187
+ when :kinto
188
+ '仮払地方税均等割'
189
+ end
190
+ end
191
+
192
+ def lib_path
193
+ __dir__
194
+ end
195
+ end
196
+ end
197
+ end
@@ -0,0 +1,216 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'luca_support'
4
+
5
+ module Luca
6
+ module Jp
7
+ module Common
8
+ module_function
9
+
10
+ # 法人税、地方税の当期確定税額の計算
11
+ #
12
+ def 税額計算
13
+ 所得 = 所得金額
14
+ { houjin: {}, kenmin: {}, shimin: {} }.tap do |tax|
15
+ 法人税額 = 中小企業の軽減税額(所得) + 一般区分の税額(所得)
16
+ tax[:houjin][:kokuzei] = (法人税額 / 100).floor * 100
17
+ 地方法人税課税標準 = (法人税額 / 1000).floor * 1000
18
+ 地方法人税 = 地方法人税額(地方法人税課税標準)
19
+ tax[:houjin][:chihou] = (地方法人税 / 100).floor * 100
20
+
21
+ tax[:kenmin][:houjinzei], tax[:shimin][:houjinzei] = 法人税割(法人税額)
22
+ tax[:kenmin][:kintou], tax[:shimin][:kintou] = 均等割
23
+ tax[:kenmin][:shotoku] = 所得割400万以下(所得) + 所得割800万以下(所得) + 所得割800万超(所得)
24
+ tax[:kenmin][:tokubetsu] = 地方法人特別税(tax[:kenmin][:shotoku])
25
+ end
26
+ end
27
+
28
+ # -----------------------------------------------------
29
+ # :section: 法人税額の計算
30
+ # -----------------------------------------------------
31
+
32
+ def 中小企業の軽減税率対象所得(所得 = nil)
33
+ 所得 ||= 所得金額
34
+ return 0 if 所得 <= 0
35
+
36
+ if 所得 >= 8_000_000
37
+ 8_000_000
38
+ elsif 所得 < 0
39
+ 0
40
+ else
41
+ (所得 / 1000).floor * 1000
42
+ end
43
+ end
44
+
45
+ def 中小企業の軽減税額(所得 = nil)
46
+ 中小企業の軽減税率対象所得(所得) * 15 / 100
47
+ end
48
+
49
+ def 中小企業の軽減税率対象を超える所得(所得 = nil)
50
+ 所得 ||= 所得金額
51
+ return 0 if 所得 <= 0
52
+
53
+ if 所得 <= 8_000_000
54
+ 0
55
+ else
56
+ ((所得 - 8_000_000) / 1000).floor * 1000
57
+ end
58
+ end
59
+
60
+ def 一般区分の税額(所得 = nil)
61
+ (中小企業の軽減税率対象を超える所得(所得) * 23.2 / 100).to_i
62
+ end
63
+
64
+ def 地方法人税額(地方法人税課税標準)
65
+ (地方法人税課税標準 * 10.3 / 100).to_i
66
+ end
67
+
68
+ # 繰越損失適用後の所得金額
69
+ #
70
+ def 所得金額
71
+ @繰越損失管理 = Sonshitsu.load(@end_date).update(当期所得金額).save if @繰越損失管理.nil?
72
+ @繰越損失管理.profit
73
+ end
74
+
75
+ # 税引前当期利益をもとに計算
76
+ # 消費税を租税公課に計上している場合、控除済みの金額
77
+ # 未払事業税は精算時に認識
78
+ #
79
+ def 当期所得金額
80
+ _, 納付事業税 = 未納事業税期中増減
81
+ LucaSupport::Code.readable(@pl_data.dig('GA') - 納付事業税)
82
+ end
83
+
84
+ # -----------------------------------------------------
85
+ # :section: 繰越損失の計算
86
+ # -----------------------------------------------------
87
+
88
+ def 期首繰越損失
89
+ @繰越損失管理.records
90
+ .filter { |record| record['start_date'] > @end_date.prev_year(10) && record['end_date'] < @start_date }
91
+ .inject(0) { |sum, record| sum + (record['amount'] || 0) }
92
+ end
93
+
94
+ def 当期控除計
95
+ @繰越損失管理.deduction
96
+ end
97
+
98
+ def 翌期繰越損失
99
+ @繰越損失管理.records
100
+ .filter { |record| record['start_date'] > @end_date.prev_year(10) && record['end_date'] < @start_date }
101
+ .inject(0) { |sum, record| sum + (record['amount'] || 0) }
102
+ end
103
+
104
+ def 当期繰越損失
105
+ @繰越損失管理.records
106
+ .filter { |record| record['start_date'] == @start_date }.dig(0, 'increase') || 0
107
+ end
108
+
109
+
110
+ # -----------------------------------------------------
111
+ # :section: 地方税額の計算
112
+ # -----------------------------------------------------
113
+
114
+ def 均等割
115
+ if config.dig('jp', 'eltax', 'office_23ku')
116
+ [70_000, 0]
117
+ else
118
+ [20_000, 50_000]
119
+ end
120
+ end
121
+
122
+ def 法人税割(法人税 = nil)
123
+ 課税標準 = if 法人税
124
+ (法人税 / 1000).floor * 1000
125
+ else
126
+ @法人税割課税標準
127
+ 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
133
+ end
134
+
135
+ def 所得400万以下(所得 = nil)
136
+ 所得 ||= 所得金額
137
+ return 0 if 所得 < 0
138
+
139
+ if 所得 >= 4_000_000
140
+ 4_000_000
141
+ else
142
+ (所得 / 1000).floor * 1000
143
+ end
144
+ end
145
+
146
+ def 所得割400万以下(所得 = nil)
147
+ ((所得400万以下(所得) * 3.5 / 100) / 100).floor * 100
148
+ end
149
+
150
+ def 所得800万以下(所得 = nil)
151
+ 所得 ||= 所得金額
152
+ return 0 if 所得 < 0
153
+
154
+ if 所得 <= 4_000_000
155
+ 0
156
+ elsif 所得 >= 8_000_000
157
+ 4_000_000
158
+ else
159
+ ((所得 - 4_000_000) / 1000).floor * 1000
160
+ end
161
+ end
162
+
163
+ def 所得割800万以下(所得 = nil)
164
+ ((所得800万以下(所得) * 5.3 / 100) / 100).floor * 100
165
+ end
166
+
167
+ def 所得800万超(所得 = nil)
168
+ 所得 ||= 所得金額
169
+ return 0 if 所得 < 0
170
+
171
+ if 所得 <= 8_000_000
172
+ 0
173
+ else
174
+ ((所得 - 8_000_000) / 1000).floor * 1000
175
+ end
176
+ end
177
+
178
+ def 所得割800万超(所得 = nil)
179
+ ((所得800万超(所得) * 7.0 / 100) / 100).floor * 100
180
+ end
181
+
182
+ def 地方法人特別税(事業税)
183
+ ((事業税 * 37 / 100) / 100).floor * 100
184
+ end
185
+
186
+ def 消費税課税売上高(税率 = 10)
187
+ LucaSupport::Code.readable(@pl_data.dig('A0') * 100 / (100 + 税率).floor || 0)
188
+ end
189
+
190
+ def 納付税額(税額, 中間納付額)
191
+ if 税額 > 中間納付額
192
+ 税額 - 中間納付額
193
+ else
194
+ 0
195
+ end
196
+ end
197
+
198
+ def 中間還付税額(税額, 中間納付額)
199
+ if 税額 < 中間納付額
200
+ 中間納付額 - 税額
201
+ else
202
+ 0
203
+ end
204
+ end
205
+
206
+ def 還付事業税
207
+ LucaBook::State.gross(@start_date.year, @start_date.month, @end_date.year, @end_date.month, code: '1504')[:credit]['1504']
208
+ end
209
+
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)]
213
+ end
214
+ end
215
+ end
216
+ end
@@ -0,0 +1,99 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'luca_support'
4
+ require 'luca_support/config'
5
+
6
+ module Luca
7
+ module Jp
8
+ module ItPart
9
+ # タグの出現順序は順不同ではない。eTaxの定義に準拠
10
+ #
11
+ def it_part
12
+ entries = ['<IT VR="1.4" id="IT">']
13
+ entries.concat(['zeimusho']
14
+ .map{ |key| render_it_tag(key) })
15
+ entries << teisyutsu_day
16
+ entries.concat(['nozeisha_id', 'nozeisha_bango']
17
+ .map{ |key| render_it_tag(key) })
18
+ entries.concat(['nozeisha_nm_kn', 'nozeisha_nm', 'nozeisha_zip', 'nozeisha_adr_kn', 'nozeisha_adr', 'nozeisha_tel']
19
+ .map{ |key| render_it_tag(key) })
20
+ entries.concat(['shihon_kin', 'jigyo_naiyo', 'kanpu_kinyukikan']
21
+ .map{ |key| render_it_tag(key) })
22
+ entries.concat(['daihyo_nm_kn', 'daihyo_nm', 'daihyo_zip', 'daihyo_adr', 'daihyo_tel']
23
+ .map{ |key| render_it_tag(key) })
24
+ entries << %Q(<TETSUZUKI ID="TETSUZUKI"><procedure_CD>#{@procedure_code}</procedure_CD><procedure_NM>#{@procedure_name}</procedure_NM></TETSUZUKI>)
25
+ entries.concat([jigyo_nendo_from, jigyo_nendo_to, kazei_kikan_from, kazei_kikan_to])
26
+ entries << render_it_tag('keiri_sekininsha')
27
+ entries << '<SHINKOKU_KBN ID="SHINKOKU_KBN"><kubun_CD>1</kubun_CD></SHINKOKU_KBN>'
28
+ entries.concat(['eltax_id'].map{ |key| render_it_tag(key) })
29
+ entries << '</IT>'
30
+ entries.compact.join("\n")
31
+ end
32
+
33
+ def render_it_tag(key)
34
+ content = config.dig('jp', 'it_part', key)
35
+ return nil if content.nil?
36
+
37
+ case key
38
+ when 'zeimusho'
39
+ content = parse_zeimusho(content)
40
+ when 'nozeisha_tel', 'daihyo_tel'
41
+ content = parse_tel(content)
42
+ when 'nozeisha_zip', 'daihyo_zip'
43
+ content = parse_zip(content)
44
+ when 'nozeisha_bango'
45
+ content = parse_houjinbango(content)
46
+ when 'kanpu_kinyukikan'
47
+ content = parse_kinyukikan(content)
48
+ end
49
+
50
+ tag = key.to_s.upcase
51
+ %Q(<#{tag} ID="#{tag}">#{content}</#{tag}>)
52
+ end
53
+
54
+ def parse_zeimusho(str)
55
+ items = str.split('-')
56
+ %Q(<gen:zeimusho_CD>#{items[0]}</gen:zeimusho_CD><gen:zeimusho_NM>#{items[1]}</gen:zeimusho_NM>)
57
+ end
58
+
59
+ def parse_houjinbango(str)
60
+ %Q(<gen:hojinbango>#{str}</gen:hojinbango>)
61
+ end
62
+
63
+ def parse_kinyukikan(str)
64
+ items = str.split('-')
65
+ %Q(<gen:kinyukikan_NM kinyukikan_KB="1">#{items[0]}</gen:kinyukikan_NM><gen:shiten_NM shiten_KB="2">#{items[1]}</gen:shiten_NM><gen:yokin>#{items[2]}</gen:yokin><gen:koza>#{items[3]}</gen:koza>)
66
+ end
67
+
68
+ def parse_tel(str)
69
+ num = str.split('-')
70
+ %Q(<gen:tel1>#{num[0]}</gen:tel1><gen:tel2>#{num[1]}</gen:tel2><gen:tel3>#{num[2]}</gen:tel3>)
71
+ end
72
+
73
+ def parse_zip(str)
74
+ num = str.split('-')
75
+ %Q(<gen:zip1>#{num[0]}</gen:zip1><gen:zip2>#{num[1]}</gen:zip2>)
76
+ end
77
+
78
+ def teisyutsu_day
79
+ %Q(<TEISYUTSU_DAY ID="TEISYUTSU_DAY"><gen:era>#{gengou(@issue_date)}</gen:era><gen:yy>#{wareki(@issue_date)}</gen:yy><gen:mm>#{@issue_date.month}</gen:mm><gen:dd>#{@issue_date.day}</gen:dd></TEISYUTSU_DAY>)
80
+ end
81
+
82
+ def jigyo_nendo_from
83
+ %Q(<JIGYO_NENDO_FROM ID="JIGYO_NENDO_FROM"><gen:era>#{gengou(@start_date)}</gen:era><gen:yy>#{wareki(@start_date)}</gen:yy><gen:mm>#{@start_date.month}</gen:mm><gen:dd>#{@start_date.day}</gen:dd></JIGYO_NENDO_FROM>)
84
+ end
85
+
86
+ def jigyo_nendo_to
87
+ %Q(<JIGYO_NENDO_TO ID="JIGYO_NENDO_TO"><gen:era>#{gengou(@end_date)}</gen:era><gen:yy>#{wareki(@end_date)}</gen:yy><gen:mm>#{@end_date.month}</gen:mm><gen:dd>#{@end_date.day}</gen:dd></JIGYO_NENDO_TO>)
88
+ end
89
+
90
+ def kazei_kikan_from
91
+ %Q(<KAZEI_KIKAN_FROM ID="KAZEI_KIKAN_FROM"><gen:era>#{gengou(@start_date)}</gen:era><gen:yy>#{wareki(@start_date)}</gen:yy><gen:mm>#{@start_date.month}</gen:mm><gen:dd>#{@start_date.day}</gen:dd></KAZEI_KIKAN_FROM>)
92
+ end
93
+
94
+ def kazei_kikan_to
95
+ %Q(<KAZEI_KIKAN_TO ID="KAZEI_KIKAN_TO"><gen:era>#{gengou(@end_date)}</gen:era><gen:yy>#{wareki(@end_date)}</gen:yy><gen:mm>#{@end_date.month}</gen:mm><gen:dd>#{@end_date.day}</gen:dd></KAZEI_KIKAN_TO>)
96
+ end
97
+ end
98
+ end
99
+ end