はじめに
年次ごとの自動採番については、 年次ごとの自動採番を行うワザ でも紹介されていますが、今回はこれを案件毎に採番する方法を解説します。
アプリは、アプリストアの「
営業支援パック
」を利用するので、追加しておいてください。
追加方法は次のページを参考してください。
サンプルアプリを追加する
動作イメージ
案件情報を登録する時の「案件名」の初期値には、次のフィールドの値を連結した値が設定されます。
- 顧客名
- 案件連番
- 案件種類
「案件種類」フィールドの値を変更すると、「案件種類」の値に合わせて「案件名」の値が変わります。
また、顧客管理アプリの「案件連番」フィールドに、顧客ごとの最新の案件連番を記録します。
そのため、案件情報レコードを保存するタイミングで、顧客管理アプリの「案件連番」フィールドを更新します。
デモ環境
デモ環境で実際に動作を確認できます。
ログイン情報は cybozu developer networkデモ環境 で確認してください。
アプリの設定
顧客管理アプリ
顧客ごとの最新の案件連番を管理するためのフィールドを追加します。
普段必要なフィールドではないので、グループで隠しておくのもよいかと思います。
| フィールドタイプ | フィールド名 | フィールドコード | 説明 |
|---|---|---|---|
| 数値 | 案件連番 | 案件連番 | 初期値を0に設定します。 |
案件管理アプリ
案件管理アプリにも、次のフィールドを追加します。
| フィールドタイプ | フィールド名 | フィールドコード | 説明 |
|---|---|---|---|
| 数値 | 案件連番 | 案件連番 | 案件ごとの最新の連番を特定するために使います。 |
| 数値 | 顧客情報レコード番号 | 顧客情報レコード番号 | 顧客管理アプリを更新する際に、レコードを特定するために使います。 |
| ドロップダウン | 案件種類 | 案件種類 | 項目を次のように設定します。
|
上記フィールドを追加した後、「顧客名」ルックアップフィールドの設定を変更します。
[ほかのフィールドのコピー]にて、[案件連番]および[顧客情報レコード番号]の値を取得するように設定します。
サンプルコード
サンプルソースコードは次のとおりです。
エディタにコピーして、38行目の顧客管理アプリのアプリIDをご自身の環境に合わせて書き換えてください。
ファイル名を「sample.js」、文字コードを「UTF-8」で保存し、案件管理アプリに適用してください。
|
|
サンプルコードの解説
フィールドの値を取得・編集する
レコード追加・編集画面で「案件種類」を変更した際に、次のフィールドの値を取得して結合し、「案件名」にセットします。
- 顧客名
- 案件連番
- 案件種類
案件ごとの最新の連番を特定するために、ルックアップで取得した顧客管理アプリの「案件連番」の値を使用します。
|
|
連番を更新する
レコードを保存する際に、「案件連番」フィールドの値をインクリメントしてから、その結果を使って、顧客管理アプリの「案件連番」フィールドの値を更新します。
連番を更新するレコードの特定には、ルックアップで取得した顧客情報レコードIDを使用します。
|
|
注意事項など
顧客管理の案件連番更新に関する一連の処理は、案件登録時のapp.record.create.submitイベントを元に、別のアプリのフィールドを更新します。
しかし、顧客管理が更新中の場合や、削除されている場合、連番は更新されません。
また、サンプルコード内のchange_events変数に指定されていないフィールドの値を変更した場合は、手作業の修正による対応が必要となります。
以上のように、顧客ごとの連番整合性は限定的ですのでご注意ください。
このTipsは、2024年8月版kintoneで動作を確認しています。
