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

Popular posts from this blog

Many connections to SQL from AOS dax 2012