SaaStainerサイトページへ戻る |
目次
■アプリ概要
Salesforceで入力した取引先情報や商品情報などの契約書作成に必要な情報をContractS CLMに連携し、下書きとして保存することが出来るアプリです。
二重入力が不要になり、シームレスに契約書を作成する事が可能となります。
ContractS CLMで締結した契約書ステータスと契約書リンクをSalesforceに連携することも可能です。
●アプリ機能
●契約書作成タイミング設定 機能
-
- Salesforceの指定フィールドが希望の値になった場合に、契約書を作成させるよう設定することができます。
※複数の契約書テンプレートを作成するよう設定はできますが、タイミングは全テンプレート一律のタイミング設定となります。
- Salesforceの指定フィールドが希望の値になった場合に、契約書を作成させるよう設定することができます。
●契約書テンプレート選択条件設定 機能
-
- 契約書作成タイミングになった際、どの契約書テンプレートを使用して作成するか、詳細な条件を設定できます。
●契約書ステータス及び契約書リンク連携設定 機能
-
- 任意でContractS CLMで締結した契約書ステータスと契約書リンクをSalesforceに連携することができます。
●連携ログ 機能
-
- 連携処理の状態が連携ログに出力されます。
●おすすめな方
・契約書作成時に案件情報の転記作業が発生している方
・転記作業に伴う、契約内容不備発生を抑えたい方
・二重入力による作業コストを削減し、事務の効率化を進めてDXを推進したい方
●利用にあたっての注意
・Contracts CLMアカウント(API機能が利用可能なアカウント)が必要です
・Salesforceアカウント(API機能が利用可能なアカウント)が必要です
SaaStainerサイトページへ戻る |
■アプリ設定方法/マニュアル
▼利用するにはSaaStainerのアカウントが必要です
下記リンクからご登録ください
●1. Salesforce事前設定
public class Webhook implements HttpCalloutMock {
public static HttpRequest request;
public static HttpResponse response;
/**
* Mock for test
*/
public HTTPResponse respond(HTTPRequest req) {
request = req;
response = new HttpResponse();
response.setStatusCode(200);
return response;
}
public static String jsonContent(List<Object> triggerNew, List<Object> triggerOld, List<Object> lineItems, List<Object> contacts) {
String newObjects = triggerNew==null?'[]':JSON.serialize(triggerNew);
String oldObjects = triggerOld==null?'[]':JSON.serialize(triggerOld);
String lineItemObjects = lineItems==null?'[]':JSON.serialize(lineItems);
String contactObjects = contacts==null?'[]':JSON.serialize(contacts);
String userId = JSON.serialize(UserInfo.getUserId());
String url = URL.getSalesforceBaseUrl().toExternalForm();
String content = '{"new": ' + newObjects + ', "old": ' + oldObjects + ', "lineItems": ' + lineItemObjects + ', "contacts": ' + contactObjects + ', "userId": ' + userId + ', "url": "' + url + '"}';
return content;
}
/**
* Call MasterHub API EndPoint
*/
@future(callout=true)
public static void callout(String url, String content, ID ownerId, String opportunityName) {
if (Test.isRunningTest()) {
Test.setMock(HttpCalloutMock.class, new Webhook());
}
Http http = new Http();
HttpRequest req = new HttpRequest();
req.setEndpoint(url);
req.setMethod('POST');
req.setHeader('Content-Type', 'application/json');
req.setBody(content);
HttpResponse res = http.send(req);
if(res.getStatusCode()>=400) {
sendError(res.getBody(), ownerId, opportunityName);
}
}
/**
* Send error email to id
*/
private static void sendError(String log, ID ownerId, String opportunityName){
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
mail.setTargetObjectId(ownerId);
mail.setSubject('ContractS CLM 連携エラー');
String body = '商談 [' + opportunityName + '] の連携でエラーが発生しました。詳細は連携ログをご確認ください。\n\nhttps://contracts-x-salesforce.web.app/\n';
mail.setPlainTextBody(body + log);
mail.setSaveAsActivity(false);
Messaging.sendEmail(new List<Messaging.SingleEmailMessage>{mail});
}
}
trigger OpportunityTrigger on Opportunity (after insert, after update) {
List<OpportunityLineItem> lineItems;
List<OpportunityContactRole> contacts;
for (Opportunity opportunity : Trigger.new) {
lineItems = new List<OpportunityLineItem>([SELECT FIELDS(STANDARD) FROM OpportunityLineItem WHERE OpportunityId = :opportunity.Id]);
contacts = new List<OpportunityContactRole>([SELECT FIELDS(STANDARD) FROM OpportunityContactRole WHERE OpportunityId = :opportunity.Id]);
}
String url = 'https://asia-northeast1-contracts-x-salesforce.cloudfunctions.net/webhook/salesforce';
String content = Webhook.jsonContent(Trigger.new, Trigger.old, lineItems, contacts);
Webhook.callout(url, content, Trigger.new[0].OwnerId, Trigger.new[0].name);
}
リモートサイト名:SaaStainer
リモートサイトのURL:https://asia-northeast1-contracts-x-salesforce.cloudfunctions.net
●2. ContractS事前設定
●3. 連携設定
●4. マッピング設定
●5. その他
■FAQ
- coming sonon...
coming soon....
▼SaaStainerへ戻る
SaaStainerサイトページ |
▼本アプリに関する不明点は下記お問い合わせフォームからご連絡ください
お問い合わせフォーム |