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
Post a Comment