Compare commits
2 Commits
1250c671e7
...
e3c1367e51
Author | SHA1 | Date | |
---|---|---|---|
e3c1367e51 | |||
8a746aa42c |
@ -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
5
sql/db_apply.pg.sql
Normal 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
|
@ -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);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user