元の質問 : Email with Multiple OrderItems
初めにこれを見つけて回答していたのですが、実際に設定してみると保存できん。
Adding Opportunity Products Related List to Visualforce Email Template
relatedTo.OpportunityLineItems がない。そうだよねぇ。
<apex:repeat value="{!relatedTo.OpportunityLineItems}" var="oli">
<apex:outputText value="{!oli.PriceboonEntry.Product2.Name}">
<apex:outputText value="{!oli.UnitPrice}">
<apex:outputText value="{!oli.Quantity}">
</apex:repeat>
過去に作ったものを参考に作ってみました。
PDFを作成し、Salesforceメールテンプレートに添付する方法
VF page email template
<messaging:emailTemplate subject="{!relatedTo.Name}" recipientType="User" relatedToType="Opportunity">
<messaging:plainTextEmailBody >
<c:ReceiptOppItems opportunityId="{!relatedTo.Id}"/>
</messaging:plainTextEmailBody>
</messaging:emailTemplate>
ReceiptOppItems.vfc
<apex:component controller="ReceiptOppItemsController" access="global">
<apex:attribute name="opportunityId" description="Opportunity Id" assignTo="{!OpportunityObjectId}" type="Id" />
<apex:repeat value="{!OpportunityLineItems}" var="oli">
<apex:outputText value="{!oli.PricebookEntry.Product2.Name}"/>
<apex:outputText value="{!oli.UnitPrice}"/>
<apex:outputText value="{!oli.Quantity}"/>
</apex:repeat>
</apex:component>
ReceiptOppItemsController.apex
global class ReceiptOppItemsController {
global String OpportunityObjectId{
get;
set {
UpdateContents2(value);
}
}
global List<OpportunityLineItem> OpportunityLineItems{ get; set; }
public void UpdateContents2(String OpportunityObjectId) {
if (OpportunityObjectId != null) {
OpportunityLineItems = [SELECT Id,UnitPrice,Quantity,PricebookEntry.Product2.Name FROM OpportunityLineItem WHERE OpportunityId =:OpportunityObjectId];
}
}
}