您的位置:首页 > 其它

将 转移单 自动发货

2008-03-05 22:26 387 查看
说到开发,首先想到的是对语言语法细节的熟悉,对面向对象的理解.对于AX的二次开发,这些当然也比较重要,但相对来说更加重要的是对系统已有的几千张表和几千个类的熟悉.决定二次开发速度的主要因素也是对这些表和类的理解,因为系统中有大量的功能已经封装成了比较好的类可以调用,比如获取库存的现有量想到InventOnhand可以使用,想获取此前某一天的库存量可以用InventSumDate,销售订单和采购订单的过账可以调用SaelsFormLetter和PurchFormLetter的update方法等等.

有些公司一些移库,采购销售的动作并不想通过人为操作过账,而是想让系统自己完成,这时用代码生成相应记录并自动过账就比较重要了.下面的代码是创建并装运转移单的代码.

static void newInventTransfer(Args _args)

{

InventTransferTable inventTransferTable;

InventTransferLine inventTransferLine;

InventTransferParmTable inventTransferParmTable;

InventTransferParmLine inventTransferParmLine;

InventDim inventDim;

InventTransferMultiShip inventTransferMultiShip = InventTransferMultiShip::construct();

InventTransferId inventTransferId;

NumberSeq numberSeq = NumberSeq::newReserveNumFromCode(InventParameters::numRefTransferId().NumberSequence);

Num parmId = NumberSeq::newReserveNumFromCode(NumberSeqReference::findReference(typeId2ExtendedTypeId(typeid(ParmId))).NumberSequence).num();

;

ttsbegin;

//Insert inventTransferTable

inventTransferId = numberSeq.num();

inventTransferTable.TransferId = inventTransferId;

inventTransferTable.initValue();

inventTransferTable.InventLocationIdFrom = 'GW';

inventTransferTable.InventLocationIdTransit = 'GW-T';

inventTransferTable.InventLocationIdTo = 'EW';

inventTransferTable.insert();

//Insert inventTransferLine

inventTransferLine.initFromInventTransferTable(inventTransferTable,true);

inventTransferLine.ItemId = 'CN-01';

inventTransferLine.initFromInventTable(InventTable::find('CN-01'));

InventMovement::setAutoReserving(inventTransferLine);

InventMovement::bufferSetRemainQty(inventTransferLine,InventMovSubType::None); //Set Remain Qty

InventMovement::bufferSetRemainQty(inventTransferLine,InventMovSubType::TransferOrderTransitFrom); //Set Receive Qty

inventTransferLine.LineNum = 1;

inventDim.InventLocationId = 'GW';

inventTransferLine.InventDimId = InventDim::findOrCreate(inventDim).inventDimId;

inventTransferLine.RemainStatus = InventTransferRemainStatus::Shipping;

inventTransferLine.insert();

//Insert inventTransferParmTable and inventTransferParmLine

inventTransferParmTable.ParmId = parmId;

inventTransferParmTable.TransferId = inventTransferId;

inventTransferParmTable.UpdateType = InventTransferUpdateType::Shipment;

inventTransferParmTable.ShipUpdateQty = InventTransferShipUpdateQty::All;

inventTransferParmTable.EditLines = NoYes::No;

inventTransferParmTable.AutoReceiveQty = NoYes::No;

inventTransferParmTable.TransDate = SystemDateGet();

inventTransferParmTable.insert();

//Ship

inventTransferMultiShip.runUpdate(inventTransferParmTable);

ttscommit;

}
当然这里只是写了个Job,这个方法完全可以像SalesFormLetter的update方法那样封装一下放到类InventTransferUpd中供调用.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: