D365 转移单的流程(装箱-装运-接受-登记)

    public void InventTranfer()
    {
        
        System.Exception ex;
        InventTransferUpd           invTranUpd;
        InventTransferParmTable     invTransParmTable;
        InventTransferParmTable     invTransParmTbl;
        InventTransferParmUpdate    inventTransferParmUpdate;
        InventTransferUpdPick       InventTransferUpdPick;
        InventTransferUpdShip       InventTransferUpdShip;
        InventTransferUpdReceive    InventTransferUpdReceive;
        InventTransferParmLine      line;
        ParmID                      parmId;
        InventTransferTable         inventTranstable = InventTransferTable::find(_transferId);
 
        parmId = RunBaseMultiParm::getSysParmId();
        invTransParmTable.clear();
        invTransParmTable.initValue();
        invTransParmTable.ParmId = parmId;
        invTransParmTable.TransferId = inventTranstable.TransferId;
        invTransParmTable.insert();
        invTransParmTable.AutoReceiveQty = NoYes::No;
        invTransParmTable.UpdateType = _type;//InventTransferUpdateType::PickingList;
        invTransParmTable.PickUpdateQty = InventTransferPickUpdateQty::All;
        invTransParmTable.ShipUpdateQty   = InventTransferShipUpdateQty::All;
        invTransParmTable.ReceiveUpdateQty = InventTransferReceiveUpdateQty::All;
        invTransParmTable.EditLines = NoYes::Yes;
        invTransParmTable.AutoReceiveQty = NoYes::No;
        invTransParmTable.TransDate = systemDateGet();
        invTransParmTable.modifiedField(fieldNum(InventTransferParmTable, ShipUpdateQty));
        

        switch(invTransParmTable.UpdateType)
        {
            case InventTransferUpdateType::PickingList:
                InventTransferUpdPick = InventTransferUpdPick::newParmBuffer(invTransParmTable);
                if(InventTransferUpdPick.validate())
                {
                    InventTransferUpdPick.run();
                }
                break;
            case InventTransferUpdateType::Shipment:
                InventTransferUpdShip = InventTransferUpdShip::newParmBuffer(invTransParmTable);
                if(InventTransferUpdShip.validate())
                {
                    InventTransferUpdShip.run();
                }
                break;
            case InventTransferUpdateType::Receive:
                InventTransferUpdReceive = InventTransferUpdReceive::newParmBuffer(invTransParmTable);
                if(InventTransferUpdReceive.validate())
                {
                    InventTransferUpdReceive.run();
                }
                break;
            default:
        }
    }

    public void register(InventTransferId _transferId)
    {
        WMSPickingRoute             localWMSPickingRoute;
       
        List                        list    = new List(Types::String);
        
        //全部领料单登记
        while select localWMSPickingRoute
         where localWMSPickingRoute.transType == InventTransType::TransferOrderShip &&
             localWMSPickingRoute.transRefId == _transferId
        {
            list.addEnd(localWMSPickingRoute.PickingRouteID);
        }

        WMSPickingRoute::finishMulti(list.pack()); //Note - this is not in a single tts, so some routes might be posted and others fail
    }

    public void ReleaseToWarehouse(InventTransferId _transferId)
    {
        InventTransferTable InventTransferTable = InventTransferTable::find(_transferId);
        WHSWarehouseRelease::transferOrderFormRelease(InventTransferTable);
    }

}


posted @ 2020-11-11 14:03  kang001  阅读(326)  评论(0)    收藏  举报