Customine のやること「自動採番を行う」を使うと簡単に連番を振ることが可能ですが、要件によっては自動採番によって振られた連番(以降「親番号」と呼びます)に更に枝番をつけたいことがあります。こちらでは親番号に基づいて枝番を付与するカスタマイズをご紹介します。
想定するアプリ
見積書アプリを想定し、以下のように 3 つのフィールドを用意します。
見積書番号_親番号:数値フィールド
見積書番号_枝番:数値フィールド
見積書番号:文字列フィールド
実現する動作
- 自動採番によって「見積書番号_親番号」に連番を付与します。
- 1.のように新規に親番号が振られたときには「見積書番号_枝番」は 1 を入れます。
- 「レコードの再利用」によって既に「見積書番号_親番号」が付与されているレコードを再利用した場合には枝番を付与します。
- 「レコードの作成」(新規作成)によって、既に存在する「見積書番号_親番号」と同じ番号を手動で入力した場合も枝番を付与します。
カスタマイズ内容
自動採番の部分はテンプレート「空き番号が出ない自動採番」を元にして、以下のように設定します。
※テンプレートによって自動で設定されるやること「フィールドを無効化する」「フィールドをクリアする」は今回は使わないため、アクションごと削除します。
アクション 12番 のマッピング部分を抜粋しますと、親番号には自動採番によって振られた番号、枝番には 1(固定値)、見積書番号は親番号と枝番である 1 をハイフンで繋いだ文字列となるよう設定します。
続いて、「レコードを再利用する」で既に親番号が振られたレコードを再利用する場合のカスタマイズです。
このカスタマイズは
アクション 21番:見積書アプリ内で同じ親番号を持つレコードを抽出
アクション 22番:抽出したレコード内で最大の枝番を取得
アクション 23番:枝番と見積書番号をセット
という流れとなります。
アクション 23番 のマッピング部分を抜粋しますと以下のようになります。枝番にはアクション 22 番で取得した「既に存在する枝番の最大値」に 1 を加えています。
「レコードの再利用」を使用する場合のカスタマイズは以上で完了です。
同じ親番号を使用するときには常に「レコードの再利用」によってレコードを作成する運用の場合以下の設定は必要ありませんが、「レコードの追加(新規作成)」画面で同じ親番号を手動で入力することを想定する場合、以下の設定を追加で行います。
やることは先程と同じですが、アクション 31 番の条件が変わっています。このカスタマイズは新規レコードの作成を想定しているため、「親番号が空ではない」かつ「枝番が空」の時に同じ親番号を持つレコードを抽出して、枝番を付与する設定となります。
以上のように設定していただくことで、新規のレコード作成時には「親番号-1」という番号が作成され、同じ親番号を持つレコードを作成する場合にはどんどん枝番が追加される設定となるかと思います。
フィールドの無効化や自動採番のプレフィックス・サフィックスなどはご紹介したカスタマイズの動作には影響を与えませんので、ご要件に合わせて設定いただければと思います。
※注意点
このカスタマイズで「再利用モードでレコードの追加画面を表示した時」に枝番が付与されます。
もし、ユーザーの方が「レコードの再利用」ボタンを押した後長時間操作をせず、その間に他のユーザーが同じレコードの再利用を行った場合には枝番が重複することとなります。
これを防ぐためには、見積書番号を重複禁止に設定しておいて枝番が重複した場合には保存時にエラーとするなどの設定が必要となります。