Olá Pessoal,
Tudo bem?
Pessoal estou compartilhando com vocês o processo para realizar o lançamento de lista de separação, inicar roteiro de lista de separação e atualizar todas as linhas do roteiro por código X++ para o Microsoft Dynamics AX 2012 caso precisem.
publicboolean init(){boolean ret =true;
ret = this.validate();
if(ret){//Post PickingList
this.pickingList();
//Start Router from Picking list
wmsPickingRouteID = this.wmsPickingRouteStart();
//Update all from Router
this.pickAllLines(wmsPickingRouteID);
}
return ret;
} |
/// <summary>/// Realiza o lançamento da lista de separação/// </summary>publicvoid pickingList(){
InventTransferParmTable localInventTransferParmTable;
InventTransferMultiPick localInventTransferMultiPick = InventTransferMultiPick::construct();
;
localInventTransferParmTable.TransferId= inventTransferId; //Provide transferId
localInventTransferParmTable.EditLines= NoYes::Yes;
localInventTransferParmTable.AutoReceiveQty= NoYes::Yes;
localInventTransferParmTable.TransDate=systemDateGet();
localInventTransferParmTable.UpdateType= InventTransferUpdateType::PickingList;
localInventTransferParmTable.PickUpdateQty= InventTransferPickUpdateQty::All ;
localInventTransferMultiPick.runUpdate(localInventTransferParmTable);
} |
/// <summary>/// Iniciar roteiro de separação/// </summary>/// <returns>/// Retorna o nr. do roteiro/// </returns>public WMSPickingRouteID wmsPickingRouteStart(){
WMSPickingRoute localWMSPickingRoute;
WMSPickingRouteStart localWMSPickingRouteStart;
//Buscar roteiro vinculado ao registro da lista de separaçãoselectfirstOnly PickingRouteID, expeditionStatus
from localWMSPickingRoute
where localWMSPickingRoute.transType== InventTransType::TransferOrderShip&& localWMSPickingRoute.transRefId== inventTransferId;
if(localWMSPickingRoute.PickingRouteID){//Verificar se esta com o status ativadoif(localWMSPickingRoute.expeditionStatus== WMSExpeditionStatus::Activated){
localWMSPickingRouteStart =new WMSPickingRouteStart();
localWMSPickingRouteStart.parmWMSPickingRouteId(localWMSPickingRoute.PickingRouteID);
localWMSPickingRouteStart.parmWorker(DirPersonUser::findUserWorkerReference());
localWMSPickingRouteStart.run();
}}
return localWMSPickingRoute.PickingRouteID;
} |
/// <summary>/// Atualizar todas as linhas do roteiro da lista de separação/// </summary>/// <param name="_pickingRouteID">/// Nº do roteiro a ser atualizado/// </param>publicvoid pickAllLines(WMSPickingRouteID _pickingRouteID){
List list =new List(Types::String);
WMSPickingRoute localWMSPickingRoute;
//verificar se o roteiro foi informadoif(!_pickingRouteID){//Buscar pelo nº da ordem de transferênciaselectfirstOnly PickingRouteID, expeditionStatus
from localWMSPickingRoute
where localWMSPickingRoute.transType== InventTransType::TransferOrderShip&& localWMSPickingRoute.transRefId== inventTransferId;
}else{//Buscar pelo nº do roteiroselectfirstOnly PickingRouteID, expeditionStatus
from localWMSPickingRoute
where localWMSPickingRoute.PickingRouteID== _pickingRouteID;
}
//Verificar se o roteiro esta com o status iniciadoif(localWMSPickingRoute && localWMSPickingRoute.expeditionStatus== WMSExpeditionStatus::Started){
list.addEnd(localWMSPickingRoute.PickingRouteID);
WMSPickingRoute::finishMulti(list.pack());
wmsDeliverPickedItems::checkDeliverPickedItems(localWMSPickingRoute.PickingRouteID,list.pack());
}} |
Abraços,
Juliano Bachesque
![]()