This could be one solution.
static void NetAmountwithdiscounts(Args _args)
{
PriceDisc_Price priceDisc_Price = PriceDisc_Price::construct();
PriceDisc_LineDisc priceDisc_LineDisc = PriceDisc_LineDisc::construct();
InventDim inventDim;
AmountCur LineAmount;
priceDisc_Price.parmModuleType( ModuleInventPurchSales::Sales);
priceDisc_Price.parmItemId("iphone7");
priceDisc_Price.parmInventDim(InventDim);
priceDisc_Price.parmUnitID("ea");
priceDisc_Price.parmPriceDate(systemDateGet());
priceDisc_Price.parmQty(1);
priceDisc_Price.parmAccountNum("");
priceDisc_Price.parmCurrencyCode("USD");
priceDisc_Price.parmPriceGroupId("");
print priceDisc_Price.price();
print priceDisc_Price.priceUnit();
pause;
priceDisc_LineDisc.parmModuleType( ModuleInventPurchSales::Sales);
priceDisc_LineDisc.parmItemId("iphone7");
priceDisc_LineDisc.parmInventDim(inventDim);
priceDisc_LineDisc.parmUnitID("ea");
priceDisc_LineDisc.parmDiscDate(systemDateGet());
priceDisc_LineDisc.parmQty(1);
priceDisc_LineDisc.parmAccountNum("");
priceDisc_LineDisc.parmCurrencyCode("USD");
priceDisc_LineDisc.parmAccountLineDiscCode();
priceDisc_LineDisc.parmItemLineDiscCode(InventTableModule::find("iphone7", ModuleInventPurchSales::Sales).LineDisc);
// priceDisc_LineDisc.parmSalesPurchLine(_salesPurchLine);
priceDisc_LineDisc.findLineDiscAgreement();
print priceDisc_LineDisc.discAmount(); //linedisc
print priceDisc_LineDisc.discPct(); //LinePercent
pause;
LineAmount = PriceDisc::price2Amount(priceDisc_Price.price(),
priceDisc_Price.priceUnit(), //1
PriceDisc::discAmount(SalesParameters::find().Disc, priceDisc_LineDisc.discAmount(), 0),//should call this,
1, // deliver now
1,
0,
PriceDisc::discPercent(SalesParameters::find().Disc, priceDisc_LineDisc.discPct(), 0),
"USD",
0,
true);
print LineAmount;
pause;
}