見出し画像

SalesforceカスタマイズTips:参照関係を利用した積上集計の作成

こんにちは。ROBOT PAYMENTの中野です。
今回初めてnoteを投稿させていただきました。

私は請求管理ロボ for Salesforceという商材をリリース時から担当しており、
本商材が関連するSalesforceのカスタマイズについてこちらでは投稿していこうと思います。

<請求管理ロボ for Salesforce>
https://appexchangejp.salesforce.com/appxListingDetail?listingId=a0N3000000CNiGDEA1

まず初めに

私がSalesforceを触り始めてから、4年ほどたちますが、印象として、
ノンコーディング開発ツールが多く搭載されており、エンジニアでなくても
システムの設計開発が容易にできるシステムだと感じています。
その為、こちらのnoteではコーディング(Apex、Visualforce)を用いず、
どういったことができるのか
を中心に取り上げていきます!


参照関係でも構築できる積上集計の作成方法

Salesforceには積上集計という非常に便利な機能がありますが、
こちらは以下の課題があり、実装に困ることがあるかと思います。

<課題>
1.主従関係を結ばなければいけなく、関係性的に主従関係を結べない 
  オブジェクトでは利用できない

特に昨今様々なAppExchangeがリリースされている中で、
AppExchangeのオブジェクトに対して、主従関係がユーザ側では設定できないので、非常に重要な情報であっても、情報の利活用に対してハードルが発生してきます。


Flowの活用で積上集計が作成できます!

私がお客様のオンボーディングで活用するケースが多い標準開発ツールとしてFlowというものがあり、こちらを活用すると上記を解消することができます。

つくってみよう!

請求管理ロボ for Salesforceの情報を利用し、以下の内容を実装してみます


<題材>
顧客の未回収金額を積み上げ、取引先に未回収金額のトータル金額を反映

営業の方が追加取引を行う際に、現在の取引先の与信状況を担当部門の方に
確認する手間を解消してしまいましょう!という題材になります。
※題材として自社製品を取り上げ、大変恐縮です・・・

作成ステップ1
まず、最初に取引先に通貨型のカスタム項目を作成します。

画像1


・表示ラベル:未回収金額
・API参照名 :UncollectedAmount

作成ステップ2
次はいよいよ、Flowをご説明します。
Flowには大きく分けると二分類の種別があり、一つが自動起動、もう一つが
ボタン起動になります。
今回は、一旦、自動起動処理でご説明を進めていきます。

画像2

・フロー種別:レコード変更フロー
※毎月同一の取引先に対して10請求書以上作成している場合は、
 Salesforceのガバナ制限に抵触する可能性が高くなるので、
 ボタン起動をお勧めします。


作成ステップ3
作成時点であるのか、または作成更新であるのかという起動するポイントを
設定します。
また、対象のオブジェクトとして、請求書オブジェクトを選択します。

画像3

・起動タイミング  :作成更新
・処理実施タイミング:レコード保存後
・対象オブジェクト :請求書


作成ステップ4
★作業1
次に左端のツールボックスから「レコードを取得」のアイコンをパネルの方に移動します。
表示ラベルやAPI参照名については任意の内容で構いませんが、一旦以下の内容を設定します。

・表示ラベル:請求書取得
・API参照名 :GetBillCollection
・オブジェクト:請求書

★作業2
そのうえで、「条件の要件:条件を満たしている」を選択し、以下の条件を設定します。

画像4

<条件1>
・項目 :取引先(API参照名:KEIRINOMIKATA__AccountId__c)
・演算子:次の文字列と一致する
・値  :{!$Record.KEIRINOMIKATA__AccountId__c}
※「$Record」は同Flowを起動させた請求書レコードになり、
 そのレコードに登録された取引先のレコードと合致する請求書レコードを
 検索するための指定になります。
<条件2>
・項目 :停止済みフラグ(API参照名:KEIRINOMIKATA__IsStop__c)
・演算子:次の文字列と一致する
・値  :{!$GlobalConstant.False}
※請求管理ロボ for Salesforceでは、間違えて作成した請求書を
 無効にするための処理があり、同フラグは無効化された請求書を
 除外して、レコードを抽出するための条件になります。

★作業3
請求書のレコードを取得する順番については、今回、何かの情報を基に
昇順降順でレコードを取得したいというものではないため、「並び替えなし」を選択していただきます。

★作業4
「保存するレコード数」として「すべてのレコード」を選択します。
「最初のレコードのみ」を選択した場合、1レコードしか情報取得が
できなくなり、すべてのレコード回収状況を拾えなくなるため、
今回の目的に対しては、「すべてのレコード」を選択していただきます。

★作業5
レコードデータの保存方法として、「項目を選択して変数を割り当てる(高度)」を選択し、条件に合致したレコード全件を保存するためのレコード
コレクション変数を作成します。
新規リソースを選択し、以下の条件を設定します。

画像5

<設定内容>
・リソース種別:変数
・API参照名  :BillCollection
・データ型  :レコード
・オブジェクト:請求書
※フロー外部での可用性には入力、出力ともにチェックをつけます。

ここで重要なのが、すべてのレコードを取得する場合、「複数の値を許可(コレクション)」にチェックをつけることになります。
こちらにチェックをつけていない場合、複数レコードを保存する変数
(=コレクション変数)として利用できなくなります。

★作業6
取得したレコードの変数に保存する項目を選択します。

画像6

<変数保存する項目>
・表示ラベル:未消込金額
・API参照名 :KEIRINOMIKATA__UnclearingAmount__c
※上記の項目が請求管理ロボ for Salesforceの未回収金額を表す
 項目になります。


作成ステップ5
★作業1
次に左端のツールボックスから「ループ」のアイコンをパネルの方に移動します。
表示ラベルやAPI参照名については任意の内容で構いませんが、一旦以下の内容を設定します。

・表示ラベル   :未消込金額集計
・API参照名    :SumUpUncollectedAmount
・コレクション変数:作成ステップ4の作業6で作成したコレクション
 変数を設定

この作成ステップで使うループ要素は複数のレコードを取得し、
変数保存したコレクション変数から1レコードづつレコードを取り出し、
金額の集計をしたり等の処理を実施するために利用します。


作成ステップ6
★作業1
次に左端のツールボックスから「割り当て」のアイコンをパネルの方に
移動します。表示ラベルやAPI参照名については任意の内容で構いませんが、一旦以下の内容を設定します。

・表示ラベル   :未消込金額の割り当て
・API参照名    :AssingUncollectedAmount

★作業2
ループ処理で流されてきたレコードの未消込金額を加算していくための変数を作成します。

画像7

<設定内容>
・リソース種別:変数
・API参照名  :TotalUncollectedAmount
・データ型  :通貨
・少数点の位置:0
※フロー外部での可用性には入力、出力ともにチェックをつけます。


★作業3
上記までで作成した変数等を以下のように設定します。

画像8

・変数 :作成ステップ6の作業2で作成した変数を設定
・演算子:追加
・値:{!SumUpUncollectedAmount.KEIRINOMIKATA__UnclearingAmount__c}


※こちらの値はループ処理によって割り当て処理に1件づつ流されてきた
 レコードに保存されていた未消込金額が値としてセットされていきます。


作成ステップ7
★作業1
次に左端のツールボックスから「レコードを更新」のアイコンをパネルの方に移動します。
表示ラベルやAPI参照名については任意の内容で構いませんが、一旦以下の内容を設定します。

・表示ラベル :未回収金額の更新
・API参照名  :UpdateUncollectedAmount
・オブジェクト:取引先


★作業2
そのうえで、「条件の要件:条件を満たしている」を選択し、以下の条件を設定します。

<抽出条件>
・項目 :取引先Id(API参照名:Id)
・演算子:次の文字列と一致する
・値  :{!$Record.KEIRINOMIKATA__AccountId__c}

★作業3
最後に更新を行う値を以下のように設定します。

・項目:未回収金額(API参照名:UncollectedAmount__c)
・値 :{!TotalUncollectedAmount}
※この値は未回収金額の集計結果が保存されている変数になります。


作成ステップ8
これまでの2~7までの作成ステップが完了しましたら、以下の順で線を引き、保存します。

画像9

※保存する際の名称に特に指定はありませんが、こだわりがなければ、
 以下で設定してみてください。

・フローの表示ラベル:取引先に未回収金額反映
・フローのAPI参照名 :UpdateUncollectedAmount

最後に有効化を実施すると未回収金額を取引先に反映する処理の完成です!


請求書レコードが作成されたり、消込結果が請求書オブジェクトに反映されると以下のように未回収金額が取引先に反映されます!

画像10


応用として、この与信上限額などの通貨項目と与信上限額と未回収金額の差分を数式で表した取引可能額のような項目を設け、商談内に設定した金額が取引可能額を上回っている場合、エラーを出す入力規則を用意したりすることで、与信金額以上の取引実施を防いだりと活用の幅がありますので、宜しければ実践してみてください!


この記事が気に入ったらサポートをしてみませんか?