【Salesforce】簡易版勤怠管理システムを作ってみる②

勤怠管理システム作成の続きです。
[簡易版勤怠管理システムを作ってみる①](https://qiita.com/yickey/items/336340bcaa060c6a2913)

リストビューに"出勤"ボタンと"退勤"ボタンを追加します。
"出勤"ボタンを押下すると、現在時刻を出勤時刻に格納したレコードが作成されます。
"退勤"ボタンを押下すると、選択したレコードの退勤時刻を現在時刻に更新します。

![1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3255462/78f4c26a-816d-fe16-bd4a-c3721b25f6a2.gif)

## 1.出勤フローの作成
出勤処理を行う画面フローを作成します。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3255462/5e9d4feb-9054-ded5-c6e7-4b6776252030.png)

◯リソース
レコードを作成するための変数を用意します。
1.リソース種別 : 変数
　API 参照名 : new_attendance
　データ型 : レコード
　オブジェクト : 勤怠管理

◯割り当て
"出勤"ボタンを押下した時刻を出勤時刻に格納します。
･{!new_attendance.StartTime__c}
　次の文字列と一致する
　{!$Flow.CurrentDateTime}
 ･{!new_attendance.Status__c}
　次の文字列と一致する
　リモートワーク
 ･{!new_attendance.Employee__c}
　次の文字列と一致する
　{!$User.Id}
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3255462/9c120981-9729-8400-b62c-a62f4c1c09e4.png)

◯レコードを作成
"勤怠管理"オブジェクトのレコードを作成します。
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3255462/73150ca6-915c-7b71-d1d5-ff03cb996e91.png)

◯画面
表示テキストを配置して出勤処理が完了したことをユーザに伝えます。
"{!$User.LastName}さん、おはようございます。"
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3255462/76dd3cc6-83b1-d344-c107-5aa678941afb.png)

◯有効化
フローを保存して有効化します。
フローの表示ラベル : 出勤フロー
フローの API 参照名 : arriving_work_flow


## 2.退勤フローの作成
退勤処理を行う画面フローを作成します。
![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3255462/d905bd57-4e99-ce12-423e-db140f0de0d9.png)

◯リソース
リストビューで選択されたレコードのIDを格納する変数を用意します。
1.リソース種別 : 変数
　API 参照名 : ids
　データ型 : テキスト
　複数の値を許可 : チェック
　入力で使用可能 : チェック
　※"ids"は、リストビューで選択されたレコードのIDを格納する特別な変数
![12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3255462/93a99f16-acc1-c489-0169-43d78d80bea3.png)

リストビューで選択されたレコード数を格納する変数を用意します。
2.リソース種別 : 変数
　API 参照名 : count
　データ型 : 数値
　小数点の位置 : 0

◯割り当て
選択されたレコード数を"count"変数に格納します。
![13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3255462/3d76e250-5fa2-f41d-7fd9-a8571c7dcdd0.png)

◯決定
選択されたレコードが1件であるか確認します。
1件でなければエラー画面を表示して処理を終了します。
![14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3255462/698d7c3d-33e7-b62f-6a41-aba97dc37cd2.png)

◯画面 ([エラー]レコード選択)
ユーザにレコードを1件選択するよう促します。
![15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3255462/bfa54149-c306-4942-8461-2b34083d9c1a.png)

◯ループ
"ids"変数からレコードIDを1件ずつ取得します。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3255462/2328079e-66d6-10cf-951c-45d075d964a0.png)

◯レコードを取得
選択された"勤怠管理"オブジェクトのレコードを取得します。
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3255462/44278954-9b2d-4003-2c50-7ef3ee086e6e.png)

◯割り当て
"退勤"ボタンを押下した時刻を退勤時刻に格納します。
･{!get_attendance.EndTime__c}
　次の文字列と一致する
　{!$Flow.CurrentDateTime}
 ･{!get_attendance.RestHours__c}
　次の文字列と一致する
　1
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3255462/0d84c004-2b2f-7e9b-87f8-c91446be8d34.png)

◯レコードを更新
"勤怠管理"オブジェクトのレコード情報を更新します。
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3255462/c5a13e14-8887-751e-d8ed-0dca18be59bc.png)

◯画面 (挨拶)
表示テキストを配置して退勤処理が完了したことをユーザに伝えます。
"{!$User.LastName}さん、お疲れ様でした。"
![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3255462/20e5c879-81b6-2d79-7011-927d76c7b434.png)

◯有効化
フローを保存して有効化します。
フローの表示ラベル : 退勤フロー
フローの API 参照名 : leaving_work_flow

## 3.カスタムボタンの作成
"勤怠管理"オブジェクトの"出勤"ボタンと"退勤"ボタンを作成します。

オブジェクトマネージャ → "勤怠管理"オブジェクトから
"ボタン、リンク、アクション"を選択します。
"新規ボタンまたはリンク"ボタンを押下します。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3255462/5f81b208-e1fd-e378-2b4e-14cfff562eb2.png)
◯"出勤"ボタン
表示ラベル : 出勤
名前 : arriving_work
表示種別 : リストボタン
　チェックボックスの表示 : チェック
コンテンツソース : URL
差し込み項目 : /flow/arriving_work_flow?retURL=lightning/o/Attendance_Record__c/list?filterName=00BGC00000Rl1wq2AB
※/flow/"フローapi名"?retURL="リストビューのURL"
![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3255462/2a971c16-a183-1dfe-6784-7581e5be715d.png)

◯"退勤"ボタン
表示ラベル : 退勤
名前 : leaving_work
表示種別 : リストボタン
　チェックボックスの表示 : チェック
コンテンツソース : URL
差し込み項目 : /flow/leaving_work_flow?retURL=lightning/o/Attendance_Record__c/list?filterName=00BGC00000Rl1wq2AB
※/flow/"フローapi名"?retURL="リストビューのURL"
![22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3255462/bb85310a-fe7c-7537-5b71-ba8827787c31.png)

## 4.カスタムボタンの表示
リストビューに"出勤"ボタンと"退勤"ボタンを表示します。

オブジェクトマネージャ → "勤怠管理"オブジェクトから
"リストビューボタンレイアウト"を選択します。
"リストビュー"レイアウトの"編集"ボタンを押下します。
※"リストビューボタンレイアウト"が見つからない場合は、
　"勤怠管理"オブジェクトの"検索を許可"にチェックする
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3255462/e0b5e2b9-f8ed-f6d8-fd64-2369cf4c4ffc.png)

"カスタムボタン"セクションにて"選択したボタン"に"出勤"と"退勤"を追加します。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3255462/593ac073-a3dd-a630-3ba0-fc51012f7513.png)

## 完成
フローとカスタムボタンを使用して、勤怠管理システムの利便性が向上しました。
次回は、フローと承認プロセスを組み合わせて"有給申請"ボタンを実装します。
[簡易版勤怠管理システムを作ってみる③](https://qiita.com/yickey/items/afab846f06d03949aab6)