web
You’re offline. This is a read only version of the page.
close
Skip to main content

Announcements

No record found.

News and Announcements icon
Community site session details

Community site session details

Session Id :

Create purchase order from purchase requisition in d365 F&O using X++

Sufian.Ahmad Profile Picture Sufian.Ahmad 6
This article will guide you through the process of generating a purchase order from an approved purchase requisition. The code will utilize the purchase requisition ID as a parameter, incorporating the purchase requisition lines into the purchase order. Additionally, it will update various dimensions such as account distributions, inventory dimensions, and financial dimensions on the purchase order lines. Once the purchase order is successfully created, the status of the requisition will change from Approved to Closed.

public void createPOFromPR(PurchReqId   _purchreqId)
    {
        PurchReqLine    purchReqLine;
        Map releaseStrategies = new Map(Types::Container, Types::Class);
        PurchReqTable   reqTable = PurchReqTable::findPurchReqId(_purchreqId);

        while select purchReqLine where purchReqLine.PurchReqTable == reqTable.RecId
        {
            if(purchReqLine.ItemId && purchReqLine.VendAccount)                   RequisitionReleaseStrategy::pushRequisitionLineToReleaseStartegy(purchReqLine, releaseStrategies);
        }
        if(releaseStrategies.elements() > 0)
        {
            this.runReleaseStartegies(releaseStrategies, false);
        }
    }

    public void runReleaseStartegies(Map _releaseStrategies, boolean _runInAutomode)
    {
        MapEnumerator enumerator = _releaseStrategies.getEnumerator();
        while (enumerator.moveNext())
        {
            RequisitionReleaseStrategy requisitionReleaseStrategy = enumerator.currentValue();
            int recordCount = conLen(requisitionReleaseStrategy.parmPurchReqLineRecIdContainer());
            if (recordCount > 0)
            {
                requisitionReleaseStrategy.parmIsRunningInAutoMode(_runInAutomode);
                requisitionReleaseStrategy.runOperation();
            }
        }
    }

code snippet widget

Comments