Creation of multiple PO and posting invoices for the same through X++
Upon a clicking a button POs will be creating and posting invoices by using data which are stored in custom table (Mandatory data have been stored in data source)
On Clicked():-
[Control("Button")]
class BASPostButton
{
/// <summary>
///
/// </summary>
public void clicked()
{
BASPurchaseOrderEntity purchOrder;
while select * from purchOrder
{
//Data entity declaration
PurchPurchaseOrderHeaderV2Entity purchTable;
PurchPurchaseOrderLineV2Entity purchLine;
//Create Purchase header
purchTable.initValue();
purchTable.OrderVendorAccountNumber = purchOrder.VendorAccount;
purchTable.insert();
//Fetching PurchId to create lines
PurchId purchid = purchTable.PurchaseOrderNumber;
//Create Purchase lines purchLine.initValue();
purchLine.PurchaseOrderNumber = purchid;
purchLine.ItemNumber = purchOrder.ItemNumber;
purchLine.OrderedPurchaseQuantity = purchOrder.Qty;
purchLine.PurchasePrice = purchOrder.UnitPrice;
purchLine.ReceivingSiteId = purchOrder.Site;
purchLine.ReceivingWarehouseId = purchOrder.Warehouse;
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
purchFormLetter = PurchFormLetter::construct(DocumentStatus::PurchaseOrder);
purchFormLetter.update(PurchUpdate, strFmt("PO_%1", purchTable.PurchaseOrderNumber));
info(strFmt("Purch Order %1",purchTable.PurchaseOrderNumber));
;
//Posting Product receipt
purchFormLetter = PurchFormLetter::construct(DocumentStatus::PackingSlip);
purchFormLetter.update(PurchUpdate, strFmt(purchOrder.ProductReceiptNumber));
info(strFmt("Product receipt Posted for %1",purchOrder.ProductReceiptNumber));
;
//Posting PO Invoice
purchFormLetter = PurchFormLetter::construct(DocumentStatus::Invoice);
purchFormLetter.update(PurchUpdate, strFmt(purchOrder.InvoiceNumber),
DateTimeUtil::date(purchOrder.InvoiceDate));
info(strFmt("Invoice posted for %1",purchOrder.InvoiceNumber));
info(strFmt("Invoice Date for %1", purchOrder.InvoiceDate));
//Updating created PO Ids as well
ttsbegin;
purchOrder.selectForUpdate(true);
purchOrder.PurchaseOrder = purchid;
purchOrder.update();
ttscommit;
BAS_CreatePurchaseOrder_ds.research();
BAS_CreatePurchaseOrder_ds.refresh();
}
super();
}
Comments
Post a Comment