💭

【kintone】計算された数値の前に、条件によって文字を入力する。

2024/10/22に公開

【やりたいこと】

今回はとある小売店にて、店舗の在庫状況を管理するkintoneのアプリを作ることになりました。
今までその小売店では、Excelを用いて在庫管理を行っており、Excelでは不足している物品について、
不足数の前に△をつけて見やすくしていました。
そこで今回開発するkintoneのアプリでも同様な仕様でアプリを作って欲しい!との依頼が来ています。

【用意するフィールド】

今回は以下のフィールドを「店舗在庫状況」というテーブルに含めている。

  • 物品名:文字列(1行)
  • 実在個数:数値
  • 台帳在庫数:数値
  • 不足数:文字列(1行)

【手順】

1:実在個数のフィールドにて、最小値の設定をする。

今回の場合、店舗の在庫にてマイナス値は発生しないものとしています。
(そもそもマイナス在庫ってなんだ?)
その前提のため、フィールドの設定より、あらかじめ最小値の制限を設定しておきます。

実在個数フィールドの設定内容

2:不足数フィールドの設定を行う。

まず、今回は実在個数から台帳在庫数を引いて、その結果が1よりも多ければ在庫が不足しているので、△をつけて不足数をフィールドに表示。

(実在個数-台帳在庫数)

しかしkintoneのフィールドでは、別途変数を入れるフィールドがないため、
上記の計算式による計算結果を取得したい場合は
その都度(実在個数-台帳在庫数)を計算する必要があります。
従って最終的に入力する計算式は、

IF((実在個数-台帳在庫数)>0,"△"&(実在個数-台帳在庫数),"過不足なし")

となります。以下入力した参考画像です。

不足数フィールドの設定内容

【実行結果】


実行結果の画像
画像のように台帳在庫数に対して不足している場合は△が付いた不足数を、不足していない=差分が0個のい場合は「不足なし」と不足数フィールドに出力されることが確認できました。

補足:なぜ「計算フィールド」ではなく、「文字列(1行)フィールド」なのか?

今回の場合、今回は数字の前に「△」をつける必要があります。△はシステム上、
「文字」と認識されるため、正しく表示させるためには「文字列(1行)フィールド」が適しています。
※別のアプリやシステムで不足数の数値を取得する場合は別途機能を見直す必要があるので注意。

【備忘録:コーディングとの決定的な違い】

通常のコードであれば、コードの中で何度も使う計算式など変数として格納し、
再利用することが一般的かと思いますが、kintoneの標準機能では異なります。
どういうことかというと、

例:AからBを引いて、その結果が1以上であれば「!」、そうでなければ「?」と出力する。

script.js
const A = 3;
const B = 1;
const C = A - B;

if (C >=  1) {
    console.log("!"+C);
} else {
    console.log("?");
}

このようにJavaScriptでは先に変数A変数Bを設定し、
それらを用いた計算結果を変数Cに入れ、変数Cに対して条件と一致しているか否か
判断するコードとなります。
(勿論他の方法もありますが...)

一方でkintoneでは変数などはフィールドの計算式内で定義できないものの、
数字を入れるフィールドAとフィールドB、そしてその計算結果を表示するフィールドCを用意して、
類似した処理を簡単に実装することが可能です。

kintone(文字列1行フィールド)
IF((フィールドA-フィールドB)>= 1,"!"&((フィールドA-フィールドB)),"?")

こちらの計算式ではフィールドA-フィールドBの計算結果が1以上か判断し、
結果が1以上の場合はA-Bの計算結果を表示し、
そうでなければを返す内容となっています。
このようにkintoneでは完結して1行でまとめることができます。
(見方を変えれば変数用意してるのか結局、、、)

Discussion