To create your SalesLine/PurchLine record with manual price related fields there is a simple method to do this. You need to call the function setPriceDiscChangePolicy().
See the SalesLine code example below:
static void createSalesLine(){
SalesLine salesLine;
salesLine.salesId = "ThisIsSalesID";
salesLine.ItemId = "ThisIsAnItemId";
salesLine.SalesQty = 4;
salesLine.SalesPrice = 4.89;
salesLine.LineDisc = 5.00;
salesLine.LinePercent = 2.00;
salesLine.PriceUnit = 1.00;
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));
salesLine.createLine(true, //Validate
true); //initFromSalesTable
}
Manually setting the fields means that any changes made on the form will not update the values automatically.
I hope this helps in programming your task. Happy coding!