Restore deleted Sales order from the void salesorder
class TECRestoreDeletedSOBatchCls extends RunBaseBatch
{
// User Input fields
DialogField fieldSalesid;
DialogField fieldName;
// Variables to store user input
// SalesTable salesTable;
Name salesID;
// pack() and unpack() methods are used to load the last value from user
// for our simple example we are not going to use them.
public container pack()
{
return conNull();
}
public boolean unpack(container packedClass)
{
return true;
}
// Dialog method to capture runtime user inputs for customer details
public Object dialog()
{
Dialog dialog = super();
// Set a title for dialog
dialog.caption( 'Restored deleted Sales order');
// Add a new field to Dialog
fieldSalesid = dialog.addField(extendedTypeStr(name), 'Sales order number'); //SalesIdDelete
return dialog;
}
// Retrieve values from Dialog
public boolean getFromDialog()
{
salesid = fieldSalesid.value();
return super();
}
public void run()
{
SalesTableDelete salesTableDelete;
SalesLineDelete salesLineDelete;
SalesTable salesTable;
SalesLine salesLine;
Map Map = new Map(Types::Int64, Types::Record);
SalesTableDelete = SalesTableDelete::find(salesID, true); // provide the sales order
ttsbegin;
switch (salesTableDelete.Cancelled)
{
case Voided::Voided:
{
salesTable = conpeek(salesTableDelete.SalesTable, 1);
salesTable.insert();
while select forupdate salesLineDelete
where salesLineDelete.SalesId == salesTableDelete.SalesId
{
salesLine = conpeek(salesLineDelete.SalesLine, 1);
salesLine.insert();
// this code is needed if the refenrce invet transaction is missing on particular case
// InventTransOriginSalesLine originSalesLine;
//{
// select * from originSalesLine where
// originSalesLine.InventTransOrigin == InventTransOrigin::findByInventTransId(salesLine.InventTransId).RecId;
// if (!originSalesLine.InventTransOrigin)
// {
// originSalesLine.InventTransOrigin = InventTransOrigin::findByInventTransId(salesLine.InventTransId).RecId;
// originSalesLine.SalesLineDataAreaId = salesLine.DataAreaId;
// originSalesLine.SalesLineInventTransId = salesLine.InventTransId;
// originSalesLine.doInsert();
// }
//}
salesLineDelete.delete();
}
salesTableDelete.delete();
}
break;
case Voided::linesVoided :
while select forupdate salesLineDelete where salesLineDelete.SalesId == salesTableDelete.SalesId
{
salesLine = conpeek(salesLineDelete.SalesLine, 1);
salesLine.insert();
Map.insert(salesLine.RecId, salesLine);
salesLineDelete.delete();
}
salesTableDelete.delete();
break;
}
ttscommit;
}
public static void main(Args _args)
{
TECRestoreDeletedSOBatchCls tecRestoreDeletedSOBatch = new TECRestoreDeletedSOBatchCls();
// Prompt the dialog, if user clicks OK it returns true
if (tecRestoreDeletedSOBatch.prompt())
{
tecRestoreDeletedSOBatch.run();
}
}
}
Comments
Post a Comment