X++ Code to Create Purchase Order and Post the Invoice
Following Job creates the Purchase order from code and post the invoice by making use of PurchFormLetter class.
If you don't have demo data , please test with your input values.
1 static void Dev_CreatePO_and_Invoice(Args _args) 2 { 3 NumberSeq numberSeq; 4 Purchtable Purchtable; 5 PurchLine PurchLine; 6 PurchFormLetter purchFormLetter; 7 ; 8 9 10 ttsbegin; 11 numberSeq = NumberSeq::newGetNumFromCode(purchParameters::numRefPurchaseOrderId().NumberSequence,true); 12 13 // Initialize Purchase order values 14 Purchtable.initValue(); 15 Purchtable.PurchId = numberSeq.num(); 16 Purchtable.OrderAccount = '3000'; 17 Purchtable.initFromVendTable(); 18 19 if (!Purchtable.validateWrite()) 20 { 21 throw Exception::Error; 22 } 23 Purchtable.insert(); 24 25 // Initialize Purchase Line items 26 PurchLine.PurchId = Purchtable.PurchId; 27 PurchLine.ItemId = 'B-R14'; 28 PurchLine.createLine(true, true, true, true, true, false); 29 ttscommit; 30 31 purchFormLetter = purchFormLetter::construct(DocumentStatus::Invoice); 32 purchFormLetter.update(purchtable, // Purchase record Buffer 33 "Inv_"+purchTable.PurchId, // Invoice Number 34 systemdateget()); // Transaction date 35 36 37 if (PurchTable::find(purchTable.PurchId).DocumentStatus == DocumentStatus::Invoice) 38 { 39 info(strfmt("Posted invoiced journal for purchase order %1",purchTable.PurchId)); 40 } 41 }