ROUNDDOWNの定義をするには?

昨日始めたばかりの超ド級初心者です。ご教授お願い致します。

背景・実現したいこと

 請求金額フィールドが税込みなので、内税額フィールドは自動計算したい。

エラー情報 (開発者ツールのコンソール)

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.請求金額’ などの値の変更時のイベントタイプは、計算フィールドには適用できないため正常に動作しません。

 

確認を宜しくお願い致します。

新屋 育男 さま

度々申し訳ございません。

請求金額、内消費税フィールドは共に数値フィールドで何も制限しておりません。

そしたら、フィールドコード内消費税は、請求内消費税の間違いでした。

直したところ正常に動作いたしました。

色々とありがとうございます。また宜しくお願い致します。