Some important sales order / purchase order operations AX 2009
Views (2532)
HAPPY NEW YEAR GUYS
Recently i got chace to work on sales order screen simplification where i need to simplify the operations of sales orders, for that i would need to customizae some main operations. i am listing the logics of some of the main operations.
How to create SALE ORDER from code in dynamics ax.
static void createSalesTable(CustAccount _custAccount) { SalesTable salesTable; NumberSeq NumberSeq; ; NumberSeq = NumberSeq::newGetNumFromCode(SalesParameters::numRefSalesId().numberSequence); salesTable.SalesId = NumberSeq.num(); salesTable.initValue(); salesTable.CustAccount = _custAccount; salesTable.initFromCustTable(); salesTable.insert(); } static void createSalesLine(SalesId _salesId, ItemId _itemId) { SalesLine salesLine; ; salesLine.clear(); salesLine.SalesId = _salesId; salesLine.ItemId = _itemId; salesLine.createLine(NoYes::Yes, // Validate NoYes::Yes, // initFromSalesTable NoYes::Yes, // initFromInventTable NoYes::Yes, // calcInventQty NoYes::Yes, // searchMarkup NoYes::Yes); // searchPrice }
How to POST Sales order from code?
please follow the below link http://msdax.wordpress.com/2010/06/29/posting-invoice-from-sales-order-purchase-order/
How to create return Order from code:
static void SR_CreateReturnOrderAfterInvoice(Args _args) { CustInvoiceJour _invoiceRec; str _returnReason; CustInvoiceTrans custInvoiceTrans; SalesLine salesLine; SalesTable newRetOrder; CustInvoiceJour custInvoiceJour; SalesTable createReturnOrderHeader(CustInvoiceJour invoiceRec) { SalesTable old, newRec; boolean bChecksOk = true; ; old = SalesTable::find(invoiceRec.SalesId); newRec.initReturnFromSalesTable(old); newRec.CustAccount = old.CustAccount; newRec.initFromCustTable(); newRec.CustInvoiceId = invoiceRec.InvoiceId; newRec.ReturnDeadline = today(); newRec.ReturnReasonCodeId = ’21′; // Defective newRec.SalesType = SalesType::ReturnItem; newRec.SalesTaker = SysCompanyUserInfo::current().EmplId; if ( newRec.ReturnReasonCodeId == ” && CustParameters::find().ReturnOrdersReasonReq || newRec.ReturnReasonCodeId != ” && !ReturnReasonCode::exist(newRec.ReturnReasonCodeId) ) { checkFailed(strfmt(“@SYS26332″, fieldid2pname(tablenum(SalesTable), fieldnum(SalesTable, ReturnReasonCodeId)))); bChecksOk = false; } if ( bChecksOk && newRec.validateWrite()) { newRec.insert(); } else { throw error(“@SYS18722″); } return newRec; } ttsbegin; // first we need to create the sales order header for the return order select custInvoiceJour where custInvoiceJour.RefNum == RefNum::SalesOrder && custInvoiceJour.InvoiceId == ’101231′; newRetOrder = createReturnOrderHeader(custInvoiceJour); while select * from custInvoiceTrans where custInvoiceTrans.SalesId == custInvoiceJour.SalesId && custInvoiceTrans.InvoiceId == custInvoiceJour.InvoiceId && custInvoiceTrans.InvoiceDate == custInvoiceJour.InvoiceDate && custInvoiceTrans.numberSequenceGroup == custInvoiceJour.numberSequenceGroup { // now we need to populate all the necessary fields for the new salesline // using the existing invoice and the new sales order salesLine.initFromCustInvoiceTrans(custInvoiceTrans); salesLine.initFromSalesTable(newRetOrder); // udpate the quantity salesLine.ExpectedRetQty = -custInvoiceTrans.Qty; if (salesLine.ExpectedRetQty > 0) { error(“@SYS53512″); ttsabort; } // set the quantity and amount fields salesLine.LineAmount = salesLine.returnLineAmount(); salesLine.SalesQty = 0; salesLine.InventTransIdReturn = custInvoiceTrans.InventTransId; //create the line salesLine.createLine(true, false, false, false, false, false, false, false, salesLine.InventTransId); // clear the buffer salesLine.clear(); } ttscommit; info(strfmt(‘Newly created return order is %1′, newRetOrder.SalesId)); }
How to print Performa Sales Invoice?
static void Test_SalesFormLetter(Args _args) { SalesFormLetter letter=SalesFormLetter::construct(DocumentStatus::Invoice); SalesTable sale = SalesTable::find('ORDR00000229'); ; ttsBegin; letter.update(sale, systemDateGet(), SalesUpdate::PickingList, AccountOrder::None, true, true); ttsCommit; }
How to print sales Invoice ?
public void printInvoiceReport(PurchId _purchId) { ReportRun report; RecordSortedList List = new RecordSortedList(tableNum(VendInvoiceJour)); VendInvoiceJour VendInvoiceJour = VendInvoiceJour::findFromPurchId(_purchId); PurchFormLetter PurchFormLetter; ; if (VendInvoiceJour.RecId) { report = new ReportRun(new Args(ReportStr(PurchInvoice))); List.ins(VendInvoiceJour); report.args().object(List); report.query().interactive(false); report.report().interactive(false); report.args().parmEnum(0); report.args().parmEnumType(920); report.args().name("KeepSettings"); report.args().caller(PurchFormLetter); report.setTarget(PrintMedium::Screen); report.printJobSettings().setTarget(PrintMedium::Screen); report.printJobSettings().preferredTarget(PrintMedium::Screen); PurchFormLetter = PurchFormLetter::construct(DocumentStatus::Invoice); PurchFormLetter.updatePrinterSettingsFormLetter(report.printJobSettings().packPrintJobSettings(), PrintSetupOriginalCopy::Original); PurchFormLetter.updatePrinterSettingsFormLetter(report.printJobSettings().packPrintJobSettings(), PrintSetupOriginalCopy::Copy); // print invoice VendInvoiceJour.printJournal(PurchFormLetter); } }
Thanks to few links that i have found http://dynamicsaxgyan.wordpress.com/2010/12/17/create-return-order-using-x/ http://www.axaptapedia.com/SalesFormLetter_class http://community.dynamics.com/product/ax/axtechnical/b/dynamicsaxposed/archive/2011/10/11/how-to-create-sales-order-through-code.aspx
This was originally posted here.

Like
Report
*This post is locked for comments