For orders in AX (I am addressing sales orders specifically here), if you want to unpick an order, you have to go to the sales line and, one-by-one, unpick the order. You click on the Inventory button and select the Pick option. In the form, check the autocreate box, then click Post All in the lower area of the form. If you regularly have to pick and unpick orders, especially if you have a lot of lines on your orders, this can become very tedious.
I wrote a job that will unpick the entire order. Now I'm going to put an Unpick button on the sales order form at the order level and allow certain users (security will be used) to do this. I will most likely allow multiple orders to be selected so you can unpick multiple orders with one click of a button. The code for the job I wrote is below:
// For testing, I set the salesid here.
// In the final code, I will have to pass in the salesTable record
// from the salesTable_ds of the form
SalesId salesid = 'RSO948671';
TmpInventTransWMS tmpinventTransWMS;
InventMovement movement;
InventTrans inventTrans;
salesline salesline;
inventtransWMS_pick inventTransPick;
;
while select salesline
where salesline.SalesId == salesId
{
select inventTrans
where inventTrans.TransRefId == salesline.SalesId &&
inventTrans.ItemId == salesline.ItemId &&
inventTrans.StatusIssue == StatusIssue::Picked;
if(inventTrans.RecId)
{
movement = null;
movement = InventMovement::construct(salesLine);
inventTranspick = new InventTransWMS_Pick(movement,tmpInventTransWMS);
tmpInventTransWMS = null;
tmpInventTransWMS.initFromInventTrans(inventTrans);
tmpInventTransWMS.InventQty = inventTrans.StatusIssue == StatusIssue::Picked ? inventTrans.Qty : -inventTrans.Qty;
tmpInventTransWMS.insert();
inventTransWMS_pick::updateInvent(inventTransPick, tmpInventTransWMS);
}
}
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.