Tuesday, December 23, 2025

How to change the To Email in Print Management when printing a report using X++ in Dynamics 365 Finance and Operations

[ExtensionOf(classStr(SrsReportRunPrinter))]

final class TestSrsReportRunPrinter_Extension

{

    public void printReport()

    {

        if (reportContract.parmRdpName() == "SalesInvoiceDP")

        {

            SalesInvoiceContract salesInvoicecontract = reportContract.parmRdpContract() as SalesInvoiceContract;

            printSettings.reportTitle("SalesInvoice");

            printSettings.custInvoiceRecid(salesInvoicecontract.parmRecordId());

        }

        next printReport();

    }

}


[ExtensionOf(classStr(SRSPrintDestinationSettings))]

final class TestSRSPrintDestinationSettings_Extension

{

    internal str reportTitle, clreportTitle;

    internal RecId custJourRecId;


    [DataMemberAttribute]

    public str reportTitle(str _reportTitle = reportTitle)

    {

        reportTitle = _reportTitle;

        return reportTitle;

    }


    [DataMemberAttribute]

    public RecId custInvoiceRecid(RecId _custJourRecId = custJourRecId)

    {

        custJourRecId = _custJourRecId;

        return custJourRecId;

    }


    public SrsReportEMailDataContract parmEMailContract(SrsReportEMailDataContract _emailContract)

    {

        contract = next parmEMailContract(_emailContract);


        if (this.reportTitle() == "SalesInvoice")

        {

            CustInvoiceJour custinvoicejour;

            select firstonly custinvoicejour where custinvoicejour.RecId == this.custInvoiceRecid();


            contract.parmTo(custinvoicejour.TestExternalRequesterEmail);


            emailSubject = contract.parmSubject();

            emailSubject = strReplace(emailSubject, "%PurchaseOrder%", purchTable.PurchId);

            contract.parmSubject(emailSubject);

        }

        return contract;

    }

}


Call API using x++ D365FO

 System.Net.HttpWebRequest    request; System.Net.HttpWebResponse   response; System.IO.Stream             dataStream; System.IO.StreamReade...