43 lines
3.0 KiB
PL/PgSQL
43 lines
3.0 KiB
PL/PgSQL
CREATE OR REPLACE PROCEDURE pricequote.load_target_prices(input_json JSONB)
|
||
LANGUAGE plpgsql
|
||
AS $$
|
||
BEGIN
|
||
-- 1️⃣ Materialize the function output once
|
||
CREATE TEMP TABLE temp_new_data ON COMMIT DROP AS
|
||
SELECT
|
||
stlc, ds, chan, tier, vol, price, math
|
||
FROM
|
||
pricequote.build_pricing_path(input_json)
|
||
WHERE
|
||
lastflag;
|
||
|
||
-- 2️⃣ Delete matching old rows
|
||
DELETE FROM pricequote.target_prices t
|
||
USING (
|
||
SELECT DISTINCT stlc FROM temp_new_data
|
||
) to_delete
|
||
WHERE t.stlc = to_delete.stlc;
|
||
|
||
-- 3️⃣ Insert new rows
|
||
INSERT INTO pricequote.target_prices (stlc, ds, chan, tier, vol, price, math)
|
||
SELECT stlc, ds, chan, tier, vol, price, math FROM temp_new_data;
|
||
|
||
END;
|
||
$$;
|
||
|
||
/*
|
||
SELECT
|
||
stlc,
|
||
ds,
|
||
chan,
|
||
tier,
|
||
vol,
|
||
price,
|
||
-- array_to_string(math, E'\n') AS math_text
|
||
jsonb_build_object('target math',to_jsonb(math)) AS math_text
|
||
FROM
|
||
pricequote.build_pricing_path('[{"entity":"Anchor","attr":"JNS0T1G3","val":"0.08","func":"Price"},{"entity":"Anchor","attr":"XNS0T1G3","val":"0.08","func":"Price"},{"entity":"Anchor","attr":"XRD16002","val":"0.085","func":"Price"},{"entity":"Anchor","attr":"EU170S50","val":"0.085","func":"Price"},{"entity":"Anchor","attr":"EU170T50","val":"0.095","func":"Price"},{"entity":"Anchor","attr":"AZN06501","val":"0.12","func":"Price"},{"entity":"Anchor","attr":"1CP07010","val":"0.125","func":"Price"},{"entity":"Anchor","attr":"1CP06060","val":"0.13","func":"Price"},{"entity":"Anchor","attr":"AZA06500","val":"0.15","func":"Price"},{"entity":"Color Tier","attr":"B","val":1,"func":"Factor"},{"entity":"Color Tier","attr":"T","val":1.1,"func":"Factor"},{"entity":"Color Tier","attr":"L","val":1.1,"func":"Factor"},{"entity":"Color Tier","attr":"M","val":1.2,"func":"Factor"},{"entity":"Color Tier","attr":"P","val":1.3,"func":"Factor"},{"entity":"Color Tier","attr":"C","val":1.35,"func":"Factor"},{"entity":"Branding","val":"0","func":"Price"},{"entity":"Branding","attr":"L","val":"0.03","func":"Price"},{"entity":"Branding","attr":"P","val":"0.08","func":"Price"},{"entity":"Packaging","attr":"BDL","val":"0.002","func":"Price"},{"entity":"Packaging","attr":"CSE","val":"0.005","func":"Price"},{"entity":"Packaging","attr":"PC","val":"0.005","func":"Price"},{"entity":"Packaging","attr":"PLT","val":"0","func":"Price"},{"entity":"Packaging","attr":"SLV","val":"0.002","func":"Price"},{"entity":"Suffix","val":1,"func":"Factor"},{"entity":"Accessories","val":"0","func":"Price"},{"entity":"Channel","attr":"DIR","val":1,"func":"Factor"},{"entity":"Channel","attr":"DRP","val":1,"func":"Factor"},{"entity":"Channel","attr":"WHS","val":1.2,"func":"Factor"},{"entity":"Volume","attr":24,"val":1,"func":"Factor"},{"entity":"Volume","attr":"8-24","val":1.05,"func":"Factor"},{"entity":"Volume","attr":"1-8","val":1.1,"func":"Factor"},{"entity":"Volume","attr":"0-1","val":1.2,"func":"Factor"},{"entity":"Tier","attr":1,"val":1,"func":"Factor"},{"entity":"Tier","attr":2,"val":1.05,"func":"Factor"},{"entity":"Tier","attr":3,"val":1.07,"func":"Factor"}]'::jsonb)
|
||
WHERE
|
||
lastflag
|
||
*/
|