REST -OAuth 呼び出しを介してリードをアカウントに変換する必要があります。作成、更新 (編集)、詳細リード フィールドはできますが、変換することはできません。
SOAP API 経由でも同じことが可能であることがわかりましたが、REST OAuth のみに従っています。
REST -OAuth 呼び出しを介してリードをアカウントに変換する必要があります。作成、更新 (編集)、詳細リード フィールドはできますが、変換することはできません。
SOAP API 経由でも同じことが可能であることがわかりましたが、REST OAuth のみに従っています。
はい。REST コール用の Apex クラスを作成することで、これを解決しました。サンプルコードはこれです -
@RestResource(urlMapping='/Lead/*')
global with sharing class RestLeadConvert {
@HttpGet
global static String doGet() {
String ret = 'fail';
RestRequest req = RestContext.request;
RestResponse res = RestContext.response;
String leadId = req.requestURI.substring(req.requestURI.lastIndexOf('/')+1);
Database.LeadConvert lc = new Database.LeadConvert();
lc.setLeadId(leadId);
LeadStatus convertStatus = [SELECT Id, MasterLabel FROM LeadStatus WHERE IsConverted=true LIMIT 1];
lc.setConvertedStatus(convertStatus.MasterLabel);
Database.LeadConvertResult lcr ;
try{
lcr = Database.convertLead(lc);
system.debug('*****lcr.isSuccess()'+lcr.isSuccess());
ret = 'ok';
}
catch(exception ex){
system.debug('***NOT CONVERTED**');
}
return ret;
}
}
そして、この呼び出しを次のように使用できます
<Your Instance URL>/services/apexrest/Lead/<LeadId>
このテストでは、約 93% のカバレッジが得られます。
@isTest
public class RestLeadConvertTest{
static testMethod void testHttpGet() {
Lead l = new Lead();
l.FirstName = 'First';
l.LastName = 'Last';
l.Company = 'Unit Test';
insert l;
Test.startTest();
RestRequest req = new RestRequest();
RestResponse res = new RestResponse();
req.requestURI = '/Lead/' + l.Id;
req.httpMethod = 'GET';
RestContext.request = req;
RestContext.response= res;
RestLeadConvert.doGet();
Test.stopTest();
}
}