I encountered this issue and, during troubleshooting, I discovered that the system performs an update on the sales line to retrieve sales prices and discounts. This process has a performance impact. In fact, the prices are copied from the trade agreement in Dynamics 365 for Finance and Operations
For manual price use following code snippet
salesLine.initFromInventTable(InventTable::find(salesLine.ItemId));
salesLine.InventDimId = inventDim.inventDimId;
salesLine.SalesQty = listObject.parmSalesQty();
salesLine.SalesPrice = listObject.parmOriginalPrice();
salesLine.SalesUnit = _InventItemBarcode.UnitID;
salesLine.PriceUnit = 1.00;
if ( (listObject.parmOriginalPrice() >= listObject.parmOfferPrice()) && !(listObject.parmOfferPrice() <0) && !(listObject.parmOriginalPrice() <=0))
{
if (listObject.parmOfferPrice()!=0)
{
real _Discount =listObject.parmOriginalPrice() -listObject.parmOfferPrice();
salesLine.LineDisc = _Discount;
}
else
{
salesLine.LineDisc = 0;
}
}
salesLine.DefaultDimension =LedgerDimensionDefaultFacade::serviceMergeDefaultDimensions(salesTable.DefaultDimension,InventTable::find(salesLine.ItemId).DefaultDimension);
salesLine.setPriceDiscChangePolicy(PriceDiscSystemSource::ManualEntry, fieldNum(salesLine, SalesPrice));
salesLine.setPriceDiscChangePolicy(PriceDiscSystemSource::ManualEntry, fieldNum(salesLine, LineDisc));
// salesLine.setPriceDiscChangePolicy(PriceDiscSystemSource::ManualEntry, fieldNum(salesLine, LinePercent));
salesLine.setPriceDiscChangePolicy(PriceDiscSystemSource::ManualEntry, fieldNum(salesLine, PriceUnit));
Try
{
ttsbegin;
salesLine.CreateLine(NoYes::Yes,NoYes::Yes);
ttscommit;
}
catch
{}