DBA Data[Home] [Help]

PACKAGE BODY: APPS.PA_VRM_UTILS

Source


1 PACKAGE BODY PA_VRM_UTILS AS
2 --$Header: PAVRMUTB.pls 120.0.12020000.1 2013/03/22 06:55:05 rdegala noship $
3 
4 FUNCTION GET_REVENUE_DIFF_AMOUNT (
5 p_project_id IN VARCHAR2,
6 p_current_version_number IN NUMBER
7 )
8 RETURN NUMBER
9 IS
10 l_diff_amount NUMBER;
11 l_prev_version_number NUMBER;
12 
13 CURSOR get_prev_baselined_version(c_prev_version_number IN NUMBER) IS
14  select VERSION_NUMBER from PA_BUDGET_VERSIONS pbv
15  where PROJECT_ID = p_project_id
16  and pbv.APPROVED_REV_PLAN_TYPE_FLAG ='Y'
17  AND pbv.ci_id       IS NULL
18  and pbv.VERSION_NUMBER = c_prev_version_number
19  and pbv.BUDGET_STATUS_CODE = 'B';
20 
21 CURSOR get_revenue_amount IS
22  select REVENUE from PA_BUDGET_VERSIONS pbv
23  where PROJECT_ID = p_project_id
24  and pbv.APPROVED_REV_PLAN_TYPE_FLAG ='Y'
25  AND pbv.ci_id       IS NULL
26  and pbv.VERSION_NUMBER = p_current_version_number
27  and pbv.BUDGET_STATUS_CODE = 'B';
28 
29 CURSOR get_diff_revenue_amount(c_prev_version_number IN NUMBER) IS
30  select pbv.REVENUE - (select pbv1.REVENUE from PA_BUDGET_VERSIONS pbv1
31  where pbv1.PROJECT_ID = pbv.PROJECT_ID and pbv1.APPROVED_REV_PLAN_TYPE_FLAG = 'Y'
32  AND pbv.ci_id       IS NULL
33  and pbv1.VERSION_NUMBER = c_prev_version_number and BUDGET_STATUS_CODE = 'B')
34  from PA_BUDGET_VERSIONS pbv where project_id = p_project_id and
35  pbv.APPROVED_REV_PLAN_TYPE_FLAG ='Y' and pbv.BUDGET_STATUS_CODE = 'B'
36  and pbv.VERSION_NUMBER = p_current_version_number;
37 
38 BEGIN
39   IF p_current_version_number = 1 THEN
40      l_prev_version_number := -1;
41   ELSE
42      l_prev_version_number := p_current_version_number - 1;
43      FOR lcntr IN REVERSE 1..l_prev_version_number
44      LOOP
45         OPEN   get_prev_baselined_version(l_prev_version_number);
46           FETCH  get_prev_baselined_version INTO l_prev_version_number;
47           IF  get_prev_baselined_version%notfound THEN
48               l_prev_version_number := -1;
49           ELSE
50               EXIT;
51           END IF;
52         CLOSE  get_prev_baselined_version;
53 
54      END LOOP;
55   END IF;
56   IF l_prev_version_number = -1 THEN
57     OPEN   get_revenue_amount;
58           FETCH  get_revenue_amount INTO l_diff_amount;
59     CLOSE  get_revenue_amount;
60     RETURN l_diff_amount;
61   ELSE
62      OPEN   get_diff_revenue_amount(l_prev_version_number);
63           FETCH  get_diff_revenue_amount INTO l_diff_amount;
64      CLOSE  get_diff_revenue_amount;
65      RETURN l_diff_amount;
66   END IF;
67 END;
68 
69 
70 
71 FUNCTION GET_COST_DIFF_AMOUNT (
72 p_project_id IN VARCHAR2,
73 p_current_version_number IN NUMBER
74 )
75 RETURN NUMBER
76 IS
77 l_diff_amount NUMBER;
78 l_prev_version_number NUMBER;
79 
80 CURSOR get_prev_baselined_version(c_prev_version_number IN NUMBER) IS
81  select VERSION_NUMBER from PA_BUDGET_VERSIONS pbv
82  where PROJECT_ID = p_project_id
83  and pbv.APPROVED_COST_PLAN_TYPE_FLAG ='Y'
84  AND pbv.ci_id       IS NULL
85  and pbv.VERSION_NUMBER = c_prev_version_number
86  and pbv.BUDGET_STATUS_CODE = 'B';
87 
88 CURSOR get_cost_amount IS
89  select BURDENED_COST from PA_BUDGET_VERSIONS pbv
90  where PROJECT_ID = p_project_id
91  and pbv.APPROVED_COST_PLAN_TYPE_FLAG ='Y'
92  AND pbv.ci_id       IS NULL
93  and pbv.VERSION_NUMBER = p_current_version_number
94  and pbv.BUDGET_STATUS_CODE = 'B';
95 
96 CURSOR get_diff_cost_amount(c_prev_version_number IN NUMBER) IS
97  select pbv.BURDENED_COST - (select pbv1.BURDENED_COST from PA_BUDGET_VERSIONS pbv1
98  where pbv1.PROJECT_ID = pbv.PROJECT_ID and pbv1.APPROVED_COST_PLAN_TYPE_FLAG = 'Y'
99  AND pbv.ci_id       IS NULL
100  and pbv1.VERSION_NUMBER = c_prev_version_number and BUDGET_STATUS_CODE = 'B')
101  from PA_BUDGET_VERSIONS pbv where project_id = p_project_id and
102  pbv.APPROVED_COST_PLAN_TYPE_FLAG ='Y' and pbv.BUDGET_STATUS_CODE = 'B'
103  and pbv.VERSION_NUMBER = p_current_version_number;
104 
105 BEGIN
106   IF p_current_version_number = 1 THEN
107      l_prev_version_number := -1;
108   ELSE
109      l_prev_version_number := p_current_version_number - 1;
110      FOR lcntr IN REVERSE 1..l_prev_version_number
111      LOOP
112         OPEN   get_prev_baselined_version(l_prev_version_number);
113           FETCH  get_prev_baselined_version INTO l_prev_version_number;
114           IF  get_prev_baselined_version%notfound THEN
115               l_prev_version_number := -1;
116           ELSE
117               EXIT;
118           END IF;
119         CLOSE  get_prev_baselined_version;
120 
121      END LOOP;
122   END IF;
123   IF l_prev_version_number = -1 THEN
124     OPEN   get_cost_amount;
125           FETCH  get_cost_amount INTO l_diff_amount;
126     CLOSE  get_cost_amount;
127     RETURN l_diff_amount;
128   ELSE
129      OPEN   get_diff_cost_amount(l_prev_version_number);
130           FETCH  get_diff_cost_amount INTO l_diff_amount;
131      CLOSE  get_diff_cost_amount;
132      RETURN l_diff_amount;
133   END IF;
134 END;
135 
136 
137 
138 FUNCTION IS_INITIAL_BASELINED_VER (
139 p_project_id IN VARCHAR2,
140 p_current_version_number IN NUMBER,
141 p_budget_type IN CHAR   -- C for Cost, R for revenue, A for all
142 )
143 RETURN CHAR
144 IS
145 l_diff_amount NUMBER;
146 l_prev_version_number NUMBER;
147 l_is_initial_baselined_ver CHAR;
148 
149 CURSOR get_prev_cost_version(c_prev_version_number IN NUMBER) IS
150  select VERSION_NUMBER from PA_BUDGET_VERSIONS pbv
151  where PROJECT_ID = p_project_id
152  and pbv.APPROVED_COST_PLAN_TYPE_FLAG ='Y'
153  AND pbv.ci_id       IS NULL
154  and pbv.VERSION_NUMBER = c_prev_version_number
155  and pbv.BUDGET_STATUS_CODE = 'B';
156 
157 CURSOR get_prev_rev_version(c_prev_version_number IN NUMBER) IS
158  select VERSION_NUMBER from PA_BUDGET_VERSIONS pbv
159  where PROJECT_ID = p_project_id
160  and pbv.APPROVED_REV_PLAN_TYPE_FLAG ='Y'
161  AND pbv.ci_id       IS NULL
162  and pbv.VERSION_NUMBER = c_prev_version_number
163  and pbv.BUDGET_STATUS_CODE = 'B';
164 
165 BEGIN
166   IF p_current_version_number = 1 THEN
167      l_prev_version_number := -1;
168      RETURN 'Y';
169   ELSE
170      l_prev_version_number := p_current_version_number - 1;
171      IF p_budget_type = 'C' THEN
172          FOR lcntr IN REVERSE 1..l_prev_version_number
173          LOOP
174             OPEN   get_prev_cost_version(l_prev_version_number);
175               FETCH  get_prev_cost_version INTO l_prev_version_number;
176               IF  get_prev_cost_version%notfound THEN
177                   l_prev_version_number := -1;
178               ELSE
179                   EXIT;
180               END IF;
181             CLOSE  get_prev_cost_version;
182           END LOOP;
183      ELSE IF p_budget_type = 'R' THEN
184                FOR lcntr IN REVERSE 1..l_prev_version_number
185                LOOP
186                   OPEN   get_prev_rev_version(l_prev_version_number);
187                     FETCH  get_prev_rev_version INTO l_prev_version_number;
188                     IF  get_prev_rev_version%notfound THEN
189                         l_prev_version_number := -1;
190                     ELSE
191                         EXIT;
192                     END IF;
193                   CLOSE  get_prev_rev_version;
194                 END LOOP;
195             END IF;
196       END IF;
197   END IF;
198   IF l_prev_version_number = -1 THEN
199     RETURN 'Y';
200   ELSE
201      RETURN 'N';
202   END IF;
203 END;
204 
205 
206 FUNCTION GET_INITIAL_BASELINED_REV_VER (
207 p_project_id IN VARCHAR2
208 )
209 RETURN NUMBER
210 IS
211 l_initial_baselined_ver NUMBER;
212 
213  CURSOR get_prev_rev_bl_version IS
214  select BUDGET_VERSION_ID from PA_BUDGET_VERSIONS pbv
215  where PROJECT_ID = p_project_id
216  and pbv.APPROVED_REV_PLAN_TYPE_FLAG ='Y'
217  AND pbv.ci_id       IS NULL
218  and pbv.VERSION_NUMBER = (select min(VERSION_NUMBER) from PA_BUDGET_VERSIONS where PROJECT_ID = p_project_id
219  AND APPROVED_REV_PLAN_TYPE_FLAG ='Y' AND ci_id IS NULL AND BUDGET_STATUS_CODE = 'B')
220  and pbv.BUDGET_STATUS_CODE = 'B';
221 
222 BEGIN
223   OPEN   get_prev_rev_bl_version();
224     FETCH  get_prev_rev_bl_version INTO l_initial_baselined_ver;
225   CLOSE  get_prev_rev_bl_version;
226   return l_initial_baselined_ver;
227 END;
228 
229 END PA_VRM_UTILS;