In this article, we will see how to create sales order and purchase order using x++.
The code snippet for purchase order creation
internal final class CreatePurchaseOrder { /// <summary> /// Class entry point. The system will call this method when a designated menu /// is selected or when execution starts and this class is set as the startup class. /// </summary> /// <param name = "_args">The specified arguments.</param> public static void main(Args _args) { PurchTable purchTable; PurchLine purchLine; NumberSeq numberSeq; PurchFormLetter purchFormLetter; #OCCRetryCount try { ttsBegin; //Create purchase order header numberSeq = NumberSeq::newGetNum(PurchParameters::numRefPurchId()); numberSeq.used(); purchTable.PurchId = numberSeq.num(); purchTable.initValue(); purchTable.AccountingDate = systemDateGet(); purchTable.initFromVendTable(VendTable::find('1001')); purchTable.InventSiteId = '5'; purchTable.InventLocationId = '51'; if (!purchTable.validateWrite()) { throw Exception::Error; } //insert purchase order header data purchTable.insert(); //Create purchase order line purchLine.PurchId = purchTable.PurchId; purchLine.ItemId = '1000'; purchLine.purchQty = 10; purchLine.createLine(true, true, true, true, true, true); ttsCommit; info(strFmt("Purchase order '%1' has been created",purchTable.PurchId)); purchFormLetter = PurchFormLetter::construct(DocumentStatus::PurchaseOrder); purchFormLetter.update(purchTable, strFmt("PO_%1", purchTable.PurchId)); } catch (Exception::Deadlock) { retry; } catch (Exception::UpdateConflict) { if (appl.ttsLevel() == 0) { if (xSession::currentRetryCount() >= #RetryNum) { throw Exception::UpdateConflictNotRecovered; } else { retry; } } else { throw Exception::UpdateConflict; } } } }
The code snippet for sales order creation
internal final class CreateSalesOrder { /// <summary> /// Class entry point. The system will call this method when a designated menu /// is selected or when execution starts and this class is set as the startup class. /// </summary> /// <param name = "_args">The specified arguments.</param> public static void main(Args _args) { SalesTable salesTable; SalesLine salesLine; SalesFormLetter salesFormLetter; NumberSeq numberSeq; #OCCRetryCount try { ttsbegin; //Create Sales order ttsBegin; numberSeq = NumberSeq::newGetNum(SalesParameters::numRefSalesId()); numberSeq.used(); salesTable.SalesId = numberSeq.num(); salesTable.initValue(); //Assign customer account salesTable.CustAccount = "US-003"; salesTable.initFromCustTable(); salesTable.InventSiteId = '5'; salesTable.InventLocationId = '51'; if (!salesTable.validateWrite()) { throw Exception::Error; } salesTable.insert(); //Create sales order line salesLine.clear(); salesLine.initFromSalesTable(salesTable); salesLine.SalesId = salesTable.SalesId; salesLine.ItemId = 'MA-001'; salesLine.SalesQty = 10; salesLine.createLine(true, true, true, true, true, true); info(strFmt("Sales order ‘%1’ has been created", salesTable.SalesId)); ttsCommit; //Sales order confirmation salesFormLetter = SalesFormLetter::construct(DocumentStatus::Confirmation); salesFormLetter.update(salesTable); // Sales order invoicing salesFormLetter = salesFormLetter::construct(DocumentStatus::Invoice); salesFormLetter.update(salesTable); ttscommit; } catch (Exception::Deadlock) { retry; } catch (Exception::UpdateConflict) { if (appl.ttsLevel() == 0) { if (xSession::currentRetryCount() >= #RetryNum) { throw Exception::UpdateConflictNotRecovered; } else { retry; } } else { throw Exception::UpdateConflict; } } } }
Comments
Post a Comment