**Contract class
[
DataContractAttribute,
SysOperationContractProcessingAttribute(classstr(INTC_MaterialTakeOffUIBuilder))
]
public class INTC_MaterialTakeOffContract
{
Str1260 projId;
Str1260 mtkoNumber;
[
DataMemberAttribute("ProjId"),
SysOperationLabelAttribute(literalStr('ProjId')),
SysOperationDisplayOrderAttribute('1')
]
public Str1260 parmProjId(Str1260 _projId = projId)
{
projId = _projId;
return strReplace(projId,";",",");
}
[
DataMemberAttribute("MTKO Number"),
SysOperationLabelAttribute(literalStr('MTKO Number')),
SysOperationDisplayOrderAttribute('2')
]
public Str1260 parmMTKONumber(Str1260 _mtkoNumber = mtkoNumber)
{
mtkoNumber = _mtkoNumber;
return strReplace(mtkoNumber,";",",");
}
}
**UI Builder class
public class INTC_MaterialTakeOffUIBuilder extends SrsReportDataContractUIBuilder
{
DialogField dialogProjId, dialogMTKONum;
INTC_MaterialTakeOffContract contract;
public void projLookup(FormStringControl _control)
{
Query query;
container projCon;
QueryBuildDataSource qbds;
//Create AOT query as require
query = new Query(queryStr(INTC_ProjLookupQuery));
SysLookupMultiSelectGrid::lookup( query, _control, _control, _control, projCon);
}
public void mtkoNumLookup(FormStringControl _control)
{
Query query;
container mtkoCon;
QueryBuildDataSource qbds;
//Create AOT query as require
query = new Query(queryStr(INTC_MTKOLookupQuery));
qbds = query.dataSourceTable(tableNum(INTC_MaterialTakeOffTable));
if(dialogProjId.value())
{
qbds.addRange(fieldNum(INTC_MaterialTakeOffTable, ProjId)).value(dialogProjId.value());
}
SysLookupMultiSelectGrid::lookup( query, _control, _control, _control, mtkoCon);
}
public void build()
{
super();
contract = this.dataContractObject();
}
public void postBuild()
{
super();
dialogProjId = this.bindInfo().getDialogField(contract,methodStr(INTC_MaterialTakeOffContract, parmProjId));
dialogMTKONum = this.bindInfo().getDialogField(contract,methodStr(INTC_MaterialTakeOffContract, parmMTKONumber));
dialogProjId.registerOverrideMethod(methodStr(FormStringControl, lookup),methodStr(INTC_MaterialTakeOffUIBuilder, projLookup),this);
dialogMTKONum.registerOverrideMethod(methodStr(FormStringControl, lookup),methodStr(INTC_MaterialTakeOffUIBuilder, mtkoNumLookup),this);
}
}
**Dp class
[SRSReportParameterAttribute(classStr(INTC_MaterialTakeOffContract))]
public class INTC_MaterialTakeOffDp extends SrsReportDataProviderPreProcess//SrsReportDataProviderPreProcessTempDB//SRSReportDataProviderBase// SrsReportDataProviderPreProcess//
{
INTC_MaterialTakeOffTmp materialTakeOffTmp;
Str1260 projId, mtkoNumber;
public void processReport()
{
Query query = new Query();
QueryBuildDataSource qbds;
QueryBuildRange qbr;
QueryRun qRun;
INTC_MaterialTakeOffContract materialTakeOffContract;
INTC_MaterialTakeOffTable materialTakeOffTable;
RecordInsertList recordInsertList = null;
Name itemName;
materialTakeOffContract = this.parmDataContract() as INTC_MaterialTakeOffContract;
projId = materialTakeOffContract.parmProjId();
mtkoNumber = materialTakeOffContract.parmMTKONumber();
qbds = query.addDataSource(tableNum(INTC_MaterialTakeOffTable));
if(projId)
{
qbds.addRange(fieldNum(INTC_MaterialTakeOffTable, ProjId)).value(projId);
}
if(mtkoNumber)
{
qbds.addRange(fieldNum(INTC_MaterialTakeOffTable, INTC_MTKONumber)).value(mtkoNumber);
}
recordInsertList = new RecordInsertList(tablenum(INTC_MaterialTakeOffTmp), false,false,false,false,false);
qRun = new QueryRun(query);
while(qRun.next())
{
materialTakeOffTable = qRun.get(tableNum(INTC_MaterialTakeOffTable));
itemName = InventTable::find(materialTakeOffTmp.ItemId).itemName();
materialTakeOffTmp.ProjId = materialTakeOffTable.ProjId;
materialTakeOffTmp.INTC_MTKONumber = materialTakeOffTable.INTC_MTKONumber;
materialTakeOffTmp.INTC_SpecId = materialTakeOffTable.INTC_SpecId;
materialTakeOffTmp.CategoryId = materialTakeOffTable.CategoryId;
materialTakeOffTmp.ProcurementCategoryId = materialTakeOffTable.ProcurementCategoryId;
materialTakeOffTmp.ItemId = materialTakeOffTable.ItemId;
materialTakeOffTmp.ItemName = itemName;
materialTakeOffTmp.Remarks = materialTakeOffTable.Remarks;
materialTakeOffTmp.Uom = materialTakeOffTable.Uom;
materialTakeOffTmp.QtyRequired = materialTakeOffTable.QtyRequired;
materialTakeOffTmp.AvailableQty = materialTakeOffTable.AvailableQty;
materialTakeOffTmp.QtyToOrder = materialTakeOffTable.QtyToOrder;
materialTakeOffTmp.UnitCost = materialTakeOffTable.UnitCost;
materialTakeOffTmp.TotalCost = materialTakeOffTable.TotalCost;
recordInsertList.add(materialTakeOffTmp);
}
ttsbegin;
recordInsertList.insertDatabase();
ttscommit;
}
[SRSReportDataSetAttribute(tablestr(“INTC_MaterialTakeOffTmp”))]
public INTC_MaterialTakeOffTmp getMaterialTakeOffContract()
{
materialTakeOffTmp.setConnection(this.parmUserConnection());
select materialTakeOffTmp;
return materialTakeOffTmp;
}
}