【kintone】組織に紐づく承認者を取得(JSカスタマイズ)
kintone カスタマイズでよく取り扱う事例として、承認プロセスのために部署の担当者や上長を取得したいといったケースがあります。
一例として、ご参考程度になればと思います。
アプリの作成
今回は事業として店舗があり、仕入先を登録するようなケースを想定します。
仕入先アプリでは、従業員が仕入先と登録します。
登録後は承認プロセスが設定されていて、店舗ごとに異なる店長とエリアマネージャーに作業者が割り当てされていきます。
ー 作るアプリ ー
・店舗マスタアプリ
⇒店舗毎に固有の様々なデータを登録します。
・仕入先アプリ
⇒新規の仕入先を登録する場合に、従業員が仕入先情報を入力し、店長とエリアマネージャーの承認を得て仕入ができるようになります。
店舗マスタアプリの作成
今回、仕入先アプリからはルックアップフィールドで店舗マスタを取得します。
JavaScriptカスタマイズで利用する場合のルックアップフィールドは、重複しないユニークな値を持っているフィールドをキーにすることが重要になります。
重複する値や候補が存在する場合は、ルックアップの取得操作をJavaScript上から行えない場面が出てきます。
店舗マスタでは、Cybozu共通管理で作成している組織コードを入力するフィールドを作成します。
こちらが重複しない一意の値となり、仕入先アプリから取得する際のキーになります。
完成イメージ↓

Cybozu共通管理_組織コードフィールドは、文字列フィールド、必須、値重複禁止にします。
登録するデータは共通管理の組織コードを登録していきます。


仕入先アプリの作成
仕入先では、申請者の店舗には「優先する組織」を設定しておきます。
こちらをすることで、申請者がレコードの新規作成を行った際にCybozu共通管理のユーザー情報で設定している優先する組織が初期表示されるようになり、申請者側で設定の手間を省くことができます。
また、承認プロセスでは「月間の仕入について」が5万円を超える場合は店長の承認が必要、20万円を超える場合には店長とエリアマネージャーの承認が必要といった、流れとして作成しています。
今回、こちらのプロセス設定については省きますが別記事で利用するためにこのような構成としています。
完成イメージ↓

超重要なルックアップフィールドの設定です。

JavaScriptでコードを書く
下準備ができたので、仕入先にJavaScriptファイルをアップロードします。
コードは以下で、新規レコード作成時と申請者の店舗を変更した場合に、ルックアップフィールドに自動で組織コードが入り、ルックアップ動作をするようにしています。
(()=>{
'use strict';
const setOrgEvents = [
'app.record.create.show',
'app.record.create.change.申請者の店舗',
'app.record.edit.change.申請者の店舗',
]
kintone.events.on(setOrgEvents, (event)=>{
const isOrg = event.record['申請者の店舗'].value.length > 0;
if(!isOrg){
event.record['店舗_組織コード'].lookup = 'CLEAR';
} else {
event.record['店舗_組織コード'].value = event.record['申請者の店舗'].value[0].code;
event.record['店舗_組織コード'].lookup = true;
}
return event;
});
})();
