Fix #7123 - getting abra ready to test
[Pman.Xtuple] / pgsql / x-timewarp-period-fill.sql
1 CREATE SCHEMA timewarp;
2
3 CREATE OR REPLACE FUNCTION timewarp.period_fill_all()
4     RETURNS  boolean
5 AS $BODY$
6 DECLARE    
7
8 BEGIN   
9
10     PERFORM  timewarp.period_fill(period_id) FROM (
11                     SELECT
12                             period_id
13                         FROM
14                             public.period
15
16                     ) x;
17     RETURN true;
18 END;
19 $BODY$
20   LANGUAGE plpgsql VOLATILE
21   COST 100;
22   
23 ALTER FUNCTION   timewarp.period_fill_all()
24   OWNER TO admin;
25  
26
27
28 CREATE OR REPLACE FUNCTION timewarp.period_fill(integer)
29     RETURNS  boolean
30
31 AS $BODY$
32 DECLARE
33     i_period_id  ALIAS FOR $1;
34
35     r_period RECORD;
36     r_periodview RECORD;
37
38     v_is_update BOOLEAN;
39
40 BEGIN
41     
42     SELECT
43             *
44     INTO
45         r_period
46     FROM
47         timewarp.period
48     WHERE
49         period_id = i_period_id;
50
51     v_is_update := false;
52     -- already there..
53     IF FOUND THEN
54         v_is_update := true;
55     END IF;
56
57     SELECT
58         *
59     INTO
60         r_periodview
61     FROM
62         timewarp.periodview
63     WHERE
64         period_id = i_period_id;
65     
66     IF v_is_update THEN
67
68         UPDATE
69             timewarp.period
70         SET 
71             period_start   = r_periodview.period_start,
72             period_end     = r_periodview.period_end,
73             period_closed  = r_periodview.period_closed,
74             period_freeze  = r_periodview.period_freeze,
75             period_initial = r_periodview.period_initial,
76             period_name    = r_periodview.period_name,
77             period_yearperiod_id = r_periodview.period_yearperiod_id,
78             period_quarter = r_periodview.period_quarter,
79             period_number  = r_periodview.period_number
80              
81         WHERE
82             period_id = i_period_id;
83     
84     ELSE
85
86         INSERT INTO  timewarp.period (
87             period_id, period_start, 
88             period_end, period_closed, 
89             period_freeze, period_initial, 
90             period_name, period_yearperiod_id, 
91             period_quarter, period_number
92         ) VALUES  (
93             r_periodview.period_id, r_periodview.period_start, 
94             r_periodview.period_end, r_periodview.period_closed, 
95             r_periodview.period_freeze, r_periodview.period_initial, 
96             r_periodview.period_name, r_periodview.period_yearperiod_id, 
97             r_periodview.period_quarter, r_periodview.period_number
98             
99         );
100     END IF;
101     
102     RETURN true;
103 END;
104 $BODY$
105   LANGUAGE plpgsql VOLATILE
106   COST 100;
107   
108 ALTER FUNCTION  timewarp.period_fill(integer)
109   OWNER TO admin;
110   
111   
112 -- always run it..
113
114 SELECT timewarp.period_fill_all();
115