Adding a QuoteDtl price not getting set
In a Quote Update Post-Process, I’m looping through an external quote (json) and adding lines to an existing Quote.
I’m following the trace …
Adding the line/partnum (QuoteDtl) works
Setting the quantity works
Setting price does not work 
I’ve tried GetDtlUnitPriceInfo and GetDtlUnitPriceInfo_User
The price doesn’t stay set.
These are parts on the fly (not in part master).
Code is below.
Suggestions welcome.
Thanks,
Chris
Erp.Contracts.QuoteSvcContract boQuote = Ice.Assemblies.ServiceRenderer.GetService<Erp.Contracts.QuoteSvcContract>(this.Db);
Erp.Tablesets.QuoteTableset tsQuote = boQuote.GetByID(quoteNum);
JObject jsonObj = JObject.Parse(callContextBpmData.Character02);
foreach (JObject partRow in jsonObj[“QuoteProducts”])
{
boQuote.GetNewQuoteDtl(ref tsQuote, quoteNum);
QuoteDtlRow qdRow = (from dtl in tsQuote.QuoteDtl
                    where dtl.RowMod == "A"
                       && dtl.PartNum == ""
                   select dtl).FirstOrDefault();
string partNum = partRow["ErpProductCode"].ToString();
decimal tempPrice = Convert.ToDecimal(partRow["ProductUnitPrice"]);
qdRow.PartNum = partNum;
qdRow.LineDesc = partRow["Description"].ToString(); 
qdRow.SetUDField<int>("LeadTime_c", (int)partRow["ProductLeadTime"]);
// ChangePartNumMaster start     
bool isPhantom = false;
bool isSalesKit = false;
string uomCode = "";
string vMessageOut = "";
string vPMessageOut = "";
string vBMessageOut = "";
bool vSubAvailOut = false;
string vMsgTypeOut = "";
string cDeleteComponentsMessageOut = "";
bool multipleMatchOut = false;
bool promptToExplodeBOMOut = false;
string explodeBOMerrMessageOut = "";
boQuote.ChangePartNumMaster(partNum: ref partNum,
  lIsPhantom: ref isPhantom,
  lIsSalesKit: ref isSalesKit,
  uomCode: ref uomCode,
  rowType: "",
  SysRowID: Guid.Empty,
  salesKitView: false,
  removeKitComponents: false,
  suppressUserPrompts: false,
  runChkPrePartInfo: true,
  vMessage: out vMessageOut,
  vPMessage: out vPMessageOut,
  vBMessage: out vBMessageOut,
  vSubAvail: out vSubAvailOut,
  vMsgType: out vMsgTypeOut,
  getPartXRefInfo: true,
  checkChangeKitParent: true,
  cDeleteComponentsMessage: out cDeleteComponentsMessageOut,
  multipleMatch: out multipleMatchOut,
  promptToExplodeBOM: out promptToExplodeBOMOut,
  explodeBOMerrMessage: out explodeBOMerrMessageOut,
  ds: ref tsQuote);
// ChangePartNum
boQuote.ChangePartNum(ds: ref tsQuote,
    lSubstitutePartsExist: false,
    uomCode: uomCode);
boQuote.Update(ref tsQuote);
// ChangeSellingExpQty
qdRow.RowMod = "U";
qdRow.OrderQty = Decimal.Parse(partRow["ProductQuantity"].ToString());
qdRow.SellingExpectedQty = Decimal.Parse(partRow["ProductQuantity"].ToString());
boQuote.ChangeSellingExpQty(ds: ref tsQuote);
boQuote.Update(ref tsQuote);
// GetDtlUnitPriceInfo 
qdRow.RowMod = "U";
qdRow.DocDspExpUnitPrice = tempPrice;
boQuote.GetDtlUnitPriceInfo(skipDiscLookup: false,
    preserveAmt: false,
    ds: ref tsQuote);
boQuote.Update(ref tsQuote);
}
this.dsHolder.Attach(tsQuote);