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

Popular posts from this blog

how to post trade agreement journals automatically using x++ code

How to Create a wizard in x++ d365