Contract class:
[DataContractAttribute,
SysOperationContractProcessingAttribute(classstr(GITS_UIBuilderFixedAsset))]
class GITS_FixedAssetContract
{
AssetRoomNumber roomNumber;
[
DataMemberAttribute('roomNumber'),
SysOperationLabelAttribute('Room Number'),
SysOperationDisplayOrderAttribute('1')]
public AssetRoomNumber parmAssetRoomNumber(AssetId _roomNumber= roomNumber)
{
roomNumber = _roomNumber;
return roomNumber;
}
}
DP class:
[
SRSReportQueryAttribute(querystr(GITS_FixedAssetQuery)),
SRSReportParameterAttribute(classStr(GITS_FixedAssetContract))
]
class GITS_FixedAssetDP extends SRSReportDataProviderBase
{
GITS_FixedAssetContract contract;
GITS_FixedAssetDetailsTmp fixedAssetTemp;
AssetTable assetTable;
AssetBook assetBook;
CompanyInfo companyinfo;
AssetRoomNumber roomNumber;
[SRSReportDataSetAttribute('GITS_FixedAssetDetailsTmp')]
public GITS_FixedAssetDetailsTmp getLineFixedAssetDetails()
{
select * from fixedAssetTemp;
return fixedAssetTemp;
}
[SysEntryPointAttribute(False)]
public void processReport()
{
contract = this.parmDataContract() as GITS_FixedAssetContract;
roomNumber = contract.parmAssetRoomNumber();
Query query = this.parmQuery();
QueryRun qr;
QueryBuildRange qbr;
query.dataSourceTable(tableNum(AssetTable)).addRange(fieldNum(AssetTable,Roomnumber)).value(roomNumber);
companyinfo = CompanyInfo::find();
qr = new QueryRun(Query);
while(qr.next())
{
assetTable=qr.get(tableNum(AssetTable));
assetBook=qr.get(tableNum(AssetBook));
fixedAssetTemp.clear();
fixedAssetTemp.CompanyLogo = FormLetter::companyLogo();
fixedAssetTemp.CompanyName = companyinfo.name();
fixedAssetTemp.RoomNumber = assetTable.RoomNumber;
fixedAssetTemp.AssetcCode = assetTable.AssetId;
fixedAssetTemp.AssetDescription = assetTable.Name;
fixedAssetTemp.LocationDirectorate = assetTable.Location;
fixedAssetTemp.AssetValue = assetBook.AcquisitionPrice;
fixedAssetTemp.AssetAcqDate = assetBook.AcquisitionDate;
fixedAssetTemp.insert();
}
}
}
UI builder class:
class GITS_UIBuilderFixedAsset extends SrsReportDataContractUIBuilder
{
DialogField dialogAssetRoomNumber;
DialogGroup dialogGroup;
boolean enable;
private void roomNumberLookup(FormStringControl roomNumberLookup)
{
Query query = new Query();
QueryBuildDataSource qbds_AssetTable;
SysTableLookup sysTableLookup;
QueryBuildRange qbr;
if (roomNumberLookup != null)
{
sysTableLookup = SysTableLookup::newParameters(tablenum(AssetTable), roomNumberLookup);
qbds_AssetTable = query.addDataSource(tableNum(AssetTable));
sysTableLookup.addLookupfield(fieldnum(AssetTable, RoomNumber), true);
qbr = qbds_AssetTable.addRange(fieldNum(AssetTable,RoomNumber));
qbds_AssetTable.addGroupByField(fieldNum(AssetTable,RoomNumber));
qbr.value('');
sysTableLookup.parmUseLookupValue(false);
sysTableLookup.parmQuery(query);
sysTableLookup.performFormLookup();
}
}
public void build()
{
GITS_FixedAssetContract rdpContract = this.dataContractObject();
dialogAssetRoomNumber = this.addDialogField(methodstr(GITS_FixedAssetContract,parmAssetRoomNumber),rdpContract);
dialogAssetRoomNumber.lookupButton(2);
}
public void postRun()
{
Dialog dialogLocal = this.dialog();
DialogField dialogField;
super();
dialogLocal.dialogForm().formRun().controlMethodOverload(false);
dialogField = this.bindInfo().getDialogField(this.dataContractObject(), methodstr (GITS_FixedAssetContract, parmAssetRoomNumber));
dialogField.registerOverrideMethod(methodstr(FormStringControl, lookup), methodstr(GITS_UIBuilderFixedAsset, roomNumberLookup), this);
}
}