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 and "buy me a coffee" link.
Join us.