In this article, we will learn how we can use the temporary table as a form datasource in D365. In our scenario, we will populate the temporary table at runtime and bind it with the form datasource. firstly, we will pass an argument on the clicked event and write the form datasource init method to populate the data in it. In our scenario we will work on the CustTable form, we will populate the customer group in the temporary table which we create on the selected customer while clicking the button. Step 1: Create a new table of type TempDB and add two new fields i.e., CustGroupId and CustGroup. Step 2: We will create a new form with the pattern (List Type), then add our previously created temporary table as a datasource, and then drag both the fields CustGroupId and CustGroup on the form grid part. After the form creation, we will also create the display menu item of type form and use our form on it. Step 3: We will create an extension of t...
In my previous article, I explained how to add a custom field, make some design changes, and create a chain of command of the PSAProjInvoiceDP class in the PSAProjInvoice report. In this article, we will look at how we can call our custom report that we have created in the previous article using Print Management.
What is print management?
Print management in D365 FO X++ is a powerful tool for managing and customizing your report designs. It provides a flexible way to control how your reports are printed and distributed.
Adding our report design to print management
By default, we have a PSAProjInvoice.Report report format for the Project Invoice Proposal and Invoice Journal reports. In our case, we have to add our custom design using the Print management report format.
Project management and accounting -> Setup -> Forms -> Form setup
Print Management -> Project invoice without billing rules ->To add a custom design firstly we have to find the document type beyond that design, I have written a query below in SQL Server:
select * from PrintMgmtReportFormat
where name = 'PSAProjInvoice.Report'
There are two different ways to call our custom design using Print Management Setup:
- Event Handler method
- Chain of command.
Event Handler Method
Step 1:
Copy the event handler of the getDefaultReportFormatDelegate method of the PrintMgmtDocType class and subscribe to its event handler.
Step 2:
Create a new class and paste it. After it add logic in the method to call our custom report.
internal final class MDPrintMgmtDocTypeHandler
{
[SubscribesTo(classStr(PrintMgmtDocType), delegateStr(PrintMgmtDocType, getDefaultReportFormatDelegate))]
public static void PrintMgmtDocType_getDefaultReportFormatDelegate(PrintMgmtDocumentType _docType, EventHandlerResult _result)
{
switch (_docType)
{
case PrintMgmtDocumentType::SIProjInvoice:
_result.result(ssrsReportStr(MDPSAProjInvoice, Report));
break;
}
}
}
Chain of Command
Step 1:
We need to create COC of the addDocuments method of the PrintMgmtReportFormatPopulator class.
[ExtensionOf(classStr(PrintMgmtReportFormatPopulator))]
public final class MDPrintMgmtReportFormatPopulator_Extension
{
protected void addDocuments()
{
#ISOCountryRegionCodes
#PrintMgmtSetup
next addDocuments();
Add new customized document
this.addOther(PrintMgmtDocumentType::SIProjInvoice, ssrsReportStr(MDPSAProjInvoice, Report), ssrsReportStr(MDPSAProjInvoice, Report), #NoCountryRegionId);
}
}
Result:
Build and Sync the solution and then go to
Project management and accounting -> Setup -> Forms -> Forms setup
Print management -> Project invoice without billing rules:
Comments
Post a Comment