将 转移单 自动发货
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中供调用.
有些公司一些移库,采购销售的动作并不想通过人为操作过账,而是想让系统自己完成,这时用代码生成相应记录并自动过账就比较重要了.下面的代码是创建并装运转移单的代码.
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中供调用.
相关文章推荐
- 将转移单自动发货
- 在outbound delivery发货单中如何自动产生TO
- iOS项目转移到自动引用计数
- ABAP 订单-交货单-发货过账自动完成 案例
- 干货 | 自更新CC 2015.3以上版本,都默认自动安装C盘,真的无法转移其他的盘吗?
- MHA 自动故障转移步骤及过程剖析
- 盒子 收藏帖子 转移-实现向网页自动填写用户名密码并自动点击登录按钮 完成全自动凳录
- 如何让淘宝店铺的商品能自动发货到旺旺
- hadoop2.4 ha(双namenode自动故障转移安装)
- ecshop开发日志之手机端虚拟商品自动发货
- 实时发货过账自动创建发票
- 结合keepalived实现lvs的高可用群集故障自动转移
- 非域环境下搭建自动故障转移镜像无法将 ALTER DATABASE 命令发送到远程服务器实例的解决办法
- iOS项目转移到自动引用计数
- Spring整合Dubbo,使用zookeeper作为注册中心,进行远程调用及负载均衡、自动失效转移(何志雄)
- 自动转移到下一个焦点
- Hyper-V虚拟化测试20自动故障转移
- iOS项目转移到自动引用计数
- HBase 分区Region自动转移测试
- 订单、支付、退款、发货、退货等编号自动生成类