does the create line function not do it all?
salesLine.SalesId = salesTable.SalesId;
salesLine.ItemId = '1205';
salesLine.createLine(true, true, true, true, true, true);
server void createLine(boolean _validation = false,
boolean _initFromSalesOrderTable = false,
boolean _initFromItemOrCategory = false,
boolean _calcInventQty = false,
boolean _searchMarkup = true,
boolean _searchPrice = false,
boolean _checkReservation = false,
boolean _skipCreditLimitCheck = false,
InventTransId _oldInventTransId = '',
boolean _ignoreSalesTableInventDim = false,
boolean _setLineNum = true,
boolean _searchAgreementLine = false,
SMAServiceOrderTable _smaServiceOrderTable = null)
{