introduce a new key-value pair in the ui json that indicates level of visibility to various roles

This commit is contained in:
Paul Trowbridge 2025-08-25 21:05:13 -04:00
parent 2a699e8f83
commit 3675b8541f
3 changed files with 44 additions and 20 deletions

View File

@ -1,12 +1,12 @@
-- SELECT SELECT
-- ui_json->'details' ui_json->'details'
-- FROM pricequote.single_price_call( FROM pricequote.single_price_call(
-- 'FARM0001', 'FARM0001',
-- 'KEYB0001', 'KEYB0001',
-- 'HCA10000B661100', 'HCA10000B661100',
-- 'v1:T..CSE..D', 'v1:T..CSE..D',
-- 50000 50000
-- ) f; ) f;
-- --
-- SELECT -- SELECT
-- ui_json->'details' -- ui_json->'details'
@ -30,16 +30,16 @@
-- --
-- SELECT * FROM pricequote.lastpricedetail l WHERE customer = 'HYBELS' AND l.partgroup = 'HZP3E100'; -- SELECT * FROM pricequote.lastpricedetail l WHERE customer = 'HYBELS' AND l.partgroup = 'HZP3E100';
-- --
-- SELECT SELECT
-- pc.expl pc.expl, pc.hist
-- FROM FROM
-- pricequote.live_quotes pricequote.live_quotes
-- LEFT JOIN LATERAL pricequote.single_price_call( LEFT JOIN LATERAL pricequote.single_price_call(
-- billto, shipto, part, v1ds, units_each billto, shipto, part, v1ds, units_each
-- ) pc ON TRUE ) pc ON TRUE
-- WHERE WHERE
-- qid = 113173 qid = 113800
-- AND qrn = 32; AND qrn = 4;
create table pricequote.target_prices_base as ( create table pricequote.target_prices_base as (
with with

View File

@ -445,11 +445,13 @@ BEGIN
( (
SELECT SELECT
panel.label, panel.label,
panel.detailLevel,
JSON_QUERY(panel.details) AS details JSON_QUERY(panel.details) AS details
FROM ( FROM (
-- History Panel -- History Panel
SELECT SELECT
'History' AS label, 'History' AS label,
10 as detailLevel,
( (
SELECT SELECT
----------------------label------------------------------------------------ ----------------------label------------------------------------------------
@ -465,6 +467,8 @@ BEGIN
END END
ELSE 'No Recent' ELSE 'No Recent'
END AS label, END AS label,
----------------------detail-----------------------------------------------
10 AS detailLevel,
----------------------value------------------------------------------------ ----------------------value------------------------------------------------
ISNULL(q.last_price, 0) AS value, ISNULL(q.last_price, 0) AS value,
----------------------type------------------------------------------------- ----------------------type-------------------------------------------------
@ -505,25 +509,30 @@ BEGIN
-- List Panel -- List Panel
SELECT SELECT
'List' AS label, 'List' AS label,
10 AS detailLevel,
( (
SELECT SELECT
COALESCE('Code: ' + q.listcode,'No List') AS label, COALESCE('Code: ' + q.listcode,'No List') AS label,
10 AS detailLevel,
COALESCE(q.listprice,0) AS value, COALESCE(q.listprice,0) AS value,
'currency' AS type, 'currency' AS type,
COALESCE('List Min Qty: ' + format(q.list_from,'#,###'),'') + CASE WHEN q.list_relevance = '' THEN '' ELSE ' (' + q.list_relevance + ')' END AS note COALESCE('List Min Qty: ' + format(q.list_from,'#,###'),'') + CASE WHEN q.list_relevance = '' THEN '' ELSE ' (' + q.list_relevance + ')' END AS note
FOR JSON PATH FOR JSON PATH
) ) AS details
UNION ALL UNION ALL
-- Target Support Panel -- Target Support Panel
SELECT SELECT
'Target Calculation' AS label, 'Target Calculation' AS label,
10 AS detailLevel,
( (
SELECT * FROM ( SELECT * FROM (
SELECT SELECT
----------------------label------------------------------------------------ ----------------------label------------------------------------------------
CASE WHEN value <> '' THEN replace(RTRIM(SUBSTRING(value,1,18)),'Anchor:', '') ELSE 'No Target' END AS label, CASE WHEN value <> '' THEN replace(RTRIM(SUBSTRING(value,1,18)),'Anchor:', '') ELSE 'No Target' END AS label,
----------------------detailLevel------------------------------------------
10 AS detailLevel,
----------------------value------------------------------------------------ ----------------------value------------------------------------------------
CASE WHEN value <> '' THEN CASE WHEN value <> '' THEN
TRY_CAST(SUBSTRING(value,23,7) AS NUMERIC(20,5)) TRY_CAST(SUBSTRING(value,23,7) AS NUMERIC(20,5))
@ -548,6 +557,8 @@ BEGIN
SELECT SELECT
----------------------label------------------------------------------------ ----------------------label------------------------------------------------
'Target' AS label, 'Target' AS label,
----------------------detailLevel------------------------------------------
10 AS detailLevel,
----------------------value------------------------------------------------ ----------------------value------------------------------------------------
tprice AS value, tprice AS value,
----------------------type------------------------------------------------- ----------------------type-------------------------------------------------
@ -564,9 +575,11 @@ BEGIN
-- Guidance Panel -- Guidance Panel
SELECT SELECT
'Guidance' AS label, 'Guidance' AS label,
10 AS detailLevel,
( (
SELECT SELECT
'Price' AS label, 'Price' AS label,
10 AS detailLevel,
COALESCE(q.guidance_price,0) AS value, COALESCE(q.guidance_price,0) AS value,
'currency' AS type, 'currency' AS type,
q.guidance_reason AS note q.guidance_reason AS note

View File

@ -447,9 +447,11 @@ BEGIN
------------------------------------------ ------------------------------------------
jsonb_build_object( jsonb_build_object(
'label', 'History', 'label', 'History',
10, 'detailLevel',
'details', jsonb_build_array( 'details', jsonb_build_array(
jsonb_build_object( jsonb_build_object(
'label', CASE WHEN _last_price IS NOT NULL THEN 'Last Sale: ' || _last_date ELSE 'No Recent' END, 'label', CASE WHEN _last_price IS NOT NULL THEN 'Last Sale: ' || _last_date ELSE 'No Recent' END,
'detailLevel', 10,
'value', COALESCE(_last_price,0), 'value', COALESCE(_last_price,0),
'type', 'currency', 'type', 'currency',
'note', CASE WHEN _last_price IS NOT NULL THEN 'note', CASE WHEN _last_price IS NOT NULL THEN
@ -467,6 +469,7 @@ BEGIN
||CASE WHEN COALESCE(_last_premium,1) <> 1 THEN ||CASE WHEN COALESCE(_last_premium,1) <> 1 THEN
COALESCE(jsonb_build_array(jsonb_build_object( COALESCE(jsonb_build_array(jsonb_build_object(
'label','Price Difference', 'label','Price Difference',
'detailLevel',10,
'value', _last_premium, 'value', _last_premium,
'type','percent', 'type','percent',
'note', _last_premium_method 'note', _last_premium_method
@ -477,6 +480,7 @@ BEGIN
||CASE WHEN COALESCE(_last_premium,1) <> 1 THEN ||CASE WHEN COALESCE(_last_premium,1) <> 1 THEN
COALESCE(jsonb_build_array(jsonb_build_object( COALESCE(jsonb_build_array(jsonb_build_object(
'label','Adjusted Price', 'label','Adjusted Price',
'detailLevel',10,
'value', _last_price_norm, 'value', _last_price_norm,
'type','currency', 'type','currency',
'note','normalized to ' || _v1ds 'note','normalized to ' || _v1ds
@ -490,9 +494,11 @@ BEGIN
------------------------------------------ ------------------------------------------
jsonb_build_object( jsonb_build_object(
'label', 'List', 'label', 'List',
'detailLevel',10,
'details', jsonb_build_array( 'details', jsonb_build_array(
jsonb_build_object( jsonb_build_object(
'label', 'List:' || COALESCE(_list_code, ''), 'label', 'List:' || COALESCE(_list_code, ''),
'detailLevel',10,
'value', _list_price, 'value', _list_price,
'type', 'currency', 'type', 'currency',
'note', _list_relevance 'note', _list_relevance
@ -504,6 +510,7 @@ BEGIN
------------------------------------------ ------------------------------------------
jsonb_build_object( jsonb_build_object(
'label', 'Target Calculation', 'label', 'Target Calculation',
'detailLevel',10,
'details', 'details',
-- jsonb_build_array( -- jsonb_build_array(
( (
@ -512,6 +519,8 @@ BEGIN
jsonb_build_object( jsonb_build_object(
----------------------label------------------------------------------------ ----------------------label------------------------------------------------
'label',CASE WHEN value <> '' THEN RTRIM(SUBSTRING(value,1,18)) ELSE 'No Target' END, 'label',CASE WHEN value <> '' THEN RTRIM(SUBSTRING(value,1,18)) ELSE 'No Target' END,
----------------------detailLevel------------------------------------------
'detailLevel',10,
----------------------value------------------------------------------------ ----------------------value------------------------------------------------
'value',CASE WHEN value <> '' THEN 'value',CASE WHEN value <> '' THEN
SUBSTRING(value,23,7)::NUMERIC(20,5) + SUBSTRING(value,23,7)::NUMERIC(20,5) +
@ -545,9 +554,11 @@ BEGIN
------------------------------------------ ------------------------------------------
jsonb_build_object( jsonb_build_object(
'label', 'Guidance', 'label', 'Guidance',
'detailLevel',10,
'details', jsonb_build_array( 'details', jsonb_build_array(
jsonb_build_object( jsonb_build_object(
'label', 'Price', 'label', 'Price',
'detailLevel',10,
'value', COALESCE(_guidance_price,0), 'value', COALESCE(_guidance_price,0),
'type', 'currency', 'type', 'currency',
'note', COALESCE(_guidance_reason,'') 'note', COALESCE(_guidance_reason,'')