How to post transfer order from code X++
It took me to post transfer order from X++, and i dont find astandart method to do it. There is some code to do it. This is for Dax 2012 R3 version
static void postTransferOrder(Args _args)
{
InventTransferUpd inventTransferUpd;
InventTransferMultiShip inventTransferMultiShip;
InventTransferParmTable transferParmTable;
InventTransferParmLine transferParmLine ;
InventTransferJour inventTransferJourShiped;
InventTransferLine transferLine ;
InventDim inventDim;
LineNum lineNum;
//+ Create InventTransferParmTable
//InventTransferMultiReceive
//InventTransferMultiPick
inventTransferMultiShip = InventTransferMultiShip::construct();//use diffrent classes for ship, receive and pick
RunBaseMultiParm::initParm(inventTransferMultiShip);
inventTransferMultiShip.insert(inventTransferTable, transferParmTable);
transferParmTable.EditLines = true;
transferParmTable.PickUpdateQty = InventTransferPickUpdateQty::All;
transferParmTable.update();
//- Create InventTransferParmTable
//create InventTransferParmLine this code from InventTransferParmLine::createReceiveLines you can use it for full qty posting
{
lineNum++;
transferParmLine.clear();
transferParmLine.initFromInventTransferLine(transferLine);
transferParmLine.ParmId = transferParmTable.ParmId;
transferParmLine.TransferId = transferParmTable.TransferId;
inventDim = InventDim::find(transferParmLine.InventDimId);
inventDim.clearNotProductDim(InventDimGroupSetup::newItemId(transferParmLine.ItemId));
inventDim.InventLocationId = inventTransferTable.InventLocationIdFrom;
inventDim.initFromInventLocation(inventDim.inventLocation());
transferParmLine.InventDimId = InventDim::findOrCreate(inventDim).InventDimId;
if (transferLine.inventDim().InventProfileId_RU)
{
inventDim = transferLine.inventDim();
inventDim.InventProfileId_RU = transferLine.inventDim().InventProfileId_RU;
inventDim = InventDim::findOrCreate(inventDim);
transferParmLine.InventDimId = inventDim.InventDimId;
}
transferParmLine.InventTransId = transferLine.InventTransId;
transferParmLine.InventTransIdTransit = transferLine.InventTransIdTransitTo;
transferParmLine.QtyShipNow = 1; // qty for ship
transferParmLine.LineNum = lineNum;
transferParmLine.insert();
}
//post transfer order
inventTransferUpd = InventTransferUpdShip::newParmBuffer(transferParmTable);
inventTransferUpd.run();
}
Comments
Post a Comment