Hi,
I'm creating a sales order using this code. And I noticed that when I set the salesLineAmount and the i call salesLine.createLine(true, false, true, true, true, true); -- Then LineAmount changes back to 0. So I had to update SalesLine again as you can see in order to fill the line amount with the value that I need -- why is that?? why it gets changed to 0?
public void createSalesOrder(XXReqHeader _reqHeader, XXReqLine _reqLine)
{
SalesTable salesTable;
SalesLine salesLine;
CustTable custTable;
select firstonly custTable where custTable.AccountNum == _reqHeader.AccountNum();
salesTable.CustAccount = custTable.AccountNum;
salesTable.SalesId = NumberSeq::newGetNum(SalesParameters::numRefSalesId()).num();
salesTable.initValue();
salesTable.initFromCustTable();
if(_reqHeader.Currency())
{
salesTable.CurrencyCode = _reqHeader.Currency();
}
if(salesTable.validateWrite())
{
salesTable.insert();
}
salesLine.initFromSalesTable(_salesTable);
salesLine.ItemId = _reqLine.ItemId();
salesLine.Name = _reqLine.ItemName();
salesLine.SalesQty = _reqLine.Qty();
salesLine.SalesPrice = _reqLine.Price();
salesLine.LineAmount = _reqLine.LineAmount();
salesLine.createLine(true, false, true, true, true, true);
this.updateSalesLine(salesLine, _reqLine);
}
public void updateSalesLine(SalesLine _salesLine, XXReqLine _reqLine)
{
salesLine salesLineLocal;
select firstonly forupdate salesLineLocal where salesLineLocal.SalesId == _salesLine.SalesId
&& salesLineLocal.LineNum == _salesLine.LineNum;
salesLineLocal.Name = _reqLine.ItemName();
salesLineLocal.LineAmount = _reqLine.LineAmount();
if(_reqLine.SalesUnit())
{
salesLineLocal.SalesUnit = _reqLine.SalesUnit();
}
salesLineLocal.update();
}


Report
All responses (
Answers (