Quote part markup BPM

I’m trying to create a BPM that calculate a part markup from cost after adding burden. The markup is pulled from the part discount. So instead of having a discount percent the percent equals the markup. When I use it in pre or post processing method directive the system keeps overwriting it with the discount calculation. When I run it in base processing it works but prevent a new quote from saving when first created.
Ideally I would like to do with as a data directive. Any suggestions?
CODE:
Erp.Tables.CustomerPriceLst CustomerPriceLst;
Erp.Tables.Part Part;
Erp.Tables.PLGrupBrk PLGrupBrk;

foreach (var ttQuoteDtl_iterator in (from ttQuoteDtl_Row in ttQuoteDtl where ttQuoteDtl_Row.Company == Session.CompanyID && string.Equals(ttQuoteDtl_Row.RowMod, IceRow.ROWSTATE_ADDED, StringComparison.OrdinalIgnoreCase) || string.Equals(ttQuoteDtl_Row.RowMod, IceRow.ROWSTATE_UPDATED, StringComparison.OrdinalIgnoreCase) select ttQuoteDtl_Row))
{
var ttQuoteDtlRow = ttQuoteDtl_iterator;

CustomerPriceLst = (from CustomerPriceLst_Row in Db.CustomerPriceLst where CustomerPriceLst_Row.Company == Session.CompanyID && CustomerPriceLst_Row.CustNum == ttQuoteDtlRow.CustNum select CustomerPriceLst_Row).FirstOrDefault();
Part = (from Part_Row in Db.Part where Part_Row.Company == Session.CompanyID && Part_Row.PartNum == ttQuoteDtlRow.PartNum select Part_Row).FirstOrDefault();
PLGrupBrk = (from PLGrupBrk_Row in Db.PLGrupBrk where PLGrupBrk_Row.Company == Session.CompanyID && PLGrupBrk_Row.ProdCode == ttQuoteDtlRow.ProdCode && PLGrupBrk_Row.ListCode == CustomerPriceLst.ListCode select PLGrupBrk_Row).FirstOrDefault();
if (PLGrupBrk != null && Part != null && PLGrupBrk != null)
{
ttQuoteDtlRow.DocDspExpUnitPrice = (decimal)((Part.UnitPrice)*(1 + (Part.MtlBurRate/100)))/((100 - PLGrupBrk.DiscountPercent) / 100);
}
}