X++ code to create and process a purchase order

 class POCreationJob

{

    /// <summary>

    /// Runs the class with the specified arguments.

    /// </summary>

    /// <param name = "_args">The specified arguments.</param>

    public static void main(Args _args)

    {

        //Data entity declaration

        PurchPurchaseOrderHeaderV2Entity  purchTable;

        PurchPurchaseOrderLineV2Entity    purchLine;

        //Create Purchase header

        purchTable.initValue();

        purchTable.OrderVendorAccountNumber    = "001101";

        purchTable.insert();

        //Fetching PurchId to create lines

        PurchId purchid = purchTable.PurchaseOrderNumber;


        //Create Purchase lines

        purchLine.initValue();

        purchLine.PurchaseOrderNumber         = purchid;

        purchLine.ItemNumber                  = "0001";

        purchLine.OrderedPurchaseQuantity     = 5;

        purchLine.ReceivingSiteId             = "DC";

        purchLine.ReceivingWarehouseId        = "DC";

        purchLine.insert();

     

        Info(strFmt("Purchase order %1 has been created.",purchTable.PurchaseOrderNumber));

        //Update PO by using PurchFormLetter class

        PurchFormLetter            purchFormLetter;

        // Get Purchase Order

        PurchTable PurchUpdate   = PurchTable::find(purchId);


        //Posting PO Confirmation,I guess its mandatory

        //You cannot do invoice without doing PO confirm

        purchFormLetter = PurchFormLetter::construct(DocumentStatus::PurchaseOrder);

        purchFormLetter.update(PurchUpdate, strFmt("PO_%1", purchTable.PurchaseOrderNumber));

        ;

        //Posting Product receipt

        purchFormLetter = PurchFormLetter::construct(DocumentStatus::PackingSlip);

        purchFormLetter.update(PurchUpdate, strFmt("PO_%1", purchTable.PurchaseOrderNumber));

        info("Product receipt posted");

        ;

        //Posting PO Invoice

        purchFormLetter = PurchFormLetter::construct(DocumentStatus::Invoice);

        purchFormLetter.update(PurchUpdate, strFmt("Inv_%1", purchTable.PurchaseOrderNumber));

        info("Invoice posted");

    }

}

Comments

Popular posts from this blog

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

How to Create a wizard in x++ d365

x++ code to submit and approve and reject the invent movement workflow in d365 F&O