1.Create a New class to write the logic For ER report
using Microsoft.Dynamics365.LocalizationFramework;
/// <summary>
/// The electronic reporting service class for listing report
/// </summary>
public final class HDTInvTransShipErReportService
{
private const str DefaultExportedFileName = 'Transfer order shipment report';
internal void generateReportByGER(HDTInvTransShipErReportContract _contract)
{
ERFormatMappingId formatMappingId;
formatMappingId = _contract.parmFormatMapping();
try
{
ERModelDefinitionInputParametersAction modelDefinitionInputParametersAction = new ERModelDefinitionInputParametersAction();
modelDefinitionInputParametersAction.addParameter("model/VoucherIDInput", _contract.parmVoucherId());
// Call ER to generate the report.
ERObjectsFactory::createFormatMappingRunByFormatMappingId(formatMappingId, DefaultExportedFileName)
.withParameter(modelDefinitionInputParametersAction)
.withFileDestination(_contract.getFileDestination())
.run();
}
catch
{
// An error occurred while exporting data.
error("@SYP4861341");
}
}
}
2.Add New class to pass paramters in contract class from Button click
/// <summary>
/// Data contract class for <c>Listing</c> GER report.
/// </summary>
[DataContractAttribute]
internal final class HDTInvTransShipErReportContract extends ERFormatMappingRunBaseContract implements SysOperationValidatable
{
InventTransferVoucherId voucherID;
ERFormatMappingId formatMapping;
str query;
[
DataMemberAttribute('FormatMapping'),
SysOperationLabelAttribute(literalstr("@ElectronicReporting:FormatMapping")),
SysOperationHelpTextAttribute(literalstr("@ElectronicReporting:FormatMapping"))
]
public ERFormatMappingId parmFormatMapping(ERFormatMappingId _formatMapping = formatMapping)
{
formatMapping = _formatMapping;
return formatMapping;
}
[
DataMemberAttribute('VoucherIDInput'),
SysOperationLabelAttribute(literalstr("VoucherIDInput")),
SysOperationHelpTextAttribute(literalstr("VoucherIDInput"))
]
public InventTransferVoucherId parmVoucherId(InventTransferVoucherId _voucherID = voucherID)
{
voucherID = _voucherID;
return voucherID;
}
/// <summary>
/// Validates the report parameters.
/// </summary>
/// <returns>
/// true if no errors; otherwise, false.
/// </returns>
[Hookable(false)]
public final boolean validate()
{
boolean isValid = true;
if (!formatMapping)
{
isValid = checkFailed(strFmt("@SYS26332", new SysDictType(extendedTypeNum(ERFormatMappingId)).label()));
}
return isValid;
}
}
3. Trigger the logic from button
/// <summary>
/// Event handler class of Transfer order history form
/// </summary>
public class HDTInventTransferJour_F_Eventhandler
{
/// <summary>
/// Clicked event handler of Print managemenr ER button
/// </summary>
/// <param name="sender">sender</param>
/// <param name="e">e</param>
[FormControlEventHandler(formControlStr(InventTransferJour, HDTPrintMagmtER), FormControlEventType::Clicked)]
public static void HDTPrintMagmtER_OnClicked(FormControl sender, FormControlEventArgs e)
{
ERFormatMappingTable formatMappingTable;
FormRun formRun = sender.formRun();
FormDataSource inventTransferJour_ds = formRun.dataSource(formDataSourceStr(InventTransferJour, InventTransferJour));
InventTransferJour inventTransferJourLoc = inventTransferJour_ds.cursor();
HDTInvTransShipErReportContract erReportContract = new HDTInvTransShipErReportContract();
HDTInvTransShipErReportService erReportService = new HDTInvTransShipErReportService();
select firstonly RecId from formatMappingTable
where formatMappingTable.Name == "Elders Transfer Order Excel";
ERFormatMappingId formatMappingId = formatMappingTable.RecId;
ErReportContract.parmFormatMapping(formatMappingId);
ErReportContract.parmVoucherId(inventTransferJourLoc.VoucherId);
erReportService.generateReportByGER(erReportContract);
}
}
No comments:
Post a Comment