« 人には見えていないと思っている事が実は一番見えている | トップページ | 財布の更新 »

2007/06/05

償却限度額の計算

最近しつこく書いている減価償却費の計算についてですが、Rubyの勉強を兼ねてプログラムをしてみました。
勉強中ということでまだ不十分なところがありますが、今後の拡張を考えてオブジェクト趣向(指向とは言えないですから...)でプログラミングしてみることにしました。

プログラムのロジックは以前の記事で紹介しているので、ここでは省略してコードのみを書いてみます。

class Genka_syokyaku
  
  #初期化
  def initialize(shiyou_kaishibi, syutoku_kagaku, syokyakuritsu, hosyouritsu, kaitei_syokyakuritsu, kisyu_tyobo_kagaku)
    
    @shiyou_kaishibi = shiyou_kaishibi
    @syutoku_kagaku = syutoku_kagaku
    @syokyakuritsu = syokyakuritsu
    
    @kaitei_syokyakuritsu = kaitei_syokyakuritsu
    @hosyouritsu = hosyouritsu
    
    @kisyu_tyobo_kagaku = kisyu_tyobo_kagaku
    @tyoka_syokyaku = 0
    @kaitei_syutoku_kagaku = 0
    
    @syokyakugaku = 0
    
    @kiso_kingaku = @tyoka_syokyaku + @kisyu_tyobo_kagaku
    
  end
  
  #償却費の計算
  def keisan()
    
    syokyakugaku = (@kiso_kingaku * @syokyakuritsu).to_i
	
    if @kiso_kingaku != 1 then
    
    if @shiyou_kaishibi < Date.new(2007, 4, 1) then
      #改正以前
      zanzon_kagaku = (@syutoku_kagaku * 0.05).to_i
      
      if @kiso_kingaku > zanzon_kagaku then
        
        if (@kiso_kingaku - syokyakugaku) < zanzon_kagaku then
          syokyakugaku = @kiso_kingaku - zanzon_kagaku
        end
  
      else
	    
        syokyakugaku = ((zanzon_kagaku - 1) / 5).to_i
        
        if @kiso_kingaku < syokyakugaku then
          syokyakugaku = @kiso_kingaku - 1
        end
		
      end
	  
    else
      #改正以後
      hosyougaku = (@syutoku_kagaku * @hosyouritsu).to_i
      
      if syokyakugaku < hosyougaku then
        
        if @kaitei_syutoku_kagaku == 0 then
          @kaitei_syutoku_kagaku = @kiso_kingaku
        end
        
        syokyakugaku = (@kaitei_syutoku_kagaku * @kaitei_syokyakuritsu).to_i
		
        if @kiso_kingaku < syokyakugaku then
          syokyakugaku = @kiso_kingaku - 1
        end
		
      end
    end
	
    end
    
    @syokyakugaku = syokyakugaku
    @kiso_kingaku -= @syokyakugaku
    
  end
  
  def touki_syokyakugaku
    return @syokyakugaku
  end
  
  def kaitei_syutoku_kagaku
    return @kaitei_syutoku_kagaku
  end
  
end

となります。ファイルは「genka_syokyaku.rb」です。
使用例を示すと

#!/usr/bin/ruby -w
 
require 'date'
require "genka_syokyaku.rb"
 
gs = Genka_syokyaku.new(Date.new(2007, 5, 10), 1000000, 0.250, 0.04448, 0.334, 1000000)
 
0.upto(20) { |i|
  gs.keisan()
  print "償却額 : #{gs.touki_syokyakugaku}\n"
}

使用例の数値は法人の減価償却制度の改正のあらましの4頁を参考にしました。

どうでしょう。誰かの役には立ちますでしょうか?

|

« 人には見えていないと思っている事が実は一番見えている | トップページ | 財布の更新 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/79953/15330864

この記事へのトラックバック一覧です: 償却限度額の計算:

« 人には見えていないと思っている事が実は一番見えている | トップページ | 財布の更新 »