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 Festa20242024年7月17日まで開催中!

商談に紐づくカスタムオブジェクトのメモを商談のメモに複数転記する

Posted at

実際にはメモと読み表レコードを紐付けるオブジェクト(ContentDocumentLink)があるので、以下はもう少し複雑です。

読み表レコードにメモが追加、更新、削除された時に商談側のメモを更新することと思いますので、

トリガー:「メモ」の更新

メモを追加した読み表レコードの取得(ここで商談Idを取得します)

上記商談Idを使って同じ商談を参照している読み表レコードの取得

ここでループさせて、Idのコレクション変数に読み表レコードのIdを追加します。

このコレクション変数を使ってメモを取得します。

取得したメモでテキストテンプレートにメモ内容を追加します。

最終的に上記商談Idとテキストテンプレートを使って商談を更新します。

深く考えずにコードにしてみたのですが、かなり複雑ですね。
複数のメモがあった場合がもっと面倒だな。

trigger UpdateNote on ContentVersion (after insert, after update) {
	//after delete, after undelete
    if (Trigger.isAfter) {
        Set<Id> cvIdSet = new Set<Id>(); 
        for(ContentVersion cv : Trigger.new) {
            if (cv.FileType == 'SNOTE') {
                cvIdSet.add(cv.ContentDocumentId);
            }
        }//end of for    
        Set<Id> yomihyouIdSet = new Set<Id>(); 
        List<ContentDocumentLink> cdlList = [SELECT Id,LinkedEntityId FROM ContentDocumentLink WHERE ContentDocumentId =: cvIdSet];
        for(ContentDocumentLink cdl :  cdlList){
            String st = cdl.LinkedEntityId;
            if (st.left(3) =='a1m'){
                //読み表のオブジェクのIdの前から3桁
                yomihyouIdSet.add(st);
            }
        }//end of for   
        List<yomihyou__c> yomihyouList = [SELECT Id,Opportunity__c FROM yomihyou__c WHERE Id =: yomihyouIdSet ];
        Set<Id> oppIdSet = new Set<Id>(); 
        for (yomihyou__c yomi : yomihyouList){
            if (yomi.Opportunity__c != null){
                oppIdSet.add(yomi.Opportunity__c);
            }
        }//end of for  
        if (oppIdSet.size() > 0) {
            List<yomihyou__c> yomihyouList2 = [SELECT Id,Opportunity__c FROM yomihyou__c WHERE Opportunity__c=: oppIdSet order by Opportunity__c];
            system.debug('--- yomihyouList2 ---' + yomihyouList2);
            Map<Id,Id> yomihyouToOpportunityMap = new Map<Id,Id>();
            Set<Id> yomihyouIdSet2 = new Set<Id>(); 
            for (yomihyou__c yomi2 : yomihyouList){
                yomihyouToOpportunityMap.put(yomi2.Id,yomi2.Opportunity__c);
                yomihyouIdSet2.add(yomi2.Id); 
            }//end of for   
            system.debug('--- start ---' + yomihyouIdSet2);
            List<ContentDocumentLink> cdlList2 = [SELECT Id,ContentDocumentId,LinkedEntityId FROM ContentDocumentLink WHERE LinkedEntityId =: yomihyouIdSet2];
            Map<Id,Id> yomihyouToContentDocumentMap = new Map<Id,Id>();
            Set<Id> cdlIdSet2 = new Set<Id>(); 
            for(ContentDocumentLink cdl2 :  cdlList2){
                yomihyouToContentDocumentMap.put(cdl2.LinkedEntityId,cdl2.ContentDocumentId);
                cdlIdSet2.add(cdl2.ContentDocumentId);
            }//end of for

            List<ContentVersion> cvList2 = [SELECT Id,VersionData,TextPreview,ContentDocumentId FROM ContentVersion WHERE FileType = 'SNOTE' AND ContentDocumentId =: cdlIdSet2];
            Map<Id,Id> ContentDocumentIdToTextPreviewMap = new Map<Id,String>();
            for (ContentVersion cv2 : cvList2){
                ContentDocumentIdToTextPreviewMap.put(cv2.ContentDocumentId,cv2.TextPreview);
            }
            //商談にメモがあるかを確認する
            List<ContentDocumentLink> cdlList3 = [SELECT Id,ContentDocumentId,LinkedEntityId FROM ContentDocumentLink WHERE LinkedEntityId =: oppIdSet];
            Map<Id,Id> oppToContentDocumentMap = new Map<Id,Id>();
            Set<Id> cdlIdSet3 = new Set<Id>();
            for(ContentDocumentLink cdl3 :  cdlList3){
                oppToContentDocumentMap.put(cdl3.LinkedEntityId,cdl3.ContentDocumentId);
                cdlIdSet3.add(cdl3.ContentDocumentId);
            }
            List<ContentVersion> cvList3 = [SELECT Id,VersionData,TextPreview,ContentDocumentId FROM ContentVersion WHERE FileType = 'SNOTE' AND ContentDocumentId =: cdlIdSet3];
            for (ContentVersion cv3 : cvList3){
            }
            LIST<Opportunity> oppList4 = [SELECT Id FROM Opportunity WHERE ID =: oppIdSet ];
            for (Opportunity op4 : oppList4){
            }
        }
    }//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?