export function apply_guidance(doc: any) { const targetPrice = doc.v1tp ?? doc.v0tp; const earlyPrice = doc.hist?.cust?.early_price; let anchorPrice = null; let anchorSource = null; let bridgePremium = doc.bridgePremium ?? 1.00000; // ------if there is not target price just exit--------------- if (!targetPrice) { anchorSource = "No target pricing setup"; doc.finalReason = "No target pricing setup"; } else { // if there is no customer anchor price use target if (earlyPrice) { // translate alternate product history to current product quoted anchorPrice = Number((earlyPrice * bridgePremium).toFixed(5)); // --------if the price needs bridged, add the details to the description-------- if (bridgePremium === 1) { anchorSource = doc.hist.cust.early_season + ' Customer Price ' + earlyPrice; } else { anchorSource = doc.hist.cust.early_season + ' Similar (' + doc.hist.cust.ds + ') Customer Price ' + earlyPrice + ' x ' + doc.bridgePremium + ' = ' + anchorPrice; } // --------after the early price is translated see if target is still less------- if (targetPrice < anchorPrice) { anchorSource = `Target Price ${targetPrice}`; anchorPrice = targetPrice; } } else { anchorPrice = targetPrice; anchorSource = `Target Price ${targetPrice}`; } //------get the most relevant inflation factor number--------------------------------- const inflation = Math.max(...Object.keys(doc.iidx).map(Number)); //------extract the inflation factor using the relevance key-------------------------- const inflationFactor = doc.iidx[inflation] + 1; let calcPrice = parseFloat((anchorPrice * inflationFactor).toFixed(5)); let finalReason = ""; if (calcPrice >= doc.list && doc.list) { doc.calcCeiling = "Cap At List"; doc.finalPrice = doc.list; finalReason = `${anchorSource} x ${inflationFactor} = ${calcPrice} but cap at list ${doc.list}`; } else { doc.finalPrice = calcPrice; finalReason = `${anchorSource} x ${inflationFactor} = ${calcPrice}`; } doc.anchorPrice = anchorPrice; doc.anchorSource = anchorSource; doc.inflationFactor = inflationFactor; doc.finalReason = finalReason; doc.bridgePremium = bridgePremium; doc.targetPrice = targetPrice; } return doc; }