テーブル行の計算と表示

商品マスターというアプリに単価1と単価2という項目を用意しました。

別アプリでは、テーブル外に単価区分(選択項目)、テーブルに商品名(ルックアップ)、単価A、単価B、単価という項目を用意しました。

そこで、一つご教授いただきたいのですが、単価区分で、単価1を選択したら、単価Aの金額を単価にセット、単価2を選択したら、単価Bの金額を単価にセットということを実現したいのですが、標準機能ではできないと思います。

JavaScriptを利用することで実現できないかと考えているのですが、インターネットで探したものの、知識がないこともあり、参考になるものが見つかりません。

実現できるのであれば、どのように書いたらよいか、ご教授いただけないでしょうか?

そして、単価Aと単価Bの項目を可能なら、非表示にしたいです。

よろしくお願いいたします。

こちらの内容が近く、商品名と単価区分の変更イベントを設定すると同じようにできるかと思います。単価Aと単価Bの項目を非表示にするのはこのAPIがテーブル内のフィールドを指定できないため、非公式な方法をもってでもやるとすればDOMからセレクタを確認してスタイルを当てることになりますね。

Ryu Yamashita 様

ご教授していただき、ありがとうございます。

とても助かります。

参考の場所を確認して、行ってみます。

再度、ご教授いただけると助かります。

参考のページをもとに、とりあえず単純に、商品コード変更時、単価Aを単価にセットするという内容で、書いてみたつもりなのですが、動作しません。

何か、勘違いしている部分があるのでしょうか?

参考先に記載されていた「row」は、テーブル名と解釈して行っているのですが、合っていますでしょうか?

(function() {
“use strict”;

kintone.events.on([
‘app.record.create.change.商品コード’,
‘app.record.edit.change.商品コード’
], function(event) {
var changes = event.changes;

if(changes[‘明細’].value[‘商品コード’].value){
changes[‘明細’].value[‘単価’].value = changes[‘明細’].value[‘単価A’].value;
}

if(!changes[‘明細’].value[‘商品コード’].value){
changes[‘明細’].value[‘単価’].value = 0;
}
return event;
});
})();

 

セットできるようになったのですが、ドロップダウンの区分を先に選択してしまっていると、

その後に増やした明細には単価がセットできない(区分を一度変更して選択し直せばセットされる)ため、改善したいのですが、

どのようにしたら実現ができるのか、ご教授いただけると助かります。

よろしくお願いいたします。

<アプリA>

フィールド:自動採番 フィールドコード:商品コード

フィールド:数値 フィールドコード:単価A

フィールド:数値 フィールドコード:単価B

 

<アプリB>

フィールド:ドロップダウン フィールドコード:単価区分(選択項目は「単価A」、「単価B」)

フィールド:テーブル フィールドコード:明細

【テーブル内】

フィールド:ルックアップ フィールドコード:商品コード 関連づけるアプリ:アプリA コピー元のフィールド:商品コード

フィールド:数値 フィールドコード:単価A < [アプリA]単価Aをセット

フィールド:数値 フィールドコード:単価B < [アプリA]単価Bをセット

フィールド:数値 フィールドコード:単価

 

<コード>

(function() {
“use strict”;

var events = [
‘app.record.create.change.単価区分’,
‘app.record.edit.change.単価区分’
];

kintone.events.on(events, function(event){

var changes = event.changes;
var record = event.record
var price = changes.field.value;
var len = record.明細.value.length;

for(var i = 0; i < len; i++){
var aPrice = record.明細.value[i].value.単価A.value;
var bPrice = record.明細.value[i].value.単価B.value;

if(price === ‘単価A’){
record.明細.value[i].value.単価.value = aPrice;
} else if(price === ‘単価B’){
record.明細.value[i].value.単価.value = bPrice;
} else {
record.明細.value[i].value.単価.value = 0;
}
}

return event;
});
})();