vault backup: 2023-11-08 13:20:53
This commit is contained in:
		
							parent
							
								
									e3c251210f
								
							
						
					
					
						commit
						46a7e8cd86
					
				
							
								
								
									
										19
									
								
								api.ts
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								api.ts
									
									
									
									
									
								
							| @ -31,8 +31,9 @@ await client.connect(); | |||||||
| 
 | 
 | ||||||
| // Load SQL from file
 | // Load SQL from file
 | ||||||
| const query = await Deno.readTextFile("sql/get.pg.sql"); | const query = await Deno.readTextFile("sql/get.pg.sql"); | ||||||
|  | const query_dseg = await Deno.readTextFile("sql/get_dseg.pg.sql"); | ||||||
| 
 | 
 | ||||||
| // Define a route to retrieve values from the database using parameters
 | // exact scenario for existing codes
 | ||||||
| router.get('/code_price/:billcode/:shipcode/:partcode/:qty', async (ctx) => { | router.get('/code_price/:billcode/:shipcode/:partcode/:qty', async (ctx) => { | ||||||
| 
 | 
 | ||||||
|     const partcode = ctx.params.partcode; |     const partcode = ctx.params.partcode; | ||||||
| @ -47,6 +48,22 @@ router.get('/code_price/:billcode/:shipcode/:partcode/:qty', async (ctx) => { | |||||||
|     ctx.response.body = procd; |     ctx.response.body = procd; | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
|  | // specific customres codes but generic style code and data segment to accomodate custom colors and branding
 | ||||||
|  | router.get('/dseg_price/:billcode/:shipcode/:stlc/:dseg/:qty', async (ctx) => { | ||||||
|  | 
 | ||||||
|  |     const stlc = ctx.params.stlc; | ||||||
|  |     const dseg = ctx.params.dseg; | ||||||
|  |     const billcode = ctx.params.billcode; | ||||||
|  |     const shipcode = ctx.params.shipcode; | ||||||
|  |     const qty = ctx.params.qty; | ||||||
|  | 
 | ||||||
|  |     console.log(dseg); | ||||||
|  |     //console.log(customer)
 | ||||||
|  |     const result = await client.queryObject({args: [billcode, shipcode, stlc, dseg, qty], text: query_dseg} ); | ||||||
|  |     console.log(result); | ||||||
|  |     const procd = apply_guidance(result.rows[0]["doc"]) | ||||||
|  |     ctx.response.body = procd; | ||||||
|  | }); | ||||||
| app.use(router.routes()); | app.use(router.routes()); | ||||||
| app.use(router.allowedMethods()); | app.use(router.allowedMethods()); | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								sql/get_dseg.pg.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								sql/get_dseg.pg.sql
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,2 @@ | |||||||
|  | --select gg.d from rlarp.get_guidance('DIAM0004','DIAM0004','AMK06000G18B054',5000,2024) gg(d); | ||||||
|  | SELECT gg.d doc FROM rlarp.get_guidance_dseg($1,$2, $3,$4, $5, 2024) gg(d); | ||||||
							
								
								
									
										152
									
								
								sql/get_guidance_dseg.pg.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										152
									
								
								sql/get_guidance_dseg.pg.sql
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,152 @@ | |||||||
|  | DROP FUNCTION rlarp.get_guidance_dseg; | ||||||
|  | CREATE OR REPLACE FUNCTION rlarp.get_guidance_dseg(_bill text, _ship text, _stlc text, _dseg text, _qty numeric, _seas int) | ||||||
|  | RETURNS jsonb  | ||||||
|  | LANGUAGE plpgsql AS | ||||||
|  | --DO | ||||||
|  | $func$ | ||||||
|  | DECLARE | ||||||
|  |     --_item   text; | ||||||
|  |     --_bill   text; | ||||||
|  |     --_ship   text; | ||||||
|  |     --_qty    numeric; | ||||||
|  |     --_seas   int; | ||||||
|  |     _mold   text; | ||||||
|  |     _item   text; | ||||||
|  |     _cust   text; | ||||||
|  |     _v1ds   text; | ||||||
|  |     _v0ds   text; | ||||||
|  |     _v1tp   jsonb; | ||||||
|  |     _v0tp   jsonb; | ||||||
|  |     _chan   text; | ||||||
|  |     _regn   text; | ||||||
|  |     _rslt   jsonb; | ||||||
|  |     _targ   jsonb; | ||||||
|  |     _list   jsonb; | ||||||
|  |     _iidx   jsonb; | ||||||
|  | 
 | ||||||
|  | BEGIN | ||||||
|  |     --_item := 'AMK06000G18B054'; | ||||||
|  |     --_bill := 'DIAM0004'; | ||||||
|  |     --_ship := 'DIAM0004'; | ||||||
|  |     --_qty  := 5000; | ||||||
|  |     --_seas := 2024; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     ----------------base product-------------------------------- | ||||||
|  | 
 | ||||||
|  |     SELECT  | ||||||
|  |         m.part_group | ||||||
|  |         ,min(i.item) item | ||||||
|  |         ,i.stlc | ||||||
|  |         ,i.v1ds | ||||||
|  |         ,i.v0ds | ||||||
|  |         ,jsonb_strip_nulls(jsonb_build_object('assc',CASE WHEN i.assc <> '' THEN i.assc ELSE null::text END,'majg',i.majg::int,'coltier',i.coltier)) idxk | ||||||
|  |     INTO  | ||||||
|  |         _mold | ||||||
|  |         ,_item | ||||||
|  |         ,_stlc | ||||||
|  |         ,_v1ds | ||||||
|  |         ,_v0ds | ||||||
|  |         ,_iidx | ||||||
|  |     FROM  | ||||||
|  |         "CMS.CUSLG".itemmv i  | ||||||
|  |         INNER JOIN rlarp.molds m ON  | ||||||
|  |             m.stlc = i.stlc  | ||||||
|  |     WHERE  | ||||||
|  |         i.stlc = _stlc | ||||||
|  |         AND i.v1ds = _dseg | ||||||
|  |     GROUP BY | ||||||
|  |         m.part_group | ||||||
|  |         ,i.stlc | ||||||
|  |         ,i.v1ds | ||||||
|  |         ,i.v0ds | ||||||
|  |         ,jsonb_strip_nulls(jsonb_build_object('assc',CASE WHEN i.assc <> '' THEN i.assc ELSE null::text END,'majg',i.majg::int,'coltier',i.coltier)); | ||||||
|  |     _rslt := jsonb_build_object('mold',_mold,'v1ds',_v1ds,'v0ds',_v0ds,'stlc',_stlc)||_iidx; | ||||||
|  |     --RAISE NOTICE 'item data %', _iidx; | ||||||
|  | 
 | ||||||
|  |     ----------------channel------------------------------------- | ||||||
|  | 
 | ||||||
|  |     SELECT rlarp.channel_code(_bill, _ship) INTO _chan; | ||||||
|  |     _rslt := _rslt||jsonb_build_object('chan',_chan); | ||||||
|  |     --RAISE NOTICE '%', _chan; | ||||||
|  | 
 | ||||||
|  |     ----------------customer------------------------------------ | ||||||
|  | 
 | ||||||
|  |     SELECT dba INTO _cust FROM rlarp.cust WHERE code = CASE WHEN _chan = 'DRP' THEN _ship ELSE _bill END ; | ||||||
|  |     _rslt = _rslt||jsonb_build_object('cust',_cust); | ||||||
|  |     --RAISE NOTICE 'cust %', _cust; | ||||||
|  | 
 | ||||||
|  |     ----------------price history------------------------------- | ||||||
|  |     SELECT _rslt||jsonb_build_object('hist',rlarp.gethist(_mold, _cust)) INTO _rslt  ; | ||||||
|  |     --RAISE NOTICE '%', _rslt; | ||||||
|  | 
 | ||||||
|  |     ----------------target pricing------------------------------ | ||||||
|  |     SELECT  | ||||||
|  |         jsonb_build_object( | ||||||
|  |             'v0tp',  | ||||||
|  |             target_price,  | ||||||
|  |             'stdv', | ||||||
|  |             stdev_price  | ||||||
|  |         ) | ||||||
|  |     INTO  | ||||||
|  |         _v0tp | ||||||
|  |     FROM | ||||||
|  |         pricequote.market_setavgprice | ||||||
|  |     WHERE | ||||||
|  |         mold = _stlc | ||||||
|  |         AND season = _seas | ||||||
|  |         AND data_segment = _v0ds | ||||||
|  |         AND region = 'ALL'; | ||||||
|  |     _rslt := _rslt||COALESCE(_v0tp,'{}'::jsonb); | ||||||
|  |     ----------------target pricing------------------------------ | ||||||
|  |     SELECT  | ||||||
|  |         jsonb_build_object( | ||||||
|  |             'v1tp',  | ||||||
|  |             target_price,  | ||||||
|  |             'stdv', | ||||||
|  |             stdev_price  | ||||||
|  |         ) | ||||||
|  |     INTO  | ||||||
|  |         _v1tp | ||||||
|  |     FROM | ||||||
|  |         pricequote.market_setavgprice | ||||||
|  |     WHERE | ||||||
|  |         mold = _stlc | ||||||
|  |         AND season = _seas | ||||||
|  |         AND data_segment = _v1ds | ||||||
|  |         AND region = 'ALL'; | ||||||
|  |     --RAISE NOTICE 'target: %', jsonb_pretty(_targ); | ||||||
|  |     _rslt := _rslt||COALESCE(_v1tp,'{}'::jsonb); | ||||||
|  | 
 | ||||||
|  |     ----------------inflation index----------------------------- | ||||||
|  |     RAISE NOTICE 'infaltion : %', jsonb_pretty(_iidx); | ||||||
|  |     SELECT  | ||||||
|  |         jsonb_build_object( | ||||||
|  |             'iidx' | ||||||
|  |             ,jsonb_build_object( | ||||||
|  |                 priority | ||||||
|  |                 ,min(factor) | ||||||
|  |             ) | ||||||
|  |         ) | ||||||
|  |     INTO  | ||||||
|  |         _iidx | ||||||
|  |     FROM | ||||||
|  |         rlarp.costindex | ||||||
|  |     WHERE | ||||||
|  |         timeframe @> current_date | ||||||
|  |         AND ( | ||||||
|  |             attr @> _iidx | ||||||
|  |             OR attr @> jsonb_build_object('stlc',_mold) | ||||||
|  |         ) | ||||||
|  |     GROUP BY | ||||||
|  |         priority; | ||||||
|  |     _rslt := _rslt||COALESCE(_iidx,'{}'::jsonb); | ||||||
|  |     ----------------list ppricing------------------------------- | ||||||
|  |     SELECT coalesce(rlarp.get_list(_bill, _ship, _item, _qty),'{}'::jsonb) INTO _list; | ||||||
|  |     _rslt := _rslt||_list; | ||||||
|  |     --RAISE NOTICE 'list: %', jsonb_pretty(_list); | ||||||
|  | 
 | ||||||
|  |     RETURN _rslt; | ||||||
|  | 
 | ||||||
|  | END; | ||||||
|  | $func$; | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user