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 }