/ d365

[D365] How to get SSRS Report design from form letter print management

There is a way to get the default report layout by code using the following line:

PrintMgmtDocType::construct(PrintMgmtDocumentType::SalesOrderInvoice).getDefaultReportFormat();

Finding the report design from the print management settings for a report type is easy on the surface.
As example, navigate to Accounts receivable > Setup > Forms > Form setup, select the report type and create/see the various settings.

Retrieving the default report design name from there by code can be done with the following method:

/// 
/// Returns the selected report design for a given company and document type.
/// 
/// The DataAreaId to search in.
/// The PrintMgmtDocumentType to get the design for.
/// 
public static SRSCatalogItemName ccGetSelectedDesignByTypeAndCompany(DataAreaId _company, PrintMgmtDocumentType _documentType)
{
    DataAreaId searchCompany = _company ? _company : curExt();
	
	// Records are company specific, we need to change company first.
    changecompany(searchCompany)
    {
        PrintMgmtSettings printMgmtSettings;
        PrintMgmtDocInstance printMgmtDocInstance;
        PrintMgmtReportFormat printMgmtReportFormat;

        select firstonly * from printMgmtSettings
            join * from printMgmtDocInstance
            where printMgmtDocInstance.DocumentType == _documentType
                && printMgmtDocInstance.RecId == printMgmtSettings.ParentId
            join * from printMgmtReportFormat
            where printMgmtReportFormat.RecId == printMgmtSettings.ReportFormat;
        
        if (printMgmtReportFormat && printMgmtReportFormat.RecId)
        {
            return printMgmtReportFormat.Name;
        }
    }

    return "";
}

A good idea is to add it as extension to the class SrsReportHelper and have it globally available.

[D365] How to get SSRS Report design from form letter print management
Share this

Subscribe to robsCode