消費税の計算-販売管理システムのカスタマイズ-

販売管理システム For Accessでの消費税の計算について解説します。 販売管理システムを作成するにあたってはこの消費税の計算が一番苦労する部分です。

消費税の集計区分

得意先マスタで設定するのがこの税集計方法です。
消費税集計単位内税外税

請求書単位の消費税計算

この請求書単位は、1ヶ月間の売上金額を合計してから消費税を算出する方法です。
請求書を発行する時点で計算さ
れる方法となります。
常に取引が発生している場合に使われることが多いと思います。

納品書単位の消費税計算

納品書の発行時点、取引発生時点で消費税を計算する方法です。
当社では、ほぼこの方法で消費税を計算しています。
取引発生時に、納品・請求書を発行する場合にはこの方式となります。
現金取引も、都度消費税を計算しますのでやはりこの方式となります。
月に数回の取引があった場合、1ヶ月の合計請求書での消費税は納品伝票発行時点の消費税を合計するようになります。
なので、請求書の「税抜き売上金額」に消費税率を掛けた消費税とは違う値になる場合があります。

明細単位の消費税計算

明細単位では1行1行消費税を計算して合計する方法です。
あまり需要はないと思われますが、工場などでは使われることがあります。

小数点以下のまるめ処理

消費税を計算するうえで、端数処理(小数点以下の扱い)が必要になります。
切り捨て、切り上げ、四捨五入から選択できるようにしてあります。
当社のお客様では四捨五入を採用しているところが多いですが切り捨て、切り上げもご利用されています。
先ほどの集計方法とこの端数処理の両方が関係して消費税が計算されます。

四捨五入の計算式

AccessにはExcelと違い、四捨五入の関数がありません。
0.5を足して切り捨てるのですが、販売管理の場合「返品」の様なマイナス伝票が発生しますのでこれも考慮する必要があります。
具体的には、切り捨ての関数「INT」ではなく「FIX」関数を使用します。
違いについては別途検索をお願いします。
またマイナス伝票の場合、0.5を足すのではなく0.5を引かなければなりません。
販売管理システム For Accessでは下記のようにプログラムしてあります。
Public Function ShohiZeiGaku(Kingaku, HasuShori, wDate) As Double
'消費税額計算及び端数
'Kingaku:税計算対象額 HasuShori:端数処理方法 wDate:対象の日付
    Dim Kflg As Long, wZeiritu As Double, Zei As Double
    
    If IsNull(Kingaku) Then
        Kingaku = 0
    End If
    If IsNull(HasuShori) Then
        HasuShori = 0
    End If
    
    wZeiritu = ShoZeiritu(wDate)

    If Kingaku < 0 Then
        Kflg = -1
    Else
        Kflg = 1
    End If
    
    Zei = Kingaku * wZeiritu
    
    Select Case HasuShori
        '切り上げ
        Case 0
            Zei = Fix(Zei + (0.999 * Kflg))
        '四捨五入
        Case 1
            Zei = Fix(Zei + (0.5 * Kflg))
        '切り捨て
        Case 2
            Zei = Fix(Zei)
        Case Else
            Zei = 0
    End Select
    ShohiZeiGaku = Zei
End Function

内税の処理

「税込み10,000円で」となった場合、内税での売上処理が出来なければとても面倒です。
税抜きで処理するには10,000÷1.08=9,259.259259259259円 小数点以下をとって9,259円が税抜き金額となります。
9,259円×1.08=9999.72円なので、端数処理が四捨五入や切り上げならOK。
切り捨ての場合には、9,260円が税抜き金額となります。
つまり、切り捨ての場合の消費税は740円、それ以外は741円となります。
計算式は下記のようにしました。
Public Function ShohiZeiUti(Kingaku, HasuShori, wDate) As Double
'内税の消費税額計算及び端数
'Kingaku:税計算対象額 HasuShori:端数処理方法 wDate:対象の日付
    Dim Kflg As Long, wZeiritu As Double, Zei As Double
    
    If IsNull(Kingaku) Then
        Kingaku = 0
    End If
    If IsNull(HasuShori) Then
        HasuShori = 0
    End If
    
    wZeiritu = ShoZeiritu(wDate)

    If Kingaku < 0 Then
        Kflg = -1
    Else
        Kflg = 1
    End If
    
    Zei = Kingaku / (1 + wZeiritu) * wZeiritu
    
    Select Case HasuShori
        '切り上げ
        Case 0
            Zei = Fix(Zei + (0.999 * Kflg))
        '四捨五入
        Case 1
            Zei = Fix(Zei + (0.5 * Kflg))
        '切り捨て
        Case 2
            Zei = Fix(Zei)
        Case Else
            Zei = 0
    End Select
    ShohiZeiUti = Zei
End Function

0 件のコメント :

コメントを投稿