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 create return Order from code
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.