自動計算について

いつも大変お世話になっております。

以下のような自動計算ですが、まだあまり知識ないレベルでなんとなく動きますが、

もしお時間ある方がいらっしゃいましたら、正しいコードのご指導いただけると幸いです。

どうぞよろしくご指導のほど、お願い致します。

(function() {
"use strict";
kintone.events.on([
'app.record.create.submit', 'app.record.edit.submit','app.record.create.show',
'app.record.edit.show','app.record.detail.show','app.record.index.edit.show',
'app.record.create.change.商品A','app.record.edit.change.商品A','app.record.index.edit.change.商品A',
'app.record.create.change.商品B','app.record.edit.change.商品B','app.record.index.edit.change.商品B',
'app.record.create.change.商品C','app.record.edit.change.商品C','app.record.index.edit.change.商品C',
'app.record.create.change.その他','app.record.edit.change.その他','app.record.index.edit.change.その他',

], function(event){
var record = event.record;
var syohinA = 10;
var syohinB = 20;
var syohinC = 30;
var sonota = Number(record.その他.value);

record.合計.disabled = true;
record.商品A.disabled = true;
record.商品B.disabled = true;
record.商品C.disabled = true;

record.商品A.value = (record.商品A.value === '購入') ? syohinA : 0;
record.商品B.value = (record.商品B.value === '購入') ? syohinB : 0;
record.商品C.value = (record.商品C.value === '購入') ? syohinC : 0;
record.その他.value = sonota;

record.合計.value = record.商品A.value + record.商品B.value + record.商品C.value + sonota;


return event;
});
})();

柳生様

初めまして、私もつい最近からJavaScriptを学び始めた者で参考になるかわかりませんがご回答させていただきます。

まず、現コードで動いているのでしたらそれは正しいコードではないでしょうか。

必ずしも正しいコードというのはなく人それぞれコードの書き方はあるので自分に合った書き方でいいと思います。

また、的外れだと思いますが、この処理だとkintone標準の計算フィールドで実現可能かと思います。

計算フィールドでIF文を使い、ドロップダウンフィールドに応じて値を代入する、自動計算は入力不可ですので条件を満たしていると思います。

私も難しい関数はわからないので少し綺麗にしたコードを貼っておきます。

少しでも参考になれば幸いです。

// イベントを配列にまとめる

  var events = [

    'app.record.create.submit',

    'app.record.edit.submit',

    'app.record.create.show',

    'app.record.edit.show',

    'app.record.detail.show',

    'app.record.index.edit.show',

    'app.record.create.change.商品A',

    'app.record.edit.change.商品A',

    'app.record.index.edit.change.商品A',

    'app.record.create.change.商品B',

    'app.record.edit.change.商品B',

    'app.record.index.edit.change.商品B',

    'app.record.create.change.商品C',

    'app.record.edit.change.商品C',

    'app.record.index.edit.change.商品C',

    'app.record.create.change.その他ポイント',

    'app.record.edit.change.その他ポイント',

    'app.record.index.edit.change.その他ポイント',

  ]

  // 処理開始

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

  {

    // 変数宣言

    var record = event.record;

    var syohinA = 10;

    var syohinB = 20;

    var syohinC = 30;

    var sonota = Number(record['その他ポイント']['value']);

    // 各フィールドを入力不可に

    record['合計']['disabled'] = true;

    record['商品Aポイント']['disabled'] = true;

    record['商品Bポイント']['disabled'] = true;

    record['商品Cポイント']['disabled'] = true;

    // 購入であればポイントを代入、そうでなければ0を代入

    record['商品Aポイント']['value'] = (record['商品A']['value'] === '購入') ? syohinA : 0;

    record['商品Bポイント']['value'] = (record['商品B']['value'] === '購入') ? syohinB : 0;

    record['商品Cポイント']['value'] = (record['商品C']['value'] === '購入') ? syohinC : 0;

    record['その他ポイント']['value'] = sonota;

    // ポイント合計を代入

    record['合計']['value'] = record['商品Aポイント']['value'] + record['商品Bポイント']['value'] + record['商品Cポイント']['value'] + sonota;

    return event;

mionix

お忙しいところアドバイス頂き、誠にありがとうございます。

参考にさせていただきます。今後ともよろしくお願いいたします。