ラジオボタンを使用した源泉徴収税額の計算について

お世話になっております。

以下の機能を実装できればと思うのですが、JSを作成しても上手く作動しません。

JSについて、誤っている箇所、修正点をご教示いただけますと幸いです。

何卒宜しくお願いいたします。

 

【機能】

フィールドコードが「業務委託料税抜」であるフィールドに数値を入力。

フィールドコードが「源泉徴収税率」であるラジオボタンで、「源泉徴収なし」「10.21%」「20.42%」のいずれかを選択。

フィールドコードが「源泉徴収税額」であるフィールドに、計算結果を表示。

・「源泉徴収なし」の場合、「源泉徴収税額」に0を表示

・「10.21%」の場合、「源泉徴収税額」に「業務委託料税抜」× 10.21%の計算結果を表示

・「20.42%」の場合、「源泉徴収税額」に「業務委託料税抜」× 20.42%の計算結果を表示

 

【作成したJS】

(function() {
  ‘use strict’;

  kintone.events.on(‘app.record.create.change.源泉徴収税率’, function(event) {
    var gyo = kintone.app.record.get(業務委託料税抜);
    var genri = event.changes.field.value;
    var genga = 0;
    if (genri === “源泉徴収なし”) {
      genga = 0;
    } else if (genri === “10.21%”) {
      genga = gyo * 0.1021;
    } else if (genri === “20.42%”) {
      genga = gyo * 0.2042;
    }
    event.record[“源泉徴収税額”].value = genga;

    return event;
 });

})();

マスダさん

 

5行目の kintone.app.record.get()ですが、イベントハンドラ内では実行できない仕様です。

この記事の注意事項のところに詳細が書いてありました!

 

なので、今回は

var gyo = kintone.app.record.get(業務委託料税抜);

ではなく

var gyo = event.record[‘業務委託料税抜’].value;

で実現できると思います!

 

 HANSA様

お世話になっております。ご教示いただきまして、誠にありがとうございました。

if文の構文も少しおかしかった様なので、以下のとおり修正したのですが、

ラジオボタンを変更しても「源泉徴収税額」のフィールドには未だ何も表示されません。

大変恐縮ではございますが、考えられる原因や、構文の誤りをご教示いただけますと幸いです。

何卒宜しくお願いいたします。

 

【JS】

(function() {
  ‘use strict’;

  kintone.events.on(‘app.record.edit.change.源泉徴収税率’, function(event) {
    var gyo = event.record[‘業務委託料税抜’].value;
    var genri = event.changes.field.value;
    var genga = 0;
    if (genri === ‘源泉徴収なし’) {
      genga = 0;
    } else if (genri === ‘10.21%’) {
      genga = gyo * 0.1021;
    } else if (genri === ‘20.42%’) {
      genga = gyo * 0.2042;
    }
    event.record[‘源泉徴収税額’].value = genga;

    return event;
 });

})();

マスダさん

 

返信で提示していただいたレコードを、

先ほど作成したアプリに入れてみたところ、期待通りに動きました。

 

1つ目のコードと2つ目のコードでイベントが変わっていますが、

編集画面での検証はできていますでしょうか。

 

また、初歩的なミスですが、フィールドコードに間違いはないでしょうか。

 

一度こちらの記事を参考にデバッグしていただき、エラー内容を提示していただければ解決できるかもしれません。

https://developer.cybozu.io/hc/ja/articles/207613916

HANSA様

 

お世話になっております。

早速ご確認、ご返信いただきまして、大変ありがとうございます。

 

確認したところ、JSの文字コードの設定がUTF-8になっていなかったため、修正しました。

また、イベントについても、edit.changeだけでなく、create.changeも加えたところ、

レコード作成時、編集時共に動作するようになりました。

 

この度は詳細にご教示いただきまして、誠にありがとうございました。

今後ともどうぞ宜しくお願いいたします。