MULTI-SELECTION REPORT PARAMETER
1. Create a contract class as follows of type List in multi selection :
[SysOperationContractProcessingAttribute(classStr(SLD_RecieptSlipUIBuilderClass))]
class SLD_RecieptSlipReportContract implements SysOperationValidatable
{
List purchidlist;
[
DataMemberAttribute('purchidlist'),
SysOperationLabelAttribute(literalstr("Purchase Order ID's")),
SysOperationHelpTextAttribute(literalstr("Purchase Order ID's")),
AifCollectionTypeAttribute("purchidlist", Types::String)
]
public List parmpurchid(List _purchidlist = purchidlist)
{
purchidlist = _purchidlist;
return purchidlist;
}
/*[
DataMemberAttribute('Semester'), SysOperationLabelAttribute(literalstr("@ConWAN:StdSem")),
SysOperationHelpTextAttribute(literalstr("@ConWAN:StdSem")),
SysOperationDisplayOrderAttribute('2')]
public Integer parmsemester(Integer _semester = semester)
{
semester = _semester;
return semester;
}*/
public boolean validate()
{
boolean isValid = true;
if(!this.parmpurchid())
{
isValid = checkFailed("not valid purchase order ID");
}
return isValid;
}
}
2. for multi select Look-up create a UI Builder class :
class SLD_RecieptSlipUIBuilderClass extends SysOperationAutomaticUIBuilder
{
DialogField dialogCust;
container conCustTable;
SLD_RecieptSlipReportContract contract;
public void build()
{
contract = this.dataContractObject() as SLD_RecieptSlipReportContract;
dialogCust = this.addDialogField(
methodStr(SLD_RecieptSlipReportContract, parmpurchid),
contract);
}
public void postBuild()
{
super();
contract = this.dataContractObject() as SLD_RecieptSlipReportContract;
dialogCust = this.bindInfo().getDialogField(
contract,
methodStr(SLD_RecieptSlipReportContract, parmpurchid));
dialogCust.registerOverrideMethod(
methodStr(FormStringControl, lookup),
methodStr(SLD_RecieptSlipUIBuilderClass, purchTableLookup),
this);
if (dialogCust)
{
dialogCust.lookupButton(2);
}
}
private void purchTableLookup(FormStringControl _control)
{
Query query= new Query();
QueryBuildDataSource qbdsSLD_Enroll;
qbdsSLD_Enroll = query.addDataSource(tableNum(VendPackingSlipJour));
qbdsSLD_Enroll.addSelectionField(fieldNum(VendPackingSlipJour, PurchId));
//qbdsSLD_Enroll.fields().addField(fieldNum(VendPackingSlipJour, PurchId));
//sysTableLookup = SysTableLookup::newParameters(tableNum(VendPackingSlipJour), _control);
//sysTableLookup.addLookupfield(fieldNum(VendPackingSlipJour, PurchId));
//sysTableLookup.parmQuery(query);
//sysTableLookup.performFormLookup();
//conCustTable = [tableNum(VendPackingSlipJour), fieldNum(VendPackingSlipJour, PurchId)];
SysLookupMultiSelectGrid::lookup(
query,
_control,
_control,
_control,
conCustTable);
}
public void postRun()
{
//super();
}
}
3. Finally Create a DP class as follows :
[SRSReportParameterAttribute(classStr(SLD_RecieptSlipReportContract))]
class SLD_RecieptSlipReportDP extends SRSReportDataProviderBase
{
VendPackingSlipTrans vendPackingSlipTrans;
VendPackingSlipJour vendPackingSlipJour;
SLD_ReceiptSlipTemp receiptslip;
InventDim inventDim;
ListIterator listIdIterator;
ListIterator list;
private Query buildQuery(ListIterator _listIdIterator = null)
{
Query query= new Query();
QueryBuildDataSource packingslip;
packingslip = query.addDataSource(tableNum(VendPackingSlipTrans));
if(_listIdIterator)
{
Info(strFmt('before %1',_listIdIterator.value()));
while(_listIdIterator.more())
{
Info(strFmt('After %1',_listIdIterator.value()));
query.dataSourceTable(tablenum(VendPackingSlipTrans), 1)
.addRange(fieldnum(VendPackingSlipTrans, OrigPurchid)).value(queryValue(_listIdIterator.value()));
_listIdIterator.next();
}
}
return query;
}
/// <summary>
/// Gets the full data from the <c>PurchPackingSlipTmp</c> temporary table.
/// </summary>
/// <returns>
/// The <c>PurchPackingSlipTmp</c> temporary table.
/// </returns>
[SRSReportDataSetAttribute(tableStr(SLD_ReceiptSlipTemp))]
public SLD_ReceiptSlipTemp getPurchReceiptSlipTmp()
{
select receiptslip;
return receiptslip;
}
public void getReportParametes()
{
SLD_RecieptSlipReportContract Contract = this.parmDataContract() as SLD_RecieptSlipReportContract;
if(Contract)
{
listIdIterator = new ListIterator(Contract.parmpurchid());
}
}
private ItemId itemId()
{
ItemId itemId;
switch (VendFormletterParameters::find().ItemNum)
{
case OurYourBoth::Our : itemId = vendPackingSlipTrans.ItemId; break;
case OurYourBoth::Your : itemId = vendPackingSlipTrans.ExternalItemId; break;
case OurYourBoth::Both : itemId = vendPackingSlipTrans.ItemId; break;
}
return itemId;
}
private void PurchPackingSlipDetailsTmp()
{
SLD_RecieptSlipReportContract _dataContract = this.parmDataContract() as SLD_RecieptSlipReportContract;
list = new ListIterator(_dataContract.parmpurchid());
while (list.more())
{
while select vendPackingSlipTrans where list.value() == vendPackingSlipTrans.OrigPurchid
{
receiptslip.JournalRecId = vendPackingSlipJour.RecId;
receiptslip.ItemId = this.itemId();
receiptslip.Name = vendPackingSlipTrans.Name;
//receiptslip.Ordered = vendPackingSlipTrans.Ordered;
receiptslip.PurchUnit = vendPackingSlipTrans.purchUnitTxt();
receiptslip.PurchQty = vendPackingSlipTrans.Qty;
//receiptslip.Remain = vendPackingSlipTrans.Remain;
receiptslip.InventSiteId = vendPackingSlipTrans.inventDim().InventSiteId;
receiptslip.InventLocationId = vendPackingSlipTrans.inventDim().InventLocationId;
receiptslip.InventSizeId = vendPackingSlipTrans.inventDim().InventSizeId;
receiptslip.InventColorId = vendPackingSlipTrans.inventDim().InventColorId;
receiptslip.PurchId = vendPackingSlipTrans.OrigPurchid;
receiptslip.insert();
}
list.next();
}
}
public void processReport()
{
QueryRun queryRun;
SLD_RecieptSlipReportContract contract;
//Query query= new Query();
this.getReportParametes();
queryRun = new QueryRun(this.buildQuery(listIdIterator));
while(queryRun.next())
{
vendPackingSlipTrans = queryRun.get(tablenum(vendPackingSlipTrans));
this.PurchPackingSlipDetailsTmp();
}
}
}
SLD_RecieptSlipReportContract Contract = this.parmDataContract() as SLD_RecieptSlipReportContract;
if(Contract)
{
listIdIterator = new ListIterator(Contract.parmpurchid());
}
}
private ItemId itemId()
{
ItemId itemId;
switch (VendFormletterParameters::find().ItemNum)
{
case OurYourBoth::Our : itemId = vendPackingSlipTrans.ItemId; break;
case OurYourBoth::Your : itemId = vendPackingSlipTrans.ExternalItemId; break;
case OurYourBoth::Both : itemId = vendPackingSlipTrans.ItemId; break;
}
return itemId;
}
private void PurchPackingSlipDetailsTmp()
{
SLD_RecieptSlipReportContract _dataContract = this.parmDataContract() as SLD_RecieptSlipReportContract;
list = new ListIterator(_dataContract.parmpurchid());
while (list.more())
{
while select vendPackingSlipTrans where list.value() == vendPackingSlipTrans.OrigPurchid
{
receiptslip.JournalRecId = vendPackingSlipJour.RecId;
receiptslip.ItemId = this.itemId();
receiptslip.Name = vendPackingSlipTrans.Name;
//receiptslip.Ordered = vendPackingSlipTrans.Ordered;
receiptslip.PurchUnit = vendPackingSlipTrans.purchUnitTxt();
receiptslip.PurchQty = vendPackingSlipTrans.Qty;
//receiptslip.Remain = vendPackingSlipTrans.Remain;
receiptslip.InventSiteId = vendPackingSlipTrans.inventDim().InventSiteId;
receiptslip.InventLocationId = vendPackingSlipTrans.inventDim().InventLocationId;
receiptslip.InventSizeId = vendPackingSlipTrans.inventDim().InventSizeId;
receiptslip.InventColorId = vendPackingSlipTrans.inventDim().InventColorId;
receiptslip.PurchId = vendPackingSlipTrans.OrigPurchid;
receiptslip.insert();
}
list.next();
}
}
public void processReport()
{
QueryRun queryRun;
SLD_RecieptSlipReportContract contract;
//Query query= new Query();
this.getReportParametes();
queryRun = new QueryRun(this.buildQuery(listIdIterator));
while(queryRun.next())
{
vendPackingSlipTrans = queryRun.get(tablenum(vendPackingSlipTrans));
this.PurchPackingSlipDetailsTmp();
}
}
}
HEY HEY HEY!!! HACK OF THE DAY !!
QUERY NULL EXCEPTION ERROR
Query query= new Query();
QueryBuildDataSource pack;
pack = query.addDataSource(tableNum(TN));
Comments
Post a Comment