昨日始めたばかりの超ド級初心者です。ご教授お願い致します。
背景・実現したいこと
請求金額フィールドが税込みなので、内税額フィールドは自動計算したい。
エラー情報 (開発者ツールのコンソール)
Chromeのデバッガで見ると
Uncaught ReferenceError: ROUNDDOWN is not defined
(ROUNDDOWNは定義されてません)
とエラーが出ますが、定義の仕方がわかりません。
利用したソースコード
(function() {
“use strict”;
var events = [
“app.record.edit.show”,
“app.record.create.show”,
“app.record.create.submit”,
“app.record.edit.submit”,
“app.record.create.change.請求金額”,
“app.record.edit.change.請求金額”
];
kintone.events.on(events, function(event) {
var record = event.record;
var seikyu = record[“請求金額”].value;
record[“内消費税”].value = ROUNDDOWN(seikyu * 10 / 110);
return event;
});
})();
FURUNO.T 様
こんにちは。
ROUNDDOWN は JavaScript で利用できません。
演算子と関数の一覧 (cybozu.help)
ここにある関数は、kintone の標準のフィールドの計算式を利用したときに機能する関数ですね。
ですので、内消費税のフィールドを計算フィールドに変更して、
ROUNDDOWN(請求銀額 * 10/110, 0)
と入力してみては如何でしょうか?
そちらの方が、今後もカスタマイズしやすいかと思います。
新屋 育男 さま
早速のご教授、ありがとうございます。
計算フィールドを使う方法は知っておりましたが、Javaスクリプトの勉強のため
試したかったのです。
FURUNO.T 様
JavaScript の勉強の為ですね。
そうすると、『Js 切り捨て』等で検索すると出てきますよ。
Math.floor() - JavaScript | MDN (mozilla.org)
この辺りがお勧めです。
Math.floor(seikyu * 10 / 110)
こんな感じになると思います。
ご解答ありがとうございます。
上のコードの
record[“内消費税”].value = ROUNDDOWN(seikyu * 10 / 110);
を
record[“内消費税”].value = Math.floor(seikyu * 10 / 110);
(エラーはありません)
に書き換えて実行しても、イベントが発生してないっぽく自動計算してくれません。
請求金額は手入力です。変更時、内消費税を計算したいです。
宜しくお願い致します。
FURUNO.T 様
こんにちは。
特に問題はないようですが、考えられる要因としては以下です。
・請求金額のフィールドですが、文字列になっている
・内消費税のフィールドが計算フィールドになっている
・請求金額のフィールドが計算フィールドになっている
文字列の場合は、値を数値に変更する必要があるかと思います。
内消費税のフィールドが計算フィールドになっている場合は値の代入ができません。
請求金額のフィールドが計算フィールドの場合は、’app.record.edit.change.請求金額’ などの値の変更時のイベントタイプは、計算フィールドには適用できないため正常に動作しません。
確認を宜しくお願い致します。
新屋 育男 さま
度々申し訳ございません。
請求金額、内消費税フィールドは共に数値フィールドで何も制限しておりません。
そしたら、フィールドコード内消費税は、請求内消費税の間違いでした。
直したところ正常に動作いたしました。
色々とありがとうございます。また宜しくお願い致します。