読者です 読者をやめる 読者になる 読者になる

Labyrinth of Wisdom

-This is My Archive-


【Apex】取引開始をまとめて行う方法

Salesforce

Apexを使用して、リードから取引先責任者への移行(取引開始)をまとめて行うクラスのサンプルを作ってみました。

ただfor文の中でSOQL使用していたりするので、ガバナ制限には気を付けなければいけません。そこは注意してください。

// 取引開始メソッド
public void Convert(){

    // リード状況の「取引開始済み」に該当する値を取得(MasterLabel)
    LeadStatus convertStatus = [SELECT Id, MasterLabel
                                FROM LeadStatus
                                WHERE IsConverted = true
                                LIMIT 1];

    // 取引開始していないリードを取得
    Lead[] leads = [SELECT Id
                    FROM Lead
                    WHERE Status != :convertStatus.MasterLabel];

    // 取得したリードの数だけ取引開始を行う
    for(Lead lead : leads){
        Database.LeadConvert lc = new Database.LeadConvert(); //取引開始済みリードオブジェクトをNew

        Account account = [SELECT Id
                            FROM Account
                            WHERE Name = :lead.Company
                            LIMIT 1];

        try{
            lc.setLeadId(lead.Id);
            lc.setConvertedStatus(convertStatus.MasterLabel);

            // 取引先に同じ会社名がある場合は既存のレコードを使用
            // 新しい取引先は作らない
            if(account != null){
                lc.setAccountId(account.Id);
            }

            lc.setDoNotCreateOpportunity(True); // 商談オブジェクトを作成しない
            Database.LeadConvertResult lcr = Database.convertLead(lc); // 取引開始
        }catch(DmlException e){
            System.debug('エラー:' + e);
        }

    }

}

参考