实现pick和reigister
實現Pick和Reigister
AX有個問題是很多功能都跟表現層窗體綁定在一起,要用代碼直接實現某個功能就需要看窗體中的代碼是如何處理的并將其剝離出來。
比如領料和登記功能,它都封裝到了窗體InventTransPick和InventTransRegister中,雖然也是通過類InventTransWMS,InventTransWMS_Pick和InventTransWMS_Register實現相應的功能,但如果要通過代碼直接實現Pick和Register功能就需要看一下它們的處理邏輯,并將其改造一下。
1.給InventTransWMS_Pick和InventTransWMS_Register分別增加movement方法,代碼可以從相應的窗體上粘過來:
InventTransWMS_Pick:
? ? ? ? ? ? ? ? ? ? ? ? static InventMovement movement(Common _record)
{
InventMovement movement;
InventQuarantineOrder inventQuarantineOrder;
;
if (_record.TableId == tablenum(InventQuarantineOrder))
{
inventQuarantineOrder = _record;
if (inventQuarantineOrder.Status == InventQuarantineStatus::Created)
{
movement = InventMovement::construct(inventQuarantineOrder,InventMovSubType::TransferReceipt);
}
}
if (! movement)
{
movement = InventMovement::construct(_record);
}
return movement;
}
InventTransWMS_Resigter:
static InventMovement movement(Common _record)
{
InventMovement movement;
InventQuarantineOrder inventQuarantineOrder;
if (_record.TableId == tablenum(InventQuarantineOrder))
{
inventQuarantineOrder = _record;
if (inventQuarantineOrder.Status == InventQuarantineStatus::Created)
{
movement = InventMovement::construct(inventQuarantineOrder,InventMovSubType::None);
}
else
{
movement = InventMovement::construct(inventQuarantineOrder,InventMovSubType::TransferReceipt);
}
}
else
{
movement = InventMovement::construct(_record);
}
if (movement.newMovement_TransferReceipt())
{
movement = movement.newMovement_TransferReceipt();
movement = movement.newMovement_TransferIssueReceive() ? movement.newMovement_TransferIssueReceive() : movement;
movement = movement.newMovement_TransferReceipt() ? movement.newMovement_TransferReceipt() : movement;
}
return movement;
}
2.給兩個類分別增加Pick和Registe方法:
InventTransWMS_Pick:
static void pick(Common _cursor,TmpInventTransWMS _tmpInventTransWMS)
{
InventTransWMS_Pick inventTransWMS_Pick = new InventTransWMS_Pick(InventTransWMS_Pick::movement(_cursor),_tmpInventTransWMS);
;
InventTransWMS_Pick::updateInvent(inventTransWMS_Pick,_tmpInventTransWMS);
}
InventTransWMS_Register:
static void register(Common _cursor,TmpInventTransWMS _tmpInventTransWMS)
{
InventTransWMS_Register inventTransWMS_register = new InventTransWMS_Register(InventTransWMS_Register::movement(_cursor),_tmpInventTransWMS);
;
InventTransWMS_register::updateInvent(inventTransWMS_register,_tmpInventTransWMS);
}
3.調用示例:
將某行轉移單明細做領料動作
inventDim.InventLocationId = 'GW';
tmpInventTransWMS.InventQty = 1;
tmpInventTransWMS.InventDimId = InventDim::findOrCreate(inventDim).inventDimId;
tmpInventTransWMS.insert();
inventDim.InventLocationId = 'GW';
tmpInventTransWMS.InventQty = 1;
tmpInventTransWMS.InventDimId = InventDim::findOrCreate(inventDim).inventDimId;
tmpInventTransWMS.insert();
InventTransWMS_Pick::pick(inventTransferLine,tmpInventTransWMS);
將某行采購單明細做登記動作:
tmpInventTransWMS.InventQty = 1;
inventDim.InventLocationId = 'MW';
inventDim.inventBatchId = '001';
tmpInventTransWMS.InventDimId = InventDim::findOrCreate(inventDim).inventDimId;
tmpInventTransWMS.insert();
tmpInventTransWMS.InventQty = 1;
inventDim.InventLocationId = 'MW';
inventDim.inventBatchId = '002';
tmpInventTransWMS.InventDimId = InventDim::findOrCreate(inventDim).inventDimId;
tmpInventTransWMS.insert();
//Insert End
InventTransWMS_Register::register(purchLine,tmpInventTransWMS);
?
轉載于:https://www.cnblogs.com/yuankang/archive/2012/04/10/2440314.html
總結
以上是生活随笔為你收集整理的实现pick和reigister的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Fluent NHibernate之旅
- 下一篇: hdu 1087 Super Jump