SalesTable createReturnOrderHeader( CustAccount _custAcct, ReturnReasonCodeId _returnReasonCodeId, str _emplId = '', SalesId _salesId = '', SalesId _ROSalesId = '') { SalesTable prevSalesTable, newSalesTable, ROSalesTable; SalesParameters salesParameters; ReturnPeriodOfValidity periodofValid; // create the sales order header for the return order salesParameters = SalesParameters::find(); periodofValid = salesParameters.ReturnPeriodOfValidity; ROSalesTable = SalesTable::find(_ROSalesId); if(!ROSalesTable) { // Initialize from Invoiced SO if(_salesId) { prevSalesTable = SalesTable::find(_salesId); newSalesTable.initReturnFromSalesTable(prevSalesTable); newSalesTable.CustAccount = prevSalesTable.CustAccount; } // Create new Return Order else { newSalesTable.CustAccount = _custAcct; newSalesTable.SalesId = NumberSeq::newGetNum(SalesParameters::numRefSalesId()).num(); newSalesTable.ReturnItemNum = NumberSeq::newGetNum(SalesParameters::numRefReturnItemNum()).num(); newSalesTable.SalesType = SalesType::ReturnItem; newSalesTable.ReturnStatus = ReturnStatusHeader::Created; newSalesTable.DeliveryDateControlType = SalesDeliveryDateControlType::None; newSalesTable.ShippingDateRequested = today() + periodofValid; } newSalesTable.initFromCustTable(); // periodofValid derive from Sales Parameter if(periodofValid) { newSalesTable.ReturnDeadline = today() + periodofValid; } else { newSalesTable.ReturnDeadline = today(); } //Reason Code newSalesTable.ReturnReasonCodeId = _returnReasonCodeId; newSalesTable.SalesType = SalesType::ReturnItem; if (newSalesTable.validateWrite()) { newSalesTable.insert(); // return the new Return Order return newSalesTable; } } //return the existing RO return ROSalesTable; }
public void createReturnOrderLine( ItemId _itemId, Qty _qty, SalesTable _returnOrder, SalesId _originalSalesId= '', EcoResItemSizeName _inventSizeId = '', EcoResItemColorName _inventColorId = '', EcoResItemConfigurationName _configId = '', EcoResItemStyleName _inventStyleId = '', InventBatchID _inventBatchId = '', InventSerialId _inventSerialId = '' ) { CustInvoiceTrans custInvoiceTrans; SalesLine salesLine; CustInvoiceJour custInvoiceJour; InventDim inventDim, pvInventDim; ttsbegin; if(_originalSalesId) { // Need to populate all the necessary fields for the new salesline // using the existing invoice and the new sales order select custInvoiceJour where custInvoiceJour.RefNum == RefNum::SalesOrder &&custInvoiceJour.SalesId == _originalSalesId; if(custInvoiceJour) { select * from custInvoiceTrans where custInvoiceTrans.SalesId == custInvoiceJour.SalesId && custInvoiceTrans.InvoiceId == custInvoiceJour.InvoiceId && custInvoiceTrans.ItemId == _itemid && custInvoiceTrans.InvoiceDate == custInvoiceJour.InvoiceDate && custInvoiceTrans.numberSequenceGroup == custInvoiceJour.numberSequenceGroup join inventDim where inventDim.inventDimId == custInvoiceTrans.InventDimId && ((_inventBatchId == '') || (inventDim.inventBatchId == _inventBatchId)) && ((_inventSerialId == '') || (inventDim.inventSerialId == _inventSerialId)) && ((_configId == '') || (inventDim.configId == _configId)) && ((_inventColorId == '') || (inventDim.InventColorId == _inventColorId)) && ((_inventSizeid == '') || (inventDim.InventSizeId == _inventSizeid)) && ((_inventStyleId == '') || (inventDim.InventStyleId == _inventStyleId)); salesLine.initFromCustInvoiceTrans(custInvoiceTrans); salesLine.InventTransIdReturn = custInvoiceTrans.InventTransId; salesLine.InventDimId = custInvoiceTrans.InventDimId; } } salesLine.initFromSalesTable(_returnOrder); salesLine.ItemId = _itemId; salesLine.SalesUnit = InventTableModule::find(_itemId, ModuleInventPurchSales::Invent).UnitId; salesLine.LineAmount = salesLine.returnLineAmount(); salesLine.SalesQty = 0; // find inventDim inventDim.data(InventDim::find(salesLine.InventDimId)); inventDim.InventSizeId = _inventSizeId; inventDim.InventColorId = _inventColorId; inventDim.configId = _configId; inventDim.InventStyleId = _inventStyleId; inventDim.inventBatchId = _inventBatchId; inventDim.inventSerialId= _inventSerialId; pvInventDim = inventDim::findOrCreate(inventDim); salesLine.InventDimId = pvInventDim.inventDimId; salesLine.createLine(true, false, true, false, false, false, false, false); salesLine.ExpectedRetQty= -_qty; salesLine.update(); ttscommit; }To find original SalesId if return order lines exist:
select firstOnly RecId, ReferenceId from inventTransOrigin where inventTransOrigin.InventTransId == tradeInventTransIdReturn &&inventTransOrigin.ReferenceCategory == InventTransType::Sales; if (inventTransOrigin) { originalSalesId = inventTransOrigin.ReferenceId; }
DaxOnline.org is free platform that allows you to quickly store and reuse snippets, notes, articles related to Dynamics AX.
Authors are allowed to set their own AdSense units.
Join us.