class SalesOrderDeleteBatchJob extends RunBaseBatch
{
DialogRunbase dialog;
SalesId salesId;
str fileName;
str tableName;
str relationName;
SalesTable salesTable;
SalesLine salesLine;
SalesLineDelete salesLineDelete;
SalesTableDelete salesTableDelete;
Map mapTables;
Map mapRelations;
MapEnumerator mapTablesEnumerator;
MapEnumerator mapRelationsEnumerator;
public static void main(Args _args)
{
SalesOrderDeleteBatchJob salesOrderDeleteBatchJob = new SalesOrderDeleteBatchJob();
salesOrderDeleteBatchJob.run();
}
public void dialog()
{
dialog = DialogRunbase::construct();
dialog.caption("Delete Sales Orders Batch Job");
dialog.addFieldValue(extendedTypeStr(SalesId), salesId, "Sales ID");
dialog.addFieldValue(extendedTypeStr(FilenameOpen), fileName, "Excel File");
dialog.run();
}
public boolean getFromDialog()
{
salesId = dialog.fieldValue(extendedTypeStr(SalesId));
fileName = dialog.fieldValue(extendedTypeStr(FilenameOpen));
return true;
}
public void mapTablesAndRelations()
{
mapTables = new Map(Types::String, Types::String);
mapRelations = new Map(Types::String, Types::String);
mapTables.insert("SalesTable", "SalesLine");
mapTables.insert("SalesLine", "");
mapRelations.insert("SalesTable", "SalesLine");
}
public void deleteSalesOrder()
{
salesTable = SalesTable::find(salesId);
salesTableEnumerator = salesTable.getEnumerator();
while (salesTableEnumerator.moveNext())
{
tableName = salesTableEnumerator.currentName();
if (mapTables.exists(tableName))
{
salesLineEnumerator = salesTableEnumerator.currentValue().getEnumerator();
while (salesLineEnumerator.moveNext())
{
salesLine = salesLineEnumerator.currentValue();
if (mapTables.get(tableName) == "SalesLine")
{
salesLineDelete = SalesLineDelete::construct(salesLine);
salesLineDelete.run();
}
else
{
salesLineUpdate = SalesLineUpdate::construct(salesLine);
salesLineUpdate.run();
}
}
if (mapRelations.exists(tableName))
{
relationName = mapRelations.get(tableName);
salesTableDelete = SalesTableDelete::construct(salesTable);
salesTableDelete.run();
}
else
{
salesTableUpdate = SalesTableUpdate::construct(salesTable);
salesTableUpdate.run();
}
}
else
{
salesTableInsert = SalesTableInsert::construct(salesTable);
salesTableInsert.run();
}
}
public container pack()
{
return [#File fileName, #SalesId salesId];
}
public boolean unpack(container, _packedClass)
{
fileName = conPeek(_packedClass, 1);
salesId = conPeek(_packedClass, 2);
return true;
}
public void run()
{
dialog();
if (getFromDialog())
{
mapTablesAndRelations();
deleteSalesOrder();
}
}
}