0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

kintoneで詳細画面を開いたら関連レコードの項目を集計して保存する

Last updated at Posted at 2021-11-17

勝手に公式サイトの下記Tipsを改造してみたいと思います。

関連レコードの項目を条件付きで集計

スペースフィールドに表示するだけだった集計値ですが、
詳細画面を開いたら「集計値フィールド」に上書き保存するようにしてみたいと思います。

アプリの準備

というわけで、まずは、↓コチラを完成させてください👀
関連レコードの項目を条件付きで集計

こんな感じに集計値が表示されたら次のステップ

image.png

フィールドの追加

数値フィールドを1つ追加しましょう。
スペースフィールドとラベルフィールドは削除します。

フィールド種類 フィールドコード 備考
数値 Aプラン小計 桁区切りを表示するにチェック!

image.png

JavaScript書き換える

改造の方針

集計値と、Aプラン小計(数値フィールド)の値が異なっていたら更新するようにします。
※スペースフィールド、ラベルフィールドは使いません。

コード

なるべく原作リスペクトで書きましたが
var は const, let に変更したり functionはアロー関数に変更したりしました。
あと、forループで集計していた部分はreduce使いました。

(() => {
  "use strict";
  kintone.events.on(["app.record.detail.show"], (event) => {
    const clientRecordId = event.recordId;

    // 関連レコード集計用リクエストパラメータ準備
    const relatedAppId = kintone.app.getRelatedRecordsTargetAppId("案件一覧");
    const query =
      '顧客管理レコード番号_関連レコード紐付け用="' +
      clientRecordId +
      '" and 提案プラン in ("Aプラン")';
    const outputFields = ["合計費用"];
    const appUrl = kintone.api.url("/k/v1/records");
    const params = {
      app: relatedAppId,
      query: query,
      fields: outputFields,
    };

    kintone.api(appUrl, "GET", params, (resp) => {
      // 合計金額集計
      const amount = resp.records.reduce(
        (preV, p) => preV + parseFloat(p.合計費用.value),
        0
      );

      // Aプラン小計計算結果と、数値フィールドAプラン小計の値が同じだったら更新しない
      if (Number(event.record.Aプラン小計.value) === Number(amount)) {
        return event;
      }

      // 更新用リクエストパラメータ
      const body = {
        app: kintone.app.getId(),
        id: kintone.app.record.getId(),
        record: {
          Aプラン小計: {
            value: amount,
          },
        },
      };

      // レコード更新(数値フィールドの更新)
      kintone.api(
        kintone.api.url("/k/v1/record", true),
        "PUT",
        body,
        (resp) => {
          // 画面リロード
          location.reload();
        }
      );
    });
  });
})();

まとめ

詳細画面に集計値を表示するだけではなくて、保存したい!という声をちらほら聞いた気がしたので、
詳細画面開くだけで更新するような改造をしてみました。
実際の動作↓

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?