アカウントに関連する商談のすべての添付ファイルを、アカウントの 1 つの統合された場所に表示する方法はありますか? 基本的に、拡張ごとに新しい注文書 (PDF) に署名していますが、すべて (すべての署名済みドキュメント) を 1 か所で確認でき、2 回 (商談に 1 回、アカウントに 1 回) アップロードする必要がなくなると便利です。
基本的な考え方としてはContentDocumentLinkのトリガーで商談にリンクしているファイルなら、商談からAccountを参照して、ContentDocumentLinkをもう一つ作ることかもしれませんね。
LinkedEntityIdの先頭が006なら商談です。
こんな感じのApexトリガーで実現できそうです(20分掛かってしまいました...)
trigger addLinkAccount on ContentDocumentLink (after insert) {
Set<String> oppSet = new Set<String>();
if (Trigger.IsInsert) {
for(ContentDocumentLink CDL : Trigger.new) {
String Lid = CDL.LinkedEntityId;
System.debug('############ Lid ##################' + Lid);
if (Lid.Left(3) == '006'){
oppSet.add(Lid);
}
}//end of for
}//end of if
if (oppSet.size() >0) {
System.debug('############ oppSet ##################' + oppSet);
List<Opportunity> oppList = [select Id,AccountId from Opportunity where Id =: oppSet ];
Map<Id,Id> accMap = new Map<Id,Id>();
for (Opportunity opp : oppList){
if (opp.AccountId != null){
accMap.put(opp.Id,opp.AccountId);
}
}
List<ContentDocumentLink> insertCDLList = new List<ContentDocumentLink>();
for(ContentDocumentLink CDL : Trigger.new) {
String Lid = CDL.LinkedEntityId;
if (Lid.Left(3) == '006'){
ContentDocumentLink insCDL = new ContentDocumentLink();
insCDL.ContentDocumentId = CDL.ContentDocumentId;
insCDL.LinkedEntityId = (Id)accMap.get(CDL.LinkedEntityId);
insCDL.ShareType = CDL.ShareType;
insCDL.Visibility = CDL.Visibility;
insertCDLList.add(insCDL);
}
}
if (insertCDLList.size() > 0) insert insertCDLList;
}//end of if
}