I need a BPM that’ll update UD fields on the Kit Parent quote line of a component priced kit on a quote. The thing is, all the kit’s “component” parts are really also lines in the QuoteDtl table.
In my code, the loops appear to be working via the MsgBox, but it’s not updating the Parent line. What am I missing? I’ve tried it as a Data and Method directive but no luck.
Edit: Code below is fixed.
foreach (var ttDtl in ttQuoteDtl)
{
if (ttDtl != null)
{
int qNum = (int)ttDtl.QuoteNum;
int qLine = (int)ttDtl.QuoteLine;
decimal kitDocDisc = Decimal.Zero;
decimal kitDocExtP = Decimal.Zero;
foreach(var qdC in (from kitCr in Db.QuoteDtl where kitCr.Company == Session.CompanyID
&& kitCr.QuoteNum == qNum
&& kitCr.KitParentLine == qLine
&& kitCr.KitPricing == "C"
&& kitCr.KitFlag == "C"
select kitCr))
{
var kitC = qdC;
if (kitC != null)
{
int qdCNum = kitC.QuoteNum;
var qdCPLine = kitC.KitParentLine;
foreach(var qdP in(from kitPr in ttQuoteDtl where kitPr.Company == Session.CompanyID &&
kitPr.QuoteNum == qdCNum &&
kitPr.QuoteLine == qdCPLine
select kitPr))
{
var kitP = qdP;
if (kitP != null)
{
kitP["KitDiscPct_c"] = kitC.DiscountPercent;
kitDocDisc = kitDocDisc + kitC.DocDiscount;
kitDocExtP = kitDocExtP + kitC.DocExtPriceDtl;
kitP["KitDocDisc_c"] = kitDocDisc;
kitP["KitDocExtPrice_c"] = kitDocExtP;
// Show MsgBox
string body2 = "kitPr "+" kitDocDisc: "+kitDocDisc+" kitDocExtP: "+kitDocExtP+" kitDiscPct: "+kitP["KitDiscPct_c"];
this.PublishInfoMessage(body2, Ice.Common.BusinessObjectMessageType.Information, Ice.Bpm.InfoMessageDisplayMode.Individual,"FirstVar","SecondVar");
}
} //qdP
}
} //qdC
}
} //ttDtl