Module: Luca::Jp::Common
Class Method Summary collapse
- .レポート種別 ⇒ Object
- .一般区分の税額(所得 = nil) ⇒ Object
- .中小企業の軽減税率対象を超える所得(所得 = nil) ⇒ Object
-
.中小企業の軽減税率対象所得(所得 = nil) ⇒ Object
—————————————————– :section: 法人税額の計算 —————————————————–.
- .中小企業の軽減税額(所得 = nil) ⇒ Object
- .中間還付税額(税額, 中間納付額) ⇒ Object
- .事業所数による分割課税標準(課税標準) ⇒ Object
-
.事業税の分割課税標準(課税標準) ⇒ Object
—————————————————– :section: 複数自治体間の分割計算 —————————————————–.
- .地方法人税額(地方法人税課税標準) ⇒ Object
- .地方消費税中間納付額 ⇒ Object
- .地方税資本金等の額 ⇒ Object
-
.均等割 ⇒ Object
—————————————————– :section: 地方税額の計算 —————————————————–.
-
.当期所得金額 ⇒ Object
税引前当期利益をもとに計算 消費税を租税公課に計上している場合、控除済みの金額 事業税は仮払経理の場合にも納付時損金/還付時益金.
- .当期控除計 ⇒ Object
- .当期繰越損失 ⇒ Object
- .従業員数による分割課税標準(課税標準) ⇒ Object
- .所得400万以下(所得 = nil) ⇒ Object
- .所得800万以下(所得 = nil) ⇒ Object
- .所得800万超(所得 = nil) ⇒ Object
-
.所得割400万以下(所得 = nil) ⇒ Object
100円未満切り捨て.
-
.所得割800万以下(所得 = 0) ⇒ Object
100円未満切り捨て.
-
.所得割800万超(所得 = 0) ⇒ Object
100円未満切り捨て.
- .所得割税率400万以下(所得 = nil) ⇒ Object
- .所得割税率800万以下(所得 = nil) ⇒ Object
- .所得割税率800万超(所得 = nil) ⇒ Object
-
.所得金額 ⇒ Object
繰越損失適用後の所得金額.
- .期末資本金 ⇒ Object
-
.期首繰越損失 ⇒ Object
—————————————————– :section: 繰越損失の計算 —————————————————–.
- .未納事業税期中増減 ⇒ Object
-
.法人税割(法人税 = nil) ⇒ Object
100円未満切り捨て.
- .法人税割税率(法人税 = nil) ⇒ Object
-
.消費税中間納付額 ⇒ Object
—————————————————– :section: 消費税の計算 —————————————————–.
- .消費税課税売上高(税率 = 10) ⇒ Object
-
.特別法人事業税(事業税) ⇒ Object
100円未満切り捨て.
-
.税額計算 ⇒ Object
法人税、地方税の当期確定税額の計算.
- .納付税額(税額, 中間納付額) ⇒ Object
- .翌期繰越損失 ⇒ Object
-
.資本金等の額 ⇒ Object
—————————————————– :section: 外形標準の計算 —————————————————–.
- .軽減税率不適用法人 ⇒ Object
- .還付事業税 ⇒ Object
Class Method Details
.レポート種別 ⇒ Object
350 351 352 |
# File 'lib/luca/jp/common.rb', line 350 def レポート種別 @report_category == 'city' ? ['city', '23ku'] : ['prefecture', '23ku'] end |
.一般区分の税額(所得 = nil) ⇒ Object
60 61 62 |
# File 'lib/luca/jp/common.rb', line 60 def 一般区分の税額(所得 = nil) (中小企業の軽減税率対象を超える所得(所得) * 23.2 / 100).to_i end |
.中小企業の軽減税率対象を超える所得(所得 = nil) ⇒ Object
49 50 51 52 53 54 55 56 57 58 |
# File 'lib/luca/jp/common.rb', line 49 def 中小企業の軽減税率対象を超える所得(所得 = nil) 所得 ||= 所得金額 return 0 if 所得 <= 0 if 所得 <= 8_000_000 0 else ((所得 - 8_000_000) / 1000).floor * 1000 end end |
.中小企業の軽減税率対象所得(所得 = nil) ⇒ Object
:section: 法人税額の計算
32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/luca/jp/common.rb', line 32 def 中小企業の軽減税率対象所得(所得 = nil) 所得 ||= 所得金額 return 0 if 所得 <= 0 if 所得 >= 8_000_000 8_000_000 elsif 所得 < 0 0 else (所得 / 1000).floor * 1000 end end |
.中小企業の軽減税額(所得 = nil) ⇒ Object
45 46 47 |
# File 'lib/luca/jp/common.rb', line 45 def 中小企業の軽減税額(所得 = nil) 中小企業の軽減税率対象所得(所得) * 15 / 100 end |
.中間還付税額(税額, 中間納付額) ⇒ Object
268 269 270 271 272 273 274 |
# File 'lib/luca/jp/common.rb', line 268 def 中間還付税額(税額, 中間納付額) if 税額 < 中間納付額 中間納付額 - 税額 else 0 end end |
.事業所数による分割課税標準(課税標準) ⇒ Object
342 343 344 345 346 347 348 |
# File 'lib/luca/jp/common.rb', line 342 def 事業所数による分割課税標準(課税標準) 分割基準の総数 = Luca::Jp::Util.eltax_config('reports') .filter { |r| レポート種別.include?(r['type']) } .map { |r| (r['office_count'] || 1).to_i }.sum ((課税標準.to_f / 分割基準の総数).floor(分割基準の総数.to_s.length) * @office_count / 1000) .floor * 1000 end |
.事業税の分割課税標準(課税標準) ⇒ Object
:section: 複数自治体間の分割計算
320 321 322 323 324 325 326 327 328 329 330 331 332 |
# File 'lib/luca/jp/common.rb', line 320 def 事業税の分割課税標準(課税標準) case Luca::Jp::Util.eltax_config('reports') .filter { |r| レポート種別.include?(r['type']) }.length when 0, 1 課税標準 else half = (課税標準 / 2 / 1000).floor * 1000 [ 事業所数による分割課税標準(half), 従業員数による分割課税標準(half) ].sum end end |
.地方法人税額(地方法人税課税標準) ⇒ Object
64 65 66 |
# File 'lib/luca/jp/common.rb', line 64 def 地方法人税額(地方法人税課税標準) (地方法人税課税標準 * 10.3 / 100).to_i end |
.地方消費税中間納付額 ⇒ Object
294 295 296 |
# File 'lib/luca/jp/common.rb', line 294 def 地方消費税中間納付額 prepaid_tax('185C') end |
.地方税資本金等の額 ⇒ Object
305 306 307 |
# File 'lib/luca/jp/common.rb', line 305 def 地方税資本金等の額 [資本金等の額, readable(['911', '9131'].map { |cd| @bs_data.dig(cd) }.compact.sum)].max end |
.均等割 ⇒ Object
:section: 地方税額の計算
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
# File 'lib/luca/jp/common.rb', line 115 def 均等割 tax = if 地方税資本金等の額 <= 10_000_000 city = @employee > 50 ? 120_000 : 50_000 [20_000, city] elsif 地方税資本金等の額 <= 100_000_000 city = @employee > 50 ? 150_000 : 130_000 [50_000, city] elsif 地方税資本金等の額 <= 1_000_000_000 city = @employee > 50 ? 400_000 : 160_000 [130_000, city] elsif 地方税資本金等の額 <= 5_000_000_000 city = @employee > 50 ? 1_750_000 : 410_000 [540_000, city] else city = @employee > 50 ? 3_000_000 : 410_000 [800_000, city] end tokyo23? ? [tax.sum, 0] : tax end |
.当期所得金額 ⇒ Object
税引前当期利益をもとに計算 消費税を租税公課に計上している場合、控除済みの金額 事業税は仮払経理の場合にも納付時損金/還付時益金
79 80 81 82 83 |
# File 'lib/luca/jp/common.rb', line 79 def 当期所得金額 _, 納付事業税 = 未納事業税期中増減 事業税中間納付 = prepaid_tax('1854') + prepaid_tax('1855') + prepaid_tax('1856') + prepaid_tax('1857') + prepaid_tax('1858') LucaSupport::Code.readable(@pl_data.dig('GA') - 納付事業税 - 事業税中間納付 + 還付事業税) end |
.当期控除計 ⇒ Object
95 96 97 |
# File 'lib/luca/jp/common.rb', line 95 def 当期控除計 @繰越損失管理.deduction end |
.当期繰越損失 ⇒ Object
105 106 107 108 |
# File 'lib/luca/jp/common.rb', line 105 def 当期繰越損失 @繰越損失管理.records .filter { |record| record['start_date'] == @start_date }.dig(0, 'increase') || 0 end |
.従業員数による分割課税標準(課税標準) ⇒ Object
334 335 336 337 338 339 340 |
# File 'lib/luca/jp/common.rb', line 334 def 従業員数による分割課税標準(課税標準) 分割基準の総数 = Luca::Jp::Util.eltax_config('reports') .filter { |r| レポート種別.include?(r['type']) } .map { |r| (r['employee'] || 1).to_i }.sum ((課税標準.to_f / 分割基準の総数).floor(分割基準の総数.to_s.length) * @employee / 1000) .floor * 1000 end |
.所得400万以下(所得 = nil) ⇒ Object
170 171 172 173 174 175 176 177 178 179 180 |
# File 'lib/luca/jp/common.rb', line 170 def 所得400万以下(所得 = nil) 所得 ||= 所得金額 return 0 if 所得 < 0 total = if 所得 >= 4_000_000 4_000_000 else (所得 / 1000).floor * 1000 end 事業税の分割課税標準(total) end |
.所得800万以下(所得 = nil) ⇒ Object
198 199 200 201 202 203 204 205 206 207 208 209 210 |
# File 'lib/luca/jp/common.rb', line 198 def 所得800万以下(所得 = nil) 所得 ||= 所得金額 return 0 if 所得 < 0 total = if 所得 <= 4_000_000 0 elsif 所得 >= 8_000_000 4_000_000 else ((所得 - 4_000_000) / 1000).floor * 1000 end 事業税の分割課税標準(total) end |
.所得800万超(所得 = nil) ⇒ Object
228 229 230 231 232 233 234 235 236 237 238 |
# File 'lib/luca/jp/common.rb', line 228 def 所得800万超(所得 = nil) 所得 ||= 所得金額 return 0 if 所得 < 0 total = if 所得 <= 8_000_000 0 else ((所得 - 8_000_000) / 1000).floor * 1000 end 事業税の分割課税標準(total) end |
.所得割400万以下(所得 = nil) ⇒ Object
100円未満切り捨て
166 167 168 |
# File 'lib/luca/jp/common.rb', line 166 def 所得割400万以下(所得 = nil) ((所得400万以下(所得) * 所得割税率400万以下(所得) / 100) / 100).floor * 100 end |
.所得割800万以下(所得 = 0) ⇒ Object
100円未満切り捨て
194 195 196 |
# File 'lib/luca/jp/common.rb', line 194 def 所得割800万以下(所得 = 0) ((所得800万以下(所得) * 所得割税率800万以下(所得) / 100) / 100).floor * 100 end |
.所得割800万超(所得 = 0) ⇒ Object
100円未満切り捨て
224 225 226 |
# File 'lib/luca/jp/common.rb', line 224 def 所得割800万超(所得 = 0) ((所得800万超(所得) * 所得割税率800万超(所得) / 100) / 100).floor * 100 end |
.所得割税率400万以下(所得 = nil) ⇒ Object
182 183 184 185 186 187 188 189 190 191 |
# File 'lib/luca/jp/common.rb', line 182 def 所得割税率400万以下(所得 = nil) return @shotyoku399.to_f if @shotoku399 所得 ||= 所得金額 if 期末資本金 > 100_000_000 || 所得 > 25_000_000 軽減税率不適用法人 ? 7.48 : 3.75 else 軽減税率不適用法人 ? 7.0 : 3.5 end end |
.所得割税率800万以下(所得 = nil) ⇒ Object
212 213 214 215 216 217 218 219 220 221 |
# File 'lib/luca/jp/common.rb', line 212 def 所得割税率800万以下(所得 = nil) return @shotyoku401.to_f if @shotoku401 所得 ||= 所得金額 if 期末資本金 > 100_000_000 || 所得 > 25_000_000 軽減税率不適用法人 ? 7.48 : 5.665 else 軽減税率不適用法人 ? 7.0 : 5.3 end end |
.所得割税率800万超(所得 = nil) ⇒ Object
240 241 242 243 244 245 246 247 248 249 |
# File 'lib/luca/jp/common.rb', line 240 def 所得割税率800万超(所得 = nil) return @shotyoku801.to_f if @shotoku801 所得 ||= 所得金額 if 期末資本金 > 100_000_000 || 所得 > 25_000_000 7.48 else 7.0 end end |
.所得金額 ⇒ Object
繰越損失適用後の所得金額
70 71 72 73 |
# File 'lib/luca/jp/common.rb', line 70 def 所得金額 @繰越損失管理 = Sonshitsu.load(@end_date).update(当期所得金額).save if @繰越損失管理.nil? @繰越損失管理.profit end |
.期末資本金 ⇒ Object
313 314 315 |
# File 'lib/luca/jp/common.rb', line 313 def 期末資本金 readable(@bs_data.dig('911')) end |
.期首繰越損失 ⇒ Object
:section: 繰越損失の計算
89 90 91 92 93 |
# File 'lib/luca/jp/common.rb', line 89 def 期首繰越損失 @繰越損失管理.records .filter { |record| record['start_date'] > @end_date.prev_year(10) && record['end_date'] < @start_date } .inject(0) { |sum, record| sum + (record['amount'] || 0) } end |
.未納事業税期中増減 ⇒ Object
280 281 282 283 |
# File 'lib/luca/jp/common.rb', line 280 def 未納事業税期中増減 r = gross_amount('5152', @start_date.year, @start_date.month, @end_date.year, @end_date.month) [LucaSupport::Code.readable(r[1]), LucaSupport::Code.readable(r[0])] end |
.法人税割(法人税 = nil) ⇒ Object
100円未満切り捨て
136 137 138 139 140 141 142 143 144 145 146 147 |
# File 'lib/luca/jp/common.rb', line 136 def 法人税割(法人税 = nil) 課税標準 = if 法人税 (法人税 / 1000).floor * 1000 else 法人税割課税標準 end 県税率, 市税率 = 法人税割税率(課税標準) [ (課税標準 * 県税率 / 100 / 100).floor * 100, (課税標準 * 市税率 / 100 / 100).floor * 100 ] end |
.法人税割税率(法人税 = nil) ⇒ Object
149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 |
# File 'lib/luca/jp/common.rb', line 149 def 法人税割税率(法人税 = nil) return [@houjinzeiwari_rate.to_f, @houjinzeiwari_rate.to_f] if @houjinzeiwari_rate 課税標準 = if 法人税 (法人税 / 1000).floor * 1000 else 法人税割課税標準 end rate = if 期末資本金 > 100_000_000 || 課税標準 > 10_000_000 [2.0, 8.4] else [1.0, 6.0] end tokyo23? ? [rate.sum, 0] : rate end |
.消費税中間納付額 ⇒ Object
:section: 消費税の計算
290 291 292 |
# File 'lib/luca/jp/common.rb', line 290 def 消費税中間納付額 prepaid_tax('185B') end |
.消費税課税売上高(税率 = 10) ⇒ Object
256 257 258 |
# File 'lib/luca/jp/common.rb', line 256 def 消費税課税売上高(税率 = 10) LucaSupport::Code.readable(@pl_data.dig('A0') * 100 / (100 + 税率).floor || 0) end |
.特別法人事業税(事業税) ⇒ Object
100円未満切り捨て
252 253 254 |
# File 'lib/luca/jp/common.rb', line 252 def 特別法人事業税(事業税) ((事業税 * 37 / 100) / 100).floor * 100 end |
.税額計算 ⇒ Object
法人税、地方税の当期確定税額の計算
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/luca/jp/common.rb', line 12 def 税額計算 所得 = 所得金額 { houjin: {}, kenmin: {}, shimin: {} }.tap do |tax| 法人税額 = 中小企業の軽減税額(所得) + 一般区分の税額(所得) tax[:houjin][:kokuzei] = (法人税額 / 100).floor * 100 地方法人税課税標準 = (法人税額 / 1000).floor * 1000 地方法人税 = 地方法人税額(地方法人税課税標準) tax[:houjin][:chihou] = (地方法人税 / 100).floor * 100 tax[:kenmin][:houjinzei], tax[:shimin][:houjinzei] = 法人税割(法人税額) tax[:kenmin][:kintou], tax[:shimin][:kintou] = 均等割 if @report_category tax[:kenmin][:shotoku] = 所得割400万以下(所得) + 所得割800万以下(所得) + 所得割800万超(所得) tax[:kenmin][:tokubetsu] = 特別法人事業税(tax[:kenmin][:shotoku]) end end |
.納付税額(税額, 中間納付額) ⇒ Object
260 261 262 263 264 265 266 |
# File 'lib/luca/jp/common.rb', line 260 def 納付税額(税額, 中間納付額) if 税額 > 中間納付額 税額 - 中間納付額 else 0 end end |
.翌期繰越損失 ⇒ Object
99 100 101 102 103 |
# File 'lib/luca/jp/common.rb', line 99 def 翌期繰越損失 @繰越損失管理.records .filter { |record| record['start_date'] > @end_date.prev_year(10) && record['end_date'] < @start_date } .inject(0) { |sum, record| sum + (record['amount'] || 0) } end |
.資本金等の額 ⇒ Object
:section: 外形標準の計算
301 302 303 |
# File 'lib/luca/jp/common.rb', line 301 def 資本金等の額 readable(['911', '913', '916'].map { |cd| @bs_data.dig(cd) }.compact.sum) end |
.軽減税率不適用法人 ⇒ Object
309 310 311 |
# File 'lib/luca/jp/common.rb', line 309 def 軽減税率不適用法人 期末資本金 > 10_000_000 && eltax_config('no_keigen') end |
.還付事業税 ⇒ Object
276 277 278 |
# File 'lib/luca/jp/common.rb', line 276 def 還付事業税 refund_tax('1504') end |