Wednesday, 12 June 2019

multi select report with str replace contract parameter x++

**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;
}

}

No comments:

Post a Comment