From 89ac7987db300fcc386b959b77a934f3e2cf372d Mon Sep 17 00:00:00 2001 From: denghy Date: Mon, 11 Feb 2019 10:54:21 +0800 Subject: [PATCH] TIMELINES_ARRAY --- .../create_virtaul_order_cards_func.pgsql | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/database/migrations/create_virtaul_order_cards_func.pgsql b/database/migrations/create_virtaul_order_cards_func.pgsql index 9ccb00e1..10ed4543 100644 --- a/database/migrations/create_virtaul_order_cards_func.pgsql +++ b/database/migrations/create_virtaul_order_cards_func.pgsql @@ -130,6 +130,35 @@ END; $$ LANGUAGE plpgsql IMMUTABLE; +CREATE OR REPLACE FUNCTION TIMELINES_ARRAY (sim INT8) + RETURNS INT[] +AS $$ +DECLARE + timelines INT[] := '{}'; + timelines_json JSONB; + item JSONB; + temp_months INT; + i INT; +BEGIN + timelines_json := vd.TIMELINES_JSON(sim); + + FOR item IN SELECT * FROM json_array_elements(timelines_json::JSON) LOOP + temp_months = (TO_CHAR((item->>'service_end_at')::TIMESTAMP, 'YYYY')::INT - TO_CHAR((item->>'service_start_at')::TIMESTAMP, 'YYYY')::INT) * 12 + + (TO_CHAR((item->>'service_end_at')::TIMESTAMP, 'MM')::INT - TO_CHAR((item->>'service_start_at')::TIMESTAMP, 'MM')::INT); + i := 0; + + RAISE NOTICE 'TIMELINES_ARRAY: % - % - %', item->>'sim', item->>'package_id', temp_months; + + WHILE i <= temp_months LOOP + timelines := timelines || TO_CHAR((item->>'service_start_at')::TIMESTAMP + (i || ' month')::INTERVAL, 'YYYYMM')::INT; + i := i + 1; + END LOOP; + END LOOP; + RETURN timelines; +END; +$$ +LANGUAGE plpgsql IMMUTABLE; + CREATE OR REPLACE FUNCTION FIX_ORDER_COUNTS () RETURNS BOOLEAN AS $$