Thursday, May 19, 2022

Modify email subject and body of Print Payment Advice email generated by Print Management

Hi all,
In this blog will learn how to modify the standard email subject and body generated through the Print Management.    

Requirement - 
1) Add vendor code in Subject line.
2) Modify email body - add vendor name and Legal entity name.

This can be achieve by doing small customization.

Solution/Steps

1) Create extension class for class - SRSPrintDestinationSettings and add below code.

[ExtensionOf(classstr(SRSPrintDestinationSettings))]
public final class TestSRSPrintDestinationSettings_Extension
{
    internal    str     reportTitle;
    internal    RecId   voucherRecId;
    //Type of report
    [DataMemberAttribute]
    public str reportTitle(str _reportTitle = reportTitle)
    {
        reportTitle = _reportTitle;
        return reportTitle;
    }
     [DataMemberAttribute]
    public RecId voucherRecId(RecId _voucherRecId = voucherRecId)
    {
        voucherRecId = _voucherRecId;
       return voucherRecId;
    }

  public SrsReportEMailDataContract parmEMailContract(SrsReportEMailDataContract _emailContract)

    {

        Notes                                       emailBOdy;
        SrsReportEmailDataContract  contract;
        LedgerJournalTrans              ledgerJournalTrans; 
        contract = next parmEMailContract(_emailContract);
        if (reportTitle == "Payment Advice")
        {

             emailSubject =     contract.parmSubject();
            select firstonly ledgerJournalTrans  where ledgerJournalTrans.RecId == voucherRecId;

            emailSubject =  strReplace(emailSubject,"%VendorAccount%",                                                                 ledgerJournalTrans.accountDisplay());

            contract.parmSubject(emailSubject);            

            emailBOdy = VendParameters::find().MTEmailBodyForPaymentAdvice;

            emailBOdy = strReplace(emailBOdy,"%VendorName%",ledgerJournalTrans.LedgerDimensionName);

        emailBOdy =             strReplace(emailBOdy,"%LegalEntityName%",CompanyInfo::findRecId(CompanyInfo::current()).Name);

            contract.parmBody(emailBody);    

        }
        return contract;

    }

}
Step 2 : Create COC for printReport() method of class SrsReportRunPrinter

[ExtensionOf(classStr(SrsReportRunPrinter))]
public final class TestSrsReportRunPrinter_extension
{
    public void printReport()
    {
        if (reportContract.parmRdpName() == "BankPaymAdviceVendDP")
        {
            BankPaymAdviceContract bankPaymAdviceContract = reportContract.parmRdpContract() as                 BankPaymAdviceContract;
            printSettings.reportTitle("Payment Advice");
            printSettings.voucherRecId(bankPaymAdviceContract.parmLedgerJournalTransRecId());
        }
        next printReport();
        }
}

Step 3 : Add new field for email template in AP parameter(VendParameter)

and paste below content 

Dear Sir's
<br>
Regarding payment to: %VendorName%
<br>
Please refer the attached payment advice.
<br>
Yours faithfully
<br>
%LegalEntityName%






  



 



Step 4 : Add setup in Print management 

Refer below highlighted path 














































Result -










No comments:

Post a Comment

How to Post Partial Product Receipt in D365FO Using X++ Code

How to Post Partial Product Receipt in D365FO Using X++ Code How to Post Partial Product Receipt in D365FO Using X++...