|
>> これに関し、国税庁のホームページ中に
>>
>>ht tp://www.nta.go.jp/shiraberu/ippanjoho/pamph/gensen/shikata2015
>>/pdf/06.pdf
>>
>>というページがあります。PDFのページですが、その14ページに
>>「(平成27年分の年末調整のための算出所得税額の速算表)」という表が
>>あります。
とレスしましたが、上記は、年間の税額を計算する方法なので、ちょっと違いますね。
むしろこっちの方ですね。
月額表の甲欄を適用する給与等に対する源泉徴収税額の電算機計算の特例
ht tp://www.nta.go.jp/shiraberu/ippanjoho/pamph/gensen/zeigakuhyo2014/data/05.pdf
ただ、
ht tp://www.nta.go.jp/shiraberu/ippanjoho/pamph/gensen/zeigakuhyo2014
/data/01.pdf
を見ると、税額表による源泉額と、電算機計算の特例による源泉額とでは、
若干の差が出るみたいです。
>>このようなユーザー関数化も一法ではないかなと思います。
>
>具体的な方法はどの様にすればよろしいでしょうか?
このユーザー定義関数は、クエリからアクセスできる必要があるので、
標準モジュールに書きます。
引数を、社会保険料等を控除した後の給与等の金額
及び控除対象扶養親族の数とし、返り値を源泉所得税額とします。
触りのところだけ書くと、
Function FnGensenGaku(lngSalary As Long,bytFuyo As Byte) As Long
End Function
となります。
Function で始まる行と、End Function の行の間に
コードを書いていくことになります。
コードの組み立ては、上記の電算機計算の特例に記載された手順を
丹念になぞっていけばいいと思います。
なお、私からコードを示すつもりはありません。
今回ちょっと調べた結果、
税額表による源泉額と電算機計算の特例による源泉額とでは、
差が出ることがわかったので、
やっぱり税額表を使う方法による方がいいのかなと思い始めています。
その方法ですが、まず、税額表から「未満」フィールドを削除したテーブルを
用意します。
以上 扶養人数 所得税額
380,000 0 15,040
380,000 1 11,800
380,000 2 8,570
・・・・・・
383,000 0 15,280
383,000 1 12,050
383,000 2 8,810
次に、社会保険料等控除後金額から税額表の「以上」フィールドの値を求める
ユーザー定義関数を作ります。
すなわち、控除金額が392,050円の人は、
税額表において控除金額が392,000円以上395,000円未満の行に該当するので、
392,000円という値を返し、
控除金額が394,000円の人は、392,000円という値を返し、
控除金額が397,000円の人は、395,000円という値を返す
という処理をする関数を作ります。
その上で、従事者テーブルにプラスして
この関数を使った演算フィールド(フィールド名「基準額」)
を持つクエリを作り(クエリ名「Q一次」)、
Q一次と税額表とを、「基準額」フィールドと「以上」フィールド、
及び「扶養人数」フィールドで結合させたクエリを作ります
(クエリ名「Q二次」)。
このようにすれば、結合条件に不等号を使わずに済むので、
いくらかはクエリが速くなるのではないかと思います。
ただし、試したわけではないので、本当に速くなるかどうかは未知数です。
これでもまだ遅いようであれば、
Q一次と税額表との結合は1フィールドだけにして、
もう片方の結合条件は、抽出条件とするという方法を試すことになりそうです。
|
|