litexbrl 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +2 -1
- data/README.md +1 -1
- data/TODO.txt +8 -0
- data/bin/1.htm +2 -0
- data/bin/1q.htm +2 -0
- data/bin/ifrs-rev.htm +2 -0
- data/bin/ifrs.htm +2 -0
- data/bin/litexbrl +28 -0
- data/bin/mid.htm +2 -0
- data/bin/minus.htm +2 -0
- data/bin/non-cons.htm +2 -0
- data/bin/rev-non-cons.htm +2 -0
- data/bin/rev.htm +3986 -0
- data/bin/year.htm +2919 -0
- data/lib/litexbrl/tdnet/account_item.rb +111 -0
- data/lib/litexbrl/tdnet/company_attribute.rb +15 -0
- data/lib/litexbrl/tdnet/financial_information.rb +151 -0
- data/lib/litexbrl/tdnet/financial_information2.rb +97 -0
- data/lib/litexbrl/tdnet/results_forecast.rb +102 -0
- data/lib/litexbrl/tdnet/results_forecast2.rb +139 -0
- data/lib/litexbrl/tdnet/results_forecast_attribute.rb +35 -0
- data/lib/litexbrl/tdnet/summary.rb +127 -134
- data/lib/litexbrl/tdnet/summary2.rb +178 -0
- data/lib/litexbrl/tdnet/summary_attribute.rb +60 -0
- data/lib/litexbrl/tdnet.rb +64 -0
- data/lib/litexbrl/utils.rb +29 -35
- data/lib/litexbrl/version.rb +1 -1
- data/lib/litexbrl.rb +1 -1
- data/litexbrl.gemspec +4 -4
- data/spec/data/tdnet/results_forecast/ifrs-cons-2014.xbrl +4 -0
- data/spec/data/tdnet/results_forecast/jp-cons-2012.xbrl +6 -0
- data/spec/data/tdnet/results_forecast/jp-noncons-2014.xbrl +6 -0
- data/spec/data/tdnet/results_forecast/us-cons-2014.xbrl +8 -0
- data/spec/data/tdnet/results_forecast.xbrl +6 -0
- data/spec/data/tdnet/results_forecast2/1q.htm +2 -0
- data/spec/data/tdnet/results_forecast2/2q-4q.htm +2 -0
- data/spec/data/tdnet/results_forecast2/3q.htm +2 -0
- data/spec/data/tdnet/results_forecast2/ifrs-cons-2014.htm +2 -0
- data/spec/data/tdnet/results_forecast2/jp-cons-2014.htm +2 -0
- data/spec/data/tdnet/results_forecast2/jp-noncons-2014.htm +2 -0
- data/spec/data/tdnet/results_forecast2/range.htm +2 -0
- data/spec/data/tdnet/results_forecast2/us-cons-2014.htm +2 -0
- data/spec/data/tdnet/results_forecast2.htm +2 -0
- data/spec/data/tdnet/summary/ifrs-cons-2014-q1.xbrl +2 -0
- data/spec/data/tdnet/summary/ifrs-or-cons-2014-q1.xbrl +2 -0
- data/spec/data/tdnet/summary/ifrs-sa-cons-2014-q1.xbrl +5 -0
- data/spec/data/tdnet/summary/jp-bk-cons-2014-q1.xbrl +2 -0
- data/spec/data/tdnet/summary/jp-cons-2013-q4.xbrl +2 -0
- data/spec/data/tdnet/summary/jp-goprv-cons-2013-q4.xbrl +3 -0
- data/spec/data/tdnet/summary/jp-in-cons-2014-q1.xbrl +2 -0
- data/spec/data/tdnet/summary/jp-nsco-cons-2013-q4.xbrl +3 -0
- data/spec/data/tdnet/summary/jp-oprv-cons-2014-q1.xbrl +3 -0
- data/spec/data/tdnet/summary/jp-oprvsp-cons-2014-q1.xbrl +2 -0
- data/spec/data/tdnet/summary/jp-se-cons-2014-q1.xbrl +3 -0
- data/spec/data/tdnet/summary/us-bnip-cons-2014-q1.xbrl +5 -0
- data/spec/data/tdnet/summary/us-cons-2014-q1.xbrl +24 -0
- data/spec/data/tdnet/summary/us-ibmi-cons-2013-q4.xbrl +10 -0
- data/spec/data/tdnet/summary/us-ifco-cons-2013-q4.xbrl +6 -0
- data/spec/data/tdnet/summary/us-nsoprv-cons-2014-q1.xbrl +3 -0
- data/spec/data/tdnet/summary/us-oi-cons-2014-q1.xbrl +3 -0
- data/spec/data/tdnet/summary/us-oprv-cons-2014-q1.xbrl +3 -0
- data/spec/data/tdnet/summary/us-tr-ibit-cons-2013-q4.xbrl +3 -0
- data/spec/data/tdnet/summary2/ifrs-cons-2013-q4.htm +2 -0
- data/spec/data/tdnet/summary2/jp-cons-2013-q4.htm +2 -0
- data/spec/data/tdnet/summary2/jp-cons-2014-q1.htm +2 -0
- data/spec/data/tdnet/summary2/jp-noncons-2014-q4.htm +2 -0
- data/spec/data/tdnet/summary2/us-cons-2014-q4.htm +2 -0
- data/spec/data/tdnet/summary2.htm +2 -0
- data/spec/spec_helper.rb +0 -1
- data/spec/support/nokogiri_helper.rb +4 -0
- data/spec/tdnet/account_item_spec.rb +57 -0
- data/spec/tdnet/results_forecast2_spec.rb +257 -0
- data/spec/tdnet/results_forecast_attribute_spec.rb +58 -0
- data/spec/tdnet/results_forecast_spec.rb +112 -0
- data/spec/tdnet/summary2_spec.rb +247 -0
- data/spec/tdnet/summary_attribute_spec.rb +92 -0
- data/spec/tdnet/summary_spec.rb +543 -62
- data/spec/tdnet_spec.rb +41 -0
- data/spec/utils_spec.rb +74 -0
- metadata +144 -20
- /data/spec/data/tdnet/summary/{ja-cons-2013-q1.xbrl → jp-cons-2013-q1.xbrl} +0 -0
- /data/spec/data/tdnet/summary/{ja-cons-2013-q2.xbrl → jp-cons-2013-q2.xbrl} +0 -0
- /data/spec/data/tdnet/summary/{ja-cons-2013-q3.xbrl → jp-cons-2013-q3.xbrl} +0 -0
- /data/spec/data/tdnet/summary/{ja-noncons-q1.xbrl → jp-noncons-q1.xbrl} +0 -0
- /data/spec/data/tdnet/{summary/ja-cons-2013-q4.xbrl → summary.xbrl} +0 -0
data/spec/tdnet/summary_spec.rb
CHANGED
@@ -9,35 +9,30 @@ module LiteXBRL
|
|
9
9
|
let(:dir) { File.expand_path '../../data/tdnet/summary', __FILE__ }
|
10
10
|
|
11
11
|
describe ".find_consolidation" do
|
12
|
-
it "連結" do
|
13
|
-
consolidation = Summary.send(:find_consolidation, doc("#{dir}/ja-cons-2013-q1.xbrl"))
|
14
|
-
expect(consolidation).to eq("Consolidated")
|
15
|
-
end
|
16
|
-
|
17
12
|
it "非連結" do
|
18
|
-
consolidation = Summary.send(:find_consolidation, doc("#{dir}/
|
13
|
+
consolidation = Summary.send(:find_consolidation, doc("#{dir}/jp-noncons-q1.xbrl"))
|
19
14
|
expect(consolidation).to eq("NonConsolidated")
|
20
15
|
end
|
21
16
|
end
|
22
17
|
|
23
18
|
describe ".find_season" do
|
24
19
|
it "Q1" do
|
25
|
-
season = Summary.send(:find_season, doc("#{dir}/
|
20
|
+
season = Summary.send(:find_season, doc("#{dir}/jp-cons-2013-q1.xbrl"), "Consolidated")
|
26
21
|
expect(season).to eq("AccumulatedQ1")
|
27
22
|
end
|
28
23
|
|
29
24
|
it "Q2" do
|
30
|
-
season = Summary.send(:find_season, doc("#{dir}/
|
25
|
+
season = Summary.send(:find_season, doc("#{dir}/jp-cons-2013-q2.xbrl"), "Consolidated")
|
31
26
|
expect(season).to eq("AccumulatedQ2")
|
32
27
|
end
|
33
28
|
|
34
29
|
it "Q3" do
|
35
|
-
season = Summary.send(:find_season, doc("#{dir}/
|
30
|
+
season = Summary.send(:find_season, doc("#{dir}/jp-cons-2013-q3.xbrl"), "Consolidated")
|
36
31
|
expect(season).to eq("AccumulatedQ3")
|
37
32
|
end
|
38
33
|
|
39
34
|
it "Q4" do
|
40
|
-
season = Summary.send(:find_season, doc("#{dir}/
|
35
|
+
season = Summary.send(:find_season, doc("#{dir}/jp-cons-2013-q4.xbrl"), "Consolidated")
|
41
36
|
expect(season).to eq("Year")
|
42
37
|
end
|
43
38
|
end
|
@@ -54,77 +49,563 @@ module LiteXBRL
|
|
54
49
|
end
|
55
50
|
end
|
56
51
|
|
57
|
-
describe ".
|
58
|
-
context "
|
59
|
-
let(:
|
52
|
+
describe ".find_value_tse_t_ed" do
|
53
|
+
context "要素が取得できない" do
|
54
|
+
let(:doc) { double "doc", at_xpath: nil }
|
55
|
+
let(:item) { ['NetSales'] }
|
60
56
|
|
61
|
-
it do
|
62
|
-
|
63
|
-
expect(
|
64
|
-
expect(xbrl.quarter).to eq(1)
|
65
|
-
|
66
|
-
expect(xbrl.net_sales).to eq(6818)
|
67
|
-
expect(xbrl.operating_income).to eq(997)
|
68
|
-
expect(xbrl.ordinary_income).to eq(957)
|
69
|
-
expect(xbrl.net_income).to eq(543)
|
70
|
-
expect(xbrl.net_income_per_share).to eq(86.21)
|
57
|
+
it "nilを返す" do
|
58
|
+
val = Summary.send(:find_value_tse_t_ed, doc, item, nil)
|
59
|
+
expect(val).to be_nil
|
71
60
|
end
|
72
61
|
end
|
62
|
+
end
|
63
|
+
|
64
|
+
describe ".read doc" do
|
65
|
+
context '日本会計基準' do
|
66
|
+
context "連結・第1四半期" do
|
67
|
+
let(:xbrl) { Summary.read doc("#{dir}/jp-cons-2013-q1.xbrl") }
|
68
|
+
let(:summary) { xbrl[:summary] }
|
69
|
+
let(:results_forecast) { xbrl[:results_forecast].first }
|
70
|
+
|
71
|
+
it do
|
72
|
+
expect(summary[:code]).to eq('4368')
|
73
|
+
expect(summary[:year]).to eq(2013)
|
74
|
+
expect(summary[:month]).to eq(3)
|
75
|
+
expect(summary[:quarter]).to eq(1)
|
76
|
+
|
77
|
+
expect(summary[:net_sales]).to eq(6818)
|
78
|
+
expect(summary[:operating_income]).to eq(997)
|
79
|
+
expect(summary[:ordinary_income]).to eq(957)
|
80
|
+
expect(summary[:net_income]).to eq(543)
|
81
|
+
expect(summary[:net_income_per_share]).to eq(86.21)
|
73
82
|
|
74
|
-
|
75
|
-
|
83
|
+
expect(summary[:change_in_net_sales]).to eq(-0.118)
|
84
|
+
expect(summary[:change_in_operating_income]).to eq(-0.225)
|
85
|
+
expect(summary[:change_in_ordinary_income]).to eq(-0.222)
|
86
|
+
expect(summary[:change_in_net_income]).to eq(-0.545)
|
76
87
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
88
|
+
expect(summary[:prior_net_sales]).to eq(7727)
|
89
|
+
expect(summary[:prior_operating_income]).to eq(1287)
|
90
|
+
expect(summary[:prior_ordinary_income]).to eq(1230)
|
91
|
+
expect(summary[:prior_net_income]).to eq(1192)
|
92
|
+
expect(summary[:prior_net_income_per_share]).to eq(189.29)
|
81
93
|
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
94
|
+
expect(summary[:change_in_prior_net_sales]).to eq(0.03)
|
95
|
+
expect(summary[:change_in_prior_operating_income]).to eq(0.117)
|
96
|
+
expect(summary[:change_in_prior_ordinary_income]).to eq(0.186)
|
97
|
+
expect(summary[:change_in_prior_net_income]).to eq 0.947
|
98
|
+
|
99
|
+
expect(results_forecast[:forecast_net_sales]).to eq(30000)
|
100
|
+
expect(results_forecast[:forecast_operating_income]).to eq(3700)
|
101
|
+
expect(results_forecast[:forecast_ordinary_income]).to eq(3600)
|
102
|
+
expect(results_forecast[:forecast_net_income]).to eq(2000)
|
103
|
+
expect(results_forecast[:forecast_net_income_per_share]).to eq(317.4)
|
104
|
+
|
105
|
+
expect(results_forecast[:change_in_forecast_net_sales]).to eq(0.062)
|
106
|
+
expect(results_forecast[:change_in_forecast_operating_income]).to eq(-0.053)
|
107
|
+
expect(results_forecast[:change_in_forecast_ordinary_income]).to eq(-0.059)
|
108
|
+
expect(results_forecast[:change_in_forecast_net_income]).to eq(-0.203)
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
context "連結・第2四半期" do
|
113
|
+
let(:xbrl) { Summary.read doc("#{dir}/jp-cons-2013-q2.xbrl") }
|
114
|
+
let(:summary) { xbrl[:summary] }
|
115
|
+
let(:results_forecast) { xbrl[:results_forecast].first }
|
116
|
+
|
117
|
+
it do
|
118
|
+
expect(summary[:code]).to eq('4368')
|
119
|
+
expect(summary[:year]).to eq(2013)
|
120
|
+
expect(summary[:month]).to eq(3)
|
121
|
+
expect(summary[:quarter]).to eq(2)
|
122
|
+
|
123
|
+
expect(summary[:net_sales]).to eq(13740)
|
124
|
+
expect(summary[:operating_income]).to eq(1863)
|
125
|
+
expect(summary[:ordinary_income]).to eq(1777)
|
126
|
+
expect(summary[:net_income]).to eq(1056)
|
127
|
+
expect(summary[:net_income_per_share]).to eq(167.60)
|
128
|
+
expect(results_forecast[:forecast_net_sales]).to eq(30000)
|
129
|
+
expect(results_forecast[:forecast_operating_income]).to eq(3700)
|
130
|
+
expect(results_forecast[:forecast_ordinary_income]).to eq(3600)
|
131
|
+
expect(results_forecast[:forecast_net_income]).to eq(2000)
|
132
|
+
expect(results_forecast[:forecast_net_income_per_share]).to eq(317.4)
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
context "連結・第3四半期" do
|
137
|
+
let(:xbrl) { Summary.read doc("#{dir}/jp-cons-2013-q3.xbrl") }
|
138
|
+
let(:summary) { xbrl[:summary] }
|
139
|
+
let(:results_forecast) { xbrl[:results_forecast].first }
|
140
|
+
|
141
|
+
it do
|
142
|
+
expect(summary[:code]).to eq('4368')
|
143
|
+
expect(summary[:year]).to eq(2013)
|
144
|
+
expect(summary[:month]).to eq(3)
|
145
|
+
expect(summary[:quarter]).to eq(3)
|
146
|
+
|
147
|
+
expect(summary[:net_sales]).to eq(20793)
|
148
|
+
expect(summary[:operating_income]).to eq(2772)
|
149
|
+
expect(summary[:ordinary_income]).to eq(2720)
|
150
|
+
expect(summary[:net_income]).to eq(1655)
|
151
|
+
expect(summary[:net_income_per_share]).to eq(262.79)
|
152
|
+
expect(results_forecast[:forecast_net_sales]).to eq(30000)
|
153
|
+
expect(results_forecast[:forecast_operating_income]).to eq(3700)
|
154
|
+
expect(results_forecast[:forecast_ordinary_income]).to eq(3600)
|
155
|
+
expect(results_forecast[:forecast_net_income]).to eq(2000)
|
156
|
+
expect(results_forecast[:forecast_net_income_per_share]).to eq(317.4)
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
context "連結・第4四半期" do
|
161
|
+
let(:xbrl) { Summary.read doc("#{dir}/jp-cons-2013-q4.xbrl") }
|
162
|
+
let(:summary) { xbrl[:summary] }
|
163
|
+
let(:results_forecast) { xbrl[:results_forecast].first }
|
164
|
+
|
165
|
+
it do
|
166
|
+
expect(summary[:code]).to eq('4368')
|
167
|
+
expect(summary[:year]).to eq(2013)
|
168
|
+
expect(summary[:month]).to eq(3)
|
169
|
+
expect(summary[:quarter]).to eq(4)
|
170
|
+
|
171
|
+
expect(summary[:net_sales]).to eq(27355)
|
172
|
+
expect(summary[:operating_income]).to eq(3223)
|
173
|
+
expect(summary[:ordinary_income]).to eq(3231)
|
174
|
+
expect(summary[:net_income]).to eq(1903)
|
175
|
+
expect(summary[:net_income_per_share]).to eq(302.11)
|
176
|
+
|
177
|
+
expect(summary[:change_in_net_sales]).to eq(-0.032)
|
178
|
+
expect(summary[:change_in_operating_income]).to eq(-0.175)
|
179
|
+
expect(summary[:change_in_ordinary_income]).to eq(-0.155)
|
180
|
+
expect(summary[:change_in_net_income]).to eq(-0.241)
|
181
|
+
|
182
|
+
expect(summary[:prior_net_sales]).to eq(28247)
|
183
|
+
expect(summary[:prior_operating_income]).to eq(3908)
|
184
|
+
expect(summary[:prior_ordinary_income]).to eq(3826)
|
185
|
+
expect(summary[:prior_net_income]).to eq(2508)
|
186
|
+
expect(summary[:prior_net_income_per_share]).to eq(398.04)
|
187
|
+
|
188
|
+
expect(summary[:change_in_prior_net_sales]).to eq -0.066
|
189
|
+
expect(summary[:change_in_prior_operating_income]).to eq -0.157
|
190
|
+
expect(summary[:change_in_prior_ordinary_income]).to eq -0.122
|
191
|
+
expect(summary[:change_in_prior_net_income]).to eq 0.076
|
192
|
+
|
193
|
+
expect(results_forecast[:forecast_net_sales]).to eq(30000)
|
194
|
+
expect(results_forecast[:forecast_operating_income]).to eq(3500)
|
195
|
+
expect(results_forecast[:forecast_ordinary_income]).to eq(3400)
|
196
|
+
expect(results_forecast[:forecast_net_income]).to eq(2000)
|
197
|
+
expect(results_forecast[:forecast_net_income_per_share]).to eq(317.4)
|
198
|
+
|
199
|
+
expect(results_forecast[:change_in_forecast_net_sales]).to eq(0.097)
|
200
|
+
expect(results_forecast[:change_in_forecast_operating_income]).to eq(0.086)
|
201
|
+
expect(results_forecast[:change_in_forecast_ordinary_income]).to eq(0.052)
|
202
|
+
expect(results_forecast[:change_in_forecast_net_income]).to eq(0.051)
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
206
|
+
context "業種:銀行" do
|
207
|
+
let(:xbrl) { Summary.read doc("#{dir}/jp-bk-cons-2014-q1.xbrl") }
|
208
|
+
let(:summary) { xbrl[:summary] }
|
209
|
+
|
210
|
+
it do
|
211
|
+
expect(summary[:code]).to eq('8361')
|
212
|
+
expect(summary[:year]).to eq(2014)
|
213
|
+
expect(summary[:month]).to eq(3)
|
214
|
+
expect(summary[:quarter]).to eq(1)
|
215
|
+
|
216
|
+
expect(summary[:net_sales]).to eq(28278)
|
217
|
+
expect(summary[:operating_income]).to eq(5079)
|
218
|
+
expect(summary[:ordinary_income]).to eq(5079)
|
219
|
+
expect(summary[:net_income]).to eq(4521)
|
220
|
+
expect(summary[:net_income_per_share]).to eq(12.82)
|
221
|
+
end
|
222
|
+
end
|
223
|
+
|
224
|
+
context '業種:証券' do
|
225
|
+
let(:xbrl) { Summary.read doc("#{dir}/jp-se-cons-2014-q1.xbrl") }
|
226
|
+
let(:summary) { xbrl[:summary] }
|
227
|
+
|
228
|
+
it do
|
229
|
+
expect(summary[:code]).to eq('8601')
|
230
|
+
expect(summary[:year]).to eq(2014)
|
231
|
+
expect(summary[:month]).to eq(3)
|
232
|
+
expect(summary[:quarter]).to eq(1)
|
233
|
+
|
234
|
+
expect(summary[:net_sales]).to eq(183082)
|
235
|
+
expect(summary[:operating_income]).to eq(62307)
|
236
|
+
expect(summary[:ordinary_income]).to eq(65087)
|
237
|
+
expect(summary[:net_income]).to eq(57297)
|
238
|
+
expect(summary[:net_income_per_share]).to eq(33.72)
|
239
|
+
end
|
240
|
+
end
|
241
|
+
|
242
|
+
context '業種:保険' do
|
243
|
+
let(:xbrl) { Summary.read doc("#{dir}/jp-in-cons-2014-q1.xbrl") }
|
244
|
+
let(:summary) { xbrl[:summary] }
|
245
|
+
|
246
|
+
it do
|
247
|
+
expect(summary[:code]).to eq('8715')
|
248
|
+
expect(summary[:year]).to eq(2014)
|
249
|
+
expect(summary[:month]).to eq(3)
|
250
|
+
expect(summary[:quarter]).to eq(1)
|
251
|
+
|
252
|
+
expect(summary[:net_sales]).to eq(4394)
|
253
|
+
expect(summary[:operating_income]).to eq(113)
|
254
|
+
expect(summary[:ordinary_income]).to eq(113)
|
255
|
+
expect(summary[:net_income]).to eq(68)
|
256
|
+
expect(summary[:net_income_per_share]).to eq(3.96)
|
257
|
+
end
|
87
258
|
end
|
88
|
-
end
|
89
259
|
|
90
|
-
|
91
|
-
|
260
|
+
context '業種:営業収益' do
|
261
|
+
let(:xbrl) { Summary.read doc("#{dir}/jp-oprv-cons-2014-q1.xbrl") }
|
262
|
+
let(:summary) { xbrl[:summary] }
|
92
263
|
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
264
|
+
it do
|
265
|
+
expect(summary[:code]).to eq('8289')
|
266
|
+
expect(summary[:year]).to eq(2014)
|
267
|
+
expect(summary[:month]).to eq(2)
|
268
|
+
expect(summary[:quarter]).to eq(1)
|
97
269
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
270
|
+
expect(summary[:net_sales]).to eq(24866)
|
271
|
+
expect(summary[:operating_income]).to eq(117)
|
272
|
+
expect(summary[:ordinary_income]).to eq(101)
|
273
|
+
expect(summary[:net_income]).to eq(89)
|
274
|
+
expect(summary[:net_income_per_share]).to eq(3.88)
|
275
|
+
end
|
276
|
+
end
|
277
|
+
|
278
|
+
context '業種:営業収入' do
|
279
|
+
let(:xbrl) { Summary.read doc("#{dir}/jp-oprvsp-cons-2014-q1.xbrl") }
|
280
|
+
let(:summary) { xbrl[:summary] }
|
281
|
+
|
282
|
+
it do
|
283
|
+
expect(summary[:code]).to eq('9946')
|
284
|
+
expect(summary[:year]).to eq(2014)
|
285
|
+
expect(summary[:month]).to eq(2)
|
286
|
+
expect(summary[:quarter]).to eq(1)
|
287
|
+
|
288
|
+
expect(summary[:net_sales]).to eq(33307)
|
289
|
+
expect(summary[:operating_income]).to eq(240)
|
290
|
+
expect(summary[:ordinary_income]).to eq(563)
|
291
|
+
expect(summary[:net_income]).to eq(113)
|
292
|
+
expect(summary[:net_income_per_share]).to eq(3.92)
|
293
|
+
end
|
294
|
+
end
|
295
|
+
|
296
|
+
context '業種:営業総収入' do
|
297
|
+
let(:xbrl) { Summary.read doc("#{dir}/jp-goprv-cons-2013-q4.xbrl") }
|
298
|
+
let(:summary) { xbrl[:summary] }
|
299
|
+
|
300
|
+
it do
|
301
|
+
expect(summary[:code]).to eq('8028')
|
302
|
+
expect(summary[:year]).to eq(2013)
|
303
|
+
expect(summary[:month]).to eq(2)
|
304
|
+
expect(summary[:quarter]).to eq(4)
|
305
|
+
|
306
|
+
expect(summary[:net_sales]).to eq(334087)
|
307
|
+
expect(summary[:operating_income]).to eq(43107)
|
308
|
+
expect(summary[:ordinary_income]).to eq(45410)
|
309
|
+
expect(summary[:net_income]).to eq(25020)
|
310
|
+
expect(summary[:net_income_per_share]).to eq(263.57)
|
311
|
+
end
|
312
|
+
end
|
313
|
+
|
314
|
+
context '業種:完成工事高' do
|
315
|
+
let(:xbrl) { Summary.read doc("#{dir}/jp-nsco-cons-2013-q4.xbrl") }
|
316
|
+
let(:summary) { xbrl[:summary] }
|
317
|
+
|
318
|
+
it do
|
319
|
+
expect(summary[:code]).to eq('1861')
|
320
|
+
expect(summary[:year]).to eq(2013)
|
321
|
+
expect(summary[:month]).to eq(3)
|
322
|
+
expect(summary[:quarter]).to eq(4)
|
323
|
+
|
324
|
+
expect(summary[:net_sales]).to eq(260753)
|
325
|
+
expect(summary[:operating_income]).to eq(-1167)
|
326
|
+
expect(summary[:ordinary_income]).to eq(65)
|
327
|
+
expect(summary[:net_income]).to eq(-1083)
|
328
|
+
expect(summary[:net_income_per_share]).to eq(-5.91)
|
329
|
+
end
|
103
330
|
end
|
104
331
|
end
|
105
332
|
|
106
|
-
context
|
107
|
-
|
333
|
+
context '米国会計基準' do
|
334
|
+
context '売上高:NetSales' do
|
335
|
+
let(:xbrl) { Summary.read doc("#{dir}/us-cons-2014-q1.xbrl") }
|
336
|
+
let(:summary) { xbrl[:summary] }
|
337
|
+
let(:results_forecast) { xbrl[:results_forecast].first }
|
338
|
+
|
339
|
+
it do
|
340
|
+
expect(summary[:code]).to eq('7203')
|
341
|
+
expect(summary[:year]).to eq(2014)
|
342
|
+
expect(summary[:month]).to eq(3)
|
343
|
+
expect(summary[:quarter]).to eq(1)
|
108
344
|
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
345
|
+
expect(summary[:net_sales]).to eq(6255319)
|
346
|
+
expect(summary[:operating_income]).to eq(663383)
|
347
|
+
expect(summary[:ordinary_income]).to eq(724163)
|
348
|
+
expect(summary[:net_income]).to eq(562194)
|
349
|
+
expect(summary[:net_income_per_share]).to eq(177.45)
|
113
350
|
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
351
|
+
expect(summary[:change_in_net_sales]).to eq 0.137
|
352
|
+
expect(summary[:change_in_operating_income]).to eq 0.879
|
353
|
+
expect(summary[:change_in_ordinary_income]).to eq 0.744
|
354
|
+
expect(summary[:change_in_net_income]).to eq 0.936
|
355
|
+
|
356
|
+
expect(summary[:prior_net_sales]).to eq 5501573
|
357
|
+
expect(summary[:prior_operating_income]).to eq 353143
|
358
|
+
expect(summary[:prior_ordinary_income]).to eq 415203
|
359
|
+
expect(summary[:prior_net_income]).to eq 290347
|
360
|
+
expect(summary[:prior_net_income_per_share]).to eq 91.68
|
361
|
+
|
362
|
+
expect(summary[:change_in_prior_net_sales]).to eq 0.599
|
363
|
+
# expect(summary[:change_in_prior_operating_income]).to eq -0.157
|
364
|
+
# expect(summary[:change_in_prior_ordinary_income]).to eq -0.122
|
365
|
+
# expect(summary[:change_in_prior_net_income]).to eq 0.076
|
366
|
+
|
367
|
+
expect(results_forecast[:forecast_net_sales]).to eq(24000000)
|
368
|
+
expect(results_forecast[:forecast_operating_income]).to eq(1940000)
|
369
|
+
expect(results_forecast[:forecast_ordinary_income]).to eq(2030000)
|
370
|
+
expect(results_forecast[:forecast_net_income]).to eq(1480000)
|
371
|
+
expect(results_forecast[:forecast_net_income_per_share]).to eq(467.09)
|
372
|
+
|
373
|
+
expect(results_forecast[:change_in_forecast_net_sales]).to eq 0.088
|
374
|
+
expect(results_forecast[:change_in_forecast_operating_income]).to eq 0.469
|
375
|
+
expect(results_forecast[:change_in_forecast_ordinary_income]).to eq 0.446
|
376
|
+
expect(results_forecast[:change_in_forecast_net_income]).to eq 0.538
|
377
|
+
end
|
378
|
+
end
|
379
|
+
|
380
|
+
context '売上高:OperatingRevenues' do
|
381
|
+
let(:xbrl) { Summary.read doc("#{dir}/us-oprv-cons-2014-q1.xbrl") }
|
382
|
+
let(:summary) { xbrl[:summary] }
|
383
|
+
|
384
|
+
it do
|
385
|
+
expect(summary[:code]).to eq('9432')
|
386
|
+
expect(summary[:year]).to eq(2014)
|
387
|
+
expect(summary[:month]).to eq(3)
|
388
|
+
expect(summary[:quarter]).to eq(1)
|
389
|
+
|
390
|
+
expect(summary[:net_sales]).to eq(2609117)
|
391
|
+
expect(summary[:operating_income]).to eq(348926)
|
392
|
+
expect(summary[:ordinary_income]).to eq(356084)
|
393
|
+
expect(summary[:net_income]).to eq(166717)
|
394
|
+
expect(summary[:net_income_per_share]).to eq(141.29)
|
395
|
+
end
|
396
|
+
end
|
397
|
+
|
398
|
+
context '売上高:NetSalesAndOperatingRevenuesUS' do
|
399
|
+
let(:xbrl) { Summary.read doc("#{dir}/us-nsoprv-cons-2014-q1.xbrl") }
|
400
|
+
let(:summary) { xbrl[:summary] }
|
401
|
+
|
402
|
+
it do
|
403
|
+
expect(summary[:code]).to eq('6758')
|
404
|
+
expect(summary[:year]).to eq(2014)
|
405
|
+
expect(summary[:month]).to eq(3)
|
406
|
+
expect(summary[:quarter]).to eq(1)
|
407
|
+
|
408
|
+
expect(summary[:net_sales]).to eq(1712712)
|
409
|
+
expect(summary[:operating_income]).to eq(36357)
|
410
|
+
expect(summary[:ordinary_income]).to eq(46253)
|
411
|
+
expect(summary[:net_income]).to eq(3480)
|
412
|
+
expect(summary[:net_income_per_share]).to eq(3.44)
|
413
|
+
end
|
414
|
+
end
|
415
|
+
|
416
|
+
context '売上高:TotalRevenuesUS' do
|
417
|
+
let(:xbrl) { Summary.read doc("#{dir}/us-tr-ibit-cons-2013-q4.xbrl") }
|
418
|
+
let(:summary) { xbrl[:summary] }
|
419
|
+
|
420
|
+
it do
|
421
|
+
expect(summary[:code]).to eq('8604')
|
422
|
+
expect(summary[:year]).to eq(2013)
|
423
|
+
expect(summary[:month]).to eq(3)
|
424
|
+
expect(summary[:quarter]).to eq(4)
|
425
|
+
|
426
|
+
expect(summary[:net_sales]).to eq(2079943)
|
427
|
+
expect(summary[:operating_income]).to eq(237730)
|
428
|
+
expect(summary[:ordinary_income]).to eq(237730)
|
429
|
+
expect(summary[:net_income]).to eq(107234)
|
430
|
+
expect(summary[:net_income_per_share]).to eq(29.04)
|
431
|
+
end
|
432
|
+
end
|
433
|
+
|
434
|
+
context '営業利益:OperatingIncome' do
|
435
|
+
let(:xbrl) { Summary.read doc("#{dir}/us-oi-cons-2014-q1.xbrl") }
|
436
|
+
let(:summary) { xbrl[:summary] }
|
437
|
+
|
438
|
+
it do
|
439
|
+
expect(summary[:code]).to eq('6752')
|
440
|
+
expect(summary[:year]).to eq(2014)
|
441
|
+
expect(summary[:month]).to eq(3)
|
442
|
+
expect(summary[:quarter]).to eq(1)
|
443
|
+
|
444
|
+
expect(summary[:net_sales]).to eq(1824515)
|
445
|
+
expect(summary[:operating_income]).to eq(64201)
|
446
|
+
expect(summary[:ordinary_income]).to eq(122612)
|
447
|
+
expect(summary[:net_income]).to eq(107831)
|
448
|
+
expect(summary[:net_income_per_share]).to eq(46.65)
|
449
|
+
end
|
450
|
+
end
|
451
|
+
|
452
|
+
context '営業利益:BasicNetIncomePerShareUS' do
|
453
|
+
let(:xbrl) { Summary.read doc("#{dir}/us-bnip-cons-2014-q1.xbrl") }
|
454
|
+
let(:summary) { xbrl[:summary] }
|
455
|
+
|
456
|
+
it do
|
457
|
+
expect(summary[:code]).to eq('7267')
|
458
|
+
expect(summary[:year]).to eq(2014)
|
459
|
+
expect(summary[:month]).to eq(3)
|
460
|
+
expect(summary[:quarter]).to eq(1)
|
461
|
+
|
462
|
+
expect(summary[:net_sales]).to eq(2834095)
|
463
|
+
expect(summary[:operating_income]).to eq(184963)
|
464
|
+
expect(summary[:ordinary_income]).to eq(172035)
|
465
|
+
expect(summary[:net_income]).to eq(122499)
|
466
|
+
expect(summary[:net_income_per_share]).to eq(67.97)
|
467
|
+
end
|
468
|
+
end
|
469
|
+
|
470
|
+
context '営業利益:IncomeBeforeIncomeTaxesUS' do
|
471
|
+
let(:xbrl) { Summary.read doc("#{dir}/us-tr-ibit-cons-2013-q4.xbrl") }
|
472
|
+
let(:summary) { xbrl[:summary] }
|
473
|
+
|
474
|
+
it do
|
475
|
+
expect(summary[:code]).to eq('8604')
|
476
|
+
expect(summary[:year]).to eq(2013)
|
477
|
+
expect(summary[:month]).to eq(3)
|
478
|
+
expect(summary[:quarter]).to eq(4)
|
479
|
+
|
480
|
+
expect(summary[:net_sales]).to eq(2079943)
|
481
|
+
expect(summary[:operating_income]).to eq(237730)
|
482
|
+
expect(summary[:ordinary_income]).to eq(237730)
|
483
|
+
expect(summary[:net_income]).to eq(107234)
|
484
|
+
expect(summary[:net_income_per_share]).to eq(29.04)
|
485
|
+
end
|
486
|
+
end
|
487
|
+
|
488
|
+
context '経常利益:IncomeFromContinuingOperationsBeforeIncomeTaxesUS' do
|
489
|
+
let(:xbrl) { Summary.read doc("#{dir}/us-ifco-cons-2013-q4.xbrl") }
|
490
|
+
let(:summary) { xbrl[:summary] }
|
491
|
+
|
492
|
+
it do
|
493
|
+
expect(summary[:code]).to eq('6502')
|
494
|
+
expect(summary[:year]).to eq(2013)
|
495
|
+
expect(summary[:month]).to eq(3)
|
496
|
+
expect(summary[:quarter]).to eq(4)
|
497
|
+
|
498
|
+
expect(summary[:net_sales]).to eq(5800281)
|
499
|
+
expect(summary[:operating_income]).to eq(194316)
|
500
|
+
expect(summary[:ordinary_income]).to eq(155553)
|
501
|
+
expect(summary[:net_income]).to eq(77533)
|
502
|
+
expect(summary[:net_income_per_share]).to eq(18.31)
|
503
|
+
end
|
504
|
+
end
|
505
|
+
|
506
|
+
context '純利益:IncomeBeforeMinorityInterestUS' do
|
507
|
+
let(:xbrl) { Summary.read doc("#{dir}/us-ibmi-cons-2013-q4.xbrl") }
|
508
|
+
let(:summary) { xbrl[:summary] }
|
509
|
+
|
510
|
+
it do
|
511
|
+
expect(summary[:code]).to eq('6981')
|
512
|
+
expect(summary[:year]).to eq(2013)
|
513
|
+
expect(summary[:month]).to eq(3)
|
514
|
+
expect(summary[:quarter]).to eq(4)
|
515
|
+
|
516
|
+
expect(summary[:net_sales]).to eq(681021)
|
517
|
+
expect(summary[:operating_income]).to eq(58636)
|
518
|
+
expect(summary[:ordinary_income]).to eq(59534)
|
519
|
+
expect(summary[:net_income]).to eq(42386)
|
520
|
+
expect(summary[:net_income_per_share]).to eq(200.81)
|
521
|
+
end
|
119
522
|
end
|
120
523
|
end
|
121
|
-
end
|
122
524
|
|
123
|
-
|
124
|
-
|
525
|
+
context 'IFRS' do
|
526
|
+
context '売上高:NetSalesIFRS' do
|
527
|
+
let(:xbrl) { Summary.read doc("#{dir}/ifrs-cons-2014-q1.xbrl") }
|
528
|
+
let(:summary) { xbrl[:summary] }
|
529
|
+
let(:results_forecast) { xbrl[:results_forecast].first }
|
530
|
+
|
531
|
+
it do
|
532
|
+
expect(summary[:code]).to eq('5202')
|
533
|
+
expect(summary[:year]).to eq(2014)
|
534
|
+
expect(summary[:month]).to eq(3)
|
535
|
+
expect(summary[:quarter]).to eq(1)
|
536
|
+
|
537
|
+
expect(summary[:net_sales]).to eq(150690)
|
538
|
+
expect(summary[:operating_income]).to eq(-398)
|
539
|
+
expect(summary[:ordinary_income]).to eq(-5364)
|
540
|
+
expect(summary[:net_income]).to eq(-7112)
|
541
|
+
expect(summary[:net_income_per_share]).to eq(-7.88)
|
125
542
|
|
126
|
-
|
127
|
-
|
543
|
+
expect(summary[:change_in_net_sales]).to eq 0.148
|
544
|
+
# expect(summary[:change_in_operating_income]).to eq 0.879
|
545
|
+
# expect(summary[:change_in_ordinary_income]).to eq 0.744
|
546
|
+
# expect(summary[:change_in_net_income]).to eq 0.936
|
547
|
+
|
548
|
+
expect(summary[:prior_net_sales]).to eq 131221
|
549
|
+
expect(summary[:prior_operating_income]).to eq -8509
|
550
|
+
expect(summary[:prior_ordinary_income]).to eq -12181
|
551
|
+
expect(summary[:prior_net_income]).to eq -11123
|
552
|
+
expect(summary[:prior_net_income_per_share]).to eq -12.33
|
553
|
+
|
554
|
+
expect(summary[:change_in_prior_net_sales]).to eq -0.096
|
555
|
+
# expect(summary[:change_in_prior_operating_income]).to eq -0.157
|
556
|
+
# expect(summary[:change_in_prior_ordinary_income]).to eq -0.122
|
557
|
+
# expect(summary[:change_in_prior_net_income]).to eq 0.076
|
558
|
+
|
559
|
+
expect(results_forecast[:forecast_net_sales]).to eq(600000)
|
560
|
+
expect(results_forecast[:forecast_operating_income]).to eq(3000)
|
561
|
+
expect(results_forecast[:forecast_ordinary_income]).to eq(-15000) # ForecastProfitBeforeIncomeTaxIFRS
|
562
|
+
expect(results_forecast[:forecast_net_income]).to eq(-21000)
|
563
|
+
expect(results_forecast[:forecast_net_income_per_share]).to eq(-23.27) # ForecastBasicEarningPerShareIFRS
|
564
|
+
|
565
|
+
expect(results_forecast[:change_in_forecast_net_sales]).to eq 0.151
|
566
|
+
# expect(results_forecast[:change_in_forecast_operating_income]).to eq 0.469
|
567
|
+
# expect(results_forecast[:change_in_forecast_ordinary_income]).to eq 0.446
|
568
|
+
# expect(results_forecast[:change_in_forecast_net_income]).to eq 0.538
|
569
|
+
end
|
570
|
+
end
|
571
|
+
|
572
|
+
context '売上高:OperatingRevenuesIFRS、営業利益:ProfitBeforeTaxIFRS' do
|
573
|
+
let(:xbrl) { Summary.read doc("#{dir}/ifrs-or-cons-2014-q1.xbrl") }
|
574
|
+
let(:summary) { xbrl[:summary] }
|
575
|
+
|
576
|
+
it do
|
577
|
+
expect(summary[:code]).to eq('8698')
|
578
|
+
expect(summary[:year]).to eq(2014)
|
579
|
+
expect(summary[:month]).to eq(3)
|
580
|
+
expect(summary[:quarter]).to eq(1)
|
581
|
+
|
582
|
+
expect(summary[:net_sales]).to eq(16866)
|
583
|
+
expect(summary[:operating_income]).to eq(8407)
|
584
|
+
expect(summary[:ordinary_income]).to eq(8407)
|
585
|
+
expect(summary[:net_income]).to eq(5144)
|
586
|
+
expect(summary[:net_income_per_share]).to eq(1751.61)
|
587
|
+
# TODO 業績予想のテスト追加
|
588
|
+
end
|
589
|
+
end
|
590
|
+
|
591
|
+
context '売上高:SalesIFRS' do
|
592
|
+
let(:xbrl) { Summary.read doc("#{dir}/ifrs-sa-cons-2014-q1.xbrl") }
|
593
|
+
let(:summary) { xbrl[:summary] }
|
594
|
+
|
595
|
+
it do
|
596
|
+
expect(summary[:code]).to eq('7741')
|
597
|
+
expect(summary[:year]).to eq(2014)
|
598
|
+
expect(summary[:month]).to eq(3)
|
599
|
+
expect(summary[:quarter]).to eq(1)
|
600
|
+
|
601
|
+
expect(summary[:net_sales]).to eq(100425)
|
602
|
+
expect(summary[:operating_income]).to eq(20123)
|
603
|
+
expect(summary[:ordinary_income]).to eq(20123)
|
604
|
+
expect(summary[:net_income]).to eq(12302)
|
605
|
+
expect(summary[:net_income_per_share]).to eq(28.51)
|
606
|
+
# TODO 業績予想のテスト追加
|
607
|
+
end
|
608
|
+
end
|
128
609
|
end
|
129
610
|
end
|
130
611
|
|