フローで積み上げ集計(その1)に続いて、その2では最少と最大のフローでの設定方法を紹介いたします。
⚠️注意
その1でもご案内していますが、標準機能の積み上げ集計項目と違い、レコードトリガフローの場合は、既に稼働しているオブジェクトであれば、既存レコードに対して何かしらのメンテナンスが必要になります。データローダで一括更新や、メンテナンス対応用に別のフローを作成するなどの対応が必要です。
また、条件も稼働後に修正しても積み上げ集計項目のように既存レコード分は反映されないので、こちらもメンテナンスが必要になります。
サンプルの要件
親:取引先(Account)に、子:商談(Opportunity)のフェーズが受注の件数、金額を積み上げ集計する
サンプルの要件のような条件がない場合は、トリガの条件は「レコードが作成された」、エントリ条件の[条件の要件]は「なし」の設定で良いかと思います。また、親の参照項目の入力が必須ではないときは、「親のIdがNullでない」の条件を追加するなど、要素の条件は要件に合わせるようにしてください。
<最少、最大の設定方法>
1.[設定] → [フロー] → [新規フロー] → [レコードトリガフロー] → [自由形式]をクリック(自動レイアウトでも可。お好きな方でどうぞ)
2.開始を設定します。
・
オブジェクト:商談(子オブジェクト)
・
フローをトリガする条件:レコードが作成または更新された
・
エントリ条件を設定:
[条件の要件] カスタム条件ロジックに一致
[条件ロジック] (1 AND 2) OR (3 AND 4)
| 項目 | 演算子 | 値 |
1 | StageName (条件となる項目) | 次の文字列と一致する | 08-受注(条件の値) |
2 | StageName (条件となる項目) | 変更済み | True |
3 | StageName (条件となる項目) | 次の文字列と一致する | 08-受注(条件の値) |
4 | Amount (集計する項目) | 変更済み | True |
・
フローを最適化:アクションと関連レコード
3.要素から[レコードを取得]をドラッグし以下のとおり設定します。
・
オブジェクト:商談(子オブジェクト)
・
レコードを絞り込み:[条件の要件] すべての条件に一致(AND)
| 項目 | 演算子 | 値 |
1 | AccountId | 次の文字列と一致する | $Record > 取引先 ID |
2 | StageName | 次の文字列と一致する | 08-受注 |
・
最少の場合…レコードを並び替え:[並び替え順]昇順 [並び替え] Amount(集計する項目)
・
最大の場合…レコードを並び替え:[並び替え順]降順 [並び替え] Amount(集計する項目)
・
保存するレコード数:最初のレコードのみ
・
レコードデータの保存方法:すべてのデータを自動的に保存
4.[レコードを取得]要素をコネクタで接続します。
5.要素から[レコードを更新]をドラッグし以下のとおり設定します。
・
更新するレコードを検索してその値を設定する方法:
レコードを識別する条件を指定し、項目を個別に設定
・
オブジェクト:取引先(親オブジェクト)
・
レコードを絞り込み:[レコードを更新する条件の要件] すべての条件に一致(AND)
項目 | 演算子 | 値 |
Id | 次の文字列と一致する | $Record > 取引先 ID(開始したレコードの親のID項目) |
・
項目値をレコードに設定:
項目 | 値 |
MinCcontractAmount__c (最少または最高金額を入力する項目) | get_Opportunity 商談 > 金額 (3.で取得したレコード(単一)変数の集計する項目) |
6.[レコードを更新]要素を接続します。
【一方のみ】
【最少、最大両方の場合はそれぞれで取得し、レコード更新の項目値もそれぞれ設定】
7.最後にデバッグ、保存、有効化をします。
8.レコードを削除した場合のトリガのフローを作成します。
※業務フロー上レコードを削除することがなければ、この手順は不要です。 1.と4.~7.は同じ内容で、
2.の開始設定と
3.のレコードの取得を削除用で設定します。
[別名で保存]をクリックし、新規フローで保存して修正すると簡単です。
【2.開始設定】 ・オブジェクト:商談(子オブジェクト)
・フローをトリガする条件:レコードが削除された
・エントリ条件を設定:
[条件の要件] すべての条件に一致(AND)
| 項目 | 演算子 | 値 |
1 | StageName (条件となる項目) | 次の文字列と一致する | 08-受注 |
【3.レコードを取得】※削除する開始レコードを除く条件の3が追加
・
オブジェクト:商談(子オブジェクト)
・
レコードを絞り込み:
[条件の要件] すべての条件に一致(AND)
| 項目 | 演算子 | 値 |
1 | AccountId (条件となる項目) | 次の文字列と一致する | $Record > 取引先 ID |
2 | StageName (条件となる項目) | 次の文字列と一致する | 08-受注 |
3 | Id | 次の文字列と一致しない | $Record > 商談 ID |
・
最少の場合…レコードを並び替え:[並び替え順]昇順 [並び替え] Amount(集計する項目)
・
最大の場合…レコードを並び替え:[並び替え順]降順 [並び替え] Amount(集計する項目)
・
保存するレコード数:最初のレコードのみ
・
レコードデータの保存方法:すべてのデータを自動的に保存
【結果確認】
商談のフェーズを受注にしてみます。
RRR建築事務所株式会社の最少成約金額の「
¥3,317,760」が、成約金額(最少)項目に入力され、最高成約金額の「
¥12,773,280」が、成約金額(最高)項目に入力されました。
次の商品を削除して商談の金額を変更してみます。
商談「RRR建築事務所株式会社 ライセンス追加提案_20211122」の成約金額が「¥12,773,280-¥1,360,800-¥2,138,400=¥9,274,080」になり、成約金額(最高)項目にも「
¥10,115,280」が入力されました。
フェーズが受注の商談を削除してみます。
最少成約金額「¥3,317,760」の商談を削除すると、成約金額(最少)項目に「
¥9,274,080」が入力されました。
おまけ
フローで積み上げ集計(その1)と(その2)で紹介した積み上げ集計の件数、合計、最少、最大、平均をすべて行いたい場合は、それぞれ別々のフローを作成するのではなく、1つにまとめる必要があります。その場合は、カウンター用の変数を使用します。
フロー等に慣れていない方は少し複雑に感じてしまうかもしれませんが、カウンターを使わないと
①最少金額のレコード取得、
②最大金額のレコード取得、
③合計、平均のレコード取得と3つのレコード取得要素を使用することになってしまいます。
今回は完成図と簡単な説明だけご紹介したいと思います。
【簡単な説明】・カウンター変数のデフォルト値を1としました。
・レコードの取得の並び替えで昇順としましたので、今回はカウンターが1の時に最少成約金額を変数に割り当てしています。
・ループ処理の割り当て時にカウンターに+1をしています。
・カウンターの数がレコード取得の件数と一致したら、最大成約金額を変数に割り当てしています。
・最後に取引先の項目を件数、合計、最少、最大、平均の変数で更新するようにしています。