class JOBTestMultiSelect extends RunBaseBatch
{
container stores;
SysLookupMultiSelectCtrl msCtrl;
FormBuildStringControl fbsCtrlMultiSelect;
// Dialog fields
#define.CurrentVersion(1)
#localmacro.CurrentList
stores
#endmacro
public Object dialog()
{
DialogRunbase dialog = super();
FormBuildControl setupGroupControl;
DialogGroup dialogGrp;
dialogGrp = dialog.addGroup('Stores');
dialog.allowUpdateOnSelectCtrl(true);
setupGroupControl = dialog.formBuildDesign().control(dialogGrp.formBuildGroup().id());
fbsCtrlMultiSelect = setupGroupControl.addControl(FormControlType::String, identifierstr(RetailStoreId));
return dialog;
}
public container IdsToRecIds(container _stores)
{
RetailStoreTable storeTbl;
RetailStoreId storeId;
container storeRecIds;
int i;
storeRecIds = conNull();
for (i = 1; i <= conLen(_stores); i++)
{
storeId = conPeek(_stores, i);
select firstOnly RecId from storeTbl
where storeTbl.StoreNumber == storeId;
storeRecIds += [storeTbl.RecId];
}
return storeRecIds;
}
public container RecIdsToIds(container _stores)
{
RetailStoreTable storeTbl;
RetailStoreId storeId;
RefRecId storeRecId;
container storeIds;
int i;
storeIds = conNull();
for (i = 1; i <= conLen(_stores); i++)
{
storeRecId = conPeek(_stores, i);
select firstOnly StoreNumber, RecId from storeTbl
where storeTbl.RecId == storeRecId;
storeIds += [storeTbl.StoreNumber];
}
return storeIds;
}
public void dialogPostRun(DialogRunbase _dialog)
{
FormRun formRun;
FormStringControl fsCtrlMultiSelect;
super(_dialog);
formRun = _dialog.dialogForm().formRun();
if (formRun)
{
fsCtrlMultiSelect1 = formRun.design().control(fbsCtrlMultiSelect1.id());
//
Query query = new Query();
QueryBuildDataSource qbds = query.addDataSource(tableNum(RetailStoreTable));
qbds.addSelectionField(fieldNum(RetailStoreTable, StoreRecId));
qbds.addSelectionField(fieldNum(RetailStoreTable, StoreNumber));
qbds.addSelectionField(fieldNum(RetailStoreTable, Name));
qbds.addRange(fieldNum(RetailStoreTable, inventLocationDataAreaId)).value(queryValue(curExt()));
//
msCtrl = SysLookupMultiSelectCtrl::constructWithQuery(formRun, fsCtrlMultiSelect, query, true, stores);
msCtrl1.set([this.IdsToRecIds(stores), stores]);
}
}
public boolean getFromDialog()
{
;
stores = this.RecIdsToIds(msCtrl1.get());
return super();
}
public boolean init()
{
return true;
}
protected void new()
{
super();
}
public container pack()
{
return [#CurrentVersion,#CurrentList];
}
/// <summary>
/// Contains the code that does the actual job of the class.
/// </summary>
public void run()
{
#OCCRetryCount
if (! this.validate())
throw error("");
try
{
ttsbegin;
str storeConStr = con2Str(stores);
Info(strFmt('Selected store(s): %1', storeConStr));
//storeSet = new Set(Types::Int64);
//for (ctrI=1; ctrI<=conLen(stores); ctrI++)
//{
// storeSet.add(conPeek(stores, ctrI));
//}
//SetEnumerator setEnum = storeSet.getEnumerator();
//while (setEnum.moveNext())
//{
// info (strFmt('%1', setEnum.current()));
//}
ttscommit;
}
catch (Exception::Deadlock)
{
retry;
}
catch (Exception::UpdateConflict)
{
if (appl.ttsLevel() == 0)
{
if (xSession::currentRetryCount() >= #RetryNum)
{
throw Exception::UpdateConflictNotRecovered;
}
else
{
retry;
}
}
else
{
throw Exception::UpdateConflict;
}
}
}
public boolean runsImpersonated()
{
return true;
}
public boolean unpack(container packedClass)
{
Version version = RunBase::getVersion(packedClass);
;
switch (version)
{
case #CurrentVersion:
[version,#CurrentList] = packedClass;
break;
default:
return false;
}
return true;
}
public boolean validate(Object _calledFrom = null)
{
if (false)
return checkFailed("");
return true;
}
static JOBTestMultiSelect construct()
{
return new JOBTestMultiSelect ();
}
// Here goes a description of the class
static ClassDescription description()
{
return "@SYS70984";
}
static void main(Args args)
{
JOBTestMultiSelect tutorial_RunBase;
;
tutorial_RunBase = JOBTestMultiSelect ::construct();
if (tutorial_RunBase.prompt())
tutorial_RunBase.runOperation();
}
protected boolean canRunInNewSession()
{
return false;
}
}