Form Extensions in d365fo with examples
// Form Extension
[ExtensionOf(formstr(PurchPrepayTable))]
final class BPPurchPrepayTableForm_Extension
{
public void init()
{
FormRun fr = this ;
boolean invoiceExists;
boolean isFromContract;
BPProjContractTable contractTable;
if (fr.args().dataset() == tableNum(BPProjContractTable))
{ }
next init();
if(isFromContract)
{
FormDataSource fds = fr.dataSource();
}
}
// Form datasource field extension
[ExtensionOf(formDataFieldStr(ProjWorkBreakdownStructureV2,PSAActivityEstimates, BPProcurementCategory))]
final class BPProjWorkBreakdownStrucktureFDSProcuField_Extension
{
public Common resolveReference(FormReferenceControl _formReferenceControl)
{
FormDataObject formDataObject = any2Object(this) as FormDataObject;
FormDataSource formDataSource = formDataObject.datasource();
BudgetPlanLineActiveView budgetPlanLineActiveView = formDataSource.cursor();
FormRun fr = formDataSource.formRun();
BudgetPlanActiveView activeView = fr.parmActiveView();
Common common = EcoResCategory::resolveCategoryHierarchyRole(
_formReferenceControl,
EcoResCategoryNamedHierarchyRole::Procurement);
next resolveReference( _formReferenceControl);
return common;
}
}
// Form Datasource Extension
[extensionof(formDataSourceStr(VendInvoiceJournal,VendInvoiceJour))]
final class BPVendInvoiceJournalFormDS_Extension
{
public void init()
{
QueryBuildDataSource qbdsLink;
BPInvoiceProposalTable proposalTable;
next init();
if (element.args().dataset() == tableNum(BPInvoiceProposalTable)) // Original document
{
// Only add a dynalink if the RecId is specified (It will not be when jumping from a report which only specifies the InvoiceId)
if (element.args().record() && element.args().record().RecId)
{
proposalTable = element.args().record();
qbdsLink = this.query().dataSourceTable(tableNum(VendInvoiceJour));
qbdsLink.addRange(fieldNum(VendInvoiceJour,BPInvoiceProposald)).value(SysQuery::value(proposalTable.BPInvoiceProposald));
}
}
}
}
Form datasource field lookup
[ExtensionOf(formstr(CustTable))]
public final class CustTableForm_EDF_Extension
{
public void init()
{
next init();
CustTable_ds.object(fieldNum(CustTable, SIG_ReportFormatNum)).registerOverrideMethod(methodStr(FormDataObject, lookup), formMethodStr(CustTable, sigReportFormatNumCustomLookup));
CustTable_ds.object(fieldNum(CustTable, SIGReportFixationFormatNum)).registerOverrideMethod(methodStr(FormDataObject, lookup), formMethodStr(CustTable, sigReportFixationFormatNumCustomLookup));
}
public void sigReportFixationFormatNumCustomLookup(FormControl _formControl, str _filterStr)
{
SysTableLookup sysTableLookup = SysTableLookup::newParameters(tablenum(SIGContractFixationReportFormat),_formControl,true);
Query query;
QueryBuildDataSource queryBuildDataSource;
sysTableLookup.addLookupfield(fieldnum(SIGContractFixationReportFormat,ReportFormatNum),true);
sysTableLookup.addLookupfield(fieldnum(SIGContractFixationReportFormat,ReportFormat));
sysTableLookup.addLookupfield(fieldnum(SIGContractFixationReportFormat,ContractType));
sysTableLookup.addLookupfield(fieldnum(SIGContractFixationReportFormat,IsInternational));
sysTableLookup.addLookupfield(fieldnum(SIGContractFixationReportFormat,LegalEntity));
query = new Query();
queryBuildDataSource = query.addDataSource(tablenum(SIGContractFixationReportFormat));
queryBuildDataSource.addRange(fieldnum(SIGContractFixationReportFormat,ContractType)).value(strFmt("%1", EDF_ContractType::Sales));
sysTableLookup.parmQuery(query);
sysTableLookup.parmUseLookupValue(true);
sysTableLookup.performFormLookup();
}
}
Comments
Post a Comment