見出し画像

Salesforce|使いみちに困る商談完了予定日の最適解を考える

Salesforceの商談管理でちょっと厄介な項目、「完了予定日(CloseDate)」の運用はどうしてますか?デフォルト必須項目なので日付を入れなければいけないけど、特に入れる予定日もないし、気づいたら適当な日付を入れて使われない項目になってしまいがち。
営業からは「邪魔だから外してほしい」と言われるけど、外すこともできず、、

そんなくせ者、完了予定日の活用方法を考えてみました。

完了予定日のクセある挙動

この完了予定日ですが、ただ必須項目なだけではなく、条件によって使いづらい挙動をします。

・リードから取引の開始を行って作成した場合は、デフォルトに今四半期の最終日が入ってしまう
4月始まりの会社の場合、4/1から6/30までは6/30が入ってしまいます。4/1時点だと遠すぎるし、6/30だと近すぎるし、あまり意味のない日付が入ってしまいます。
さらに、デフォルト値が入ってしまうと入力規則で修正を促すことも難しく、結果的によくわからない日付がはいるだけの項目になってしまいます。


・商談をクローズした時、未来日付が入ってる場合は今日の日付に書き換えられてしまう
契約開始日的な項目として使おうと思っても、クローズ時に未来日付が入っていると、クローズした日に書き換えられてしまいます。他の目的で活用しようとしても結局書き換わってしまうので使いみちもなくなってしまいます。
細かい挙動はこちらのヘルプにも記載されています。
https://help.salesforce.com/articleView?id=000328715&language=ja&type=1&mode=1

この2点、地味に困っている方は結構いるのではないでしょうか?

最適解|完了予定日を必要な項目として活用する

どうせ必須項目なら必要な項目として活用してもらいたい。ということで、結論、契約開始日を入れる運用が一番適してると思い、改修を行いました。

「クセある挙動はどうするの?」

と思うかもしれませんが、回避方法もあるので合わせてご紹介します。

1.契約開始日に名前を変える

まずは完了予定日の名称を契約開始日に変更します。
設定のクイック検索に「タブと表示ラベルの名称変更」と入れて選択してください。
商談を選び、完了予定日の項目を「契約開始日」に変更しましょう。

スクリーンショット 2019-11-30 23.00.52

こちらのヘルプにも変更方法が書いてあります。
https://help.salesforce.com/articleView?id=customize_rename.htm&type=5

CloseDateの名称変更は完了です。

2.デフォルトの今四半期最終日が入ってしまう処理を制御する

次にデフォルトで今四半期最終日が入ってしまう処理を制御します。
方法としては、ワークフロールールやプロセスビルダーがありますが、日付の計算が楽なこと、他にも作成前の処理を行っていたことからApexトリガーを使用しました。
ApexトリガーのBefore Insertを使って、作成前に日付を書き換える処理を追加しました。今回は平均の受注日数が45日だったことから、作成日から45日後に設定されるようにしました。実際のTriggerHandler処理はこちらです。

/**
* before insert
*/
public void OnBeforeInsert( List<Opportunity> news ){

    for( Opportunity o : news ) {
        //デフォルトだと4半期末が入ってしまうので、45日後に書き換え
        if(o.CloseDate != null){
            o.CloseDate = Date.today().addDays(45);
        }
    }
}

これで作成前にかならず45日後が追加されます。
更新商談の場合など、指定日のままにしたい場合は、「種別=更新商談」の様に条件を追加しても良いでしょう。

3.未来日付が入ったままクローズした時に値を保持する

最後は未来日付が入ったままクローズした時に今日日付が入ってしまう問題を回避します。

当初ApexトリガーのBeforeUpdateにクローズしたら、完了予定日に元の日付を入れる処理を実装したのですが、うまく動かず今日の日付が入ってしまいました。
そのため、元の日付保持に関してはプロセスビルダーで制御することにしました。

プロセスビルダーで「成立フラグ=true」「レコードに指定の変更が行われた場合にのみアクションを実行しますか?にチェック」を入れた条件を作成します。
アクションに数式で「Priorvalue([Opportunity].Closedate)」を指定します。

スクリーンショット 2019-11-30 23.21.47

これでクローズされたときも勝手に書き換わらなくなります。

---

以上で設定は完了です。契約開始日として運用すれば、必然的に完了目標日を入れてくれるようになり、受注手前で確定値に更新してくれます。見込み計算もより正確にできるようになりますね。
Salesforce商談完了予定日の使いみちで困ってる方は、契約開始日としての活用にチャレンジしてみてください!

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