/// <summary>
/// Batch to post the movement and Transfer Journals.
/// </summary>
public class InventoryMovementPostBatch_CAP extends RunBaseBatch implements BatchRetryable
{
// JournalTransferErrors transferError ;
NoYes transferError = NoYes::Yes ;
InventJournalType journalType ;
InventJournalId journalId ;
InventJournalNameId journalName ;
DialogField InvntJrnlTyp;
DialogField InvntJrnlId;
DialogField InvntJrnlName;
DialogField dialogTransferErrors ;
Set journalsToBeUpdated;
QueryRun queryRun;
JournalCheckPost journalCheckPost;
boolean exceptionFound;
const int CurrentVersion = 1;
[Hookable(false)]
public boolean isRetryable()
{
return false;
}
public Object dialog(DialogRunbase dialog = null, boolean forceOnClient = false)
{
dialog = super();
dialog.addGroup("@CAP:JournalType");
InvntJrnlTyp = dialog.addFieldValue(enumStr(InventJournalType),journalType,"@CAP:JournalType");
dialog.addGroup("@CAP:JournalName");
InvntJrnlName = dialog.addFieldValue(extendedTypeStr(InventJournalNameId),journalName,"@CAP:JournalName");
dialog.addGroup("@CAP:JournalId");
InvntJrnlId = dialog.addFieldValue(extendedTypeStr(InventJournalId),journalId,"@CAP:JournalId");
dialogTransferErrors = dialog.addFieldValue(enumStr(NoYes),transferError,"@CAP:TransferAllPostingErrorsToANewJournal");
return dialog;
}
public boolean getFromDialog()
{
boolean ret;
ret = super();
if (ret)
{
transferError = dialogTransferErrors.value();
journalType = InvntJrnlTyp.value();
journalId = InvntJrnlId.value();
journalName = InvntJrnlName.value();
this.updateQueryWithDialogValue();
}
return ret;
}
protected void new()
{
journalsToBeUpdated = new Set(Types::String);
super();
this.initializeQuery();
}
private void initializeQuery()
{
Query query = new Query();
QueryBuildDataSource queryBuildDataSourceBook = query.addDataSource(tablenum(InventJournalTable));
queryBuildDataSourceBook.clearRanges();
queryBuildDataSourceBook.clearRange(fieldNum(InventJournalTable,JournalType));
queryBuildDataSourceBook.addSortField(fieldnum(InventJournalTable, JournalId));
queryBuildDataSourceBook.addRange(fieldnum(InventJournalTable, JournalType));
// queryBuildDataSourceBook.addRange(fieldnum(InventJournalTable, JournalType)).value(queryvalue(0));
queryBuildDataSourceBook.addRange(fieldnum(InventJournalTable, JournalId));
QueryBuildRange queryBuildRange = queryBuildDataSourceBook.addRange(fieldnum(InventJournalTable, Posted));
queryBuildRange.status(RangeStatus::Locked);
queryBuildRange.value(SysQuery::value(NoYes::No));
queryRun = new QueryRun(query);
}
private void updateQueryWithDialogValue()
{
Query qr;
qr = queryRun.query();
if (journalType)
qr.dataSourceTable(tableNum(InventJournalTable)).addRange(fieldNum(InventJournalTable, JournalType)).value(SysQuery::value(journalType));
if (journalId)
qr.dataSourceTable(tableNum(InventJournalTable)).addRange(fieldNum(InventJournalTable, JournalId)).value(SysQuery::value(journalId));
if (journalName)
qr.dataSourceTable(tableNum(InventJournalTable)).addRange(fieldNum(InventJournalTable, JournalNameId)).value(SysQuery::value(journalName));
queryRun.query(qr);
}
public InventJournalType parmjournalType( InventJournalType _journalType = journalType)
{
journalType = _journalType;
return journalType;
}
public InventJournalNameId parmjournalId( InventJournalId _journalId = journalId)
{
journalId = _journalId;
return journalId;
}
public QueryRun queryRun()
{
return queryRun;
}
public void run()
{
InventJournalTable inventJournalTable;
try
{
While(queryRun.Next())
{
inventJournalTable = queryRun.get(tablenum(InventJournalTable));
journalCheckPost = InventJournalCheckPost::newPostJournal(inventJournalTable);
if (transferError)
{
journalCheckPost.parmThrowCheckFailed(false);
journalCheckPost.parmTransferErrors(transferError);
}
if (journalCheckPost.validate())
{
journalCheckPost.run();
}
}
}
catch
{
info("@CAP:Posted");
}
}
public container pack()
{
return [CurrentVersion, queryRun.pack()];
}
public boolean unpack(container packedClass)
{
Integer version = conpeek(packedClass,1);
PackedQueryRun packedQuery;
switch (version)
{
case CurrentVersion:
[version, packedQuery] = packedClass;
if (SysQuery::isPackedOk(packedQuery))
{
queryRun = new QueryRun(packedQuery);
}
break;
default :
return false;
}
return true;
}
public boolean validate(Object _calledFrom = null)
{
boolean ret;
ret = super();
return ret;
}
public static InventoryMovementPostBatch_CAP construct()
{
return new InventoryMovementPostBatch_CAP();
}
public static void main(Args args)
{
InventoryMovementPostBatch_CAP inventoryMovementBatch = InventoryMovementPostBatch_CAP::construct();
inventoryMovementBatch.getLast();
if (inventoryMovementBatch.prompt())
{
inventoryMovementBatch.runOperation();
}
}
public boolean showQueryValues()
{
return true;
}
protected boolean canRunInNewSession()
{
return true;
}
}