Compare commits

..

2 Commits

Author SHA1 Message Date
e3c1367e51 vault backup: 2023-11-10 10:51:46 2023-11-10 10:51:46 -05:00
8a746aa42c vault backup: 2023-11-10 10:09:38 2023-11-10 10:09:38 -05:00
3 changed files with 24 additions and 22 deletions

View File

@ -118,43 +118,40 @@ export function apply_guidance(doc: any) {
//} //}
doc.targetPrice = doc.v1tp ?? doc.v0tp; 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;
// Determine the anchor price and source // Determine the anchor price and source
if (doc.hist.cust?.early_price !== undefined ) { if (earlyPrice) {
if (doc.hist.cust.relevance !== 'customer exact') { // translate alternate product history to current product quoted
doc.anchorPrice = Number((doc.hist.cust.early_price * doc.bridgePremium).toFixed(5)); anchorPrice = Number((earlyPrice * bridgePremium).toFixed(5));
if (doc.targetPrice < doc.anchorPrice) { if (targetPrice < anchorPrice) {
doc.anchorPrice = doc.targetPrice; anchorSource = 'Target Price';
doc.anchorSource = 'Target Price' anchorPrice = targetPrice;
} else { } else {
doc.anchorSource = doc.hist.cust.early_season + ' Similar (' + doc.hist.cust.ds + ') Customer Price ' + doc.hist.cust.early_price + ' x ' + doc.bridgePremium + ' = ' + doc.anchorPrice; anchorSource = doc.hist.cust.early_season + ' Similar (' + doc.hist.cust.ds + ') Customer Price ' + earlyPrice + ' x ' + doc.bridgePremium + ' = ' + anchorPrice;
if (doc.targetPrice < doc.anchorPrice) {
doc.anchorSource = 'Target Price';
doc.anchorPrice = doc.targetPrice;
}
} }
} else { } else {
doc.anchorPrice = doc.hist.cust.early_price; anchorPrice = doc.targetPrice;
doc.anchorSource = doc.hist.cust.early_season + ' Customer Price ' + doc.hist.cust.early_price; anchorSource = 'Target Price';
}
} else {
doc.anchorPrice = doc.targetPrice;
doc.anchorSource = 'Target Price';
} }
doc.anchorSource = anchorSource;
const inflation = Math.max(...Object.keys(doc.iidx).map(Number)); const inflation = Math.max(...Object.keys(doc.iidx).map(Number));
const inflationFactor = doc.iidx[inflation] + 1; const inflationFactor = doc.iidx[inflation] + 1;
doc.inflationFactor = inflationFactor; doc.inflationFactor = inflationFactor;
var calcPrice = doc.anchorPrice * doc.inflationFactor; var calcPrice = anchorPrice * doc.inflationFactor;
calcPrice = parseFloat(calcPrice.toFixed(5)); calcPrice = parseFloat(calcPrice.toFixed(5));
let finalReason = ""; let finalReason = "";
if (calcPrice >= doc.list) { if (calcPrice >= doc.list) {
doc.calcCeiling = "Cap At List"; doc.calcCeiling = "Cap At List";
doc.finalPrice = doc.list; doc.finalPrice = doc.list;
finalReason = `${doc.anchorSource} x ${inflationFactor} = ${calcPrice} but cap at list ${doc.list}`; finalReason = `${anchorSource} x ${inflationFactor} = ${calcPrice} but cap at list ${doc.list}`;
} else { } else {
doc.finalPrice = calcPrice; doc.finalPrice = calcPrice;
finalReason = `${doc.anchorSource} x ${inflationFactor} = ${calcPrice}`; finalReason = `${anchorSource} x ${inflationFactor} = ${calcPrice}`;
} }
doc.finalReason = finalReason; doc.finalReason = finalReason;

5
sql/db_apply.pg.sql Normal file
View File

@ -0,0 +1,5 @@
SELECT
rlarp.get_guidance(lq.billto, lq.shipto, lq.part, lq.units_each, 2024)
FROM
pricequote.live_quotes lq
LIMIT 100

View File

@ -133,7 +133,7 @@ BEGIN
--RAISE NOTICE 'list: %', jsonb_pretty(_list); --RAISE NOTICE 'list: %', jsonb_pretty(_list);
----------------get premium for quote hist gap-------------- ----------------get premium for quote hist gap--------------
SELECT coalesce(rlarp.get_premium(_stlc, _seas, (SELECT xchan FROM _chx WHERE chan = _chan),_v1ds, ((_rslt->'mostRelevantCustomerPriceInfo')->'source')->>'v1ds'),'{}'::jsonb) INTO _prem; SELECT coalesce(rlarp.get_premium(_stlc, _seas, (SELECT xchan FROM _chx WHERE chan = _chan),_rslt->'hist'->'cust'->>'ds', _v1ds),'{}'::jsonb) INTO _prem;
_rslt := _rslt||_prem; _rslt := _rslt||_prem;
--RAISE NOTICE 'list: %', jsonb_pretty(_list); --RAISE NOTICE 'list: %', jsonb_pretty(_list);