Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save ryanfollmer/1b3ac52553b063497599ac93d8ba9db0 to your computer and use it in GitHub Desktop.
Save ryanfollmer/1b3ac52553b063497599ac93d8ba9db0 to your computer and use it in GitHub Desktop.
Visualforce Component for Approval Request Email Template
<apex:component id="SBAA_ApprovalRequestEmailTemplate" access="global" controller="SBAA_ApprovalRequestEmailController">
<apex:attribute name="approvalRecordId" assignTo="{!approvalId}" type="Id" description="Approval Id for the email" access="global" required="true"/>
<apex:attribute name="quoteRecordId" assignTo="{!quoteId}" type="Id" description="Quote Id for the email" access="global" required="true"/>
<apex:attribute name="recipientEmailUser" type="User" assignTo="{!recipientUser}" description="Recipient User" access="global" required="true"/>
<apex:variable var="changeList" value="{!RecordChanges}" />
<div>
<p>{!recipientEmailUser.FirstName},</p>
<p>The following quote requires your approval due to&nbsp;<apex:outputField value="{!currentApproval.sbaa__Rule__r.Name}"/>: <a href="{!orgUrl}/{!quoteRecordId}">{!quote.Name}</a>
</p>
<p>To approve or reject this approval request, simply reply to this email with "Approve" or "Reject". <br />
<a href="{!orgUrl}/{!approvalRecordId}">View the approval request in Salesforce</a>
</p>
<p><b>Account:</b></p>
<ul>
<li><b>Name: </b><apex:outputField value="{!quote.SBQQ__Opportunity2__r.Account.Name}"/></li>
<li><b>Owner: </b><apex:outputField value="{!quote.SBQQ__Opportunity2__r.Account.Owner.Name}"/></li>
</ul>
<p><b>Opportunity:</b></p>
<ul>
<li><b>Name: </b><a href="{!orgUrl}/{!quote.SBQQ__Opportunity2__c}">{!quote.SBQQ__Opportunity2__r.Name}</a></li>
<li><b>Owner: </b><apex:outputField value="{!quote.SBQQ__Opportunity2__r.Owner.Name}"/></li>
<li><b>Type: </b><apex:outputField value="{!quote.SBQQ__Opportunity2__r.Type}"/></li>
<li><b>Amount: </b><apex:outputField value="{!quote.SBQQ__Opportunity2__r.Amount}"/></li>
<li><b>Close Date: </b><apex:outputField value="{!quote.SBQQ__Opportunity2__r.CloseDate}"/></li>
<li><b>Stage: </b><apex:outputField value="{!quote.SBQQ__Opportunity2__r.StageName}"/></li>
</ul>
<p><b>Quote:</b></p>
<ul>
<li><b>Name: </b><a href="{!orgUrl}/{!quoteRecordId}">{!quote.Name}</a></li>
<li><b>Start Date: </b><apex:outputField value="{!quote.SBQQ__StartDate__c}"/></li>
<li><b>End Date: </b><apex:outputField value="{!quote.SBQQ__EndDate__c}"/></li>
<li><b>Subscription Term: </b><apex:outputField value="{!quote.SBQQ__SubscriptionTerm__c}"/></li>
<li><b>Billing Frequency: </b><apex:outputField value="{!quote.SBQQ__BillingFrequency__c}"/></li>
<li><b>Payment Terms: </b><apex:outputField value="{!quote.SBQQ__PaymentTerms__c}"/></li>
<li><b>List Amount: </b><apex:outputField value="{!quote.SBQQ__ListAmount__c}"/></li>
<li><b>Net Total Amount: </b><apex:outputField value="{!quote.SBQQ__NetAmount__c}"/></li>
<li><b>Total Customer Discount Amount: </b><apex:outputField value="{!quote.SBQQ__TotalCustomerDiscountAmount__c}"/></li>
</ul>
<apex:outputPanel layout="block" rendered="{!displayRecordChanges}">
<h4>Key Approval-Related Changes to the Quote</h4>
<apex:dataTable style="margin-bottom: 10px" border="1px" cellpadding="5px" value="{!changeList}" var="recordChange" width="100%">
<apex:column width="20%" headerValue="Date" value="{!recordChange.ValueChangedOn}" />
<apex:column width="50%" headerValue="What Changed" value="{!recordChange.ChangeReason}" />
<apex:column width="15%" headerValue="Original Value">
<apex:outputText rendered="{!recordChange.IsNumericValue}" value="{0, number}">
<apex:param value="{!recordChange.OriginalValueDecimal}" />
</apex:outputText>
<apex:outputText rendered="{!recordChange.IsCurrencyValue}" value="{0} {1, number}">
<apex:param value="{!recordChange.CurrencyIsoCode}" />
<apex:param value="{!recordChange.OriginalValueDecimal}" />
</apex:outputText>
<apex:outputText rendered="{!recordChange.IsPercentValue}" value="{0, number}%">
<apex:param value="{!recordChange.OriginalValueDecimal}" />
</apex:outputText>
<apex:outputText rendered="{!recordChange.IsTextValue}" value="{0}">
<apex:param value="{!recordChange.OriginalValue}" />
</apex:outputText>
<apex:outputText rendered="{!recordChange.IsDateValue}" value="{0, date, short}">
<apex:param value="{!recordChange.OriginalValueDate}" />
</apex:outputText>
</apex:column>
<apex:column width="15%" headerValue="New Value">
<apex:outputText rendered="{!recordChange.IsNumericValue}" value="{0, number}">
<apex:param value="{!recordChange.NewValueDecimal}" />
</apex:outputText>
<apex:outputText rendered="{!recordChange.IsCurrencyValue}" value="{0} {1, number}">
<apex:param value="{!recordChange.CurrencyIsoCode}" />
<apex:param value="{!recordChange.NewValueDecimal}" />
</apex:outputText>
<apex:outputText rendered="{!recordChange.IsPercentValue}" value="{0, number}%">
<apex:param value="{!recordChange.NewValueDecimal}" />
</apex:outputText>
<apex:outputText rendered="{!recordChange.IsTextValue}" value="{0}">
<apex:param value="{!recordChange.NewValue}" />
</apex:outputText>
<apex:outputText rendered="{!recordChange.IsDateValue}" value="{0, date, short}">
<apex:param value="{!recordChange.NewValueDate}" />
</apex:outputText>
</apex:column>
</apex:dataTable>
</apex:outputPanel>
</div>
<apex:outputText style="color: white;" value="{!approvalRecordId}"/>
</apex:component>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment