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

Announcements

News and Announcements icon
Community site session details

Community site session details

Session Id :

How to Confirm a Purchase Order in D365 Finance & Operations Using X++

dasdasd Profile Picture dasdasd 841

In Microsoft Dynamics 365 Finance & Operations, a Purchase Order can be confirmed programmatically using the standard PurchFormLetter framework.

This is useful when you need to confirm a Purchase Order from custom business logic, batch processes, integrations, or custom forms without manually clicking Confirm from the Purchase Order form.

The following method accepts a PurchTable record and confirms the Purchase Order using the standard D365 F&O framework.


public static PurchTable confirmPurchaseOrder(PurchTable _purchTable)

{

    PurchFormLetter          purchFormLetter;

    PurchFormletterParmData  purchFormLetterParmData;

    PurchParmUpdate          purchParmUpdate;

    PurchParmTable           purchParmTable;


    ttsBegin;


    // Create parameter data for Purchase Order confirmation

    purchFormLetterParmData = PurchFormletterParmData::newData(

        DocumentStatus::PurchaseOrder,

        VersioningUpdateType::Initial);


    purchFormLetterParmData.parmOnlyCreateParmUpdate(true);

    purchFormLetterParmData.createData(false);


    purchParmUpdate = purchFormLetterParmData.parmParmUpdate();


    // Populate PurchParmTable

    purchParmTable.clear();


    purchParmTable.TransDate =

        DateTimeUtil::getSystemDate(DateTimeUtil::getUserPreferredTimeZone());


    purchParmTable.DocumentDate =

        DateTimeUtil::getSystemDate(DateTimeUtil::getUserPreferredTimeZone());


    purchParmTable.Ordering              = DocumentStatus::PurchaseOrder;

    purchParmTable.ParmJobStatus         = ParmJobStatus::Waiting;

    purchParmTable.PurchId               = _purchTable.PurchId;

    purchParmTable.PurchName             = _purchTable.PurchName;

    purchParmTable.DeliveryName          = _purchTable.DeliveryName;

    purchParmTable.DeliveryPostalAddress = _purchTable.DeliveryPostalAddress;

    purchParmTable.OrderAccount          = _purchTable.OrderAccount;

    purchParmTable.CurrencyCode          = _purchTable.CurrencyCode;

    purchParmTable.InvoiceAccount        = _purchTable.InvoiceAccount;

    purchParmTable.ParmId                = purchParmUpdate.ParmId;


    purchParmTable.insert();


    // Create Purchase Order confirmation

    purchFormLetter = PurchFormLetter::construct(

        DocumentStatus::PurchaseOrder);


    purchFormLetter.transDate(

        DateTimeUtil::getSystemDate(

            DateTimeUtil::getUserPreferredTimeZone()));


    purchFormLetter.proforma(false);

    purchFormLetter.specQty(PurchUpdate::All);

    purchFormLetter.purchTable(_purchTable);


    purchFormLetter.parmParmTableNum(purchParmTable.ParmId);

    purchFormLetter.parmId(purchParmTable.ParmId);

    purchFormLetter.purchParmUpdate(

        purchFormLetterParmData.parmParmUpdate());


    // Execute the confirmation

    purchFormLetter.run();


    ttsCommit;


    return _purchTable;

}


This was originally posted here.

Comments

*This post is locked for comments