x++ code to submit and approve and reject the invent movement workflow in d365 F&O
class Class1
{
public void submitworkflow()
{
InventJournalTable journalTable;
WorkflowWorkItemTable WorkflowWorkItemTable;
WorkflowVersionTable workflowVersionTable;
journalTable = InventJournalTable::find('00446');
// submit to workflow
if (journalTable.WorkflowApprovalStatus == InventJournalWorkflowApprovalStatus::NotSubmitted)
{
Workflow::activateFromWorkflowType(workFlowTypeStr(InventJournalMovementTemplate), journalTable.RecId,
'Workflow submitted by button', false, Curuserid());
}
// approve workflow
select firstonly WorkflowWorkItemTable
where workflowWorkItemTable.Type == WorkflowWorkItemType::WorkItem
&& workflowWorkItemTable.Status == WorkflowWorkItemStatus::Pending // this should be Pending
&& WorkflowWorkItemTable.RefTableId == tableNum(InventJournalTable)
&& WorkflowWorkItemTable.RefRecId == journalTable.RecId;
if (WorkflowWorkItemTable)
{
WorkflowWorkItemActionManager::dispatchWorkItemAction(WorkflowWorkItemTable,
"Approve Workflow",
curuserId(),
WorkflowWorkItemActionType::Complete,
menuItemDisplayStr(InventJournalTableWorkflowDropDialog));
}
//reject workflow
select firstonly WorkflowWorkItemTable
where workflowWorkItemTable.Type == WorkflowWorkItemType::WorkItem
&& workflowWorkItemTable.Status == WorkflowWorkItemStatus::Pending // this should be Pending
&& WorkflowWorkItemTable.RefTableId == tableNum(InventJournalTable)
&& WorkflowWorkItemTable.RefRecId == journalTable.RecId;
if (WorkflowWorkItemTable)
{
WorkflowWorkItemActionManager::dispatchWorkItemAction(WorkflowWorkItemTable,
"Reject Workflow",
curuserId(),
WorkflowWorkItemActionType::Return,
menuItemActionStr(InventTableApprovalReject));
}
//recall workflow
WorkflowCorrelationId workflowCorrelationId = Workflow::activateFromWorkflowType(workFlowTypeStr(InventJournalMovementTemplate),
journalTable.RecId,
'By button RecallAllToWorkflow',
false, Curuserid());
Workflow::cancelWorkflow(workflowCorrelationId,"Mulitple Recalled by user");
}
}
Comments
Post a Comment