0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

すべての商談メモと添付ファイルをアカウントに統合するにはどうすればよいですか?

Last updated at Posted at 2024-07-16

アカウントに関連する商談のすべての添付ファイルを、アカウントの 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
    
        
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?