After trying multiple places to get it done, it worked in class 'SRSPrintDestinationSettingsDelegates'
I got both PurchID reference as well as email setup details(print mgmt). So, before next() call of onToEmail() method I have updated a body part and standard took it forward. Below is complete code that worked, I have not optimized it yet but it's working. I tried rich formatting but unable to format -
[ExtensionOf(classStr(SRSPrintDestinationSettingsDelegates))]
final class XXXSRSPrintDestinationSettingsDelegates_Extension
{
public boolean onToEmail(SrsReportRunPrinter printer, SrsReportDataContract dataContract, Microsoft.Dynamics.AX.Framework.Reporting.Shared.ReportingService.ParameterValue[] paramArray)
{
EventHandlerResult result = new EventHandlerResult();
result.result(true);
PurchPurchaseOrderContract contract = dataContract.parmRdpContract();
VendPurchOrderJour vendPurchOrderJour = VendPurchOrderJour::findRecId(contract.parmRecordId());
PurchTable purchTable = PurchTable::find(vendPurchOrderJour.PurchId);
DirPartyTable dirPartyTable = DirPartyTable::findRec(HcmWorker::find(purchTable.WorkerPurchPlacer).Person);
Email ordererEmail = HcmWorker::find(purchTable.WorkerPurchPlacer).email();
SysEmailId emailId = PurchParameters::find().BIGEmailId;
LanguageId defaultLanguageId = SysEmailTable::find(emailId).DefaultLanguage;
#define.VendorName('VendorName')
#define.PurchaseOrderNumber('PurchaseOrderNumber')
#define.Orderer('Orderer')
#define.OrdererEmail('OrdererEmail')
#define.ShipToAddress('ShipToAddress')
Map templateTokens;
templateTokens = new Map(Types::String, Types::String);
templateTokens.insert(#VendorName, purchTable.vendorName());
templateTokens.insert(#PurchaseOrderNumber, purchTable.PurchId);
templateTokens.insert(#Orderer, dirPartyTable.Name);
templateTokens.insert(#OrdererEmail, ordererEmail);
templateTokens.insert(#ShipToAddress, purchTable.deliveryAddressing());
str emailBody = SysEmailMessage::stringExpand(SysEmailMessageTable::find(PurchParameters::find().XXXEmailId,defaultLanguageId).Mail,
SysEmailTable::htmlEncodeParameters(templateTokens));
//Updated body part below
dataContract.parmPrintSettings().parmEMailContract().parmBody(emailBody);
next onToEmail(printer,dataContract, paramArray);
return result.result();
}
}