[Home] [Help]
PACKAGE BODY: APPS.PA_FP_VIEW_PLANS_PUB
Source
1 PACKAGE BODY pa_fp_view_plans_pub as
2 /* $Header: PAFPVPLB.pls 120.3 2005/08/19 16:31:18 mwasowic noship $
3 Start of Comments
4 Package name : PA_FP_VIEW_PLANS_PUB
5 Purpose : API's for Financial Planning: View Plans Page
6 History :
7 NOTE :
8 End of Comments
9 */
10
11 -- added code to retrieve: PROJFUNC_CURRENCY_CODE, DEFAULT_AMOUNT_TYPE_CODE
12 -- DEFAULT_AMT_SUBTYPE_CODE
13 -- 6/20 added code to return view_currency_code based on view_currency_type
14 -- 11/15/2002: x_budget_status_code, x_ar_flag defaulted to that of p_orgfcst_version_id
15 -- x_plan_type_id, x_plan_fp_options_id defaulted to that of
16 -- p_orgfcst_version_id
17 -- 19-Sep-2002 bug 3146974 Added a new out paramter x_auto_baselined_flag
18 PROCEDURE pa_fp_viewplan_hgrid_init
19 ( p_user_id IN NUMBER,
20 p_orgfcst_version_id IN NUMBER,
21 p_period_start_date IN VARCHAR2,
22 p_user_cost_version_id IN pa_budget_versions.budget_version_id%TYPE,
23 p_user_rev_version_id IN pa_budget_versions.budget_version_id%TYPE,
24 px_display_quantity IN OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
25 px_display_rawcost IN OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
26 px_display_burdcost IN OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
27 px_display_revenue IN OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
28 px_display_margin IN OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
29 px_display_marginpct IN OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
30 p_view_currency_type IN VARCHAR2,
31 p_amt_or_pd IN VARCHAR2,
32 x_view_currency_code OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
33 x_display_from OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
34 x_cost_locked_name OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
35 x_rev_locked_name OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
36 x_plan_period_type OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
37 x_labor_hrs_from_code OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
38 x_cost_budget_status_code OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
39 x_rev_budget_status_code OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
40 x_calc_margin_from OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
41 x_cost_bv_id OUT NOCOPY pa_budget_versions.budget_version_id%TYPE, --File.Sql.39 bug 4440895
42 x_revenue_bv_id OUT NOCOPY pa_budget_versions.budget_version_id%TYPE, --File.Sql.39 bug 4440895
43 x_plan_type_id OUT NOCOPY pa_budget_versions.fin_plan_type_id%TYPE, --File.Sql.39 bug 4440895
44 x_plan_fp_options_id OUT NOCOPY pa_proj_fp_options.proj_fp_options_id%TYPE, --File.Sql.39 bug 4440895
45 x_ar_flag OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
46 x_factor_by_code OUT NOCOPY NUMBER, --File.Sql.39 bug 4440895
47 x_diff_pd_profile_flag OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
48 x_old_pd_profile_flag OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
49 x_refresh_pd_flag OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
50 x_cost_rv_number OUT NOCOPY NUMBER, --File.Sql.39 bug 4440895
51 x_rev_rv_number OUT NOCOPY NUMBER, --File.Sql.39 bug 4440895
52 x_time_phase_code OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
53 -- x_primary_pp_bv_id OUT pa_budget_versions.budget_version_id%TYPE,
54 x_in_period_profile OUT NOCOPY VARCHAR2, -- 'B' for before, 'A' for after --File.Sql.39 bug 4440895
55 x_prec_pds_flag OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
56 x_succ_pds_flag OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
57 x_refresh_req_id OUT NOCOPY NUMBER, --File.Sql.39 bug 4440895
58 x_uncat_rlmid OUT NOCOPY NUMBER, -- for View Link SQL --File.Sql.39 bug 4440895
59 x_def_amt_subt_code OUT NOCOPY VARCHAR2, -- for View Link SQL --File.Sql.39 bug 4440895
60 x_plan_class_code OUT NOCOPY VARCHAR2, -- for Plan Class Security (FP L) --File.Sql.39 bug 4440895
61 x_auto_baselined_flag OUT NOCOPY VARCHAR2, -- for bug 3146974 --File.Sql.39 bug 4440895
62 x_return_status OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
63 x_msg_count OUT NOCOPY NUMBER, --File.Sql.39 bug 4440895
64 x_msg_data OUT NOCOPY VARCHAR2) --File.Sql.39 bug 4440895
65 IS
66 l_projfunc_currency_code PA_PROJECTS_ALL.PROJFUNC_CURRENCY_CODE%TYPE;
67 l_default_amount_type_code VARCHAR2(30);
68 l_default_amount_subtype_code VARCHAR2(30);
69 l_start_date DATE;
70 ll_plan_start_date DATE;
71 pp_plan_start_date DATE; -- start_date according to period profile id
72 ll_plan_end_date DATE;
73 ll_plan_period_type VARCHAR2(30);
74 l_diff_pd_profile_flag VARCHAR2(1);
75
76 -- error-handling variables
77 l_return_status VARCHAR2(2);
78 l_msg_count NUMBER;
79 l_msg_data VARCHAR2(80);
80 l_msg_index_out NUMBER;
81
82 l_num_of_periods NUMBER;
83 l_project_id NUMBER;
84 l_org_id NUMBER;
85 l_cost_or_revenue VARCHAR2(1);
86 l_cost_version_number pa_budget_versions.version_number%TYPE;
87 l_rev_version_number pa_budget_versions.version_number%TYPE;
88 l_cost_version_name pa_budget_versions.version_name%TYPE;
89 l_rev_version_name pa_budget_versions.version_name%TYPE;
90 l_fin_plan_type_id pa_budget_versions.fin_plan_type_id%TYPE;
91 l_margin_derived_from_code pa_proj_fp_options.margin_derived_from_code%TYPE;
92 l_labor_hours_from_code pa_proj_fp_options.report_labor_hrs_from_code%TYPE;
93 l_cost_time_phase_code pa_proj_fp_options.all_time_phased_code%TYPE;
94 l_rev_time_phase_code pa_proj_fp_options.all_time_phased_code%TYPE;
95
96 l_user_bv_flag VARCHAR2(1);
97 l_is_cost_locked_by_user VARCHAR2(1);
98 l_cost_locked_by_person_id NUMBER;
99 l_is_rev_locked_by_user VARCHAR2(1);
100 l_rev_locked_by_person_id NUMBER;
101
102 -- local variables for calling Pa_Prj_Period_Profile_Utils.Get_Prj_Period_Profile_Dtls
103 l_period_profile_id NUMBER;
104 l_period_profile_type VARCHAR2(80);
105 l_plan_period_type VARCHAR2(80);
106 l_period_set_name VARCHAR2(80);
107 l_gl_period_type VARCHAR2(30);
108 l_plan_start_date DATE;
109 l_plan_end_date DATE;
110 l_number_of_periods NUMBER;
111
112 -- local variables for calling Pa_Prj_Period_Profile_Utils procedures
113 l_cur_period_profile_id pa_proj_period_profiles.period_profile_id%TYPE;
114 l_cur_start_period VARCHAR2(30);
115 l_cur_end_period VARCHAR2(30);
116 l_cur_period_number NUMBER;
117 l_cur_period_name VARCHAR2(100);
118 l_cur_period_start_date DATE;
119 l_cur_period_end_date DATE;
120
121 -- other variables for Period Profile info
122 l_plan_processing_code pa_budget_versions.plan_processing_code%TYPE;
123 l_plan_processing_code2 pa_budget_versions.plan_processing_code%TYPE;
124 l_request_id pa_budget_versions.request_id%TYPE;
125
126 -- variables for default settings
127 l_plan_pref_code pa_proj_fp_options.fin_plan_preference_code%TYPE;
128 l_cost_amount_set_id pa_fin_plan_amount_sets.fin_plan_amount_set_id%TYPE;
129 l_rev_amount_set_id pa_fin_plan_amount_sets.fin_plan_amount_set_id%TYPE; --for costandrevsep
130 l_all_amount_set_id pa_fin_plan_amount_sets.fin_plan_amount_set_id%TYPE; --for costandrevtog
131 l_version_type pa_budget_versions.version_type%TYPE;
132 l_display_quantity VARCHAR2(1);
133 l_display_rawcost VARCHAR2(1);
134 l_display_burdcost VARCHAR2(1);
135 l_display_revenue VARCHAR2(1);
136 l_display_margin VARCHAR2(1);
137 l_display_marginpct VARCHAR2(1);
138
139 -- uncategorized list info
140 l_uncat_resource_list_id pa_resource_lists.resource_list_id%TYPE;
141 l_uncat_rlm_id pa_resource_assignments.resource_list_member_id%TYPE;
142 l_track_as_labor_flag pa_resources.track_as_labor_flag%TYPE;
143 l_unit_of_measure pa_resource_assignments.unit_of_measure%TYPE;
144
145 BEGIN
146 --hr_utility.trace_on(null, 'dlai');
147 --hr_utility.trace('STARTING');
148 x_return_status := FND_API.G_RET_STS_SUCCESS;
149 -- x_primary_pp_bv_id := p_orgfcst_version_id;
150 pa_fp_view_plans_pub.G_FP_VIEW_VERSION_ID := p_orgfcst_version_id;
151 pa_fp_view_plans_pub.G_AMT_OR_PD := p_amt_or_pd; -- this will be used by other procedures
152
153 -- populate G_UNCAT_RLM_ID: the uncategorized resource list member id
154 pa_fin_plan_utils.Get_Uncat_Resource_List_Info
155 (x_resource_list_id => l_uncat_resource_list_id
156 ,x_resource_list_member_id => l_uncat_rlm_id
157 ,x_track_as_labor_flag => l_track_as_labor_flag
158 ,x_unit_of_measure => l_unit_of_measure
159 ,x_return_status => l_return_status
160 ,x_msg_count => l_msg_count
161 ,x_msg_data => l_msg_data);
162 pa_fp_view_plans_pub.G_UNCAT_RLM_ID := l_uncat_rlm_id;
163 x_uncat_rlmid := l_uncat_rlm_id;
164 --hr_utility.trace('Uncategorized Resource List Member Id is ' || to_char(l_uncat_rlm_id));
165 --hr_utility.trace('Amt/Period toggle is ' || pa_fp_view_plans_pub.G_AMT_OR_PD);
166 select bv.project_id,
167 DECODE(p_view_currency_type,
168 'PROJ', pa.project_currency_code,
169 'PROJFUNC', pa.projfunc_currency_code,
170 'TXN')
171 into l_project_id,
172 l_projfunc_currency_code
173 from pa_budget_versions bv,
174 pa_projects_all pa
175 where bv.budget_version_id = p_orgfcst_version_id and
176 bv.project_id = pa.project_id;
177 select nvl(org_id,-99)
178 into l_org_id
179 from pa_projects_all
180 where project_id = l_project_id;
181 pa_fp_view_plans_pub.G_FP_ORG_ID := l_org_id;
182 x_view_currency_code := l_projfunc_currency_code; -- OUTPUT: x_view_currency_code
183
184 -- bug 3146974 GET AUTO BASELINED FLAG
185 x_auto_baselined_flag :=
186 Pa_Fp_Control_Items_Utils.IsFpAutoBaselineEnabled(l_project_id); -- OUTPUT: x_auto_baselined_flag
187
188 BEGIN
189 select fin_plan_start_date, fin_plan_end_date, fin_plan_type_id
190 -- default_amount_type_code,
191 -- default_amount_subtype_code
192 into ll_plan_start_date,ll_plan_end_date, l_fin_plan_type_id
193 -- l_default_amount_type_code,
194 -- l_default_amount_subtype_code
195 from pa_proj_fp_options
196 where fin_plan_version_id = p_orgfcst_version_id;
197
198 -- PLAN CLASS CODE (for Plan Class Security: FPL)
199 x_plan_class_code := pa_fin_plan_type_global.plantype_to_planclass
200 (l_project_id, l_fin_plan_type_id);
201
202 -- DERIVE MARGIN FROM CODE: get from PLAN TYPE entry
203 select proj_fp_options_id,
204 margin_derived_from_code,
205 report_labor_hrs_from_code
206 into x_plan_fp_options_id, -- OUTPUT: x_plan_fp_options_id
207 l_margin_derived_from_code,
208 l_labor_hours_from_code
209 from pa_proj_fp_options
210 where project_id = l_project_id and
211 fin_plan_type_id = l_fin_plan_type_id and
212 fin_plan_option_level_code='PLAN_TYPE';
213 EXCEPTION
214 WHEN NO_DATA_FOUND THEN
215 --hr_utility.trace('no_data_found 1');
216 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
217 x_msg_count := 1;
218 x_msg_data := SQLERRM;
219 FND_MSG_PUB.add_exc_msg
220 ( p_pkg_name => 'PA_FP_VIEW_PLANS_PUB',
221 p_procedure_name => 'pa_fp_viewplan_hgrid_init:plan start/end dates: 100');
222 END;
223 --hr_utility.trace('stage 100 passed');
224 x_plan_type_id := l_fin_plan_type_id; -- OUTPUT: x_plan_type_id
225 pa_fp_view_plans_pub.G_FP_CALC_MARGIN_FROM := l_margin_derived_from_code;
226 x_calc_margin_from := l_margin_derived_from_code; -- OUTPUT: x_calc_margin_from
227 pa_fp_view_plans_pub.G_FP_CALC_QUANTITY_FROM := l_labor_hours_from_code;
228 x_labor_hrs_from_code := l_labor_hours_from_code; -- OUTPUT: x_labor_hrs_from_code
229
230 -- ===== ASSUMPTIONS ===== --
231 -- 1. p_orgfcst_version_id will ALWAYS be populated (if the user selected version(s),
232 -- then p_orgfcst_version_id will be the id for one of the selected versions)
233 -- 2. If user selected a single version where cost and revenue planned together,
234 -- p_user_cost_version_id and p_user_rev_version_id will have the same id
235 -- ======================= --
236
237 -- USER CUSTOMIZATIONS (ADVANCED DISPLAY OPTIONS PAGE)
238 -- see if we are displaying data from user-selected version
239 if (p_user_cost_version_id is not null) or (p_user_rev_version_id is not null) then
240 l_user_bv_flag := 'Y';
241 else
242 l_user_bv_flag := 'N';
243 end if;
244
245 -- set the display from flags
246 if l_user_bv_flag = 'Y' then
247 pa_fp_view_plans_pub.G_DISPLAY_FLAG_QUANTITY := px_display_quantity;
248 pa_fp_view_plans_pub.G_DISPLAY_FLAG_RAWCOST := px_display_rawcost;
249 pa_fp_view_plans_pub.G_DISPLAY_FLAG_BURDCOST := px_display_burdcost;
250 pa_fp_view_plans_pub.G_DISPLAY_FLAG_REVENUE := px_display_revenue;
251 pa_fp_view_plans_pub.G_DISPLAY_FLAG_MARGIN := px_display_margin;
252 pa_fp_view_plans_pub.G_DISPLAY_FLAG_MARGINPCT := px_display_marginpct;
253 -- x_factor_by_code := null;
254 x_factor_by_code := 1; --doesn't matter: we should've gotten it in the URL
255 else
256 -- retrieve default settings
257 select po.cost_amount_set_id,
258 po.revenue_amount_set_id,
259 po.all_amount_set_id,
260 bv.version_type,
261 -- po.factor_by_code,
262 po.fin_plan_preference_code
263 into l_cost_amount_set_id,
264 l_rev_amount_set_id,
265 l_all_amount_set_id,
266 l_version_type,
267 -- x_factor_by_code,
268 l_plan_pref_code
269 from pa_budget_versions bv,
270 pa_proj_fp_options po
271 where bv.budget_version_id = p_orgfcst_version_id and
272 bv.fin_plan_type_id = po.fin_plan_type_id and
273 po.project_id = l_project_id and
274 po.fin_plan_option_level_code = 'PLAN_TYPE';
275 -- *** retrieve FACTOR_BY_CODE from PROJECT-LEVEL ROW (bug 2638873) ***
276 -- *** 01/30/03: 2778424 - If PROJECT-LEVEL row does not exist, return 1
277 BEGIN
278 select nvl(po.factor_by_code, 1)
279 into x_factor_by_code -- OUTPUT: x_factor_by_code
280 from pa_proj_fp_options po
281 where po.project_id = l_project_id and
282 po.fin_plan_option_level_code = 'PROJECT';
283 EXCEPTION WHEN NO_DATA_FOUND THEN
284 x_factor_by_code := 1;
285 END;
286
287 -- QUERY FLAGS FROM AMOUNT SETS, DEPENDING ON FIN PLAN PREF CODE
288 if l_plan_pref_code = 'COST_ONLY' then
289 select nvl(cost_qty_flag,'N'),
290 nvl(raw_cost_flag, 'N'),
291 nvl(burdened_cost_flag, 'N'),
292 nvl(revenue_flag, 'N'),
293 'N',
294 'N'
295 into l_display_quantity,
296 l_display_rawcost,
297 l_display_burdcost,
298 l_display_revenue,
299 l_display_margin,
300 l_display_marginpct
301 from pa_fin_plan_amount_sets
302 where fin_plan_amount_set_id = l_cost_amount_set_id;
303
304 elsif l_plan_pref_code = 'REVENUE_ONLY' then
305 select nvl(revenue_qty_flag, 'N'),
306 nvl(raw_cost_flag, 'N'),
307 nvl(burdened_cost_flag, 'N'),
308 nvl(revenue_flag, 'N'),
309 'N',
310 'N'
311 into l_display_quantity,
312 l_display_rawcost,
313 l_display_burdcost,
314 l_display_revenue,
315 l_display_margin,
316 l_display_marginpct
317 from pa_fin_plan_amount_sets
318 where fin_plan_amount_set_id = l_rev_amount_set_id;
319
320 elsif l_plan_pref_code = 'COST_AND_REV_SAME' then
321 select nvl(all_qty_flag, 'N'),
322 nvl(raw_cost_flag, 'N'),
323 nvl(burdened_cost_flag, 'N'),
324 nvl(revenue_flag, 'N'),
325 'Y',
326 'Y'
327 into l_display_quantity,
328 l_display_rawcost,
329 l_display_burdcost,
330 l_display_revenue,
331 l_display_margin,
332 l_display_marginpct
333 from pa_fin_plan_amount_sets
334 where fin_plan_amount_set_id = l_all_amount_set_id;
335
336 else
337 select DECODE(cost_as.cost_qty_flag,
338 'Y', 'Y',
339 DECODE(rev_as.revenue_qty_flag,
340 'Y', 'Y',
341 'N')),
342 nvl(cost_as.raw_cost_flag, 'N'),
343 nvl(cost_as.burdened_cost_flag, 'N'),
344 nvl(rev_as.revenue_flag, 'N'),
345 'Y',
346 'Y'
347 into l_display_quantity,
348 l_display_rawcost,
349 l_display_burdcost,
350 l_display_revenue,
351 l_display_margin,
352 l_display_marginpct
353 from pa_fin_plan_amount_sets cost_as,
354 pa_fin_plan_amount_sets rev_as
355 where cost_as.fin_plan_amount_set_id = l_cost_amount_set_id and
356 rev_as.fin_plan_amount_set_id = l_rev_amount_set_id;
357 end if;
358
359 pa_fp_view_plans_pub.G_DISPLAY_FLAG_QUANTITY := l_display_quantity;
360 px_display_quantity := l_display_quantity;
361 pa_fp_view_plans_pub.G_DISPLAY_FLAG_RAWCOST := l_display_rawcost;
362 px_display_rawcost := l_display_rawcost;
363 pa_fp_view_plans_pub.G_DISPLAY_FLAG_BURDCOST := l_display_burdcost;
364 px_display_burdcost := l_display_burdcost;
365 pa_fp_view_plans_pub.G_DISPLAY_FLAG_REVENUE := l_display_revenue;
366 px_display_revenue := l_display_revenue;
367 pa_fp_view_plans_pub.G_DISPLAY_FLAG_MARGIN := l_display_margin;
368 px_display_margin := l_display_margin;
369 pa_fp_view_plans_pub.G_DISPLAY_FLAG_MARGINPCT := l_display_marginpct;
370 px_display_marginpct := l_display_marginpct;
371 end if;
372 --hr_utility.trace('quantityflag= ' || pa_fp_view_plans_pub.G_DISPLAY_FLAG_QUANTITY);
373 --hr_utility.trace('rawcostflag= ' || pa_fp_view_plans_pub.G_DISPLAY_FLAG_RAWCOST);
374 --hr_utility.trace('burdenedcostflag= ' || pa_fp_view_plans_pub.G_DISPLAY_FLAG_BURDCOST);
375 --hr_utility.trace('revenueflag= ' || pa_fp_view_plans_pub.G_DISPLAY_FLAG_REVENUE);
376 --hr_utility.trace('marginflag= ' || pa_fp_view_plans_pub.G_DISPLAY_FLAG_MARGIN);
377 --hr_utility.trace('marginpctflag= ' || pa_fp_view_plans_pub.G_DISPLAY_FLAG_MARGINPCT);
378
379 -- set the DEFAULT AMOUNT TYPE/SUBTYPE CODES, based on order of hierarchy
380 if pa_fp_view_plans_pub.G_DISPLAY_FLAG_QUANTITY = 'Y' then
381 l_default_amount_type_code := 'QUANTITY';
382 l_default_amount_subtype_code := 'QUANTITY';
383 elsif pa_fp_view_plans_pub.G_DISPLAY_FLAG_RAWCOST = 'Y' then
384 l_default_amount_type_code := 'COST';
385 l_default_amount_subtype_code := 'RAW_COST';
386 elsif pa_fp_view_plans_pub.G_DISPLAY_FLAG_BURDCOST = 'Y' then
387 l_default_amount_type_code := 'COST';
388 l_default_amount_subtype_code := 'BURDENED_COST';
389 elsif pa_fp_view_plans_pub.G_DISPLAY_FLAG_REVENUE = 'Y' then
390 l_default_amount_type_code := 'REVENUE';
391 l_default_amount_subtype_code := 'REVENUE';
392 elsif pa_fp_view_plans_pub.G_DISPLAY_FLAG_MARGIN = 'Y' then
393 l_default_amount_type_code := 'MARGIN';
394 l_default_amount_subtype_code := 'MARGIN';
395 else
396 l_default_amount_type_code := 'MARGIN_PERCENT';
397 l_default_amount_subtype_code := 'MARGIN_PERCENT';
398 end if; -- set default amount type codes
399
400 -- set the user-defined budget versions source
401 if l_user_bv_flag = 'Y' then
402 if (p_user_cost_version_id = p_user_rev_version_id) then
403 pa_fp_view_plans_pub.G_FP_ALL_VERSION_ID := p_user_cost_version_id;
404 pa_fp_view_plans_pub.G_FP_COST_VERSION_ID := p_user_cost_version_id;
405 pa_fp_view_plans_pub.G_FP_REV_VERSION_ID := p_user_rev_version_id;
406 else
407 pa_fp_view_plans_pub.G_FP_COST_VERSION_ID := p_user_cost_version_id;
408 pa_fp_view_plans_pub.G_FP_REV_VERSION_ID := p_user_rev_version_id;
409 end if;
410 select approved_rev_plan_type_flag
411 into x_ar_flag -- OUTPUT: x_ar_flag
412 from pa_proj_fp_options
413 where project_id = l_project_id and
414 fin_plan_type_id = l_fin_plan_type_id and
415 fin_plan_option_level_code='PLAN_TYPE';
416
417 else
418 -- retrieve l_cost_or_revenue: applicable only for COST_AND_REV_SEP
419 -- this param is passed to populate_tmp_table
420 -- this param is useful only if the user did not select budget versions
421 select DECODE(version_type,
422 'REVENUE', 'R',
423 'COST', 'C',
424 null),
425 nvl(approved_rev_plan_type_flag, 'N')
426 into l_cost_or_revenue,
427 x_ar_flag -- OUTPUT: x_ar_flag
428 from pa_budget_versions
429 where budget_version_id = p_orgfcst_version_id;
430 end if;
431 -- END OF USER CUSTOMIZATIONS (ADVANCED DISPLAY OPTIONS)
432 pa_fp_view_plans_pub.G_DEFAULT_AMOUNT_TYPE_CODE := l_default_amount_type_code;
433 pa_fp_view_plans_pub.G_DEFAULT_AMT_SUBTYPE_CODE := l_default_amount_subtype_code;
434 x_def_amt_subt_code := l_default_amount_subtype_code; -- OUTPUT: x_def_amt_subt_code
435 pa_fp_view_plans_pub.G_FP_CURRENCY_CODE := l_projfunc_currency_code;
436 pa_fp_view_plans_pub.G_FP_CURRENCY_TYPE := p_view_currency_type;
437 --hr_utility.trace('reached end of user customizations section: 200');
438
439
440 -- SETTING PERIOD INFORMATION --
441 -- ONLY IF IN PERIODIC MODE --
442
443 if p_amt_or_pd = 'P' then
444 BEGIN
445 select pp.plan_period_type,
446 pp.period1_start_date,
447 pp.period_profile_id
448 into ll_plan_period_type,
449 pp_plan_start_date,
450 l_period_profile_id
451 from pa_proj_period_profiles pp,
452 pa_budget_versions pbv
453 where pbv.budget_version_id = p_orgfcst_version_id
454 and pbv.period_profile_id = pp.period_profile_id;
455 EXCEPTION
456 WHEN NO_DATA_FOUND THEN
457 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
458 x_msg_count := 1;
459 x_msg_data := SQLERRM;
460 FND_MSG_PUB.add_exc_msg
461 ( p_pkg_name => 'PA_FP_VIEW_PLANS_PUB',
462 p_procedure_name => 'pa_fp_viewplan_hgrid_init:plan period type: 300');
463 END;
464 --hr_utility.trace('after selecting from pa_proj_period_profiles: 300 succeeded');
465
466 -- get period info based on period_profile_id
467 Pa_Prj_Period_Profile_Utils.Get_Prj_Period_Profile_Dtls(
468 p_period_profile_id => l_period_profile_id,
469 p_debug_mode => 'Y',
470 p_add_msg_in_stack => 'Y',
471 x_period_profile_type => l_period_profile_type,
472 x_plan_period_type => l_plan_period_type,
473 x_period_set_name => l_period_set_name,
474 x_gl_period_type => l_gl_period_type,
475 x_plan_start_date => l_plan_start_date,
476 x_plan_end_date => l_plan_end_date,
477 x_number_of_periods => l_number_of_periods,
478 x_return_status => l_return_status,
479 x_msg_data => l_msg_data);
480 -- get current period info
481 --hr_utility.trace('executed get_prj_Period_profile_dtls');
482 --hr_utility.trace('l_period_profile_type= ' || l_period_profile_type);
483 --hr_utility.trace('l_plan_period_type= ' || l_plan_period_type);
484 Pa_Prj_Period_Profile_Utils.Get_Curr_Period_Profile_Info(
485 p_project_id => l_project_id
486 ,p_period_type => l_plan_period_type
487 ,p_period_profile_type => 'FINANCIAL_PLANNING'
488 ,x_period_profile_id => l_cur_period_profile_id
489 ,x_start_period => l_cur_start_period
490 ,x_end_period => l_cur_end_period
491 ,x_return_status => l_return_status
492 ,x_msg_count => l_msg_count
493 ,x_msg_data => l_msg_data);
494 --hr_utility.trace('executed get_curr_period_profile_info');
495 --hr_utility.trace('l_plan_period_type= ' || l_plan_period_type);
496 --hr_utility.trace('l_cur_period_profile_id= ' || l_cur_period_profile_id);
497 --hr_utility.trace('l_cur_start_period= ' || l_cur_start_period);
498 --hr_utility.trace('l_cur_end_period= ' || l_cur_end_period);
499
500 if l_period_profile_id = l_cur_period_profile_id then
501 x_old_pd_profile_flag := 'N'; -- OUTPUT: x_old_pd_profile_flag
502 else
503 x_old_pd_profile_flag := 'Y';
504 end if;
505
506 -- if ll_plan_start_date is null or ll_plan_end_date is null then
507 ll_plan_start_date := l_plan_start_date;
508 ll_plan_end_date := l_plan_end_date;
509 -- end if;
510
511 pa_fp_view_plans_pub.G_FP_PLAN_START_DATE := ll_plan_start_date;
512 pa_fp_view_plans_pub.G_FP_PLAN_END_DATE := ll_plan_end_date;
513 pa_fp_view_plans_pub.G_FP_PERIOD_TYPE := ll_plan_period_type;
514 x_plan_period_type := ll_plan_period_type; -- OUTPUT: x_plan_period_type
515 if ll_plan_period_type = 'GL' THEN
516 l_num_of_periods := 6;
517 else
518 l_num_of_periods := 13;
519 end if;
520
521 -- get current period profile info
522 Pa_Prj_Period_Profile_Utils.get_current_period_info
523 (p_period_profile_id => l_period_profile_id,
524 x_cur_period_number => l_cur_period_number,
525 x_cur_period_name => l_cur_period_name,
526 x_cur_period_start_date => l_cur_period_start_date,
527 x_cur_period_end_date => l_cur_period_end_date,
528 x_return_status => l_return_status,
529 x_msg_count => l_msg_count,
530 x_msg_data => l_msg_data);
531 if l_cur_period_number = -2 then
532 x_in_period_profile := 'B'; -- for 'before period profile'
533 elsif l_cur_period_number = -1 then
534 x_in_period_profile := 'A'; -- for 'after period profile'
535 else
536 x_in_period_profile := 'C';
537 end if;
538
539
540 if p_period_start_date = 'N' Then
541 l_start_date := to_char(ll_plan_start_date);
542 -- 11/7/2002: IF no value retrieved from fin_plan_start_date, then use the first start
543 -- date according to the period profile id
544 if l_start_date is null then
545 l_start_date := to_char(pp_plan_start_date);
546 end if;
547 elsif p_period_start_date = 'L' Then
548 pa_fp_view_plans_pub.G_FP_VIEW_START_DATE1:=ll_plan_end_date;
549 pa_fp_view_plans_pub.pa_fp_set_periods_nav (
550 p_direction => 'BACKWARD',
551 p_num_of_periods => l_num_of_periods,
552 p_period_type => ll_plan_period_type,
553 x_start_date => l_start_date,
554 x_return_status => l_return_status,
555 x_msg_count => l_msg_count,
556 x_msg_data => l_msg_data);
557 elsif p_period_start_date = 'C' then
558 -- if sysdate falls before first period start date, start from beginning
559 if l_cur_period_number = -2 then
560 l_start_date := to_char(ll_plan_start_date);
561 if l_start_date is null then
562 l_start_date := to_char(pp_plan_start_date);
563 end if;
564 -- if sysdate falls after last period end date, display the ending periods
565 elsif l_cur_period_number = -1 then
566 pa_fp_view_plans_pub.G_FP_VIEW_START_DATE1:=ll_plan_end_date;
567 pa_fp_view_plans_pub.pa_fp_set_periods_nav (
568 p_direction => 'BACKWARD',
569 p_num_of_periods => l_num_of_periods,
570 p_period_type => ll_plan_period_type,
571 x_start_date => l_start_date,
572 x_return_status => l_return_status,
573 x_msg_count => l_msg_count,
574 x_msg_data => l_msg_data);
575
576 else
577 l_start_date := to_char(l_cur_period_start_date);
578 end if;
579
580 else
581 l_start_date := p_period_start_date;
582 end if;
583
584 pa_fp_view_plans_pub.pa_fp_set_periods
585 ( p_period_start_date => l_start_date,
586 p_period_type => ll_plan_period_type,
587 x_return_status => l_return_status,
588 x_msg_count => l_msg_count,
589 x_msg_data => l_msg_data);
590
591 --hr_utility.trace('END OF SETTING PERIOD INFORMATION: 400');
592
593 end if; -- check p_amt_or_pd flag
594 -- END OF SETTING PERIOD INFORMATION --
595
596
597 -- POPULATE THE GLOBAL TEMPORARY TABLE --
598 -- we expect the following to be done after this procedure:
599 -- 1. global variables should be set:
600 -- G_DISPLAY_FROM
601 -- G_FP_COST_VERSION_ID (may be set already, if user-entered)
602 -- G_FP_COST_VERSION_NUMBER
603 -- G_FP_COST_VERSION_NAME
604 -- G_FP_REV_VERSION_ID (may be set already, if user-entered)
605 -- G_FP_REV_VERSION_NAME
606 -- G_FP_REV_VERSION_NUMBER
607 -- G_FP_ALL_VERSION_ID (may be set already, if user-entered)
608 -- G_FP_ALL_VERSION_NAME
609 -- G_FP_ALL_VERSION_NUMBER
610 --hr_utility.trace('calling view_plan_temp_tables');
611 -- delete residual data in the temp tables
612 DELETE from PA_FIN_VP_AMTS_VIEW_TMP;
613 DELETE from PA_FIN_VP_PDS_VIEW_TMP;
614 pa_fp_view_plans_pub.view_plan_temp_tables
615 (p_project_id => l_project_id,
616 p_budget_version_id => p_orgfcst_version_id,
617 p_cost_or_revenue => l_cost_or_revenue,
618 p_user_bv_flag => l_user_bv_flag,
619 x_cost_version_number => l_cost_version_number,
620 x_rev_version_number => l_rev_version_number,
621 x_cost_version_name => l_cost_version_name,
622 x_rev_version_name => l_rev_version_name,
623 x_diff_pd_profile_flag => l_diff_pd_profile_flag,
624 x_return_status => l_return_status,
625 x_msg_count => l_msg_count,
626 x_msg_data => l_msg_data );
627 -- if view_plan_temp_tables fails, error out right away
628 if l_return_status <> FND_API.G_RET_STS_SUCCESS then
629 x_return_status := FND_API.G_RET_STS_ERROR;
630 x_msg_count := FND_MSG_PUB.Count_Msg;
631 if x_msg_count = 1 then
632 PA_INTERFACE_UTILS_PUB.get_messages
633 (p_encoded => FND_API.G_TRUE,
634 p_msg_index => 1,
635 p_data => x_msg_data,
636 p_msg_index_out => l_msg_index_out);
637 end if;
638 return;
639 end if;
640
641 --hr_utility.trace('after calling view_plan_temp_tables: 500');
642 -- END OF POPULATING GLOBAL TEMPORARY TABLE --
643
644 x_display_from := pa_fp_view_plans_pub.G_DISPLAY_FROM; -- OUTPUT: x_display_from
645 x_diff_pd_profile_flag := l_diff_pd_profile_flag; -- OUTPUT: x_diff_pd_profile_flag
646 -- NEED THIS IN CASE NOT USER-SPECIFIED
647 if pa_fp_view_plans_pub.G_FP_ALL_VERSION_ID is not null then
648 if pa_fp_view_plans_pub.G_FP_COST_VERSION_ID is null then
649 pa_fp_view_plans_pub.G_FP_COST_VERSION_ID := pa_fp_view_plans_pub.G_FP_ALL_VERSION_ID;
650 end if;
651 if pa_fp_view_plans_pub.G_FP_REV_VERSION_ID is null then
652 pa_fp_view_plans_pub.G_FP_REV_VERSION_ID := pa_fp_view_plans_pub.G_FP_ALL_VERSION_ID;
653 end if;
654 end if;
655
656 -- figure out x_time_phase_code: to decide whether or not to display the amt/pd toggle
657 -- also, set x_refresh_pd_flag and x_refresh_req_id
658 -- also set preceding/succeeding periods flags
659 if pa_fp_view_plans_pub.G_DISPLAY_FROM = 'ANY' then
660 select nvl(all_time_phased_code, 'N')
661 into x_time_phase_code -- OUTPUT: x_time_phase_code
662 from pa_proj_fp_options
663 where fin_plan_version_id = pa_fp_view_plans_pub.G_FP_ALL_VERSION_ID;
664 x_prec_pds_flag := Pa_Prj_Period_Profile_Utils.has_preceding_periods
665 (pa_fp_view_plans_pub.G_FP_ALL_VERSION_ID);
666 x_succ_pds_flag := Pa_Prj_Period_Profile_Utils.has_succeeding_periods
667 (pa_fp_view_plans_pub.G_FP_ALL_VERSION_ID);
668 select plan_processing_code,
669 request_id
670 into l_plan_processing_code,
671 l_request_id
672 from pa_budget_versions
673 where budget_version_id = pa_fp_view_plans_pub.G_FP_ALL_VERSION_ID;
674 if l_plan_processing_code = 'PPP' then
675 x_refresh_pd_flag := 'Y'; -- OUTPUT: x_refresh_pd_flag
676 x_refresh_req_id := l_request_id; -- OUTPUT: x_refresh_req_id
677 else
678 x_refresh_pd_flag := 'N'; -- OUTPUT: x_refresh_pd_flag
679 x_refresh_req_id := -1; -- OUTPUT: x_refresh_req_id
680 end if;
681 elsif pa_fp_view_plans_pub.G_DISPLAY_FROM = 'COST' then
682 select nvl(cost_time_phased_code, 'N')
683 into x_time_phase_code -- OUTPUT: x_time_phase_code
684 from pa_proj_fp_options
685 where fin_plan_version_id = pa_fp_view_plans_pub.G_FP_COST_VERSION_ID;
686 x_prec_pds_flag := Pa_Prj_Period_Profile_Utils.has_preceding_periods
687 (pa_fp_view_plans_pub.G_FP_COST_VERSION_ID);
688 x_succ_pds_flag := Pa_Prj_Period_Profile_Utils.has_succeeding_periods
689 (pa_fp_view_plans_pub.G_FP_COST_VERSION_ID);
690 select plan_processing_code,
691 request_id
692 into l_plan_processing_code,
693 l_request_id
694 from pa_budget_versions
695 where budget_version_id = pa_fp_view_plans_pub.G_FP_COST_VERSION_ID;
696 if l_plan_processing_code = 'PPP' then
697 x_refresh_pd_flag := 'Y'; -- OUTPUT: x_refresh_pd_flag
698 x_refresh_req_id := l_request_id; -- OUTPUT: x_refresh_req_id
699 else
700 x_refresh_pd_flag := 'N'; -- OUTPUT: x_refresh_pd_flag
701 x_refresh_req_id := -1; -- OUTPUT: x_refresh_req_id
702 end if;
703 elsif pa_fp_view_plans_pub.G_DISPLAY_FROM = 'REVENUE' then
704 select nvl(revenue_time_phased_code, 'N')
705 into x_time_phase_code -- OUTPUT: x_time_phase_code
706 from pa_proj_fp_options
707 where fin_plan_version_id = pa_fp_view_plans_pub.G_FP_REV_VERSION_ID;
708 x_prec_pds_flag := Pa_Prj_Period_Profile_Utils.has_preceding_periods
709 (pa_fp_view_plans_pub.G_FP_REV_VERSION_ID);
710 x_succ_pds_flag := Pa_Prj_Period_Profile_Utils.has_succeeding_periods
711 (pa_fp_view_plans_pub.G_FP_REV_VERSION_ID);
712 select plan_processing_code,
713 request_id
714 into l_plan_processing_code,
715 l_request_id
716 from pa_budget_versions
717 where budget_version_id = pa_fp_view_plans_pub.G_FP_REV_VERSION_ID;
718 if l_plan_processing_code = 'PPP' then
719 x_refresh_pd_flag := 'Y'; -- OUTPUT: x_refresh_pd_flag
720 x_refresh_req_id := l_request_id; -- OUTPUT: x_refresh_req_id
721 else
722 x_refresh_pd_flag := 'N'; -- OUTPUT: x_refresh_pd_flag
723 x_refresh_req_id := -1; -- OUTPUT: x_refresh_req_id
724 end if;
725 else
726 select nvl(cost_time_phased_code, 'N')
727 into l_cost_time_phase_code
728 from pa_proj_fp_options
729 where fin_plan_version_id = pa_fp_view_plans_pub.G_FP_COST_VERSION_ID;
730 select nvl(revenue_time_phased_code, 'N')
731 into l_rev_time_phase_code
732 from pa_proj_fp_options
733 where fin_plan_version_id = pa_fp_view_plans_pub.G_FP_REV_VERSION_ID;
734 -- if cost and rev versions have different time phase codes, there is no way to
735 -- merge them in periodic view
736 if l_cost_time_phase_code <> l_rev_time_phase_code then
737 x_time_phase_code := 'N'; -- OUTPUT: x_time_phase_code
738 else
739 x_time_phase_code := l_cost_time_phase_code; -- OUTPUT: x_time_phase_code
740 end if;
741
742 /*
743 -- **** if have TWO versions, may need to set x_primary_pp_bv_id ****
744 -- if p_orgfcst_version_id does not have a period_profile_id
745 if (x_time_phase_code <> 'N') and
746 (pa_fp_view_plans_util.has_period_profile_id(p_orgfcst_version_id) = 'N') then
747 if pa_fp_view_plans_util.has_period_profile_id(pa_fp_view_plans_pub.G_FP_COST_VERSION_ID) = 'Y' then
748 x_primary_pp_bv_id := pa_fp_view_plans_pub.G_FP_COST_VERSION_ID;
749 elsif pa_fp_view_plans_util.has_period_profile_id(pa_fp_view_plans_pub.G_FP_REV_VERSION_ID) = 'Y' then
750 x_primary_pp_bv_id := pa_fp_view_plans_pub.G_FP_REV_VERSION_ID;
751 end if;
752 end if;
753 */
754 if Pa_Prj_Period_Profile_Utils.has_preceding_periods
755 (pa_fp_view_plans_pub.G_FP_COST_VERSION_ID) = 'Y' or
756 Pa_Prj_Period_Profile_Utils.has_preceding_periods
757 (pa_fp_view_plans_pub.G_FP_REV_VERSION_ID) = 'Y' then
758 x_prec_pds_flag := 'Y';
759 else
760 x_prec_pds_flag := 'N';
761 end if;
762 if Pa_Prj_Period_Profile_Utils.has_succeeding_periods
763 (pa_fp_view_plans_pub.G_FP_COST_VERSION_ID) = 'Y' or
764 Pa_Prj_Period_Profile_Utils.has_succeeding_periods
765 (pa_fp_view_plans_pub.G_FP_REV_VERSION_ID) = 'Y' then
766 x_succ_pds_flag := 'Y';
767 else
768 x_succ_pds_flag := 'N';
769 end if;
770 x_refresh_req_id := -1;
771 select plan_processing_code,
772 request_id
773 into l_plan_processing_code,
774 l_request_id
775 from pa_budget_versions
776 where budget_version_id = pa_fp_view_plans_pub.G_FP_COST_VERSION_ID;
777 if l_request_id is not null then
778 x_refresh_req_id := l_request_id;
779 end if;
780 select plan_processing_code,
781 request_id
782 into l_plan_processing_code2,
783 l_request_id
784 from pa_budget_versions
785 where budget_version_id = pa_fp_view_plans_pub.G_FP_REV_VERSION_ID;
786 if l_request_id is not null then
787 x_refresh_req_id := l_request_id;
788 end if;
789 if (l_plan_processing_code = 'PPP') or (l_plan_processing_code2 = 'PPP') then
790 x_refresh_pd_flag := 'Y';
791 else
792 x_refresh_pd_flag := 'N';
793 end if;
794 end if;
795 -- PRECEDING/SUCCEEDING PERIODS:
796 -- if we are not displaying the first period in profile, hide preceding periods
797 -- if we are not displaying the last period in profile, hide succeeding periods
798 if p_amt_or_pd = 'P' then
799 if pa_fp_view_plans_pub.G_FP_VIEW_START_DATE1 <> pa_fp_view_plans_pub.G_FP_PLAN_START_DATE then
800 x_prec_pds_flag := 'N';
801 end if;
802 if pa_fp_view_plans_pub.G_FP_PERIOD_TYPE = 'GL' then
803 if pa_fp_view_plans_pub.G_FP_VIEW_END_DATE6 < pa_fp_view_plans_pub.G_FP_PLAN_END_DATE then
804 x_succ_pds_flag := 'N';
805 end if;
806 else
807 if pa_fp_view_plans_pub.G_FP_VIEW_END_DATE13 < pa_fp_view_plans_pub.G_FP_PLAN_END_DATE then
808 x_succ_pds_flag := 'N';
809 end if;
810 end if;
811 end if;
812 -- -----> BEGIN bug fix 2821568 <-----
813 pa_fp_view_plans_pub.G_DISPLAY_FLAG_PREC := x_prec_pds_flag;
814 pa_fp_view_plans_pub.G_DISPLAY_FLAG_SUCC := x_succ_pds_flag;
815 -- -----> END bug fix 2821568 <-----
816
817 -- ----> BEGIN bug fix 2812381 <----
818 if pa_fp_view_plans_pub.G_DISPLAY_FROM = 'ANY' then
819 x_cost_bv_id := pa_fp_view_plans_pub.G_FP_ALL_VERSION_ID;
820 x_revenue_bv_id := pa_fp_view_plans_pub.G_FP_ALL_VERSION_ID;
821 elsif pa_fp_view_plans_pub.G_DISPLAY_FROM = 'COST' then
822 x_cost_bv_id := pa_fp_view_plans_pub.G_FP_COST_VERSION_ID;
823 x_revenue_bv_id := -1;
824 elsif pa_fp_view_plans_pub.G_DISPLAY_FROM = 'REVENUE' then
825 x_cost_bv_id := -1;
826 x_revenue_bv_id := pa_fp_view_plans_pub.G_FP_REV_VERSION_ID;
827 else
828 x_cost_bv_id := pa_fp_view_plans_pub.G_FP_COST_VERSION_ID;
829 x_revenue_bv_id := pa_fp_view_plans_pub.G_FP_REV_VERSION_ID;
830 end if;
831 /*
832 x_cost_bv_id := pa_fp_view_plans_pub.G_FP_COST_VERSION_ID;
833 if x_cost_bv_id is null then
834 if pa_fp_view_plans_pub.G_FP_ALL_VERSION_ID is null then
835 x_cost_bv_id := -1;
836 else
837 x_cost_bv_id := pa_fp_view_plans_pub.G_FP_ALL_VERSION_ID;
838 end if;
839 end if;
840 x_revenue_bv_id := pa_fp_view_plans_pub.G_FP_REV_VERSION_ID;
841 if x_revenue_bv_id is null then
842 if pa_fp_view_plans_pub.G_FP_ALL_VERSION_ID is null then
843 x_revenue_bv_id := -1;
844 else
845 x_revenue_bv_id := pa_fp_view_plans_pub.G_FP_ALL_VERSION_ID;
846 end if;
847 end if;
848 */
849 -- ----> END bug fix 2812381 <----
850
851 -- figure out LOCKED BY after version sources set; also get RECORD VERSION NUMBERS
852 -- COST VERSION
853 if (pa_fp_view_plans_pub.G_FP_COST_VERSION_ID is not null) and
854 (pa_fp_view_plans_pub.G_DISPLAY_FROM in ('COST', 'BOTH', 'ANY')) then
855 --hr_utility.trace('figuring out cost LOCKED BY');
856 select record_version_number, -- OUTPUT: x_cost_rv_number
857 budget_status_code -- OUTPUT: x_cost_budget_status_code
858 into x_cost_rv_number,
859 x_cost_budget_status_code
860 from pa_budget_versions
861 --4/16/03 where budget_version_id = pa_fp_view_plans_pub.G_FP_COST_VERSION_ID;
862 where budget_version_id = x_cost_bv_id;
863 pa_fin_plan_utils.Check_Locked_By_User
864 (p_user_id => p_user_id,
865 --4/16/03 p_budget_version_id => pa_fp_view_plans_pub.G_FP_COST_VERSION_ID,
866 p_budget_version_id => x_cost_bv_id,
867 x_is_locked_by_userid => l_is_cost_locked_by_user,
868 x_locked_by_person_id => l_cost_locked_by_person_id,
869 x_return_status => l_return_status,
870 x_msg_count => l_msg_count,
871 x_msg_data => l_msg_data);
872 if l_is_cost_locked_by_user = 'N' then
873 if l_cost_locked_by_person_id is null then
874 x_cost_locked_name := 'NONE';
875 else
876 x_cost_locked_name := pa_fin_plan_utils.get_person_name(l_cost_locked_by_person_id);
877 end if;
878 else
879 x_cost_locked_name := 'SELF';
880 end if; -- is_cost_locked_by_user
881 end if; -- END:COST VERSION
882
883 -- REVENUE VERSION
884 if (pa_fp_view_plans_pub.G_FP_REV_VERSION_ID is not null) and
885 (pa_fp_view_plans_pub.G_DISPLAY_FROM in ('REVENUE', 'BOTH', 'ANY')) then
886 --hr_utility.trace('figuring out revenue LOCKED BY');
887 select record_version_number, -- OUTPUT: x_rev_rv_number
888 budget_status_code -- OUTPUT: x_rev_budget_status_code
889 into x_rev_rv_number,
890 x_rev_budget_status_code
891 from pa_budget_versions
892 -- where budget_version_id = pa_fp_view_plans_pub.G_FP_REV_VERSION_ID;
893 where budget_version_id = x_revenue_bv_id;
894 pa_fin_plan_utils.Check_Locked_By_User
895 (p_user_id => p_user_id,
896 -- p_budget_version_id => pa_fp_view_plans_pub.G_FP_REV_VERSION_ID,
897 p_budget_version_id => x_revenue_bv_id,
898 x_is_locked_by_userid => l_is_rev_locked_by_user,
899 x_locked_by_person_id => l_rev_locked_by_person_id,
900 x_return_status => l_return_status,
901 x_msg_count => l_msg_count,
902 x_msg_data => l_msg_data);
903 if l_is_rev_locked_by_user = 'N' then
904 if l_rev_locked_by_person_id is null then
905 x_rev_locked_name := 'NONE';
906 else
907 x_rev_locked_name := pa_fin_plan_utils.get_person_name(l_rev_locked_by_person_id);
908 end if;
909 else
910 x_rev_locked_name := 'SELF';
911 end if; -- is_rev_locked_by_user
912 end if; -- END:REVENUE VERSION
913
914
915 --hr_utility.trace('after calling locked version stuff');
916 --hr_utility.trace('G_FP_PERIOD_TYPE = ' || pa_fp_view_plans_pub.G_FP_PERIOD_TYPE);
917 --hr_utility.trace('G_FP_VIEW_START_DATE1 = ' || to_char(pa_fp_view_plans_pub.G_FP_VIEW_START_DATE1));
918 --hr_utility.trace('G_FP_VIEW_START_DATE2 = ' || to_char(pa_fp_view_plans_pub.G_FP_VIEW_START_DATE2));
919 --hr_utility.trace('G_FP_VIEW_START_DATE3 = ' || to_char(pa_fp_view_plans_pub.G_FP_VIEW_START_DATE3));
920 --hr_utility.trace('G_FP_VIEW_START_DATE4 = ' || to_char(pa_fp_view_plans_pub.G_FP_VIEW_START_DATE4));
921 --hr_utility.trace('G_FP_VIEW_START_DATE5 = ' || to_char(pa_fp_view_plans_pub.G_FP_VIEW_START_DATE5));
922 --hr_utility.trace('G_FP_VIEW_START_DATE6 = ' || to_char(pa_fp_view_plans_pub.G_FP_VIEW_START_DATE6));
923 --hr_utility.trace('x_cost_rv_number= ' || TO_CHAR(x_cost_rv_number));
924 --hr_utility.trace('x_rev_rv_number= ' || TO_CHAR(x_rev_rv_number));
925
926 EXCEPTION
927 WHEN OTHERS THEN
928 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
929 x_msg_count := 1;
930 x_msg_data := SQLERRM;
931 FND_MSG_PUB.add_exc_msg
932 ( p_pkg_name => 'PA_FP_VIEW_PLANS_PUB',
933 p_procedure_name => 'pa_fp_viewplan_hgrid_init');
934
935 END pa_fp_viewplan_hgrid_init;
936 /* ------------------------------------------------------------------------- */
937
938 PROCEDURE pa_fp_viewplan_hgrid_init_ci
939 (p_project_id IN pa_budget_versions.project_id%TYPE,
940 p_ci_id IN pa_budget_versions.ci_id%TYPE,
941 p_user_id IN NUMBER,
942 p_period_start_date IN VARCHAR2,
943 p_user_cost_version_id IN pa_budget_versions.budget_version_id%TYPE,
944 p_user_rev_version_id IN pa_budget_versions.budget_version_id%TYPE,
945 p_display_quantity IN VARCHAR2,
946 p_display_rawcost IN VARCHAR2,
947 p_display_burdcost IN VARCHAR2,
948 p_display_revenue IN VARCHAR2,
949 p_display_margin IN VARCHAR2,
950 p_display_marginpct IN VARCHAR2,
951 p_view_currency_type IN VARCHAR2,
952 p_amt_or_pd IN VARCHAR2,
953 x_view_currency_code OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
954 x_display_from OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
955 x_cost_locked_name OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
956 x_rev_locked_name OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
957 x_plan_period_type OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
958 x_labor_hrs_from_code OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
959 x_budget_status_code OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
960 x_calc_margin_from OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
961 x_cost_bv_id OUT NOCOPY pa_budget_versions.budget_version_id%TYPE, --File.Sql.39 bug 4440895
962 x_revenue_bv_id OUT NOCOPY pa_budget_versions.budget_version_id%TYPE, --File.Sql.39 bug 4440895
963 x_plan_type_id OUT NOCOPY pa_budget_versions.fin_plan_type_id%TYPE, --File.Sql.39 bug 4440895
964 x_plan_fp_options_id OUT NOCOPY pa_proj_fp_options.proj_fp_options_id%TYPE, --File.Sql.39 bug 4440895
965 x_ar_flag OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
966 x_factor_by_code OUT NOCOPY NUMBER, --File.Sql.39 bug 4440895
967 x_diff_pd_profile_flag OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
968 x_old_pd_profile_flag OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
969 x_refresh_pd_flag OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
970 x_cost_rv_number OUT NOCOPY NUMBER, --File.Sql.39 bug 4440895
971 x_rev_rv_number OUT NOCOPY NUMBER, --File.Sql.39 bug 4440895
972 x_time_phase_code OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
973 x_auto_baselined_flag OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
974 x_return_status OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
975 x_msg_count OUT NOCOPY NUMBER, --File.Sql.39 bug 4440895
976 x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
977 ) is
978
979 l_projfunc_currency_code PA_PROJECTS_ALL.PROJFUNC_CURRENCY_CODE%TYPE;
980 l_default_amount_type_code VARCHAR2(30);
981 l_default_amount_subtype_code VARCHAR2(30);
982 l_start_date DATE;
983 ll_plan_start_date DATE;
984 pp_plan_start_date DATE; -- start_date according to period profile id
985 ll_plan_end_date DATE;
986 ll_plan_period_type VARCHAR2(30);
987 l_diff_pd_profile_flag VARCHAR2(1);
988
989 -- error-handling variables
990 l_return_status VARCHAR2(2);
991 l_msg_count NUMBER;
992 l_msg_data VARCHAR2(80);
993 l_msg_index_out NUMBER;
994
995 l_num_of_periods NUMBER;
996 l_project_id NUMBER;
997 l_org_id NUMBER;
998 l_cost_or_revenue VARCHAR2(1);
999 l_cost_version_number pa_budget_versions.version_number%TYPE;
1000 l_rev_version_number pa_budget_versions.version_number%TYPE;
1001 l_cost_version_name pa_budget_versions.version_name%TYPE;
1002 l_rev_version_name pa_budget_versions.version_name%TYPE;
1003 l_fin_plan_type_id pa_budget_versions.fin_plan_type_id%TYPE;
1004 l_margin_derived_from_code pa_proj_fp_options.margin_derived_from_code%TYPE;
1005 l_labor_hours_from_code pa_proj_fp_options.report_labor_hrs_from_code%TYPE;
1006 l_cost_time_phase_code pa_proj_fp_options.all_time_phased_code%TYPE;
1007 l_rev_time_phase_code pa_proj_fp_options.all_time_phased_code%TYPE;
1008
1009 l_user_bv_flag VARCHAR2(1);
1010 l_is_cost_locked_by_user VARCHAR2(1);
1011 l_cost_locked_by_person_id NUMBER;
1012 l_is_rev_locked_by_user VARCHAR2(1);
1013 l_rev_locked_by_person_id NUMBER;
1014
1015 -- local variables for calling Pa_Prj_Period_Profile_Utils.Get_Prj_Period_Profile_Dtls
1016 l_period_profile_id NUMBER;
1017 l_period_profile_type VARCHAR2(80);
1018 l_plan_period_type VARCHAR2(80);
1019 l_period_set_name VARCHAR2(80);
1020 l_gl_period_type VARCHAR2(30);
1021 l_plan_start_date DATE;
1022 l_plan_end_date DATE;
1023 l_number_of_periods NUMBER;
1024
1025 -- local variables for calling Pa_Prj_Period_Profile_Utils.Get_Curr_Period_Profile_Info
1026 l_cur_period_profile_id pa_proj_period_profiles.period_profile_id%TYPE;
1027 l_cur_start_period VARCHAR2(30);
1028 l_cur_end_period VARCHAR2(30);
1029
1030 -- variables for default settings
1031 l_amount_set_id pa_fin_plan_amount_sets.fin_plan_amount_set_id%TYPE;
1032 l_version_type pa_budget_versions.version_type%TYPE;
1033 l_display_quantity VARCHAR2(1);
1034 l_display_rawcost VARCHAR2(1);
1035 l_display_burdcost VARCHAR2(1);
1036 l_display_revenue VARCHAR2(1);
1037 l_display_margin VARCHAR2(1);
1038 l_display_marginpct VARCHAR2(1);
1039
1040 l_proj_fp_options_id pa_proj_fp_options.proj_fp_options_id%TYPE;
1041 l_working_or_baselined VARCHAR2(30);
1042 l_ar_flag pa_budget_versions.approved_rev_plan_type_flag%TYPE;
1043 l_ac_flag pa_budget_versions.approved_cost_plan_type_flag%TYPE;
1044
1045 cursor ci_csr is
1046 select bv.budget_version_id,
1047 po.proj_fp_options_id,
1048 NVL(po.plan_in_multi_curr_flag, 'N') as plan_in_multi_curr_flag
1049 from pa_budget_versions bv,
1050 pa_proj_fp_options po
1051 where bv.project_id = p_project_id and
1052 bv.ci_id = p_ci_id and
1053 bv.budget_version_id = po.fin_plan_version_id and
1054 po.fin_plan_option_level_code='PLAN_VERSION';
1055 ci_rec ci_csr%ROWTYPE;
1056
1057 l_fp_preference_code pa_proj_fp_options.fin_plan_preference_code%TYPE;
1058 l_report_labor_hrs_from_code pa_proj_fp_options.report_labor_hrs_from_code%TYPE;
1059 l_multi_curr_flag pa_proj_fp_options.plan_in_multi_curr_flag%TYPE;
1060 l_margin_derived_code pa_proj_fp_options.margin_derived_from_code%TYPE;
1061 l_grouping_type VARCHAR2(30);
1062 l_compl_grouping_type VARCHAR2(30);
1063 l_cost_planning_level pa_proj_fp_options.all_fin_plan_level_code%TYPE;
1064 l_rev_planning_level pa_proj_fp_options.all_fin_plan_level_code%TYPE;
1065 l_resource_list_id pa_budget_versions.resource_list_id%TYPE;
1066 l_compl_resource_list_id pa_budget_versions.resource_list_id%TYPE;
1067 l_rv_number pa_budget_versions.record_version_number%TYPE;
1068 l_compl_rv_number pa_budget_versions.record_version_number%TYPE;
1069 l_uncategorized_flag pa_resource_lists.uncategorized_flag%TYPE;
1070 l_compl_uncategorized_flag pa_resource_lists.uncategorized_flag%TYPE;
1071
1072 l_is_cost_locked_by_user VARCHAR2(1);
1073 l_is_rev_locked_by_user VARCHAR2(1);
1074 l_cost_locked_by_person_id NUMBER;
1075 l_rev_locked_by_person_id NUMBER;
1076
1077 l_ci_row_index NUMBER := 0;
1078 l_ci_budget_version_id pa_budget_versions.budget_version_id%TYPE;
1079
1080 -- uncategorized list info
1081 l_uncat_resource_list_id pa_resource_lists.resource_list_id%TYPE;
1082 l_uncat_rlm_id pa_resource_assignments.resource_list_member_id%TYPE;
1083 l_track_as_labor_flag pa_resources.track_as_labor_flag%TYPE;
1084 l_unit_of_measure pa_resource_assignments.unit_of_measure%TYPE;
1085
1086 BEGIN
1087 x_msg_count := 0;
1088 x_return_status := FND_API.G_RET_STS_SUCCESS;
1089
1090 -- GET AUTO BASELINED FLAG
1091 x_auto_baselined_flag :=
1092 Pa_Fp_Control_Items_Utils.IsFpAutoBaselineEnabled(p_project_id);
1093
1094 -- populate G_UNCAT_RLM_ID: the uncategorized resource list member id
1095 pa_fin_plan_utils.Get_Uncat_Resource_List_Info
1096 (x_resource_list_id => l_uncat_resource_list_id
1097 ,x_resource_list_member_id => l_uncat_rlm_id
1098 ,x_track_as_labor_flag => l_track_as_labor_flag
1099 ,x_unit_of_measure => l_unit_of_measure
1100 ,x_return_status => l_return_status
1101 ,x_msg_count => l_msg_count
1102 ,x_msg_data => l_msg_data);
1103 pa_fp_view_plans_pub.G_UNCAT_RLM_ID := l_uncat_rlm_id;
1104
1105 -- FIRST, deal with all the initialization that we did in the non-Hgrid page
1106 ---------- BEGIN non-Hgrid initialization ----------
1107
1108 -- GET PROJECT CURRENCY
1109 select projfunc_currency_code
1110 into x_view_currency_code
1111 from pa_projects_all
1112 where project_id = p_project_id;
1113
1114 open ci_csr;
1115 loop
1116 fetch ci_csr into ci_rec;
1117 exit when ci_csr%NOTFOUND;
1118 l_ci_row_index := l_ci_row_index + 1;
1119
1120 --- >>>> PROCESSING FOR FIRST ROW <<<< ---
1121 if l_ci_row_index = 1 then
1122 l_ci_budget_version_id := ci_rec.budget_version_id;
1123 pa_fp_view_plans_pub.G_FP_VIEW_VERSION_ID := l_ci_budget_version_id;
1124 select fin_plan_type_id,
1125 proj_fp_options_id
1126 into l_fin_plan_type_id,
1127 l_proj_fp_options_id
1128 from pa_proj_fp_options
1129 where project_id = p_project_id and
1130 fin_plan_version_id = ci_rec.budget_version_id and
1131 fin_plan_option_level_code = 'PLAN_VERSION';
1132
1133 select DECODE(rl.group_resource_type_id,
1134 0, 'NONGROUPED',
1135 'GROUPED'),
1136 nvl(bv.resource_list_id,0),
1137 nvl(bv.budget_status_code, 'W'),
1138 DECODE(bv.budget_status_code,
1139 'B', 'B',
1140 'W'),
1141 DECODE(bv.version_type,
1142 'COST', 'C',
1143 'REVENUE', 'R',
1144 'N'),
1145 bv.record_version_number,
1146 nvl(bv.approved_cost_plan_type_flag, 'N'),
1147 nvl(bv.approved_rev_plan_type_flag, 'N'),
1148 nvl(rl.uncategorized_flag, 'N')
1149 into l_grouping_type,
1150 l_resource_list_id,
1151 x_budget_status_code,
1152 l_working_or_baselined,
1153 l_cost_or_revenue,
1154 l_rv_number,
1155 l_ac_flag,
1156 l_ar_flag,
1157 l_uncategorized_flag
1158 from pa_budget_versions bv,
1159 pa_resource_lists_all_bg rl
1160 where bv.budget_version_id = ci_rec.budget_version_id and
1161 bv.resource_list_id = rl.resource_list_id;
1162
1163 -- >>>> BUG FIX 2650878: project or projfunc, depending on AR flag <<<<
1164 if l_ar_flag = 'Y' then
1165 -- APPROVED REVENUE: go with Project Functional Currency
1166 x_ar_flag := 'Y';
1167 -- get PROJECT CURRENCY
1168 select projfunc_currency_code
1169 into x_view_currency_code
1170 from pa_projects_all
1171 where project_id = p_project_id;
1172 pa_fp_view_plans_pub.G_FP_CURRENCY_TYPE := 'PROJFUNC';
1173 else
1174 -- NOT APPROVED REVENUE: go with Project Currency
1175 x_ar_flag := 'N';
1176 -- get PROJECT CURRENCY
1177 select project_currency_code
1178 into x_view_currency_code
1179 from pa_projects_all
1180 where project_id = p_project_id;
1181 pa_fp_view_plans_pub.G_FP_CURRENCY_TYPE := 'PROJECT';
1182 end if; -- approved revenue flag
1183 /*
1184 if l_uncategorized_flag = 'Y' then
1185 x_planned_resources_flag := 'N';
1186 else
1187 x_planned_resources_flag := 'Y';
1188 end if;
1189 */
1190 select fin_plan_preference_code
1191 into l_fp_preference_code
1192 from pa_proj_fp_options
1193 where project_id = p_project_id and
1194 fin_plan_type_id = l_fin_plan_type_id and
1195 fin_plan_option_level_code = 'PLAN_TYPE';
1196
1197 -- retrieve report_labor_hrs, margin_derived codes from PLAN TYPE entry
1198 select report_labor_hrs_from_code,
1199 margin_derived_from_code
1200 into l_report_labor_hrs_from_code,
1201 l_margin_derived_code
1202 from pa_proj_fp_options
1203 where project_id = p_project_id and
1204 fin_plan_type_id = l_fin_plan_type_id and
1205 fin_plan_option_level_code = 'PLAN_TYPE';
1206 pa_fp_view_plans_pub.G_FP_CALC_QUANTITY_FROM := l_report_labor_hrs_from_code;
1207 pa_fp_view_plans_pub.G_FP_PLAN_TYPE_ID := l_fin_plan_type_id;
1208 --pa_fp_view_plans_pub.G_MULTI_CURR_FLAG := ci_rec.plan_in_multi_curr_flag;
1209
1210 pa_fp_view_plans_pub.G_FP_CALC_MARGIN_FROM := l_margin_derived_code;
1211
1212 if l_fp_preference_code = 'COST_AND_REV_SAME' then
1213 pa_fp_view_plans_pub.G_FP_COST_VERSION_ID := l_ci_budget_version_id;
1214 pa_fp_view_plans_pub.G_FP_REV_VERSION_ID := l_ci_budget_version_id;
1215 --pa_fp_view_plans_pub.G_COST_VERSION_GROUPING := l_grouping_type;
1216 --pa_fp_view_plans_pub.G_REV_VERSION_GROUPING := l_grouping_type;
1217 pa_fp_view_plans_pub.G_DISPLAY_FROM := 'ANY';
1218 --x_grouping_type := l_grouping_type;
1219 -- set planning level code for page: P, T, L, or M
1220 /*
1221 select all_fin_plan_level_code
1222 into l_cost_planning_level
1223 from pa_proj_fp_options
1224 where proj_fp_options_id = l_proj_fp_options_id;
1225 x_planning_level := l_cost_planning_level;
1226 */
1227 x_cost_rv_number := l_rv_number;
1228 x_rev_rv_number := l_rv_number;
1229 --x_cost_rl_id := l_resource_list_id;
1230 --x_rev_rl_id := l_resource_list_id;
1231
1232 elsif l_fp_preference_code = 'COST_ONLY' then
1233 pa_fp_view_plans_pub.G_FP_COST_VERSION_ID := l_ci_budget_version_id;
1234 pa_fp_view_plans_pub.G_FP_REV_VERSION_ID := -1;
1235 --pa_fp_view_plans_txn_pub.G_COST_VERSION_GROUPING := l_grouping_type;
1236 --pa_fp_view_plans_txn_pub.G_REV_VERSION_GROUPING := l_grouping_type;
1237 pa_fp_view_plans_pub.G_DISPLAY_FROM := 'COST';
1238 --x_grouping_type := l_grouping_type;
1239 -- set planning level code for page: P, T, L, or M
1240 /*
1241 select cost_fin_plan_level_code
1242 into l_cost_planning_level
1243 from pa_proj_fp_options
1244 where proj_fp_options_id = l_proj_fp_options_id;
1245 x_planning_level := l_cost_planning_level;
1246 */
1247 x_cost_rv_number := l_rv_number;
1248 x_rev_rv_number := -1;
1249 --x_cost_rl_id := l_resource_list_id;
1250 --x_rev_rl_id := -1;
1251
1252 elsif l_fp_preference_code = 'REVENUE_ONLY' then
1253 pa_fp_view_plans_pub.G_FP_COST_VERSION_ID := -1;
1254 pa_fp_view_plans_pub.G_FP_REV_VERSION_ID := l_ci_budget_version_id;
1255 --pa_fp_view_plans_txn_pub.G_COST_VERSION_GROUPING := l_grouping_type;
1256 --pa_fp_view_plans_txn_pub.G_REV_VERSION_GROUPING := l_grouping_type;
1257 pa_fp_view_plans_pub.G_DISPLAY_FROM := 'REVENUE';
1258 --x_grouping_type := l_grouping_type;
1259 -- set planning level code for page: P, T, L, or M
1260 /*
1261 select revenue_fin_plan_level_code
1262 into l_rev_planning_level
1263 from pa_proj_fp_options
1264 where proj_fp_options_id = l_proj_fp_options_id;
1265 x_planning_level := l_rev_planning_level;
1266 */
1267 x_cost_rv_number := -1;
1268 x_rev_rv_number := l_rv_number;
1269 --x_cost_rl_id := -1;
1270 --x_rev_rl_id := l_resource_list_id;
1271 end if;
1272
1273 --- >>>> PROCESSING FOR SECOND ROW <<<< ---
1274 else
1275 -- what we do w/second row depends on the PLAN PREFERENCE CODE
1276 -- NOTE: if COST_AND_REV_SAME, then we will NOT get a second row
1277
1278 if l_fp_preference_code = 'COST_ONLY' then
1279 -- this second row must be the complementary REVENUE version
1280 select DECODE(rl.group_resource_type_id,
1281 0, 'NONGROUPED',
1282 'GROUPED'),
1283 rl.resource_list_id,
1284 bv.record_version_number,
1285 nvl(rl.uncategorized_flag, 'N')
1286 into l_compl_grouping_type,
1287 l_compl_resource_list_id,
1288 l_compl_rv_number,
1289 l_compl_uncategorized_flag
1290 from pa_budget_versions bv,
1291 pa_resource_lists_all_bg rl
1292 where bv.budget_version_id = ci_rec.budget_version_id and
1293 bv.resource_list_id = rl.resource_list_id;
1294 pa_fp_view_plans_pub.G_FP_COST_VERSION_ID := l_ci_budget_version_id;
1295 pa_fp_view_plans_pub.G_FP_REV_VERSION_ID := ci_rec.budget_version_id;
1296 --pa_fp_view_plans_txn_pub.G_COST_VERSION_GROUPING := l_grouping_type;
1297 --pa_fp_view_plans_txn_pub.G_REV_VERSION_GROUPING := l_compl_grouping_type;
1298 pa_fp_view_plans_pub.G_DISPLAY_FROM := 'BOTH';
1299 /*
1300 if l_grouping_type = 'GROUPED' then
1301 if l_compl_grouping_type = 'GROUPED' then
1302 x_grouping_type := 'GROUPED';
1303 else
1304 x_grouping_type := 'MIXED';
1305 end if;
1306 else
1307 if l_compl_grouping_type = 'GROUPED' then
1308 x_grouping_type := 'MIXED';
1309 else
1310 x_grouping_type := 'NONGROUPED';
1311 end if;
1312 end if;
1313 */
1314 x_cost_rv_number := l_rv_number;
1315 x_rev_rv_number := l_compl_rv_number;
1316 --x_cost_rl_id := l_resource_list_id;
1317 --x_rev_rl_id := l_compl_resource_list_id;
1318 -- planning level code for cost version: P, T, L, or M
1319 /*
1320 select cost_fin_plan_level_code
1321 into l_cost_planning_level
1322 from pa_proj_fp_options
1323 where proj_fp_options_id = l_proj_fp_options_id;
1324 -- planning level code for revenue (compl) version
1325 select revenue_fin_plan_level_code
1326 into l_rev_planning_level
1327 from pa_proj_fp_options
1328 where proj_fp_options_id = ci_rec.proj_fp_options_id;
1329 -- PLANNING LEVEL = 'P' if one of the planning levels is P
1330 if (l_cost_planning_level = 'P') or (l_rev_planning_level = 'P') then
1331 x_planning_level := 'P';
1332 else
1333 x_planning_level := l_cost_planning_level;
1334 end if;
1335 if pa_fp_view_plans_txn_pub.G_MULTI_CURR_FLAG = 'N' or ci_rec.plan_in_multi_curr_flag = 'N' then
1336 pa_fp_view_plans_txn_pub.G_MULTI_CURR_FLAG := 'N';
1337 end if;
1338 */
1339
1340 elsif l_fp_preference_code = 'REVENUE_ONLY' then
1341 -- this second row must be the complementary COST version
1342 select DECODE(rl.group_resource_type_id,
1343 0, 'NONGROUPED',
1344 'GROUPED'),
1345 rl.resource_list_id,
1346 bv.record_version_number,
1347 nvl(rl.uncategorized_flag, 'N')
1348 into l_compl_grouping_type,
1349 l_compl_resource_list_id,
1350 l_compl_rv_number,
1351 l_compl_uncategorized_flag
1352 from pa_budget_versions bv,
1353 pa_resource_lists_all_bg rl
1354 where bv.budget_version_id = ci_rec.budget_version_id and
1355 bv.resource_list_id = rl.resource_list_id;
1356 pa_fp_view_plans_pub.G_FP_COST_VERSION_ID := ci_rec.budget_version_id;
1357 pa_fp_view_plans_pub.G_FP_REV_VERSION_ID := l_ci_budget_version_id;
1358 --pa_fp_view_plans_txn_pub.G_COST_VERSION_GROUPING := l_compl_grouping_type;
1359 --pa_fp_view_plans_txn_pub.G_REV_VERSION_GROUPING := l_grouping_type;
1360 pa_fp_view_plans_pub.G_DISPLAY_FROM := 'BOTH';
1361 /*
1362 if l_grouping_type = 'GROUPED' then
1363 if l_compl_grouping_type = 'GROUPED' then
1364 x_grouping_type := 'GROUPED';
1365 else
1366 x_grouping_type := 'MIXED';
1367 end if;
1368 else
1369 if l_compl_grouping_type = 'GROUPED' then
1370 x_grouping_type := 'MIXED';
1371 else
1372 x_grouping_type := 'NONGROUPED';
1373 end if;
1374 end if;
1375 */
1376 x_cost_rv_number := l_compl_rv_number;
1377 x_rev_rv_number := l_rv_number;
1378 --x_cost_rl_id := l_resource_list_id;
1379 --x_rev_rl_id := l_compl_resource_list_id;
1380 -- planning level code for cost (compl) version: P, T, L, or M
1381 /*
1382 select cost_fin_plan_level_code
1383 into l_cost_planning_level
1384 from pa_proj_fp_options
1385 where proj_fp_options_id = ci_rec.proj_fp_options_id;
1386 -- planning level code for revenue version
1387 select revenue_fin_plan_level_code
1388 into l_rev_planning_level
1389 from pa_proj_fp_options
1390 where proj_fp_options_id = l_proj_fp_options_id;
1391 -- PLANNING LEVEL = 'P' if one of the planning levels is P
1392 if (l_cost_planning_level = 'P') or (l_rev_planning_level = 'P') then
1393 x_planning_level := 'P';
1394 else
1395 x_planning_level := l_rev_planning_level;
1396 end if;
1397 if pa_fp_view_plans_txn_pub.G_MULTI_CURR_FLAG = 'N' or ci_rec.plan_in_multi_curr_flag = 'N' then
1398 pa_fp_view_plans_txn_pub.G_MULTI_CURR_FLAG := 'N';
1399 end if;
1400 */
1401
1402 elsif l_fp_preference_code = 'COST_AND_REV_SEP' then
1403 if l_cost_or_revenue = 'R' then
1404 -- this second row must be the complementary COST version
1405 select DECODE(rl.group_resource_type_id,
1406 0, 'NONGROUPED',
1407 'GROUPED'),
1408 rl.resource_list_id,
1409 bv.record_version_number,
1410 nvl(rl.uncategorized_flag, 'N')
1411 into l_compl_grouping_type,
1412 l_compl_resource_list_id,
1413 l_compl_rv_number,
1414 l_compl_uncategorized_flag
1415 from pa_budget_versions bv,
1416 pa_resource_lists_all_bg rl
1417 where bv.budget_version_id = ci_rec.budget_version_id and
1418 bv.resource_list_id = rl.resource_list_id;
1419 pa_fp_view_plans_pub.G_FP_COST_VERSION_ID := ci_rec.budget_version_id;
1420 pa_fp_view_plans_pub.G_FP_REV_VERSION_ID := l_ci_budget_version_id;
1421 --pa_fp_view_plans_txn_pub.G_COST_VERSION_GROUPING := l_compl_grouping_type;
1422 --pa_fp_view_plans_txn_pub.G_REV_VERSION_GROUPING := l_grouping_type;
1423 pa_fp_view_plans_pub.G_DISPLAY_FROM := 'BOTH';
1424 /*
1425 if l_grouping_type = 'GROUPED' then
1426 if l_compl_grouping_type = 'GROUPED' then
1427 x_grouping_type := 'GROUPED';
1428 else
1429 x_grouping_type := 'MIXED';
1430 end if;
1431 else
1432 if l_compl_grouping_type = 'GROUPED' then
1433 x_grouping_type := 'MIXED';
1434 else
1435 x_grouping_type := 'NONGROUPED';
1436 end if;
1437 end if;
1438 */
1439 x_cost_rv_number := l_compl_rv_number;
1440 x_rev_rv_number := l_rv_number;
1441 --x_cost_rl_id := l_resource_list_id;
1442 --x_rev_rl_id := l_compl_resource_list_id;
1443 -- planning level code for cost (compl) version: P, T, L, or M
1444 /*
1445 select cost_fin_plan_level_code
1446 into l_cost_planning_level
1447 from pa_proj_fp_options
1448 where proj_fp_options_id = ci_rec.proj_fp_options_id;
1449 -- planning level code for revenue version
1450 select revenue_fin_plan_level_code
1451 into l_rev_planning_level
1452 from pa_proj_fp_options
1453 where proj_fp_options_id = l_proj_fp_options_id;
1454 -- PLANNING LEVEL = 'P' if one of the planning levels is P
1455 if (l_cost_planning_level = 'P') or (l_rev_planning_level = 'P') then
1456 x_planning_level := 'P';
1457 else
1458 x_planning_level := l_rev_planning_level;
1459 end if;
1460 if pa_fp_view_plans_txn_pub.G_MULTI_CURR_FLAG = 'N' or ci_rec.plan_in_multi_curr_flag = 'N' then
1461 pa_fp_view_plans_txn_pub.G_MULTI_CURR_FLAG := 'N';
1462 end if;
1463 */
1464
1465 else
1466 -- this second row must be the complementary REVENUE version
1467 select DECODE(rl.group_resource_type_id,
1468 0, 'NONGROUPED',
1469 'GROUPED'),
1470 rl.resource_list_id,
1471 bv.record_version_number,
1472 nvl(rl.uncategorized_flag, 'N')
1473 into l_compl_grouping_type,
1474 l_compl_resource_list_id,
1475 l_compl_rv_number,
1476 l_compl_uncategorized_flag
1477 from pa_budget_versions bv,
1478 pa_resource_lists_all_bg rl
1479 where bv.budget_version_id = ci_rec.budget_version_id and
1480 bv.resource_list_id = rl.resource_list_id;
1481 pa_fp_view_plans_pub.G_FP_COST_VERSION_ID := l_ci_budget_version_id;
1482 pa_fp_view_plans_pub.G_FP_REV_VERSION_ID := ci_rec.budget_version_id;
1483 --pa_fp_view_plans_txn_pub.G_COST_VERSION_GROUPING := l_grouping_type;
1484 --pa_fp_view_plans_txn_pub.G_REV_VERSION_GROUPING := l_compl_grouping_type;
1485 pa_fp_view_plans_pub.G_DISPLAY_FROM := 'BOTH';
1486 /*
1487 if l_grouping_type = 'GROUPED' then
1488 if l_compl_grouping_type = 'GROUPED' then
1489 x_grouping_type := 'GROUPED';
1490 else
1491 x_grouping_type := 'MIXED';
1492 end if;
1493 else
1494 if l_compl_grouping_type = 'GROUPED' then
1495 x_grouping_type := 'MIXED';
1496 else
1497 x_grouping_type := 'NONGROUPED';
1498 end if;
1499 end if;
1500 */
1501 x_cost_rv_number := l_rv_number;
1502 x_rev_rv_number := l_compl_rv_number;
1503 --x_cost_rl_id := l_resource_list_id;
1504 --x_rev_rl_id := l_compl_resource_list_id;
1505 -- planning level code for cost version: P, T, L, or M
1506 /*
1507 select cost_fin_plan_level_code
1508 into l_cost_planning_level
1509 from pa_proj_fp_options
1510 where proj_fp_options_id = l_proj_fp_options_id;
1511 -- planning level code for revenue (compl) version
1512 select revenue_fin_plan_level_code
1513 into l_rev_planning_level
1514 from pa_proj_fp_options
1515 where proj_fp_options_id = ci_rec.proj_fp_options_id;
1516 -- PLANNING LEVEL = 'P' if one of the planning levels is P
1517 if (l_cost_planning_level = 'P') or (l_rev_planning_level = 'P') then
1518 x_planning_level := 'P';
1519 else
1520 x_planning_level := l_cost_planning_level;
1521 end if;
1522 if pa_fp_view_plans_txn_pub.G_MULTI_CURR_FLAG = 'N' or ci_rec.plan_in_multi_curr_flag = 'N' then
1523 pa_fp_view_plans_txn_pub.G_MULTI_CURR_FLAG := 'N';
1524 end if;
1525 */
1526 end if;
1527 end if;
1528 end if;
1529 end loop;
1530 close ci_csr;
1531 ---------- END non-Hgrid initialization ----------
1532
1533 ---------- BEGIN Hgrid initialization
1534
1535 select bv.project_id,
1536 DECODE(p_view_currency_type,
1537 'PROJ', pa.project_currency_code,
1538 'PROJFUNC', pa.projfunc_currency_code,
1539 'TXN')
1540 into l_project_id,
1541 l_projfunc_currency_code
1542 from pa_budget_versions bv,
1543 pa_projects_all pa
1544 where bv.budget_version_id = pa_fp_view_plans_pub.G_FP_VIEW_VERSION_ID and
1545 bv.project_id = pa.project_id;
1546 select nvl(org_id,-99)
1547 into l_org_id
1548 from pa_projects_all
1549 where project_id = l_project_id;
1550 pa_fp_view_plans_pub.G_FP_ORG_ID := l_org_id;
1551 x_view_currency_code := l_projfunc_currency_code; -- OUTPUT: x_view_currency_code
1552
1553 BEGIN
1554 select fin_plan_start_date, fin_plan_end_date, fin_plan_type_id
1555 -- default_amount_type_code,
1556 -- default_amount_subtype_code
1557 into ll_plan_start_date,ll_plan_end_date, l_fin_plan_type_id
1558 -- l_default_amount_type_code,
1559 -- l_default_amount_subtype_code
1560 from pa_proj_fp_options
1561 where fin_plan_version_id = pa_fp_view_plans_pub.G_FP_VIEW_VERSION_ID;
1562
1563 -- DERIVE MARGIN FROM CODE: get from PLAN TYPE entry
1564 select proj_fp_options_id,
1565 margin_derived_from_code,
1566 report_labor_hrs_from_code
1567 into x_plan_fp_options_id, -- OUTPUT: x_plan_fp_options_id
1568 l_margin_derived_from_code,
1569 l_labor_hours_from_code
1570 from pa_proj_fp_options
1571 where project_id = l_project_id and
1572 fin_plan_type_id = l_fin_plan_type_id and
1573 fin_plan_option_level_code='PLAN_TYPE';
1574 EXCEPTION
1575 WHEN NO_DATA_FOUND THEN
1576 --hr_utility.trace('no_data_found 1');
1577 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1578 x_msg_count := 1;
1579 x_msg_data := SQLERRM;
1580 FND_MSG_PUB.add_exc_msg
1581 ( p_pkg_name => 'PA_FP_VIEW_PLANS_PUB',
1582 p_procedure_name => 'pa_fp_viewplan_hgrid_init:plan start/end dates: 100');
1583 END;
1584 --hr_utility.trace('stage 100 passed');
1585 x_plan_type_id := l_fin_plan_type_id; -- OUTPUT: x_plan_type_id
1586 pa_fp_view_plans_pub.G_FP_CALC_MARGIN_FROM := l_margin_derived_from_code;
1587 x_calc_margin_from := l_margin_derived_from_code; -- OUTPUT: x_calc_margin_from
1588 pa_fp_view_plans_pub.G_FP_CALC_QUANTITY_FROM := l_labor_hours_from_code;
1589 x_labor_hrs_from_code := l_labor_hours_from_code; -- OUTPUT: x_labor_hrs_from_code
1590
1591
1592 -- USER CUSTOMIZATIONS (ADVANCED DISPLAY OPTIONS PAGE)
1593 -- see if we are displaying data from user-selected version
1594 if (p_user_cost_version_id is not null) or (p_user_rev_version_id is not null) then
1595 l_user_bv_flag := 'Y';
1596 else
1597 l_user_bv_flag := 'N';
1598 end if;
1599
1600 -- set the display from flags
1601 if l_user_bv_flag = 'Y' then
1602 pa_fp_view_plans_pub.G_DISPLAY_FLAG_QUANTITY := p_display_quantity;
1603 pa_fp_view_plans_pub.G_DISPLAY_FLAG_RAWCOST := p_display_rawcost;
1604 pa_fp_view_plans_pub.G_DISPLAY_FLAG_BURDCOST := p_display_burdcost;
1605 pa_fp_view_plans_pub.G_DISPLAY_FLAG_REVENUE := p_display_revenue;
1606 pa_fp_view_plans_pub.G_DISPLAY_FLAG_MARGIN := p_display_margin;
1607 pa_fp_view_plans_pub.G_DISPLAY_FLAG_MARGINPCT := p_display_marginpct;
1608 x_factor_by_code := null;
1609 else
1610 -- retrieve default settings
1611 select DECODE(bv.version_type,
1612 'COST', po.cost_amount_set_id,
1613 'REVENUE', po.revenue_amount_set_id,
1614 po.all_amount_set_id),
1615 bv.version_type,
1616 po.factor_by_code
1617 into l_amount_set_id,
1618 l_version_type,
1619 x_factor_by_code -- OUTPUT: x_factor_by_code
1620 from pa_budget_versions bv,
1621 pa_proj_fp_options po
1622 where bv.budget_version_id = pa_fp_view_plans_pub.G_FP_VIEW_VERSION_ID and
1623 bv.fin_plan_type_id = po.fin_plan_type_id and
1624 po.project_id = l_project_id and
1625 po.fin_plan_option_level_code = 'PLAN_TYPE';
1626 select DECODE(l_version_type,
1627 'COST', nvl(cost_qty_flag,'N'),
1628 'REVENUE', nvl(revenue_qty_flag, 'N'),
1629 nvl(all_qty_flag, 'N')),
1630 nvl(raw_cost_flag, 'N'),
1631 nvl(burdened_cost_flag, 'N'),
1632 nvl(revenue_flag, 'N'),
1633 DECODE(l_version_type,
1634 'ALL', 'Y',
1635 'N'),
1636 DECODE(l_version_type,
1637 'ALL', 'Y',
1638 'N')
1639 into l_display_quantity,
1640 l_display_rawcost,
1641 l_display_burdcost,
1642 l_display_revenue,
1643 l_display_margin,
1644 l_display_marginpct
1645 from pa_fin_plan_amount_sets
1646 where fin_plan_amount_set_id = l_amount_set_id;
1647 pa_fp_view_plans_pub.G_DISPLAY_FLAG_QUANTITY := l_display_quantity;
1648 pa_fp_view_plans_pub.G_DISPLAY_FLAG_RAWCOST := l_display_rawcost;
1649 pa_fp_view_plans_pub.G_DISPLAY_FLAG_BURDCOST := l_display_burdcost;
1650 pa_fp_view_plans_pub.G_DISPLAY_FLAG_REVENUE := l_display_revenue;
1651 pa_fp_view_plans_pub.G_DISPLAY_FLAG_MARGIN := l_display_margin;
1652 pa_fp_view_plans_pub.G_DISPLAY_FLAG_MARGINPCT := l_display_marginpct;
1653 end if;
1654 --hr_utility.trace('quantityflag= ' || pa_fp_view_plans_pub.G_DISPLAY_FLAG_QUANTITY);
1655 --hr_utility.trace('rawcostflag= ' || pa_fp_view_plans_pub.G_DISPLAY_FLAG_RAWCOST);
1656 --hr_utility.trace('burdenedcostflag= ' || pa_fp_view_plans_pub.G_DISPLAY_FLAG_BURDCOST);
1657 --hr_utility.trace('revenueflag= ' || pa_fp_view_plans_pub.G_DISPLAY_FLAG_REVENUE);
1658 --hr_utility.trace('marginflag= ' || pa_fp_view_plans_pub.G_DISPLAY_FLAG_MARGIN);
1659 --hr_utility.trace('marginpctflag= ' || pa_fp_view_plans_pub.G_DISPLAY_FLAG_MARGINPCT);
1660
1661 -- set the DEFAULT AMOUNT TYPE/SUBTYPE CODES, based on order of hierarchy
1662 if pa_fp_view_plans_pub.G_DISPLAY_FLAG_QUANTITY = 'Y' then
1663 l_default_amount_type_code := 'QUANTITY';
1664 l_default_amount_subtype_code := 'QUANTITY';
1665 elsif pa_fp_view_plans_pub.G_DISPLAY_FLAG_RAWCOST = 'Y' then
1666 l_default_amount_type_code := 'COST';
1667 l_default_amount_subtype_code := 'RAW_COST';
1668 elsif pa_fp_view_plans_pub.G_DISPLAY_FLAG_BURDCOST = 'Y' then
1669 l_default_amount_type_code := 'COST';
1670 l_default_amount_subtype_code := 'BURDENED_COST';
1671 elsif pa_fp_view_plans_pub.G_DISPLAY_FLAG_REVENUE = 'Y' then
1672 l_default_amount_type_code := 'REVENUE';
1673 l_default_amount_subtype_code := 'REVENUE';
1674 elsif pa_fp_view_plans_pub.G_DISPLAY_FLAG_MARGIN = 'Y' then
1675 l_default_amount_type_code := 'MARGIN';
1676 l_default_amount_subtype_code := 'MARGIN';
1677 else
1678 l_default_amount_type_code := 'MARGIN_PERCENT';
1679 l_default_amount_subtype_code := 'MARGIN_PERCENT';
1680 end if; -- set default amount type codes
1681
1682 -- set the user-defined budget versions source
1683 if l_user_bv_flag = 'Y' then
1684 if (p_user_cost_version_id = p_user_rev_version_id) then
1685 pa_fp_view_plans_pub.G_FP_ALL_VERSION_ID := p_user_cost_version_id;
1686 pa_fp_view_plans_pub.G_FP_COST_VERSION_ID := p_user_cost_version_id;
1687 pa_fp_view_plans_pub.G_FP_REV_VERSION_ID := p_user_rev_version_id;
1688 else
1689 pa_fp_view_plans_pub.G_FP_COST_VERSION_ID := p_user_cost_version_id;
1690 pa_fp_view_plans_pub.G_FP_REV_VERSION_ID := p_user_rev_version_id;
1691 end if;
1692 select approved_rev_plan_type_flag
1693 into x_ar_flag -- OUTPUT: x_ar_flag
1694 from pa_proj_fp_options
1695 where project_id = l_project_id and
1696 fin_plan_type_id = l_fin_plan_type_id and
1697 fin_plan_option_level_code='PLAN_TYPE';
1698
1699 else
1700 -- retrieve l_cost_or_revenue: applicable only for COST_AND_REV_SEP
1701 -- this param is passed to populate_tmp_table
1702 -- this param is useful only if the user did not select budget versions
1703 select DECODE(version_type,
1704 'REVENUE', 'R',
1705 'COST', 'C',
1706 null),
1707 nvl(budget_status_code, 'W'),
1708 nvl(approved_rev_plan_type_flag, 'N')
1709 into l_cost_or_revenue,
1710 x_budget_status_code, -- OUTPUT: x_budget_status_code
1711 x_ar_flag -- OUTPUT: x_ar_flag
1712 from pa_budget_versions
1713 where budget_version_id = pa_fp_view_plans_pub.G_FP_VIEW_VERSION_ID;
1714 end if;
1715 -- END OF USER CUSTOMIZATIONS (ADVANCED DISPLAY OPTIONS)
1716 pa_fp_view_plans_pub.G_DEFAULT_AMOUNT_TYPE_CODE := l_default_amount_type_code;
1717 pa_fp_view_plans_pub.G_DEFAULT_AMT_SUBTYPE_CODE := l_default_amount_subtype_code;
1718 pa_fp_view_plans_pub.G_FP_CURRENCY_CODE := l_projfunc_currency_code;
1719 pa_fp_view_plans_pub.G_FP_CURRENCY_TYPE := p_view_currency_type;
1720 --hr_utility.trace('reached end of user customizations section: 200');
1721
1722 BEGIN
1723 select pp.plan_period_type,
1724 pp.period1_start_date,
1725 pp.period_profile_id
1726 into ll_plan_period_type,
1727 pp_plan_start_date,
1728 l_period_profile_id
1729 from pa_proj_period_profiles pp,
1730 pa_budget_versions pbv
1731 where pbv.budget_version_id = pa_fp_view_plans_pub.G_FP_VIEW_VERSION_ID
1732 and pp.period_profile_id = pbv.period_profile_id;
1733 EXCEPTION
1734 WHEN NO_DATA_FOUND THEN
1735 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1736 x_msg_count := 1;
1737 x_msg_data := SQLERRM;
1738 FND_MSG_PUB.add_exc_msg
1739 ( p_pkg_name => 'PA_FP_VIEW_PLANS_PUB',
1740 p_procedure_name => 'pa_fp_viewplan_hgrid_init:plan period type: 300');
1741 END;
1742 --hr_utility.trace('after selecting from pa_proj_period_profiles: 300 succeeded');
1743
1744
1745 -- SETTING PERIOD INFORMATION --
1746 -- ONLY IF IN PERIODIC MODE --
1747
1748 if p_amt_or_pd = 'P' then
1749 -- get period info based on period_profile_id
1750 Pa_Prj_Period_Profile_Utils.Get_Prj_Period_Profile_Dtls(
1751 p_period_profile_id => l_period_profile_id,
1752 p_debug_mode => 'Y',
1753 p_add_msg_in_stack => 'Y',
1754 x_period_profile_type => l_period_profile_type,
1755 x_plan_period_type => l_plan_period_type,
1756 x_period_set_name => l_period_set_name,
1757 x_gl_period_type => l_gl_period_type,
1758 x_plan_start_date => l_plan_start_date,
1759 x_plan_end_date => l_plan_end_date,
1760 x_number_of_periods => l_number_of_periods,
1761 x_return_status => l_return_status,
1762 x_msg_data => l_msg_data);
1763 -- get current period info
1764 --hr_utility.trace('executed get_prj_Period_profile_dtls');
1765 --hr_utility.trace('l_period_profile_type= ' || l_period_profile_type);
1766 --hr_utility.trace('l_plan_period_type= ' || l_plan_period_type);
1767 Pa_Prj_Period_Profile_Utils.Get_Curr_Period_Profile_Info(
1768 p_project_id => l_project_id
1769 ,p_period_type => l_plan_period_type
1770 ,p_period_profile_type => 'FINANCIAL_PLANNING'
1771 ,x_period_profile_id => l_cur_period_profile_id
1772 ,x_start_period => l_cur_start_period
1773 ,x_end_period => l_cur_end_period
1774 ,x_return_status => l_return_status
1775 ,x_msg_count => l_msg_count
1776 ,x_msg_data => l_msg_data);
1777 --hr_utility.trace('executed get_curr_period_profile_info');
1778 --hr_utility.trace('l_plan_period_type= ' || l_plan_period_type);
1779 --hr_utility.trace('l_cur_period_profile_id= ' || l_cur_period_profile_id);
1780 --hr_utility.trace('l_cur_start_period= ' || l_cur_start_period);
1781 --hr_utility.trace('l_cur_end_period= ' || l_cur_end_period);
1782
1783 if l_period_profile_id = l_cur_period_profile_id then
1784 x_old_pd_profile_flag := 'N'; -- OUTPUT: x_old_pd_profile_flag
1785 else
1786 x_old_pd_profile_flag := 'Y';
1787 end if;
1788
1789 if ll_plan_start_date is null or ll_plan_end_date is null then
1790 ll_plan_start_date := l_plan_start_date;
1791 ll_plan_end_date := l_plan_end_date;
1792 end if;
1793
1794 pa_fp_view_plans_pub.G_FP_PLAN_START_DATE := ll_plan_start_date;
1795 pa_fp_view_plans_pub.G_FP_PLAN_END_DATE := ll_plan_end_date;
1796 pa_fp_view_plans_pub.G_FP_PERIOD_TYPE := ll_plan_period_type;
1797 x_plan_period_type := ll_plan_period_type; -- OUTPUT: x_plan_period_type
1798 if ll_plan_period_type = 'GL' THEN
1799 l_num_of_periods := 6;
1800 else
1801 l_num_of_periods := 13;
1802 end if;
1803
1804 if p_period_start_date = 'N' Then
1805 l_start_date := to_char(ll_plan_start_date);
1806 -- 11/7/2002: IF no value retrieved from fin_plan_start_date, then use the first start
1807 -- date according to the period profile id
1808 if l_start_date is null then
1809 l_start_date := to_char(pp_plan_start_date);
1810 end if;
1811 elsif p_period_start_date = 'L' Then
1812 pa_fp_view_plans_pub.G_FP_VIEW_START_DATE1:=ll_plan_end_date;
1813 pa_fp_view_plans_pub.pa_fp_set_periods_nav (
1814 p_direction => 'BACKWARD',
1815 p_num_of_periods => l_num_of_periods,
1816 p_period_type => ll_plan_period_type,
1817 x_start_date => l_start_date,
1818 x_return_status => l_return_status,
1819 x_msg_count => l_msg_count,
1820 x_msg_data => l_msg_data);
1821 else
1822 l_start_date := p_period_start_date;
1823 end if;
1824
1825 pa_fp_view_plans_pub.pa_fp_set_periods
1826 ( p_period_start_date => l_start_date,
1827 p_period_type => ll_plan_period_type,
1828 x_return_status => l_return_status,
1829 x_msg_count => l_msg_count,
1830 x_msg_data => l_msg_data);
1831 --hr_utility.trace('END OF SETTING PERIOD INFORMATION: 400');
1832
1833 end if; -- check p_amt_or_pd flag
1834 -- END OF SETTING PERIOD INFORMATION --
1835
1836
1837 -- POPULATE THE GLOBAL TEMPORARY TABLE --
1838 -- we expect the following to be done after this procedure:
1839 -- 1. global variables should be set:
1840 -- G_DISPLAY_FROM
1841 -- G_FP_COST_VERSION_ID (may be set already, if user-entered)
1842 -- G_FP_COST_VERSION_NUMBER
1843 -- G_FP_COST_VERSION_NAME
1844 -- G_FP_REV_VERSION_ID (may be set already, if user-entered)
1845 -- G_FP_REV_VERSION_NAME
1846 -- G_FP_REV_VERSION_NUMBER
1847 -- G_FP_ALL_VERSION_ID (may be set already, if user-entered)
1848 -- G_FP_ALL_VERSION_NAME
1849 -- G_FP_ALL_VERSION_NUMBER
1850 --hr_utility.trace('calling view_plan_temp_tables');
1851 -- delete residual data in the temp tables
1852 DELETE from PA_FIN_VP_AMTS_VIEW_TMP;
1853 DELETE from PA_FIN_VP_PDS_VIEW_TMP;
1854
1855 /* -- since we've already found the complements, we call the appropriate
1856 * global temp table populating procedures ourselves
1857 pa_fp_view_plans_pub.view_plan_temp_tables
1858 (p_project_id => l_project_id,
1859 p_budget_version_id => p_orgfcst_version_id,
1860 p_cost_or_revenue => l_cost_or_revenue,
1861 p_user_bv_flag => l_user_bv_flag,
1862 x_cost_version_number => l_cost_version_number,
1863 x_rev_version_number => l_rev_version_number,
1864 x_cost_version_name => l_cost_version_name,
1865 x_rev_version_name => l_rev_version_name,
1866 x_diff_pd_profile_flag => l_diff_pd_profile_flag,
1867 x_return_status => l_return_status,
1868 x_msg_count => l_msg_count,
1869 x_msg_data => l_msg_data );
1870 -- if view_plan_temp_tables fails, error out right away
1871 if l_return_status <> FND_API.G_RET_STS_SUCCESS then
1872 x_return_status := FND_API.G_RET_STS_ERROR;
1873 x_msg_count := FND_MSG_PUB.Count_Msg;
1874 if x_msg_count = 1 then
1875 PA_INTERFACE_UTILS_PUB.get_messages
1876 (p_encoded => FND_API.G_TRUE,
1877 p_msg_index => 1,
1878 p_data => x_msg_data,
1879 p_msg_index_out => l_msg_index_out);
1880 end if;
1881 return;
1882 end if;
1883 */
1884 -- END OF POPULATING GLOBAL TEMPORARY TABLE --
1885 /*
1886 x_display_from := pa_fp_view_plans_pub.G_DISPLAY_FROM; -- OUTPUT: x_display_from
1887 x_diff_pd_profile_flag := l_diff_pd_profile_flag; -- OUTPUT: x_diff_pd_profile_flag
1888 -- NEED THIS IN CASE NOT USER-SPECIFIED
1889 if pa_fp_view_plans_pub.G_FP_ALL_VERSION_ID is not null then
1890 if pa_fp_view_plans_pub.G_FP_COST_VERSION_ID is null then
1891 pa_fp_view_plans_pub.G_FP_COST_VERSION_ID := pa_fp_view_plans_pub.G_FP_ALL_VERSION_ID;
1892 end if;
1893 if pa_fp_view_plans_pub.G_FP_REV_VERSION_ID is null then
1894 pa_fp_view_plans_pub.G_FP_REV_VERSION_ID := pa_fp_view_plans_pub.G_FP_ALL_VERSION_ID;
1895 end if;
1896 end if;
1897
1898 -- figure out x_time_phase_code: to decide whether or not to display the amt/pd toggle
1899 if pa_fp_view_plans_pub.G_DISPLAY_FROM = 'ANY' then
1900 select nvl(all_time_phased_code, 'N')
1901 into x_time_phase_code -- OUTPUT: x_time_phase_code
1902 from pa_proj_fp_options
1903 where fin_plan_version_id = pa_fp_view_plans_pub.G_FP_ALL_VERSION_ID;
1904 elsif pa_fp_view_plans_pub.G_DISPLAY_FROM = 'COST' then
1905 select nvl(cost_time_phased_code, 'N')
1906 into x_time_phase_code -- OUTPUT: x_time_phase_code
1907 from pa_proj_fp_options
1908 where fin_plan_version_id = pa_fp_view_plans_pub.G_FP_COST_VERSION_ID;
1909 elsif pa_fp_view_plans_pub.G_DISPLAY_FROM = 'REVENUE' then
1910 select nvl(revenue_time_phased_code, 'N')
1911 into x_time_phase_code -- OUTPUT: x_time_phase_code
1912 from pa_proj_fp_options
1913 where fin_plan_version_id = pa_fp_view_plans_pub.G_FP_REV_VERSION_ID;
1914 else
1915 select nvl(cost_time_phased_code, 'N')
1916 into l_cost_time_phase_code
1917 from pa_proj_fp_options
1918 where fin_plan_version_id = pa_fp_view_plans_pub.G_FP_COST_VERSION_ID;
1919 select nvl(revenue_time_phased_code, 'N')
1920 into l_rev_time_phase_code
1921 from pa_proj_fp_options
1922 where fin_plan_version_id = pa_fp_view_plans_pub.G_FP_REV_VERSION_ID;
1923 if l_cost_time_phase_code <> 'Y' and l_rev_time_phase_code <> 'Y' then
1924 x_time_phase_code := 'N'; -- OUTPUT: x_time_phase_code
1925 else
1926 x_time_phase_code := l_cost_time_phase_code; -- OUTPUT: x_time_phase_code
1927 end if;
1928 end if;
1929
1930 x_cost_bv_id := pa_fp_view_plans_pub.G_FP_COST_VERSION_ID;
1931 if x_cost_bv_id is null then
1932 if pa_fp_view_plans_pub.G_FP_ALL_VERSION_ID is null then
1933 x_cost_bv_id := -1;
1934 else
1935 x_cost_bv_id := pa_fp_view_plans_pub.G_FP_ALL_VERSION_ID;
1936 end if;
1937 end if;
1938 x_revenue_bv_id := pa_fp_view_plans_pub.G_FP_REV_VERSION_ID;
1939 if x_revenue_bv_id is null then
1940 if pa_fp_view_plans_pub.G_FP_ALL_VERSION_ID is null then
1941 x_revenue_bv_id := -1;
1942 else
1943 x_revenue_bv_id := pa_fp_view_plans_pub.G_FP_ALL_VERSION_ID;
1944 end if;
1945 end if;
1946
1947 -- figure out LOCKED BY after version sources set; also get RECORD VERSION NUMBERS
1948 -- COST VERSION
1949 if pa_fp_view_plans_pub.G_FP_COST_VERSION_ID is not null then
1950 --hr_utility.trace('figuring out cost LOCKED BY');
1951 select record_version_number, -- OUTPUT: x_cost_rv_number
1952 budget_status_code -- OUTPUT: x_budget_status_code
1953 into x_cost_rv_number,
1954 x_budget_status_code
1955 from pa_budget_versions
1956 where budget_version_id = pa_fp_view_plans_pub.G_FP_COST_VERSION_ID;
1957 pa_fin_plan_utils.Check_Locked_By_User
1958 (p_user_id => p_user_id,
1959 p_budget_version_id => pa_fp_view_plans_pub.G_FP_COST_VERSION_ID,
1960 x_is_locked_by_userid => l_is_cost_locked_by_user,
1961 x_locked_by_person_id => l_cost_locked_by_person_id,
1962 x_return_status => l_return_status,
1963 x_msg_count => l_msg_count,
1964 x_msg_data => l_msg_data);
1965 if l_is_cost_locked_by_user = 'N' then
1966 if l_cost_locked_by_person_id is null then
1967 x_cost_locked_name := 'NONE';
1968 else
1969 x_cost_locked_name := pa_fin_plan_utils.get_person_name(l_cost_locked_by_person_id);
1970 end if;
1971 else
1972 x_cost_locked_name := 'SELF';
1973 end if; -- is_cost_locked_by_user
1974 end if; -- END:COST VERSION
1975
1976 -- REVENUE VERSION
1977 if pa_fp_view_plans_pub.G_FP_REV_VERSION_ID is not null then
1978 --hr_utility.trace('figuring out revenue LOCKED BY');
1979 select record_version_number, -- OUTPUT: x_rev_rv_number
1980 budget_status_code -- OUTPUT: x_budget_status_code
1981 into x_rev_rv_number,
1982 x_budget_status_code
1983 from pa_budget_versions
1984 where budget_version_id = pa_fp_view_plans_pub.G_FP_REV_VERSION_ID;
1985 pa_fin_plan_utils.Check_Locked_By_User
1986 (p_user_id => p_user_id,
1987 p_budget_version_id => pa_fp_view_plans_pub.G_FP_REV_VERSION_ID,
1988 x_is_locked_by_userid => l_is_rev_locked_by_user,
1989 x_locked_by_person_id => l_rev_locked_by_person_id,
1990 x_return_status => l_return_status,
1991 x_msg_count => l_msg_count,
1992 x_msg_data => l_msg_data);
1993 if l_is_rev_locked_by_user = 'N' then
1994 if l_rev_locked_by_person_id is null then
1995 x_rev_locked_name := 'NONE';
1996 else
1997 x_rev_locked_name := pa_fin_plan_utils.get_person_name(l_rev_locked_by_person_id);
1998 end if;
1999 else
2000 x_rev_locked_name := 'SELF';
2001 end if; -- is_rev_locked_by_user
2002 end if; -- END:REVENUE VERSION
2003
2004
2005 --hr_utility.trace('after calling locked version stuff');
2006 --hr_utility.trace('G_FP_PERIOD_TYPE = ' || pa_fp_view_plans_pub.G_FP_PERIOD_TYPE);
2007 --hr_utility.trace('G_FP_VIEW_START_DATE1 = ' || to_char(pa_fp_view_plans_pub.G_FP_VIEW_START_DATE1));
2008 --hr_utility.trace('G_FP_VIEW_START_DATE2 = ' || to_char(pa_fp_view_plans_pub.G_FP_VIEW_START_DATE2));
2009 --hr_utility.trace('G_FP_VIEW_START_DATE3 = ' || to_char(pa_fp_view_plans_pub.G_FP_VIEW_START_DATE3));
2010 --hr_utility.trace('G_FP_VIEW_START_DATE4 = ' || to_char(pa_fp_view_plans_pub.G_FP_VIEW_START_DATE4));
2011 --hr_utility.trace('G_FP_VIEW_START_DATE5 = ' || to_char(pa_fp_view_plans_pub.G_FP_VIEW_START_DATE5));
2012 --hr_utility.trace('G_FP_VIEW_START_DATE6 = ' || to_char(pa_fp_view_plans_pub.G_FP_VIEW_START_DATE6));
2013 --hr_utility.trace('x_cost_rv_number= ' || TO_CHAR(x_cost_rv_number));
2014 --hr_utility.trace('x_rev_rv_number= ' || TO_CHAR(x_rev_rv_number));
2015 --hr_utility.trace('x_budget_status_code= ' || x_budget_status_code);
2016 */
2017
2018 EXCEPTION
2019 WHEN OTHERS THEN
2020 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2021 x_msg_count := 1;
2022 x_msg_data := SQLERRM;
2023 FND_MSG_PUB.add_exc_msg
2024 ( p_pkg_name => 'PA_FP_VIEW_PLANS_PUB',
2025 p_procedure_name => 'pa_fp_viewplan_hgrid_init');
2026 END pa_fp_viewplan_hgrid_init_ci;
2027
2028
2029 /*
2030 PROCEDURE pa_fp_viewby_set_globals
2031 ( p_amount_type_code IN VARCHAR2,
2032 p_resource_assignment_id IN NUMBER,
2033 p_budget_version_id IN NUMBER,
2034 p_start_period IN VARCHAR2,
2035 x_return_status OUT VARCHAR2,
2036 x_msg_count OUT NUMBER,
2037 x_msg_data OUT VARCHAR2)
2038 IS
2039
2040 l_budget_version_id NUMBER;
2041 l_return_status VARCHAR2(2);
2042 l_msg_count NUMBER;
2043 l_msg_data VARCHAR2(80);
2044 l_start_date VARCHAR2(30);
2045
2046 BEGIN
2047
2048 x_return_status := FND_API.G_RET_STS_SUCCESS;
2049
2050 pa_fp_view_plans_pub.G_FP_AMOUNT_TYPE_CODE := p_amount_type_code;
2051 pa_fp_view_plans_pub.G_FP_RA_ID := p_resource_assignment_id;
2052 l_budget_version_id := p_budget_version_id;
2053
2054 l_start_date := p_start_period;
2055
2056 pa_fp_view_plans_pub.pa_fp_set_orgfcst_version_id
2057 (p_orgfcst_version_id => l_budget_version_id,
2058 p_period_start_date => l_start_date,
2059 x_return_status => l_return_status,
2060 x_msg_count => l_msg_count,
2061 x_msg_data => l_msg_data);
2062 EXCEPTION
2063 WHEN OTHERS THEN
2064 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2065 x_msg_count := 1;
2066 x_msg_data := SQLERRM;
2067 FND_MSG_PUB.add_exc_msg
2068 ( p_pkg_name => 'PA_FP_VIEW_PLANS_PUB',
2069 p_procedure_name => 'pa_fp_viewby_set_globals');
2070 END pa_fp_viewby_set_globals;
2071 */
2072
2073 PROCEDURE pa_fp_set_periods
2074 ( p_period_start_date IN VARCHAR2,
2075 p_period_type IN VARCHAR2,
2076 x_return_status OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
2077 x_msg_count OUT NOCOPY NUMBER, --File.Sql.39 bug 4440895
2078 x_msg_data OUT NOCOPY VARCHAR2) --File.Sql.39 bug 4440895
2079 IS
2080 l_start_date DATE;
2081 v_start_date_tab PA_FORECAST_GLOB.DateTabTyp;
2082 v_end_date_tab PA_FORECAST_GLOB.DateTabTyp;
2083 i NUMBER;
2084 l_rownum NUMBER;
2085
2086 CURSOR C1(l_start_date IN DATE, l_rownum IN NUMBER) IS
2087 SELECT * FROM(
2088 SELECT start_date,end_date
2089 FROM pa_fp_periods_tmp_v
2090 WHERE start_date >= l_start_date
2091 order by start_date
2092 )
2093 where rownum <= l_rownum;
2094
2095 BEGIN
2096 x_return_status := FND_API.G_RET_STS_SUCCESS;
2097 /* Bug Fix 4373890
2098 Adding a format mask for the GSCC file.Date.5 fix
2099 */
2100 l_start_date := to_date(p_period_start_date,'YYYY/MM/DD');
2101 i := 0;
2102
2103 if p_period_type = 'GL' THEN
2104
2105 l_rownum := 6;
2106
2107 elsif p_period_type = 'PA' THEN
2108
2109 l_rownum := 13;
2110
2111 end if;
2112
2113
2114 OPEN C1(l_start_date,l_rownum);
2115
2116 LOOP
2117
2118 FETCH C1 INTO v_start_date_tab(i),v_end_date_tab(i);
2119
2120 -- dbms_output.put_line('i: '||i);
2121 i := i+1;
2122 hr_utility.trace('ok so far');
2123 EXIT WHEN C1%NOTFOUND;
2124
2125 END LOOP;
2126
2127 CLOSE C1;
2128
2129 -- BUG FIX 3142192: not all 6 (or 13) periods may exist, if we are
2130 -- starting with the Current Period
2131 -- 1. initialized all global start date variables to null
2132 -- 2. populated global variables only if records exist for them in the
2133 -- PL/SQL table
2134
2135 pa_fp_view_plans_pub.G_FP_VIEW_START_DATE1 := null;
2136 pa_fp_view_plans_pub.G_FP_VIEW_START_DATE2 := null;
2137 pa_fp_view_plans_pub.G_FP_VIEW_START_DATE3 := null;
2138 pa_fp_view_plans_pub.G_FP_VIEW_START_DATE4 := null;
2139 pa_fp_view_plans_pub.G_FP_VIEW_START_DATE5 := null;
2140 pa_fp_view_plans_pub.G_FP_VIEW_START_DATE6 := null;
2141 pa_fp_view_plans_pub.G_FP_VIEW_START_DATE7 := null;
2142 pa_fp_view_plans_pub.G_FP_VIEW_START_DATE8 := null;
2143 pa_fp_view_plans_pub.G_FP_VIEW_START_DATE9 := null;
2144 pa_fp_view_plans_pub.G_FP_VIEW_START_DATE10 := null;
2145 pa_fp_view_plans_pub.G_FP_VIEW_START_DATE11 := null;
2146 pa_fp_view_plans_pub.G_FP_VIEW_START_DATE12 := null;
2147 pa_fp_view_plans_pub.G_FP_VIEW_START_DATE13 := null;
2148 pa_fp_view_plans_pub.G_FP_VIEW_END_DATE1 := null;
2149 pa_fp_view_plans_pub.G_FP_VIEW_END_DATE2 := null;
2150 pa_fp_view_plans_pub.G_FP_VIEW_END_DATE3 := null;
2151 pa_fp_view_plans_pub.G_FP_VIEW_END_DATE4 := null;
2152 pa_fp_view_plans_pub.G_FP_VIEW_END_DATE5 := null;
2153 pa_fp_view_plans_pub.G_FP_VIEW_END_DATE6 := null;
2154 pa_fp_view_plans_pub.G_FP_VIEW_END_DATE7 := null;
2155 pa_fp_view_plans_pub.G_FP_VIEW_END_DATE8 := null;
2156 pa_fp_view_plans_pub.G_FP_VIEW_END_DATE9 := null;
2157 pa_fp_view_plans_pub.G_FP_VIEW_END_DATE10 := null;
2158 pa_fp_view_plans_pub.G_FP_VIEW_END_DATE11 := null;
2159 pa_fp_view_plans_pub.G_FP_VIEW_END_DATE12 := null;
2160 pa_fp_view_plans_pub.G_FP_VIEW_END_DATE13 := null;
2161
2162
2163 if i > 1 then
2164 pa_fp_view_plans_pub.G_FP_VIEW_START_DATE1 := v_start_date_tab(0);
2165 pa_fp_view_plans_pub.G_FP_VIEW_END_DATE1 := v_end_date_tab(0);
2166 end if;
2167 if i > 2 then
2168 pa_fp_view_plans_pub.G_FP_VIEW_START_DATE2 := v_start_date_tab(1);
2169 pa_fp_view_plans_pub.G_FP_VIEW_END_DATE2 := v_end_date_tab(1);
2170 end if;
2171 if i > 3 then
2172 pa_fp_view_plans_pub.G_FP_VIEW_START_DATE3 := v_start_date_tab(2);
2173 pa_fp_view_plans_pub.G_FP_VIEW_END_DATE3 := v_end_date_tab(2);
2174 end if;
2175 if i > 4 then
2176 pa_fp_view_plans_pub.G_FP_VIEW_START_DATE4 := v_start_date_tab(3);
2177 pa_fp_view_plans_pub.G_FP_VIEW_END_DATE4 := v_end_date_tab(3);
2178 end if;
2179 if i > 5 then
2180 pa_fp_view_plans_pub.G_FP_VIEW_START_DATE5 := v_start_date_tab(4);
2181 pa_fp_view_plans_pub.G_FP_VIEW_END_DATE5 := v_end_date_tab(4);
2182 end if;
2183 if i > 6 then
2184 pa_fp_view_plans_pub.G_FP_VIEW_START_DATE6 := v_start_date_tab(5);
2185 pa_fp_view_plans_pub.G_FP_VIEW_END_DATE6 := v_end_date_tab(5);
2186 end if;
2187
2188 if p_period_type = 'PA' THEN
2189 if i > 7 then
2190 pa_fp_view_plans_pub.G_FP_VIEW_START_DATE7 := v_start_date_tab(6);
2191 pa_fp_view_plans_pub.G_FP_VIEW_END_DATE7 := v_end_date_tab(6);
2192 end if;
2193 if i > 8 then
2194 pa_fp_view_plans_pub.G_FP_VIEW_START_DATE8 := v_start_date_tab(7);
2195 pa_fp_view_plans_pub.G_FP_VIEW_END_DATE8 := v_end_date_tab(7);
2196 end if;
2197 if i > 9 then
2198 pa_fp_view_plans_pub.G_FP_VIEW_START_DATE9 := v_start_date_tab(8);
2199 pa_fp_view_plans_pub.G_FP_VIEW_END_DATE9 := v_end_date_tab(8);
2200 end if;
2201 if i > 10 then
2202 pa_fp_view_plans_pub.G_FP_VIEW_START_DATE10 := v_start_date_tab(9);
2203 pa_fp_view_plans_pub.G_FP_VIEW_END_DATE10 := v_end_date_tab(9);
2204 end if;
2205 if i > 11 then
2206 pa_fp_view_plans_pub.G_FP_VIEW_START_DATE11 := v_start_date_tab(10);
2207 pa_fp_view_plans_pub.G_FP_VIEW_END_DATE11 := v_end_date_tab(10);
2208 end if;
2209 if i > 12 then
2210 pa_fp_view_plans_pub.G_FP_VIEW_START_DATE12 := v_start_date_tab(11);
2211 pa_fp_view_plans_pub.G_FP_VIEW_END_DATE12 := v_end_date_tab(11);
2212 end if;
2213 if i > 13 then
2214 pa_fp_view_plans_pub.G_FP_VIEW_START_DATE13 := v_start_date_tab(12);
2215 pa_fp_view_plans_pub.G_FP_VIEW_END_DATE13 := v_end_date_tab(12);
2216 end if;
2217 end if;
2218
2219 -- END BUG FIX 3142192
2220
2221 END pa_fp_set_periods;
2222
2223
2224 -- REVISION HISTORY:
2225 -- 14-JAN-03 dlai restricted cursors to contain only periods in period profile
2226 PROCEDURE pa_fp_set_periods_nav
2227 ( p_direction IN VARCHAR2,
2228 p_num_of_periods IN NUMBER,
2229 p_period_type IN VARCHAR2,
2230 x_start_date OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
2231 x_return_status OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
2232 x_msg_count OUT NOCOPY NUMBER, --File.Sql.39 bug 4440895
2233 x_msg_data OUT NOCOPY VARCHAR2) --File.Sql.39 bug 4440895
2234 IS
2235
2236 l_start_date DATE;
2237 ll_start_date DATE;
2238 ll_end_date DATE;
2239 l_period_type VARCHAR2(2);
2240 l_rownum NUMBER;
2241 l_return_status VARCHAR2(2);
2242 l_msg_count NUMBER;
2243 l_msg_data VARCHAR2(80);
2244
2245
2246 CURSOR C_forward(l_start_date IN DATE) IS
2247
2248 SELECT start_date, end_date
2249 FROM pa_fp_periods_tmp_v
2250 WHERE start_date > l_start_date and
2251 start_date between pa_fp_view_plans_pub.G_FP_PLAN_START_DATE and
2252 pa_fp_view_plans_pub.G_FP_PLAN_END_DATE
2253 order by start_date;
2254
2255
2256 CURSOR C_backward(l_start_date IN DATE) IS
2257
2258 SELECT start_date
2259 FROM pa_fp_periods_tmp_v
2260 WHERE start_date < l_start_date and
2261 start_date between pa_fp_view_plans_pub.G_FP_PLAN_START_DATE and
2262 pa_fp_view_plans_pub.G_FP_PLAN_END_DATE
2263 order by start_date desc;
2264
2265 BEGIN
2266 --hr_utility.trace_on(null, 'dlai');
2267 l_rownum := p_num_of_periods;
2268 ll_start_date := null;
2269 l_start_date := pa_fp_view_plans_pub.G_FP_VIEW_START_DATE1;
2270
2271 l_period_type := p_period_type;
2272
2273 IF p_direction = 'FORWARD' THEN
2274
2275 OPEN C_forward(l_start_date);
2276
2277 LOOP
2278
2279 FETCH C_forward INTO ll_start_date, ll_end_date;
2280
2281 EXIT WHEN C_forward%NOTFOUND;
2282 EXIT WHEN C_forward%ROWCOUNT = l_rownum;
2283
2284 END LOOP;
2285 -- if we've reached the end of the period profile, we need go loop back
2286 -- 6 or 13 periods, depending on the period type
2287 if ll_end_date = pa_fp_view_plans_pub.G_FP_PLAN_END_DATE then
2288 if pa_fp_view_plans_pub.G_FP_PERIOD_TYPE = 'PA' then
2289 l_rownum := 12;
2290 OPEN C_backward(ll_start_date);
2291 LOOP
2292 FETCH C_backward INTO ll_start_date;
2293 EXIT WHEN C_backward%NOTFOUND;
2294 EXIT WHEN C_backward%ROWCOUNT = l_rownum;
2295 END LOOP;
2296 CLOSE C_backward;
2297 elsif pa_fp_view_plans_pub.G_FP_PERIOD_TYPE = 'GL' then
2298 l_rownum := 5;
2299 OPEN C_backward(ll_start_date);
2300 LOOP
2301 FETCH C_backward INTO ll_start_date;
2302 EXIT WHEN C_backward%NOTFOUND;
2303 EXIT WHEN C_backward%ROWCOUNT = l_rownum;
2304 END LOOP;
2305 CLOSE C_backward;
2306 end if;
2307 end if;
2308
2309 CLOSE C_forward;
2310
2311
2312
2313 ELSIF p_direction = 'BACKWARD' THEN
2314
2315 OPEN C_backward(l_start_date);
2316
2317 LOOP
2318 FETCH C_backward INTO ll_start_date;
2319 --hr_utility.trace('current ll_startdate= ' || to_char(ll_start_date));
2320 EXIT WHEN C_backward%NOTFOUND;
2321 EXIT WHEN C_backward%ROWCOUNT = l_rownum;
2322
2323 END LOOP;
2324
2325 CLOSE C_backward;
2326
2327 END IF;
2328 if ll_start_date is null then
2329 x_start_date := l_start_date;
2330 else
2331 x_start_date := to_char(ll_start_date);
2332 end if;
2333 --hr_utility.trace('x_start_date= ' || x_start_date);
2334 END pa_fp_set_periods_nav;
2335
2336
2337 FUNCTION Get_Version_ID return NUMBER is
2338 BEGIN
2339 return pa_fp_view_plans_pub.G_FP_VIEW_VERSION_ID;
2340 END Get_Version_ID;
2341
2342 FUNCTION Get_Cost_Version_Id return Number is
2343 BEGIN
2344 return pa_fp_view_plans_pub.G_FP_COST_VERSION_ID;
2345 END Get_Cost_Version_id;
2346
2347 FUNCTION Get_Rev_Version_Id return Number is
2348 BEGIN
2349 return pa_fp_view_plans_pub.G_FP_REV_VERSION_ID;
2350 END Get_Rev_Version_Id;
2351
2352 FUNCTION Get_Org_ID return NUMBER is
2353 BEGIN
2354 return pa_fp_view_plans_pub.G_FP_ORG_ID;
2355 END Get_Org_ID;
2356
2357 FUNCTION Get_Plan_Type_ID return NUMBER is
2358 BEGIN
2359 return pa_fp_view_plans_pub.G_FP_PLAN_TYPE_ID;
2360 END Get_Plan_Type_ID;
2361
2362 FUNCTION Get_Derive_Margin_From_Code return VARCHAR2 is
2363 BEGIN
2364 return pa_fp_view_plans_pub.G_FP_CALC_MARGIN_FROM;
2365 END Get_Derive_Margin_From_Code;
2366
2367 FUNCTION Get_Report_Labor_Hrs_From_Code return VARCHAR2 is
2368 BEGIN
2369 return pa_fp_view_plans_pub.G_FP_CALC_QUANTITY_FROM;
2370 END Get_Report_Labor_Hrs_From_Code;
2371
2372 FUNCTION Get_Resource_assignment_ID return NUMBER is
2373 BEGIN
2374 return pa_fp_view_plans_pub.G_FP_RA_ID;
2375 END Get_Resource_assignment_ID;
2376
2377 FUNCTION Get_Amount_Type_code return VARCHAR2 is
2378 BEGIN
2379 return pa_fp_view_plans_pub.G_FP_AMOUNT_TYPE_CODE;
2380 END Get_Amount_Type_code;
2381
2382 FUNCTION Get_Adj_Reason_Code return VARCHAR2 is
2383 BEGIN
2384 return pa_fp_view_plans_pub.G_FP_ADJ_REASON_CODE;
2385 END Get_Adj_Reason_Code;
2386
2387 FUNCTION Get_Uncat_Res_List_Member_Id return NUMBER is
2388 BEGIN
2389 return pa_fp_view_plans_pub.G_UNCAT_RLM_ID;
2390 END Get_Uncat_Res_List_Member_Id;
2391
2392 FUNCTION Get_Period_Start_Date1 return Date is
2393 BEGIN
2394 return pa_fp_view_plans_pub.G_FP_VIEW_START_DATE1;
2395 END Get_Period_Start_Date1;
2396
2397 FUNCTION Get_Period_Start_Date2 return Date is
2398 BEGIN
2399 return pa_fp_view_plans_pub.G_FP_VIEW_START_DATE2;
2400 END Get_Period_Start_Date2;
2401
2402 FUNCTION Get_Period_Start_Date3 return Date is
2403 BEGIN
2404 return pa_fp_view_plans_pub.G_FP_VIEW_START_DATE3;
2405 END Get_Period_Start_Date3;
2406
2407 FUNCTION Get_Period_Start_Date4 return Date is
2408 BEGIN
2409 return pa_fp_view_plans_pub.G_FP_VIEW_START_DATE4;
2410 END Get_Period_Start_Date4;
2411
2412 FUNCTION Get_Period_Start_Date5 return Date is
2413 BEGIN
2414 return pa_fp_view_plans_pub.G_FP_VIEW_START_DATE5;
2415 END Get_Period_Start_Date5;
2416
2417 FUNCTION Get_Period_Start_Date6 return Date is
2418 BEGIN
2419 return pa_fp_view_plans_pub.G_FP_VIEW_START_DATE6;
2420 END Get_Period_Start_Date6;
2421
2422 FUNCTION Get_Period_Start_Date7 return Date is
2423 BEGIN
2424 return pa_fp_view_plans_pub.G_FP_VIEW_START_DATE7;
2425 END Get_Period_Start_Date7;
2426
2427 FUNCTION Get_Period_Start_Date8 return Date is
2428 BEGIN
2429 return pa_fp_view_plans_pub.G_FP_VIEW_START_DATE8;
2430 END Get_Period_Start_Date8;
2431
2432 FUNCTION Get_Period_Start_Date9 return Date is
2433 BEGIN
2434 return pa_fp_view_plans_pub.G_FP_VIEW_START_DATE9;
2435 END Get_Period_Start_Date9;
2436
2437 FUNCTION Get_Period_Start_Date10 return Date is
2438 BEGIN
2439 return pa_fp_view_plans_pub.G_FP_VIEW_START_DATE10;
2440 END Get_Period_Start_Date10;
2441
2442 FUNCTION Get_Period_Start_Date11 return Date is
2443 BEGIN
2444 return pa_fp_view_plans_pub.G_FP_VIEW_START_DATE11;
2445 END Get_Period_Start_Date11;
2446
2447 FUNCTION Get_Period_Start_Date12 return Date is
2448 BEGIN
2449 return pa_fp_view_plans_pub.G_FP_VIEW_START_DATE12;
2450 END Get_Period_Start_Date12;
2451
2452
2453 FUNCTION Get_Period_Start_Date13 return Date is
2454 BEGIN
2455 return pa_fp_view_plans_pub.G_FP_VIEW_START_DATE13;
2456 END Get_Period_Start_Date13;
2457
2458 FUNCTION Get_Plan_Start_Date return Date is
2459 BEGIN
2460 return pa_fp_view_plans_pub.G_FP_PLAN_START_DATE;
2461 END Get_Plan_Start_Date;
2462
2463 FUNCTION Get_Plan_End_Date return Date is
2464 BEGIN
2465 return pa_fp_view_plans_pub.G_FP_PLAN_END_DATE;
2466 END Get_Plan_End_Date;
2467
2468 FUNCTION Get_Prec_Pds_Flag return VARCHAR2 is
2469 BEGIN
2470 return pa_fp_view_plans_pub.G_DISPLAY_FLAG_PREC;
2471 END Get_Prec_Pds_Flag;
2472
2473 FUNCTION Get_Succ_Pds_Flag return VARCHAR2 is
2474 BEGIN
2475 return pa_fp_view_plans_pub.G_DISPLAY_FLAG_SUCC;
2476 END Get_Succ_Pds_Flag;
2477
2478 FUNCTION Get_Currency_Code return VARCHAR2 is
2479 BEGIN
2480 return pa_fp_view_plans_pub.G_FP_CURRENCY_CODE;
2481 END Get_Currency_Code;
2482
2483 FUNCTION Get_Currency_Type return VARCHAR2 is
2484 BEGIN
2485 return pa_fp_view_plans_pub.G_FP_CURRENCY_TYPE;
2486 END Get_Currency_Type;
2487
2488 FUNCTION Get_Default_Amount_Type_Code return VARCHAR2 is
2489 BEGIN
2490 return pa_fp_view_plans_pub.G_DEFAULT_AMOUNT_TYPE_CODE;
2491 END Get_Default_Amount_Type_Code;
2492
2493 FUNCTION Get_Default_Amt_Subtype_Code return VARCHAR2 is
2494 BEGIN
2495 return pa_fp_view_plans_pub.G_DEFAULT_AMT_SUBTYPE_CODE;
2496 END Get_Default_Amt_Subtype_Code;
2497
2498 FUNCTION Get_Cost_Version_Number return NUMBER is
2499 BEGIN
2500 return pa_fp_view_plans_pub.G_FP_COST_VERSION_NUMBER;
2501 END Get_Cost_Version_Number;
2502
2503 FUNCTION Get_Rev_Version_Number return NUMBER is
2504 BEGIN
2505 return pa_fp_view_plans_pub.G_FP_REV_VERSION_NUMBER;
2506 END Get_Rev_Version_Number;
2507
2508 FUNCTION Get_All_Version_Number return NUMBER is
2509 BEGIN
2510 return pa_fp_view_plans_pub.G_FP_ALL_VERSION_NUMBER;
2511 END Get_All_Version_Number;
2512
2513 FUNCTION Get_Cost_Version_Name return VARCHAR2 is
2514 BEGIN
2515 return pa_fp_view_plans_pub.G_FP_COST_VERSION_NAME;
2516 END Get_Cost_Version_Name;
2517
2518 FUNCTION Get_Rev_Version_Name return VARCHAR2 is
2519 BEGIN
2520 return pa_fp_view_plans_pub.G_FP_REV_VERSION_NAME;
2521 END Get_Rev_Version_Name;
2522
2523 FUNCTION Get_All_Version_Name return VARCHAR2 is
2524 BEGIN
2525 return pa_fp_view_plans_pub.G_FP_ALL_VERSION_NAME;
2526 END Get_All_Version_Name;
2527
2528 FUNCTION Get_Period_Type return VARCHAR2 is
2529 BEGIN
2530 return pa_fp_view_plans_pub.G_FP_PERIOD_TYPE;
2531 END Get_Period_Type;
2532
2533 PROCEDURE Set_Cost_Version_Number (p_version_number IN NUMBER) is
2534 BEGIN
2535 pa_fp_view_plans_pub.G_FP_COST_VERSION_NUMBER := p_version_number;
2536 END Set_Cost_Version_Number;
2537
2538 PROCEDURE Set_Rev_Version_Number (p_version_number IN NUMBER) is
2539 BEGIN
2540 pa_fp_view_plans_pub.G_FP_REV_VERSION_NUMBER := p_version_number;
2541 END Set_Rev_Version_Number;
2542
2543 PROCEDURE Set_Cost_Version_Name (p_version_name IN VARCHAR2) is
2544 BEGIN
2545 pa_fp_view_plans_pub.G_FP_COST_VERSION_NAME := p_version_name;
2546 END Set_Cost_Version_Name;
2547
2548 PROCEDURE Set_Rev_Version_Name (p_version_name IN VARCHAR2) is
2549 BEGIN
2550 pa_fp_view_plans_pub.G_FP_REV_VERSION_NAME := p_version_name;
2551 END Set_Rev_Version_Name;
2552
2553
2554 /* ------------------------------------------------------------------ */
2555 -- Procedure view_plan_temp_tables is the top-level procedure call for
2556 -- populating the global temporary tables (periodic and non-periodic).
2557 -- FIRST, check value of p_user_bv_flag:
2558 -- if Y, then user selected the budget versions(s) to be displayed
2559 -- if N, then user did NOT select the budget version, and we do the following:
2560 -- Global temporary tables are populated according to the following logic:
2561 -- If FIN_PLAN_PREFERENCE_CODE is
2562 -- 'COST_AND_REV_SAME': the BV contains both cost and revenue numbers,
2563 -- so call pa_fp_vp_pop_tables_together
2564 -- 'COST_ONLY': only process the Cost version: pa_fp_vp_pop_tables_single
2565 -- 'REVENUE_ONLY': only process the Rev version: pa_fp_vp_pop_tables_single
2566 -- 'COST_AND_REV_SEP':
2567 -- IF complementary BV found and period profiles compatible, then
2568 -- pa_fp_vp_pop_tables_separate
2569 -- ELSE pa_fp_vp_pop_tables_single using the single BV
2570 -- 11/22/02: out parameter: x_diff_pd_profile_flag -> 'Y' when don't match
2571 procedure view_plan_temp_tables
2572 (p_project_id IN pa_budget_versions.project_id%TYPE,
2573 p_budget_version_id IN pa_budget_versions.budget_version_id%TYPE,
2574 p_cost_or_revenue IN VARCHAR2,
2575 p_user_bv_flag IN VARCHAR2,
2576 x_cost_version_number OUT NOCOPY NUMBER, --File.Sql.39 bug 4440895
2577 x_rev_version_number OUT NOCOPY NUMBER, --File.Sql.39 bug 4440895
2578 x_cost_version_name OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
2579 x_rev_version_name OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
2580 x_diff_pd_profile_flag OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
2581 x_return_status OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
2582 x_msg_count OUT NOCOPY NUMBER, --File.Sql.39 bug 4440895
2583 x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
2584 )
2585 as
2586
2587 l_fin_plan_type_id pa_budget_versions.fin_plan_type_id%TYPE;
2588
2589 cursor l_ra_csr is
2590 select * from pa_resource_assignments where budget_version_id=p_budget_version_id;
2591 l_ra_rec l_ra_csr%ROWTYPE;
2592
2593 -- the following four cursors are used to find a complementary plan
2594 -- version if our version is 'COST_ONLY' or 'REVENUE_ONLY'
2595 -- ie. "l_compl_r_w_csr" means that our version is a working revenue version
2596 /*
2597 cursor l_compl_c_w_csr is
2598 select bv.budget_version_id,
2599 po.proj_fp_options_id
2600 from pa_proj_fp_options po,
2601 pa_budget_versions bv
2602 where po.project_id = p_project_id and
2603 po.fin_plan_type_id = l_fin_plan_type_id and -- same plan type
2604 po.fin_plan_preference_code = 'REVENUE_ONLY' and
2605 po.fin_plan_option_level_code = 'PLAN_VERSION' and
2606 po.fin_plan_version_id = bv.budget_version_id and
2607 bv.current_working_flag = 'Y';
2608 l_compl_c_w_rec l_compl_c_w_csr%ROWTYPE;
2609
2610 cursor l_compl_c_b_csr is
2611 select bv.budget_version_id,
2612 po.proj_fp_options_id
2613 from pa_proj_fp_options po,
2614 pa_budget_versions bv
2615 where po.project_id = p_project_id and
2616 po.fin_plan_type_id = l_fin_plan_type_id and -- same plan type
2617 po.fin_plan_preference_code = 'REVENUE_ONLY' and
2618 po.fin_plan_option_level_code = 'PLAN_VERSION' and
2619 po.fin_plan_version_id = bv.budget_version_id and
2620 bv.current_flag = 'Y';
2621 l_compl_c_b_rec l_compl_c_b_csr%ROWTYPE;
2622
2623 cursor l_compl_r_w_csr is
2624 select bv.budget_version_id,
2625 po.proj_fp_options_id
2626 from pa_proj_fp_options po,
2627 pa_budget_versions bv
2628 where po.project_id = p_project_id and
2629 po.fin_plan_type_id = l_fin_plan_type_id and -- same plan type
2630 po.fin_plan_preference_code = 'COST_ONLY' and
2631 po.fin_plan_option_level_code = 'PLAN_VERSION' and
2632 po.fin_plan_version_id = bv.budget_version_id and
2633 bv.current_working_flag = 'Y';
2634 l_compl_r_w_rec l_compl_r_w_csr%ROWTYPE;
2635
2636 cursor l_compl_r_b_csr is
2637 select bv.budget_version_id,
2638 po.proj_fp_options_id
2639 from pa_proj_fp_options po,
2640 pa_budget_versions bv
2641 where po.project_id = p_project_id and
2642 po.fin_plan_type_id = l_fin_plan_type_id and -- same plan type
2643 po.fin_plan_preference_code = 'COST_ONLY' and
2644 po.fin_plan_option_level_code = 'PLAN_VERSION' and
2645 po.fin_plan_version_id = bv.budget_version_id and
2646 bv.current_flag = 'Y';
2647 l_compl_r_b_rec l_compl_r_b_csr%ROWTYPE;
2648 */
2649 cursor l_compl_crsep_c_w_csr is
2650 select bv.budget_version_id,
2651 po.proj_fp_options_id
2652 from pa_proj_fp_options po,
2653 pa_budget_versions bv
2654 where po.project_id = p_project_id and
2655 po.fin_plan_type_id = l_fin_plan_type_id and -- same plan type
2656 -- po.fin_plan_preference_code = 'COST_AND_REV_SEP' and
2657 po.fin_plan_option_level_code = 'PLAN_VERSION' and
2658 po.fin_plan_version_id = bv.budget_version_id and
2659 bv.version_type = 'REVENUE' and
2660 bv.current_working_flag = 'Y';
2661 l_compl_crsep_c_w_rec l_compl_crsep_c_w_csr%ROWTYPE;
2662
2663 cursor l_compl_crsep_r_w_csr is
2664 select bv.budget_version_id,
2665 po.proj_fp_options_id
2666 from pa_proj_fp_options po,
2667 pa_budget_versions bv
2668 where po.project_id = p_project_id and
2669 po.fin_plan_type_id = l_fin_plan_type_id and -- same plan type
2670 -- po.fin_plan_preference_code = 'COST_AND_REV_SEP' and
2671 po.fin_plan_option_level_code = 'PLAN_VERSION' and
2672 po.fin_plan_version_id = bv.budget_version_id and
2673 bv.version_type = 'COST' and
2674 bv.current_working_flag = 'Y';
2675 l_compl_crsep_r_w_rec l_compl_crsep_r_w_csr%ROWTYPE;
2676
2677 -- the following four cursors are used to find a complementary plan
2678 -- version if our version is 'COST_AND_REV_SEP'
2679 -- ie. "l_compl_crsep_c_b_csr" means that our version is a baselined cost version
2680 cursor l_compl_crsep_c_b_csr is
2681 select bv.budget_version_id,
2682 po.proj_fp_options_id
2683 from pa_proj_fp_options po,
2684 pa_budget_versions bv
2685 where po.project_id = p_project_id and
2686 po.fin_plan_type_id = l_fin_plan_type_id and -- same plan type
2687 -- po.fin_plan_preference_code = 'COST_AND_REV_SEP' and
2688 po.fin_plan_option_level_code = 'PLAN_VERSION' and
2689 po.fin_plan_version_id = bv.budget_version_id and
2690 bv.version_type = 'REVENUE' and
2691 bv.current_flag = 'Y';
2692 l_compl_crsep_c_b_rec l_compl_crsep_c_b_csr%ROWTYPE;
2693
2694 cursor l_compl_crsep_r_b_csr is
2695 select bv.budget_version_id,
2696 po.proj_fp_options_id
2697 from pa_proj_fp_options po,
2698 pa_budget_versions bv
2699 where po.project_id = p_project_id and
2700 po.fin_plan_type_id = l_fin_plan_type_id and -- same plan type
2701 -- po.fin_plan_preference_code = 'COST_AND_REV_SEP' and
2702 po.fin_plan_option_level_code = 'PLAN_VERSION' and
2703 po.fin_plan_version_id = bv.budget_version_id and
2704 bv.version_type = 'COST' and
2705 bv.current_flag = 'Y';
2706 l_compl_crsep_r_b_rec l_compl_crsep_r_b_csr%ROWTYPE;
2707
2708 l_fp_preference_code pa_proj_fp_options.fin_plan_preference_code%TYPE;
2709 l_working_or_baselined VARCHAR2(1);
2710 l_compl_budget_version_id pa_budget_versions.budget_version_id%TYPE;
2711 l_compl_proj_fp_options_id pa_proj_fp_options.proj_fp_options_id%TYPE;
2712 l_compl_plan_level_code pa_proj_fp_options.cost_fin_plan_level_code%TYPE;
2713 l_period_profile_id1 pa_proj_period_profiles.period_profile_id%TYPE;
2714 l_period_profile_id2 pa_proj_period_profiles.period_profile_id%TYPE;
2715 l_cost_version_number pa_budget_versions.version_number%TYPE;
2716 l_rev_version_number pa_budget_versions.version_number%TYPE;
2717 l_cost_version_name pa_budget_versions.version_name%TYPE;
2718 l_rev_version_name pa_budget_versions.version_name%TYPE;
2719 l_diff_pd_profile_flag VARCHAR2(1);
2720
2721 -- values used to populate temp table
2722 l_element_name VARCHAR2(1000);
2723
2724 -- for Advanced Display Options customization
2725 l_primary_bvid pa_budget_versions.budget_version_id%TYPE;
2726
2727 -- error handling variables
2728 l_return_status VARCHAR2(1);
2729 l_msg_count NUMBER;
2730 l_msg_data VARCHAR2(80);
2731
2732 begin
2733 pa_debug.write('pa_fp_view_plans_pub.view_plan_temp_tables', '100: entered procedure', 2);
2734 --hr_utility.trace_on(null, 'dlai');
2735 --hr_utility.trace('entered view_plan_temp_tables');
2736 --hr_utility.trace('p_budget_version_id= ' || TO_CHAR(p_budget_version_id));
2737 x_msg_count := 0;
2738 x_return_status := FND_API.G_RET_STS_SUCCESS;
2739 SAVEPOINT VIEW_PLAN_TEMP_TABLES;
2740 l_diff_pd_profile_flag := 'N';
2741
2742 -- FOR ADVANCED DISPLAY OPTIONS CUSTOMIZATION: USER-SELECTED BUDGET VERSIONS
2743 -- order of checking: ALL, COST, REVENUE
2744 if p_user_bv_flag = 'Y' then
2745 --hr_utility.trace('p_user_bv_flag = Y');
2746 -- assume that the BV_ID variables have already been set
2747 if pa_fp_view_plans_pub.G_FP_ALL_VERSION_ID is not null then
2748 l_primary_bvid := pa_fp_view_plans_pub.G_FP_ALL_VERSION_ID;
2749 elsif pa_fp_view_plans_pub.G_FP_COST_VERSION_ID is not null then
2750 l_primary_bvid := pa_fp_view_plans_pub.G_FP_COST_VERSION_ID;
2751 else
2752 l_primary_bvid := pa_fp_view_plans_pub.G_FP_REV_VERSION_ID;
2753 end if;
2754 --hr_utility.trace('allversionid= ' || to_char(pa_fp_view_plans_pub.G_FP_ALL_VERSION_ID));
2755 --hr_utility.trace('COSTversionid= ' || to_char(pa_fp_view_plans_pub.G_FP_COST_VERSION_ID));
2756 --hr_utility.trace('REVversionid= ' || to_char(pa_fp_view_plans_pub.G_FP_REV_VERSION_ID));
2757
2758 --hr_utility.trace('selecting from pa_budget_versions');
2759 select DECODE(budget_status_code,
2760 'B', 'B',
2761 'W'),
2762 fin_plan_type_id
2763 into l_working_or_baselined,
2764 l_fin_plan_type_id
2765 from pa_budget_versions
2766 where budget_version_id = p_budget_version_id;
2767 -- retrieve fin_plan_preference_code from PLAN_TYPE record
2768 select fin_plan_preference_code
2769 into l_fp_preference_code
2770 from pa_proj_fp_options
2771 where fin_plan_type_id = l_fin_plan_type_id and
2772 fin_plan_option_level_code = 'PLAN_TYPE' and
2773 project_id = p_project_id;
2774
2775 -- figure out display_from:
2776 if l_fp_preference_code = 'COST_AND_REV_SAME' then
2777 --hr_utility.trace('user_specified: COST_AND_REV_SAME');
2778 pa_fp_view_plans_pub.G_DISPLAY_FROM := 'ANY';
2779 if pa_fp_view_plans_pub.G_FP_ALL_VERSION_ID is null then
2780 if pa_fp_view_plans_pub.G_FP_COST_VERSION_ID is not null then
2781 pa_fp_view_plans_pub.G_FP_ALL_VERSION_ID := pa_fp_view_plans_pub.G_FP_COST_VERSION_ID;
2782 else
2783 pa_fp_view_plans_pub.G_FP_ALL_VERSION_ID := pa_fp_view_plans_pub.G_FP_REV_VERSION_ID;
2784 end if;
2785 end if;
2786 select version_name,
2787 version_number
2788 into l_cost_version_name,
2789 l_cost_version_number
2790 from pa_budget_versions
2791 where budget_version_id = p_budget_version_id;
2792 l_rev_version_name := l_cost_version_name;
2793 l_rev_version_number := l_cost_version_number;
2794 pa_fp_view_plans_pub.G_FP_ALL_VERSION_NAME := l_cost_version_name;
2795 pa_fp_view_plans_pub.G_FP_ALL_VERSION_NUMBER := l_cost_version_number;
2796 pa_fp_view_plans_pub.pa_fp_vp_pop_tables_together
2797 (p_project_id => p_project_id,
2798 p_budget_version_id => pa_fp_view_plans_pub.G_FP_ALL_VERSION_ID,
2799 x_return_status => l_return_status,
2800 x_msg_count => l_msg_count,
2801 x_msg_data => l_msg_data);
2802
2803 elsif l_fp_preference_code = 'COST_ONLY' then
2804 --hr_utility.trace('user_specified: COST_ONLY');
2805 pa_fp_view_plans_pub.G_DISPLAY_FROM := 'COST';
2806 select version_number,
2807 version_name
2808 into l_cost_version_number,
2809 l_cost_version_name
2810 from pa_budget_versions
2811 where budget_version_id = p_budget_version_id;
2812 l_rev_version_number := null;
2813 l_rev_version_name := ' ';
2814 pa_fp_view_plans_pub.G_FP_COST_VERSION_NUMBER := l_cost_version_number;
2815 pa_fp_view_plans_pub.G_FP_COST_VERSION_NAME := l_cost_version_name;
2816 pa_fp_view_plans_pub.pa_fp_vp_pop_tables_single
2817 (p_project_id => p_project_id,
2818 p_budget_version_id => pa_fp_view_plans_pub.G_FP_COST_VERSION_ID,
2819 p_cost_or_rev => 'C',
2820 x_return_status => l_return_status,
2821 x_msg_count => l_msg_count,
2822 x_msg_data => l_msg_data);
2823
2824 elsif l_fp_preference_code = 'REVENUE_ONLY' then
2825 --hr_utility.trace('user_specified: REVENUE_ONLY');
2826 pa_fp_view_plans_pub.G_DISPLAY_FROM := 'REVENUE';
2827 select version_number,
2828 version_name
2829 into l_rev_version_number,
2830 l_rev_version_name
2831 from pa_budget_versions
2832 where budget_version_id = p_budget_version_id;
2833 l_cost_version_number := null;
2834 l_cost_version_name := ' ';
2835 pa_fp_view_plans_pub.G_FP_REV_VERSION_NAME := l_rev_version_name;
2836 pa_fp_view_plans_pub.G_FP_REV_VERSION_NUMBER := l_rev_version_number;
2837 pa_fp_view_plans_pub.pa_fp_vp_pop_tables_single
2838 (p_project_id => p_project_id,
2839 p_budget_version_id => pa_fp_view_plans_pub.G_FP_REV_VERSION_ID,
2840 p_cost_or_rev => 'R',
2841 x_return_status => l_return_status,
2842 x_msg_count => l_msg_count,
2843 x_msg_data => l_msg_data);
2844
2845 else
2846 --hr_utility.trace('user_specified: COST_AND_REV_SEP');
2847 if (pa_fp_view_plans_pub.G_FP_COST_VERSION_ID is not null) and
2848 (pa_fp_view_plans_pub.G_FP_REV_VERSION_ID is not null) then
2849
2850 -- BEFORE MERGING, MAKE SURE PERIOD PROFILES MATCH
2851 select period_profile_id
2852 into l_period_profile_id1
2853 from pa_budget_versions
2854 where budget_version_id = pa_fp_view_plans_pub.G_FP_COST_VERSION_ID;
2855 select period_profile_id
2856 into l_period_profile_id2
2857 from pa_budget_versions
2858 where budget_version_id = pa_fp_view_plans_pub.G_FP_REV_VERSION_ID;
2859 --hr_utility.trace('retrieved the period profile ids');
2860 if (pa_fp_view_plans_util.check_compatible_pd_profiles
2861 (p_period_profile_id1 => l_period_profile_id1,
2862 p_period_profile_id2 => l_period_profile_id2) = 'Y') or
2863 not (pa_fp_view_plans_pub.G_AMT_OR_PD = 'P') then
2864 --hr_utility.trace('user_specified: period_profile matches');
2865 -- PERIOD PROFILES MATCH: GO AHEAD WITH MERGING
2866 pa_fp_view_plans_pub.G_DISPLAY_FROM := 'BOTH';
2867 select version_number,
2868 version_name
2869 into l_cost_version_number,
2870 l_cost_version_name
2871 from pa_budget_versions
2872 where budget_version_id = pa_fp_view_plans_pub.G_FP_COST_VERSION_ID;
2873 pa_fp_view_plans_pub.G_FP_COST_VERSION_NUMBER := l_cost_version_number;
2874 pa_fp_view_plans_pub.G_FP_COST_VERSION_NAME := l_cost_version_name;
2875 select version_number,
2876 version_name
2877 into l_rev_version_number,
2878 l_rev_version_name
2879 from pa_budget_versions
2880 where budget_version_id = pa_fp_view_plans_pub.G_FP_REV_VERSION_ID;
2881 pa_fp_view_plans_pub.G_FP_REV_VERSION_NUMBER := l_rev_version_number;
2882 pa_fp_view_plans_pub.G_FP_REV_VERSION_NAME := l_rev_version_name;
2883 --hr_utility.trace('entering pa_fp_vp_pop_tables_separate');
2884 pa_fp_view_plans_pub.pa_fp_vp_pop_tables_separate
2885 (p_project_id => p_project_id,
2886 p_cost_budget_version_id => pa_fp_view_plans_pub.G_FP_COST_VERSION_ID,
2887 p_rev_budget_version_id => pa_fp_view_plans_pub.G_FP_REV_VERSION_ID,
2888 x_return_status => l_return_status,
2889 x_msg_count => l_msg_count,
2890 x_msg_data => l_msg_data);
2891 --hr_utility.trace('exiting pa_fp_vp_pop_tables_separate');
2892 else
2893 -- PERIOD PROFILES DO NOT MATCH: ERROR MESSAGE
2894 --hr_utility.trace('user-defined bvs: merge failed because mismatch pd profiles');
2895 l_diff_pd_profile_flag := 'Y';
2896 pa_fp_view_plans_pub.G_DISPLAY_FROM := 'BOTH';
2897 select version_number,
2898 version_name
2899 into l_cost_version_number,
2900 l_cost_version_name
2901 from pa_budget_versions
2902 where budget_version_id = pa_fp_view_plans_pub.G_FP_COST_VERSION_ID;
2903 pa_fp_view_plans_pub.G_FP_COST_VERSION_NUMBER := l_cost_version_number;
2904 pa_fp_view_plans_pub.G_FP_COST_VERSION_NAME := l_cost_version_name;
2905 select version_number,
2906 version_name
2907 into l_rev_version_number,
2908 l_rev_version_name
2909 from pa_budget_versions
2910 where budget_version_id = pa_fp_view_plans_pub.G_FP_REV_VERSION_ID;
2911 pa_fp_view_plans_pub.G_FP_REV_VERSION_NUMBER := l_rev_version_number;
2912 pa_fp_view_plans_pub.G_FP_REV_VERSION_NAME := l_rev_version_name;
2913 pa_fp_view_plans_pub.pa_fp_vp_pop_tables_separate
2914 (p_project_id => p_project_id,
2915 p_cost_budget_version_id => pa_fp_view_plans_pub.G_FP_COST_VERSION_ID,
2916 p_rev_budget_version_id => pa_fp_view_plans_pub.G_FP_REV_VERSION_ID,
2917 x_return_status => l_return_status,
2918 x_msg_count => l_msg_count,
2919 x_msg_data => l_msg_data);
2920 end if;
2921 else
2922 if pa_fp_view_plans_pub.G_FP_COST_VERSION_ID is not null then
2923 pa_fp_view_plans_pub.G_DISPLAY_FROM := 'COST';
2924 select version_number,
2925 version_name
2926 into l_cost_version_number,
2927 l_cost_version_name
2928 from pa_budget_versions
2929 where budget_version_id = pa_fp_view_plans_pub.G_FP_COST_VERSION_ID;
2930 l_rev_version_number := null;
2931 l_rev_version_name := ' ';
2932 pa_fp_view_plans_pub.G_FP_COST_VERSION_NAME := l_cost_version_name;
2933 pa_fp_view_plans_pub.G_FP_COST_VERSION_NUMBER := l_cost_version_number;
2934 pa_fp_view_plans_pub.pa_fp_vp_pop_tables_single
2935 (p_project_id => p_project_id,
2936 p_budget_version_id => pa_fp_view_plans_pub.G_FP_COST_VERSION_ID,
2937 p_cost_or_rev => 'C',
2938 x_return_status => l_return_status,
2939 x_msg_count => l_msg_count,
2940 x_msg_data => l_msg_data);
2941
2942 else
2943 pa_fp_view_plans_pub.G_DISPLAY_FROM := 'REVENUE';
2944 select version_number,
2945 version_name
2946 into l_rev_version_number,
2947 l_rev_version_name
2948 from pa_budget_versions
2949 where budget_version_id = pa_fp_view_plans_pub.G_FP_REV_VERSION_ID;
2950 l_cost_version_number := null;
2951 l_cost_version_name := ' ';
2952 pa_fp_view_plans_pub.G_FP_REV_VERSION_NUMBER := l_rev_version_number;
2953 pa_fp_view_plans_pub.G_FP_REV_VERSION_NAME := l_rev_version_name;
2954 pa_fp_view_plans_pub.pa_fp_vp_pop_tables_single
2955 (p_project_id => p_project_id,
2956 p_budget_version_id => pa_fp_view_plans_pub.G_FP_REV_VERSION_ID,
2957 p_cost_or_rev => 'R',
2958 x_return_status => l_return_status,
2959 x_msg_count => l_msg_count,
2960 x_msg_data => l_msg_data);
2961 end if;
2962 end if; -- both versions not null
2963 end if; -- l_fp_preference_code
2964
2965 -- USER DID NOT SPECIFY ANY BUDGET VERSIONS; PROCEED AS NORMAL
2966 else
2967 --hr_utility.trace('USER DID NOT SPECIFY ANY BUDGET VERSIONS: 1000');
2968
2969 select DECODE(budget_status_code,
2970 'B', 'B',
2971 'W'),
2972 fin_plan_type_id
2973 into l_working_or_baselined,
2974 l_fin_plan_type_id
2975 from pa_budget_versions
2976 where budget_version_id = p_budget_version_id;
2977 -- retrieve fin_plan_preference_code from PLAN_TYPE record
2978 select fin_plan_preference_code
2979 into l_fp_preference_code
2980 from pa_proj_fp_options
2981 where fin_plan_type_id = l_fin_plan_type_id and
2982 fin_plan_option_level_code = 'PLAN_TYPE' and
2983 project_id = p_project_id;
2984
2985 -- if the preference code is 'COST_AND_REV_SAME', then we only need this one version
2986 -- we blindly insert all rows for the budget version into the temp table
2987 if l_fp_preference_code = 'COST_AND_REV_SAME' then
2988 pa_debug.write('pa_fp_view_plans_pub.view_plan_temp_tables', '200: pref = COST_AND_REV_SAME', 1);
2989 --hr_utility.trace('COST_AND_REV_SAME');
2990 pa_fp_view_plans_pub.G_DISPLAY_FROM := 'ANY';
2991 select version_name,
2992 version_number
2993 into l_cost_version_name,
2994 l_cost_version_number
2995 from pa_budget_versions
2996 where budget_version_id = p_budget_version_id;
2997 l_rev_version_name := l_cost_version_name;
2998 l_rev_version_number := l_cost_version_number;
2999 pa_fp_view_plans_pub.G_FP_ALL_VERSION_ID := p_budget_version_id;
3000 pa_fp_view_plans_pub.G_FP_ALL_VERSION_NAME := l_cost_version_name;
3001 pa_fp_view_plans_pub.G_FP_ALL_VERSION_NUMBER := l_cost_version_number;
3002 pa_fp_view_plans_pub.pa_fp_vp_pop_tables_together
3003 (p_project_id => p_project_id,
3004 p_budget_version_id => p_budget_version_id,
3005 x_return_status => l_return_status,
3006 x_msg_count => l_msg_count,
3007 x_msg_data => l_msg_data);
3008
3009 -- if the preference code is 'COST_ONLY', then we have the bvID of the COST version
3010 -- and we don't have to do anything else
3011 elsif l_fp_preference_code = 'COST_ONLY' then
3012 pa_debug.write('pa_fp_view_plans_pub.view_plan_temp_tables', '300: pref=COST_ONLY', 1);
3013 --hr_utility.trace('COST_ONLY');
3014 pa_fp_view_plans_pub.G_DISPLAY_FROM := 'COST';
3015 select version_number,
3016 version_name
3017 into l_cost_version_number,
3018 l_cost_version_name
3019 from pa_budget_versions
3020 where budget_version_id = p_budget_version_id;
3021 l_rev_version_number := null;
3022 l_rev_version_name := ' ';
3023 pa_fp_view_plans_pub.G_FP_COST_VERSION_ID := p_budget_version_id;
3024 pa_fp_view_plans_pub.G_FP_COST_VERSION_NAME := l_cost_version_name;
3025 pa_fp_view_plans_pub.G_FP_COST_VERSION_NUMBER := l_cost_version_number;
3026 pa_fp_view_plans_pub.pa_fp_vp_pop_tables_single
3027 (p_project_id => p_project_id,
3028 p_budget_version_id => p_budget_version_id,
3029 p_cost_or_rev => 'C',
3030 x_return_status => l_return_status,
3031 x_msg_count => l_msg_count,
3032 x_msg_data => l_msg_data);
3033
3034 elsif l_fp_preference_code = 'REVENUE_ONLY' then
3035 pa_debug.write('pa_fp_view_plans_pub.view_plan_temp_tables', '400: pref=REVENUE_ONLY', 1);
3036 --hr_utility.trace('REVENUE_ONLY');
3037 pa_fp_view_plans_pub.G_DISPLAY_FROM := 'REVENUE';
3038 select version_number,
3039 version_name
3040 into l_rev_version_number,
3041 l_rev_version_name
3042 from pa_budget_versions
3043 where budget_version_id = p_budget_version_id;
3044 l_cost_version_number := null;
3045 l_cost_version_name := ' ';
3046 pa_fp_view_plans_pub.G_FP_REV_VERSION_ID := p_budget_version_id;
3047 pa_fp_view_plans_pub.G_FP_REV_VERSION_NAME := l_rev_version_name;
3048 pa_fp_view_plans_pub.G_FP_REV_VERSION_NUMBER := l_rev_version_number;
3049 pa_fp_view_plans_pub.pa_fp_vp_pop_tables_single
3050 (p_project_id => p_project_id,
3051 p_budget_version_id => p_budget_version_id,
3052 p_cost_or_rev => 'R',
3053 x_return_status => l_return_status,
3054 x_msg_count => l_msg_count,
3055 x_msg_data => l_msg_data);
3056
3057
3058 -- if preference_code is 'COST_AND_REV_SEP' we look for the other one
3059 -- the other one will also have preference_code = 'COST_AND_REV_SEP', and we will
3060 -- have to inspect bv.version_type (which can be 'COST', 'REVENUE', etc)
3061 else
3062 -- find the appropriate current working version
3063 pa_debug.write('pa_fp_view_plans_pub.view_plan_temp_tables', '400: pref=COST_AND_REV_SEP', 1);
3064 --hr_utility.trace('COST_AND_REV_SEP');
3065 if l_working_or_baselined = 'W' then
3066 -- determine whether we have the COST or REVENUE version, and look for the other one
3067 if p_cost_or_revenue = 'C' then
3068 pa_debug.write('pa_fp_view_plans_pub.view_plan_temp_tables', '500: pref=COST_AND_REV_SEP, WORKING, COST', 2);
3069 --hr_utility.trace('we have a working cost version');
3070 -- we have the COST version, so look for REVENUE version with 'COST_AND_REV_SEP'
3071 open l_compl_crsep_c_w_csr;
3072 fetch l_compl_crsep_c_w_csr into l_compl_crsep_c_w_rec;
3073 if l_compl_crsep_c_w_csr%NOTFOUND then
3074 l_compl_budget_version_id := -99;
3075 l_compl_proj_fp_options_id := -99;
3076 else
3077 l_compl_budget_version_id := l_compl_crsep_c_w_rec.budget_version_id;
3078 l_compl_proj_fp_options_id := l_compl_crsep_c_w_rec.proj_fp_options_id;
3079 end if; -- l_compl_crsep_c_w_csr: no data found
3080 close l_compl_crsep_c_w_csr;
3081 if l_compl_budget_version_id = -99 then
3082 -- did not find a compl for the COST version; just process COST version
3083 pa_debug.write('pa_fp_view_plans_pub.view_plan_temp_tables', '600: pref=COST_AND_REV_SEP, WORKING, COST - did not find complement', 1);
3084 --hr_utility.trace('could NOT find complement for working cost version');
3085 pa_fp_view_plans_pub.G_DISPLAY_FROM := 'COST';
3086 select version_number,
3087 version_name
3088 into l_cost_version_number,
3089 l_cost_version_name
3090 from pa_budget_versions
3091 where budget_version_id = p_budget_version_id;
3092 l_rev_version_number := null;
3093 l_rev_version_name := ' ';
3094 pa_fp_view_plans_pub.G_FP_COST_VERSION_ID := p_budget_version_id;
3095 pa_fp_view_plans_pub.G_FP_COST_VERSION_NAME := l_cost_version_name;
3096 pa_fp_view_plans_pub.G_FP_COST_VERSION_NUMBER := l_cost_version_number;
3097 pa_fp_view_plans_pub.pa_fp_vp_pop_tables_single
3098 (p_project_id => p_project_id,
3099 p_budget_version_id => p_budget_version_id,
3100 p_cost_or_rev => 'C',
3101 x_return_status => l_return_status,
3102 x_msg_count => l_msg_count,
3103 x_msg_data => l_msg_data);
3104 else
3105 -- found a compl for the COST version: merge only if period profiles are compatible
3106 select period_profile_id
3107 into l_period_profile_id1
3108 from pa_budget_versions
3109 where budget_version_id = p_budget_version_id;
3110 select period_profile_id
3111 into l_period_profile_id2
3112 from pa_budget_versions
3113 where budget_version_id = l_compl_budget_version_id;
3114 if (pa_fp_view_plans_util.check_compatible_pd_profiles
3115 (p_period_profile_id1 => l_period_profile_id1,
3116 p_period_profile_id2 => l_period_profile_id2) = 'Y') or
3117 not (pa_fp_view_plans_pub.G_AMT_OR_PD = 'P') then
3118 --merge the COST and REVENUE versions
3119 pa_debug.write('pa_fp_view_plans_pub.view_plan_temp_tables', '700: pref=COST_AND_REV_SEP, WORKING, COST - found complement,and passed period profile check', 1);
3120 --hr_utility.trace('found complement for working cost version AND period profile match');
3121 pa_fp_view_plans_pub.G_DISPLAY_FROM := 'BOTH';
3122 select version_number,
3123 version_name
3124 into l_cost_version_number,
3125 l_cost_version_name
3126 from pa_budget_versions
3127 where budget_version_id = p_budget_version_id;
3128 select version_number,
3129 version_name
3130 into l_rev_version_number,
3131 l_rev_version_name
3132 from pa_budget_versions
3133 where budget_version_id = l_compl_budget_version_id;
3134 pa_fp_view_plans_pub.G_FP_COST_VERSION_ID := p_budget_version_id;
3135 pa_fp_view_plans_pub.G_FP_COST_VERSION_NUMBER := l_cost_version_number;
3136 pa_fp_view_plans_pub.G_FP_COST_VERSION_NAME := l_cost_version_name;
3137 pa_fp_view_plans_pub.G_FP_REV_VERSION_ID := l_compl_budget_version_id;
3138 pa_fp_view_plans_pub.G_FP_REV_VERSION_NAME := l_rev_version_name;
3139 pa_fp_view_plans_pub.G_FP_REV_VERSION_NUMBER := l_rev_version_number;
3140 pa_fp_view_plans_pub.pa_fp_vp_pop_tables_separate
3141 (p_project_id => p_project_id,
3142 p_cost_budget_version_id => p_budget_version_id,
3143 p_rev_budget_version_id => l_compl_budget_version_id,
3144 x_return_status => l_return_status,
3145 x_msg_count => l_msg_count,
3146 x_msg_data => l_msg_data);
3147 else
3148 -- the period profiles didn't match: only process one of the versions
3149 pa_debug.write('pa_fp_view_plans_pub.view_plan_temp_tables', '800: pref=COST_AND_REV_SEP, WORKING, COST - found complement,BUT did not pass period profile check', 1);
3150 --hr_utility.trace('found complement for working cost version BUT no per profile match');
3151 l_diff_pd_profile_flag := 'Y';
3152
3153 pa_fp_view_plans_pub.G_DISPLAY_FROM := 'COST';
3154 select version_number,
3155 version_name
3156 into l_cost_version_number,
3157 l_cost_version_name
3158 from pa_budget_versions
3159 where budget_version_id = p_budget_version_id;
3160 l_rev_version_number := null;
3161 l_rev_version_name := ' ';
3162 pa_fp_view_plans_pub.G_FP_COST_VERSION_ID := p_budget_version_id;
3163 pa_fp_view_plans_pub.G_FP_COST_VERSION_NAME := l_cost_version_name;
3164 pa_fp_view_plans_pub.G_FP_COST_VERSION_NUMBER := l_cost_version_number;
3165 pa_fp_view_plans_pub.pa_fp_vp_pop_tables_single
3166 (p_project_id => p_project_id,
3167 p_budget_version_id => p_budget_version_id,
3168 p_cost_or_rev => 'C',
3169 x_return_status => l_return_status,
3170 x_msg_count => l_msg_count,
3171 x_msg_data => l_msg_data);
3172
3173 /* -- INCOMPATIBLE PERIOD PROFILES: WORKING COST ---
3174 * ERROR MESSAGE HANDLING HERE
3175 pa_fp_view_plans_pub.G_DISPLAY_FROM := 'COST';
3176 select version_number,
3177 version_name
3178 into l_cost_version_number,
3179 l_cost_version_name
3180 from pa_budget_versions
3181 where budget_version_id = p_budget_version_id;
3182 l_rev_version_number := null;
3183 l_rev_version_name := ' ';
3184 pa_fp_view_plans_pub.G_FP_COST_VERSION_NAME := l_cost_version_name;
3185 pa_fp_view_plans_pub.G_FP_COST_VERSION_NUMBER := l_cost_version_number;
3186 pa_fp_view_plans_pub.pa_fp_vp_pop_tables_single
3187 (p_project_id => p_project_id,
3188 p_budget_version_id => p_budget_version_id,
3189 p_cost_or_rev => 'C',
3190 x_return_status => l_return_status,
3191 x_msg_count => l_msg_count,
3192 x_msg_data => l_msg_data);
3193 */
3194 end if;
3195 end if; -- l_compl_budget_version_id is null
3196 else
3197 -- we have the REVENUE version, so look for COST version with 'COST_AND_REV_SEP'
3198 pa_debug.write('pa_fp_view_plans_pub.view_plan_temp_tables', '900: pref=COST_AND_REV_SEP, WORKING, REVENUE', 1);
3199 --hr_utility.trace('we have a working revenue version');
3200 open l_compl_crsep_r_w_csr;
3201 fetch l_compl_crsep_r_w_csr into l_compl_crsep_r_w_rec;
3202 if l_compl_crsep_r_w_csr%NOTFOUND then
3203 l_compl_budget_version_id := -99;
3204 l_compl_proj_fp_options_id := -99;
3205 else
3206 l_compl_budget_version_id := l_compl_crsep_r_w_rec.budget_version_id;
3207 l_compl_proj_fp_options_id := l_compl_crsep_r_w_rec.proj_fp_options_id;
3208 end if; --l_compl_crsep_r_w_csr: no data found
3209 close l_compl_crsep_r_w_csr;
3210 if l_compl_budget_version_id = -99 then
3211 -- did not find a compl for the REVENUE version; just process REVENUE version
3212 pa_debug.write('pa_fp_view_plans_pub.view_plan_temp_tables', '1000: pref=COST_AND_REV_SEP, WORKING, REVENUE - did not find complement', 1);
3213 --hr_utility.trace('could not find complement for working revenue version');
3214 pa_fp_view_plans_pub.G_DISPLAY_FROM := 'REVENUE';
3215 select version_number,
3216 version_name
3217 into l_rev_version_number,
3218 l_rev_version_name
3219 from pa_budget_versions
3220 where budget_version_id = p_budget_version_id;
3221 l_cost_version_number := null;
3222 l_cost_version_name := ' ';
3223 pa_fp_view_plans_pub.G_FP_REV_VERSION_ID := p_budget_version_id;
3224 pa_fp_view_plans_pub.G_FP_REV_VERSION_NAME := l_rev_version_name;
3225 pa_fp_view_plans_pub.G_FP_REV_VERSION_NUMBER := l_rev_version_number;
3226 pa_fp_view_plans_pub.pa_fp_vp_pop_tables_single
3227 (p_project_id => p_project_id,
3228 p_budget_version_id => p_budget_version_id,
3229 p_cost_or_rev => 'R',
3230 x_return_status => l_return_status,
3231 x_msg_count => l_msg_count,
3232 x_msg_data => l_msg_data);
3233 else
3234 -- found a compl for the REVENUE version; merge only if period profiles are compatible
3235 select period_profile_id
3236 into l_period_profile_id1
3237 from pa_budget_versions
3238 where budget_version_id = p_budget_version_id;
3239 select period_profile_id
3240 into l_period_profile_id2
3241 from pa_budget_versions
3242 where budget_version_id = l_compl_budget_version_id;
3243 if (pa_fp_view_plans_util.check_compatible_pd_profiles
3244 (p_period_profile_id1 => l_period_profile_id1,
3245 p_period_profile_id2 => l_period_profile_id2) = 'Y') or
3246 not (pa_fp_view_plans_pub.G_AMT_OR_PD = 'P') then
3247 --merge the COST and REVENUE versions
3248 pa_debug.write('pa_fp_view_plans_pub.view_plan_temp_tables', '1100: pref=COST_AND_REV_SEP, WORKING, REVENUE - found complement, and passed period profiles test', 1);
3249 --hr_utility.trace('found compl for working revenue version AND period profile match');
3250 pa_fp_view_plans_pub.G_DISPLAY_FROM := 'BOTH';
3251 select version_number,
3252 version_name
3253 into l_rev_version_number,
3254 l_rev_version_name
3255 from pa_budget_versions
3256 where budget_version_id = p_budget_version_id;
3257 select version_number,
3258 version_name
3259 into l_cost_version_number,
3260 l_cost_version_name
3261 from pa_budget_versions
3262 where budget_version_id = l_compl_budget_version_id;
3263 pa_fp_view_plans_pub.G_FP_COST_VERSION_ID := l_compl_budget_version_id;
3264 pa_fp_view_plans_pub.G_FP_COST_VERSION_NUMBER := l_cost_version_number;
3265 pa_fp_view_plans_pub.G_FP_COST_VERSION_NAME := l_cost_version_name;
3266 pa_fp_view_plans_pub.G_FP_REV_VERSION_ID := p_budget_version_id;
3267 pa_fp_view_plans_pub.G_FP_REV_VERSION_NAME := l_rev_version_name;
3268 pa_fp_view_plans_pub.G_FP_REV_VERSION_NUMBER := l_rev_version_number;
3269 pa_fp_view_plans_pub.pa_fp_vp_pop_tables_separate
3270 (p_project_id => p_project_id,
3271 p_cost_budget_version_id => l_compl_budget_version_id,
3272 p_rev_budget_version_id => p_budget_version_id,
3273 x_return_status => l_return_status,
3274 x_msg_count => l_msg_count,
3275 x_msg_data => l_msg_data);
3276 else
3277 -- the period profiles didn't match: only process one of the versions
3278 pa_debug.write('pa_fp_view_plans_pub.view_plan_temp_tables', '1200: pref=COST_AND_REV_SEP, WORKING, REVENUE - found complement, BUT did not pass period profiles test', 1);
3279 --hr_utility.trace('found compl for working revenue version BUT no per profile match');
3280 l_diff_pd_profile_flag := 'Y';
3281 pa_fp_view_plans_pub.G_DISPLAY_FROM := 'REVENUE';
3282 select version_number,
3283 version_name
3284 into l_rev_version_number,
3285 l_rev_version_name
3286 from pa_budget_versions
3287 where budget_version_id = p_budget_version_id;
3288 l_cost_version_number := null;
3289 l_cost_version_name := ' ';
3290 pa_fp_view_plans_pub.G_FP_REV_VERSION_ID := p_budget_version_id;
3291 pa_fp_view_plans_pub.G_FP_REV_VERSION_NAME := l_rev_version_name;
3292 pa_fp_view_plans_pub.G_FP_REV_VERSION_NUMBER := l_rev_version_number;
3293 pa_fp_view_plans_pub.pa_fp_vp_pop_tables_single
3294 (p_project_id => p_project_id,
3295 p_budget_version_id => p_budget_version_id,
3296 p_cost_or_rev => 'R',
3297 x_return_status => l_return_status,
3298 x_msg_count => l_msg_count,
3299 x_msg_data => l_msg_data);
3300 /* -- INCOMPATIBLE PERIOD PROFILES: WORKING COST ---
3301 * ERROR MESSAGE HANDLING HERE
3302 pa_fp_view_plans_pub.G_DISPLAY_FROM := 'REVENUE';
3303 select version_number,
3304 version_name
3305 into l_rev_version_number,
3306 l_rev_version_name
3307 from pa_budget_versions
3308 where budget_version_id = p_budget_version_id;
3309 l_cost_version_number := null;
3310 l_cost_version_name := ' ';
3311 pa_fp_view_plans_pub.G_FP_REV_VERSION_NAME := l_rev_version_name;
3312 pa_fp_view_plans_pub.G_FP_REV_VERSION_NUMBER := l_rev_version_number;
3313 pa_fp_view_plans_pub.pa_fp_vp_pop_tables_single
3314 (p_project_id => p_project_id,
3315 p_budget_version_id => p_budget_version_id,
3316 p_cost_or_rev => 'R',
3317 x_return_status => l_return_status,
3318 x_msg_count => l_msg_count,
3319 x_msg_data => l_msg_data);
3320 */
3321 end if;
3322 end if; -- l_compl_budget_version_id is null
3323 end if; -- p_cost_or_revenue = 'C'
3324
3325 -- find the appropriate current baselined version
3326 else
3327 -- determine whether we have the COST or REVENUE version, and look for the other one
3328 if p_cost_or_revenue = 'C' then
3329 -- we have the COST version, so look for REVENUE version with 'COST_AND_REV_SEP'
3330 pa_debug.write('pa_fp_view_plans_pub.view_plan_temp_tables', '1300: pref=COST_AND_REV_SEP, BASELINED, COST', 1);
3331 --hr_utility.trace('we have a baselined cost version');
3332 open l_compl_crsep_c_b_csr;
3333 fetch l_compl_crsep_c_b_csr into l_compl_crsep_c_b_rec;
3334 if l_compl_crsep_c_b_csr%NOTFOUND then
3335 l_compl_budget_version_id := -99;
3336 l_compl_proj_fp_options_id := -99;
3337 else
3338 l_compl_budget_version_id := l_compl_crsep_c_b_rec.budget_version_id;
3339 l_compl_proj_fp_options_id := l_compl_crsep_c_b_rec.proj_fp_options_id;
3340 end if; -- l_compl_crsep_c_b_csr: no data found
3341 close l_compl_crsep_c_b_csr;
3342 if l_compl_budget_version_id = -99 then
3343 -- did not find a compl for the COST version; just process COST version
3344 pa_debug.write('pa_fp_view_plans_pub.view_plan_temp_tables', '1400: pref=COST_AND_REV_SEP, BASELINED, COST - did not find complement', 1);
3345 --hr_utility.trace('could not find complement for baselined cost version');
3346 pa_fp_view_plans_pub.G_DISPLAY_FROM := 'COST';
3347 select version_number,
3348 version_name
3349 into l_cost_version_number,
3350 l_cost_version_name
3351 from pa_budget_versions
3352 where budget_version_id = p_budget_version_id;
3353 l_rev_version_number := null;
3354 l_rev_version_name := ' ';
3355 pa_fp_view_plans_pub.G_FP_COST_VERSION_ID := p_budget_version_id;
3356 pa_fp_view_plans_pub.G_FP_COST_VERSION_NAME := l_cost_version_name;
3357 pa_fp_view_plans_pub.G_FP_COST_VERSION_NUMBER := l_cost_version_number;
3358 pa_fp_view_plans_pub.pa_fp_vp_pop_tables_single
3359 (p_project_id => p_project_id,
3360 p_budget_version_id => p_budget_version_id,
3361 p_cost_or_rev => 'C',
3362 x_return_status => l_return_status,
3363 x_msg_count => l_msg_count,
3364 x_msg_data => l_msg_data);
3365 else
3366 -- found a compl for the COST version; merge only if period profiles are compatible
3367 select period_profile_id
3368 into l_period_profile_id1
3369 from pa_budget_versions
3370 where budget_version_id = p_budget_version_id;
3371 select period_profile_id
3372 into l_period_profile_id2
3373 from pa_budget_versions
3374 where budget_version_id = l_compl_budget_version_id;
3375 if (pa_fp_view_plans_util.check_compatible_pd_profiles
3376 (p_period_profile_id1 => l_period_profile_id1,
3377 p_period_profile_id2 => l_period_profile_id2) = 'Y') or
3378 not (pa_fp_view_plans_pub.G_AMT_OR_PD = 'P') then
3379 --merge the COST and REVENUE versions
3380 pa_debug.write('pa_fp_view_plans_pub.view_plan_temp_tables', '1500: pref=COST_AND_REV_SEP, BASELINED, COST - found complement, and passed period profiles test', 1);
3381 --hr_utility.trace('found compl for baselined cost AND period profile match');
3382 pa_fp_view_plans_pub.G_DISPLAY_FROM := 'BOTH';
3383 select version_number,
3384 version_name
3385 into l_cost_version_number,
3386 l_cost_version_name
3387 from pa_budget_versions
3388 where budget_version_id = p_budget_version_id;
3389 select version_number,
3390 version_name
3391 into l_rev_version_number,
3392 l_rev_version_name
3393 from pa_budget_versions
3394 where budget_version_id = l_compl_budget_version_id;
3395 pa_fp_view_plans_pub.G_FP_COST_VERSION_ID := p_budget_version_id;
3396 pa_fp_view_plans_pub.G_FP_COST_VERSION_NUMBER := l_cost_version_number;
3397 pa_fp_view_plans_pub.G_FP_COST_VERSION_NAME := l_cost_version_name;
3398 pa_fp_view_plans_pub.G_FP_REV_VERSION_ID := l_compl_budget_version_id;
3399 pa_fp_view_plans_pub.G_FP_REV_VERSION_NAME := l_rev_version_name;
3400 pa_fp_view_plans_pub.G_FP_REV_VERSION_NUMBER := l_rev_version_number;
3401 pa_fp_view_plans_pub.pa_fp_vp_pop_tables_separate
3402 (p_project_id => p_project_id,
3403 p_cost_budget_version_id => p_budget_version_id,
3404 p_rev_budget_version_id => l_compl_budget_version_id,
3405 x_return_status => l_return_status,
3406 x_msg_count => l_msg_count,
3407 x_msg_data => l_msg_data);
3408 else
3409 -- period_profiles don't match; process only the COST version
3410 pa_debug.write('pa_fp_view_plans_pub.view_plan_temp_tables', '1600: pref=COST_AND_REV_SEP, BASELINED, COST - found complement, BUT did not pass period profiles test', 1);
3411 --hr_utility.trace('found compl for baselined cost BUT no period profile match');
3412 l_diff_pd_profile_flag := 'Y';
3413 pa_fp_view_plans_pub.G_DISPLAY_FROM := 'COST';
3414 select version_number,
3415 version_name
3416 into l_cost_version_number,
3417 l_cost_version_name
3418 from pa_budget_versions
3419 where budget_version_id = p_budget_version_id;
3420 l_rev_version_number := null;
3421 l_rev_version_name := ' ';
3422 pa_fp_view_plans_pub.G_FP_COST_VERSION_ID := p_budget_version_id;
3423 pa_fp_view_plans_pub.G_FP_COST_VERSION_NAME := l_cost_version_name;
3424 pa_fp_view_plans_pub.G_FP_COST_VERSION_NUMBER := l_cost_version_number;
3425 pa_fp_view_plans_pub.pa_fp_vp_pop_tables_single
3426 (p_project_id => p_project_id,
3427 p_budget_version_id => p_budget_version_id,
3428 p_cost_or_rev => 'C',
3429 x_return_status => l_return_status,
3430 x_msg_count => l_msg_count,
3431 x_msg_data => l_msg_data);
3432 /* -- INCOMPATIBLE PERIOD PROFILES: WORKING COST ---
3433 * ERROR MESSAGE HANDLING HERE
3434 pa_fp_view_plans_pub.G_DISPLAY_FROM := 'COST';
3435 select version_number,
3436 version_name
3437 into l_cost_version_number,
3438 l_cost_version_name
3439 from pa_budget_versions
3440 where budget_version_id = p_budget_version_id;
3441 l_rev_version_number := null;
3442 l_rev_version_name := ' ';
3443 pa_fp_view_plans_pub.G_FP_COST_VERSION_NAME := l_cost_version_name;
3444 pa_fp_view_plans_pub.G_FP_COST_VERSION_NUMBER := l_cost_version_number;
3445 pa_fp_view_plans_pub.pa_fp_vp_pop_tables_single
3446 (p_project_id => p_project_id,
3447 p_budget_version_id => p_budget_version_id,
3448 p_cost_or_rev => 'C',
3449 x_return_status => l_return_status,
3450 x_msg_count => l_msg_count,
3451 x_msg_data => l_msg_data);
3452 */
3453 end if; -- period profiles match
3454 end if; -- l_compl_budget_version_id is null
3455
3456 else
3457 -- we have the REVENUE version, so look for COST version with 'COST_AND_REV_SEP'
3458 pa_debug.write('pa_fp_view_plans_pub.view_plan_temp_tables', '1700: pref=COST_AND_REV_SEP, BASELINED, REVENUE', 1);
3459 --hr_utility.trace('we have a baselined revenue version');
3460 open l_compl_crsep_r_b_csr;
3461 fetch l_compl_crsep_r_b_csr into l_compl_crsep_r_b_rec;
3462 if l_compl_crsep_r_b_csr%NOTFOUND then
3463 l_compl_budget_version_id := -99;
3464 l_compl_proj_fp_options_id := -99;
3465 else
3466 l_compl_budget_version_id := l_compl_crsep_r_b_rec.budget_version_id;
3467 l_compl_proj_fp_options_id := l_compl_crsep_r_b_rec.proj_fp_options_id;
3468 end if; -- l_compl_crsep_r_b_csr: no data found
3469 close l_compl_crsep_r_b_csr;
3470 if l_compl_budget_version_id = -99 then
3471 -- did not find a compl for the REVENUE version; just process REVENUE version
3472 pa_debug.write('pa_fp_view_plans_pub.view_plan_temp_tables', '1800: pref=COST_AND_REV_SEP, BASELINED, REVENUE - did not find complement', 1);
3473 --hr_utility.trace('we have a baselined revenue version');
3474 pa_fp_view_plans_pub.G_DISPLAY_FROM := 'REVENUE';
3475 select version_number,
3476 version_name
3477 into l_rev_version_number,
3478 l_rev_version_name
3479 from pa_budget_versions
3480 where budget_version_id = p_budget_version_id;
3481 l_cost_version_number := null;
3482 l_cost_version_name := ' ';
3483 pa_fp_view_plans_pub.G_FP_REV_VERSION_ID := p_budget_version_id;
3484 pa_fp_view_plans_pub.G_FP_REV_VERSION_NAME := l_rev_version_name;
3485 pa_fp_view_plans_pub.G_FP_REV_VERSION_NUMBER := l_rev_version_number;
3486 pa_fp_view_plans_pub.pa_fp_vp_pop_tables_single
3487 (p_project_id => p_project_id,
3488 p_budget_version_id => p_budget_version_id,
3489 p_cost_or_rev => 'R',
3490 x_return_status => l_return_status,
3491 x_msg_count => l_msg_count,
3492 x_msg_data => l_msg_data);
3493 else
3494 -- found a compl for the REVENUE version; merge only if period profiles are compatible
3495 select period_profile_id
3496 into l_period_profile_id1
3497 from pa_budget_versions
3498 where budget_version_id = p_budget_version_id;
3499 select period_profile_id
3500 into l_period_profile_id2
3501 from pa_budget_versions
3502 where budget_version_id = l_compl_budget_version_id;
3503 if (pa_fp_view_plans_util.check_compatible_pd_profiles
3504 (p_period_profile_id1 => l_period_profile_id1,
3505 p_period_profile_id2 => l_period_profile_id2) = 'Y') or
3506 not (pa_fp_view_plans_pub.G_AMT_OR_PD = 'P') then
3507 --merge the COST and REVENUE versions
3508 pa_debug.write('pa_fp_view_plans_pub.view_plan_temp_tables', '1900: pref=COST_AND_REV_SEP, BASELINED, REVENUE - found complement, and passed period profiles test', 1);
3509 --hr_utility.trace('found compl for baselined revenue version AND period profile match');
3510 pa_fp_view_plans_pub.G_DISPLAY_FROM := 'BOTH';
3511 select version_number,
3512 version_name
3513 into l_rev_version_number,
3514 l_rev_version_name
3515 from pa_budget_versions
3516 where budget_version_id = p_budget_version_id;
3517 select version_number,
3518 version_name
3519 into l_cost_version_number,
3520 l_cost_version_name
3521 from pa_budget_versions
3522 where budget_version_id = l_compl_budget_version_id;
3523 pa_fp_view_plans_pub.G_FP_COST_VERSION_ID := l_compl_budget_version_id;
3524 pa_fp_view_plans_pub.G_FP_COST_VERSION_NUMBER := l_cost_version_number;
3525 pa_fp_view_plans_pub.G_FP_COST_VERSION_NAME := l_cost_version_name;
3526 pa_fp_view_plans_pub.G_FP_REV_VERSION_ID := p_budget_version_id;
3527 pa_fp_view_plans_pub.G_FP_REV_VERSION_NAME := l_rev_version_name;
3528 pa_fp_view_plans_pub.G_FP_REV_VERSION_NUMBER := l_rev_version_number;
3529 pa_fp_view_plans_pub.pa_fp_vp_pop_tables_separate
3530 (p_project_id => p_project_id,
3531 p_cost_budget_version_id => l_compl_budget_version_id,
3532 p_rev_budget_version_id => p_budget_version_id,
3533 x_return_status => l_return_status,
3534 x_msg_count => l_msg_count,
3535 x_msg_data => l_msg_data);
3536 else
3537 -- period profiles not compatible; just process REVENUE version
3538 pa_debug.write('pa_fp_view_plans_pub.view_plan_temp_tables', '2000: pref=COST_AND_REV_SEP, BASELINED, REVENUE - found complement, BUT did not pass period profiles test', 1);
3539 --hr_utility.trace('found compl for baselined revenue version BUT no per profile match');
3540 l_diff_pd_profile_flag := 'Y';
3541 pa_fp_view_plans_pub.G_DISPLAY_FROM := 'REVENUE';
3542 select version_number,
3543 version_name
3544 into l_rev_version_number,
3545 l_rev_version_name
3546 from pa_budget_versions
3547 where budget_version_id = p_budget_version_id;
3548 l_cost_version_number := null;
3549 l_cost_version_name := ' ';
3550 pa_fp_view_plans_pub.G_FP_REV_VERSION_ID := p_budget_version_id;
3551 pa_fp_view_plans_pub.G_FP_REV_VERSION_NAME := l_rev_version_name;
3552 pa_fp_view_plans_pub.G_FP_REV_VERSION_NUMBER := l_rev_version_number;
3553 pa_fp_view_plans_pub.pa_fp_vp_pop_tables_single
3554 (p_project_id => p_project_id,
3555 p_budget_version_id => p_budget_version_id,
3556 p_cost_or_rev => 'R',
3557 x_return_status => l_return_status,
3558 x_msg_count => l_msg_count,
3559 x_msg_data => l_msg_data);
3560 /* -- INCOMPATIBLE PERIOD PROFILES: WORKING COST ---
3561 * ERROR MESSAGE HANDLING HERE
3562 pa_fp_view_plans_pub.G_DISPLAY_FROM := 'REVENUE';
3563 select version_number,
3564 version_name
3565 into l_rev_version_number,
3566 l_rev_version_name
3567 from pa_budget_versions
3568 where budget_version_id = p_budget_version_id;
3569 l_cost_version_number := -1;
3570 l_cost_version_name := ' ';
3571 pa_fp_view_plans_pub.G_FP_REV_VERSION_NAME := l_rev_version_name;
3572 pa_fp_view_plans_pub.G_FP_REV_VERSION_NUMBER := l_rev_version_number;
3573 pa_fp_view_plans_pub.pa_fp_vp_pop_tables_single
3574 (p_project_id => p_project_id,
3575 p_budget_version_id => p_budget_version_id,
3576 p_cost_or_rev => 'R',
3577 x_return_status => l_return_status,
3578 x_msg_count => l_msg_count,
3579 x_msg_data => l_msg_data);
3580 */
3581 end if; -- period_profiles compatible
3582 end if; -- l_compl_budget_version_id is null
3583 end if; -- p_cost_or_revenue = 'C'
3584 end if; -- l_working_or_baselined = 'W'
3585 end if;
3586 x_cost_version_number := l_cost_version_number;
3587 x_rev_version_number := l_rev_version_number;
3588 x_cost_version_name := l_cost_version_name;
3589 x_rev_version_name := l_rev_version_name;
3590
3591 end if; -- p_user_bv_flag
3592 x_diff_pd_profile_flag := l_diff_pd_profile_flag;
3593 --hr_utility.trace('diff_pd_profile_flag= ' || x_diff_pd_profile_flag);
3594
3595 EXCEPTION
3596 when others then
3597 --hr_utility.trace('UNHANDLED EXCEPTION');
3598 rollback to VIEW_PLAN_TEMP_TABLES;
3599 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3600 x_msg_count := 1;
3601 x_msg_data := SQLERRM;
3602 FND_MSG_PUB.add_exc_msg( p_pkg_name => 'PA_FP_VIEW_PLANS_PUB',
3603 p_procedure_name => 'view_plan_temp_tables');
3604 pa_debug.reset_err_stack;
3605 raise FND_API.G_EXC_UNEXPECTED_ERROR;
3606
3607 end; -- procedure view_plan_temp_tables
3608 /* --------------------------------------------------------------------- */
3609
3610
3611
3612
3613 -- modified for new AMOUNT_TYPE_CODE and AMOUNT_SUBTYPE_CODE
3614 -- added logic for inserting RAW_COST and calculating MARGIN 6/20/02
3615 -- 11/13/2002 Dlai: updated cursors to select project OR projfunc numbers
3616 -- added logic for inserting rows for periodic view only if
3617 -- flag='Y' for that amount type
3618 -- 11/21/2002 Dlai: amts view global temporary table: new column = UNIT_OF_MEASURE
3619 -- 11/25/2002 Dlai: select ra.total_plan_quantity for labor hours
3620 -- 02/17/2003 Dlai: added l_pd_unit_of_measure (bug 2807032)
3621 -- 02/20/2003 Dlai: added l_has_child_element/l_pd_has_child_element
3622 -- 07/25/2003 Dlai: for PA_FIN_VP_PDS_VIEW_TMP, populate project_total
3623 procedure pa_fp_vp_pop_tables_separate
3624 (p_project_id IN pa_budget_versions.project_id%TYPE,
3625 p_cost_budget_version_id IN pa_budget_versions.budget_version_id%TYPE,
3626 p_rev_budget_version_id IN pa_budget_versions.budget_version_id%TYPE,
3627 x_return_status OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
3628 x_msg_count OUT NOCOPY NUMBER, --File.Sql.39 bug 4440895
3629 x_msg_data OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
3630 )
3631 is
3632 /* local variables */
3633 l_found_complement BOOLEAN;
3634 l_report_labor_hrs_from_code pa_proj_fp_options.report_labor_hrs_from_code%TYPE;
3635 l_cur_resource_assignment_id pa_resource_assignments.resource_assignment_id%TYPE;
3636 l_quantity_res_assignment_id pa_resource_assignments.resource_assignment_id%TYPE;
3637 l_row_number NUMBER; -- keep track of number of rows in PERIODS PL/SQL table
3638 l_cost_row_number NUMBER; -- PERIODS PL/SQL: cost row for calculating margin
3639 l_revenue_row_number NUMBER; -- PERIODS PL/SQL: rev row for calculating margin
3640 l_period_profile_id pa_proj_period_profiles.period_profile_id%TYPE; -- used to retrieve values for period numbers
3641 l_default_amount_type_code pa_proj_fp_options.default_amount_type_code%TYPE;
3642 l_default_amount_subtype_code pa_proj_fp_options.default_amount_subtype_code%TYPE;
3643 l_currency_type VARCHAR2(30);
3644
3645 cursor av_cost_csr is
3646 select ra.project_id,
3647 ra.task_id,
3648 ra.resource_list_member_id,
3649 ra.budget_version_id,
3650 ra.resource_assignment_id,
3651 -1 as revenue_budget_version_id, -- revenue_budget_version_id
3652 -1 as revenue_res_assignment_id, -- revenue_resource_assignment_id
3653 pa_fp_view_plans_util.assign_element_name
3654 (ra.project_id,
3655 ra.task_id,
3656 ra.resource_list_member_id) as element_name, -- element_name
3657 pa_fp_view_plans_util.assign_element_level
3658 (ra.project_id,
3659 ra.budget_version_id,
3660 ra.task_id,
3661 ra.resource_list_member_id) as element_level, -- element_level
3662 DECODE(pa_fp_view_plans_pub.G_FP_CALC_QUANTITY_FROM,
3663 'REVENUE', 0,
3664 -- ra.total_utilization_hours) as labor_hours,
3665 ra.total_plan_quantity) as labor_hours,
3666 DECODE(pa_fp_view_plans_pub.G_FP_CURRENCY_TYPE,
3667 'PROJ', ra.total_project_burdened_cost,
3668 ra.total_plan_burdened_cost) as burdened_cost, -- burdened_cost
3669 DECODE(pa_fp_view_plans_pub.G_FP_CURRENCY_TYPE,
3670 'PROJ', ra.total_project_raw_cost,
3671 ra.total_plan_raw_cost) as raw_cost, -- raw_cost
3672 0 as revenue, -- revenue
3673 0 as margin, -- margin
3674 0 as margin_percent, -- margin_percent
3675 DECODE(ra.resource_assignment_type,
3676 'ROLLED_UP', 'N',
3677 'USER_ENTERED', 'Y',
3678 'Y') as line_editable_flag, -- line_editable_flag
3679 pa_fp_view_plans_util.assign_row_level
3680 (ra.project_id,
3681 ra.task_id,
3682 ra.resource_list_member_id) as row_level,
3683 pa_fp_view_plans_util.assign_parent_element
3684 (ra.project_id,
3685 ra.task_id,
3686 ra.resource_list_member_id) as parent_element_name,
3687 ra.unit_of_measure
3688 from pa_resource_assignments ra
3689 where ra.budget_version_id = p_cost_budget_version_id and
3690 ((ra.resource_assignment_type = 'USER_ENTERED' and
3691 exists (select 1 from pa_budget_lines bl
3692 where bl.budget_version_id = ra.budget_version_id and
3693 bl.resource_assignment_id = ra.resource_assignment_id)) or
3694 ra.resource_assignment_type = 'ROLLED_UP');
3695
3696 cursor av_revenue_csr is
3697 select ra.project_id,
3698 ra.task_id,
3699 ra.resource_list_member_id,
3700 -1 as cost_budget_version_id, -- cost_budget_version_id
3701 -1 as cost_res_assignment_id, -- cost_resource_assignment_id
3702 ra.budget_version_id,
3703 ra.resource_assignment_id,
3704 pa_fp_view_plans_util.assign_element_name
3705 (ra.project_id,
3706 ra.task_id,
3707 ra.resource_list_member_id) as element_name, -- element_name
3708 pa_fp_view_plans_util.assign_element_level
3709 (ra.project_id,
3710 ra.budget_version_id,
3711 ra.task_id,
3712 ra.resource_list_member_id) as element_level, -- element_level
3713 DECODE(pa_fp_view_plans_pub.G_FP_CALC_QUANTITY_FROM,
3714 -- 'REVENUE', ra.total_utilization_hours,
3715 'REVENUE', ra.total_plan_quantity,
3716 0) as labor_hours, -- labor_hrs: 0 if not reported from this COST/REVENUE version
3717 0 as burdened_cost, -- burdened_cost
3718 0 as raw_cost, -- raw_cost
3719 DECODE(pa_fp_view_plans_pub.G_FP_CURRENCY_TYPE,
3720 'PROJ', ra.total_project_revenue,
3721 ra.total_plan_revenue) as revenue, -- revenue
3722 0 as margin, -- margin: leave this null until we visit the row again
3723 0 as margin_percent, -- margin_percent: leave this null until we visit the row again
3724 DECODE(ra.resource_assignment_type,
3725 'ROLLED_UP', 'N',
3726 'USER_ENTERED', 'Y',
3727 'Y'), -- line_editable_flag
3728 pa_fp_view_plans_util.assign_row_level
3729 (ra.project_id,
3730 ra.task_id,
3731 ra.resource_list_member_id) as row_level,
3732 pa_fp_view_plans_util.assign_parent_element
3733 (ra.project_id,
3734 ra.task_id,
3735 ra.resource_list_member_id) as parent_element_name,
3736 ra.unit_of_measure
3737 from pa_resource_assignments ra
3738 where ra.budget_version_id = p_rev_budget_version_id and
3739 ((ra.resource_assignment_type = 'USER_ENTERED' and
3740 exists (select 1 from pa_budget_lines bl
3741 where bl.budget_version_id = ra.budget_version_id and
3742 bl.resource_assignment_id = ra.resource_assignment_id)) or
3743 ra.resource_assignment_type = 'ROLLED_UP');
3744
3745 /* COST budget version: PL/SQL tables */
3746 l_c_project_id pa_fp_view_plans_pub.av_tab_project_id;
3747 l_c_task_id pa_fp_view_plans_pub.av_tab_task_id;
3748 l_c_resource_list_member_id pa_fp_view_plans_pub.av_tab_resource_list_member_id;
3749 l_c_cost_budget_version_id pa_fp_view_plans_pub.av_tab_cost_budget_version_id;
3750 l_c_cost_res_assignment_id pa_fp_view_plans_pub.av_tab_cost_res_assignment_id;
3751 l_c_revenue_budget_version_id pa_fp_view_plans_pub.av_tab_rev_budget_version_id;
3752 l_c_revenue_res_assignment_id pa_fp_view_plans_pub.av_tab_rev_res_assignment_id;
3753 l_c_element_name pa_fp_view_plans_pub.av_tab_element_name;
3754 l_c_element_level pa_fp_view_plans_pub.av_tab_element_level;
3755 l_c_labor_hours pa_fp_view_plans_pub.av_tab_labor_hours;
3756 l_c_burdened_cost pa_fp_view_plans_pub.av_tab_burdened_cost;
3757 l_c_raw_cost pa_fp_view_plans_pub.av_tab_raw_cost;
3758 l_c_revenue pa_fp_view_plans_pub.av_tab_revenue;
3759 l_c_margin pa_fp_view_plans_pub.av_tab_margin;
3760 l_c_margin_percent pa_fp_view_plans_pub.av_tab_margin_percent;
3761 l_c_line_editable_flag pa_fp_view_plans_pub.av_tab_line_editable;
3762 l_c_row_level pa_fp_view_plans_pub.av_tab_row_level;
3763 l_c_parent_element_name pa_fp_view_plans_pub.av_tab_element_name;
3764 l_c_unit_of_measure pa_fp_view_plans_pub.av_tab_unit_of_measure;
3765 l_c_has_child_element pa_fp_view_plans_pub.av_tab_has_child_element;
3766
3767 /* REVENUE budget version: PL/SQL tables */
3768 l_r_project_id pa_fp_view_plans_pub.av_tab_project_id;
3769 l_r_task_id pa_fp_view_plans_pub.av_tab_task_id;
3770 l_r_resource_list_member_id pa_fp_view_plans_pub.av_tab_resource_list_member_id;
3771 l_r_cost_budget_version_id pa_fp_view_plans_pub.av_tab_cost_budget_version_id;
3772 l_r_cost_res_assignment_id pa_fp_view_plans_pub.av_tab_cost_res_assignment_id;
3773 l_r_revenue_budget_version_id pa_fp_view_plans_pub.av_tab_rev_budget_version_id;
3774 l_r_revenue_res_assignment_id pa_fp_view_plans_pub.av_tab_rev_res_assignment_id;
3775 l_r_element_name pa_fp_view_plans_pub.av_tab_element_name;
3776 l_r_element_level pa_fp_view_plans_pub.av_tab_element_level;
3777 l_r_labor_hours pa_fp_view_plans_pub.av_tab_labor_hours;
3778 l_r_burdened_cost pa_fp_view_plans_pub.av_tab_burdened_cost;
3779 l_r_raw_cost pa_fp_view_plans_pub.av_tab_raw_cost;
3780 l_r_revenue pa_fp_view_plans_pub.av_tab_revenue;
3781 l_r_margin pa_fp_view_plans_pub.av_tab_margin;
3782 l_r_margin_percent pa_fp_view_plans_pub.av_tab_margin_percent;
3783 l_r_line_editable_flag pa_fp_view_plans_pub.av_tab_line_editable;
3784 l_r_row_level pa_fp_view_plans_pub.av_tab_row_level;
3785 l_r_parent_element_name pa_fp_view_plans_pub.av_tab_element_name;
3786 l_r_unit_of_measure pa_fp_view_plans_pub.av_tab_unit_of_measure;
3787 l_r_has_child_element pa_fp_view_plans_pub.av_tab_has_child_element;
3788
3789 /* PL/SQL table for PERIODS VIEW */
3790 l_pd_project_id pa_fp_view_plans_pub.av_tab_project_id;
3791 l_pd_task_id pa_fp_view_plans_pub.av_tab_task_id;
3792 l_pd_resource_list_member_id pa_fp_view_plans_pub.av_tab_resource_list_member_id;
3793 l_pd_unit_of_measure pa_fp_view_plans_pub.av_tab_unit_of_measure;
3794 l_pd_cost_budget_version_id pa_fp_view_plans_pub.av_tab_cost_budget_version_id;
3795 l_pd_cost_res_assignment_id pa_fp_view_plans_pub.av_tab_cost_res_assignment_id;
3796 l_pd_revenue_budget_version_id pa_fp_view_plans_pub.av_tab_rev_budget_version_id;
3797 l_pd_revenue_res_assignment_id pa_fp_view_plans_pub.av_tab_rev_res_assignment_id;
3798 l_pd_element_name pa_fp_view_plans_pub.av_tab_element_name;
3799 l_pd_element_level pa_fp_view_plans_pub.av_tab_element_level;
3800 l_pd_line_editable_flag pa_fp_view_plans_pub.av_tab_line_editable;
3801 l_pd_row_level pa_fp_view_plans_pub.av_tab_row_level;
3802 l_pd_parent_element_name pa_fp_view_plans_pub.av_tab_element_name;
3803 l_pd_amount_type pa_fp_view_plans_pub.av_tab_amount_type;
3804 l_pd_amount_subtype pa_fp_view_plans_pub.av_tab_amount_subtype;
3805 l_pd_amount_type_id pa_fp_view_plans_pub.av_tab_amount_type_id;
3806 l_pd_amount_subtype_id pa_fp_view_plans_pub.av_tab_amount_subtype_id;
3807 l_pd_period_1 pa_fp_view_plans_pub.av_tab_period_numbers;
3808 l_pd_period_2 pa_fp_view_plans_pub.av_tab_period_numbers;
3809 l_pd_period_3 pa_fp_view_plans_pub.av_tab_period_numbers;
3810 l_pd_period_4 pa_fp_view_plans_pub.av_tab_period_numbers;
3811 l_pd_period_5 pa_fp_view_plans_pub.av_tab_period_numbers;
3812 l_pd_period_6 pa_fp_view_plans_pub.av_tab_period_numbers;
3813 l_pd_period_7 pa_fp_view_plans_pub.av_tab_period_numbers;
3814 l_pd_period_8 pa_fp_view_plans_pub.av_tab_period_numbers;
3815 l_pd_period_9 pa_fp_view_plans_pub.av_tab_period_numbers;
3816 l_pd_period_10 pa_fp_view_plans_pub.av_tab_period_numbers;
3817 l_pd_period_11 pa_fp_view_plans_pub.av_tab_period_numbers;
3818 l_pd_period_12 pa_fp_view_plans_pub.av_tab_period_numbers;
3819 l_pd_period_13 pa_fp_view_plans_pub.av_tab_period_numbers;
3820 l_pd_preceding pa_fp_view_plans_pub.av_tab_preceding_amts;
3821 l_pd_succeeding pa_fp_view_plans_pub.av_tab_succeeding_amts;
3822 l_pd_has_child_element pa_fp_view_plans_pub.av_tab_has_child_element;
3823 l_pd_project_total pa_fp_view_plans_pub.av_tab_period_numbers;
3824 -- local debugging variables
3825 l_err_stage NUMBER(15);
3826
3827 begin
3828 pa_debug.write('pa_fp_view_plans_pub.pa_fp_vp_pop_tables_separate', '100: entering procedure', 2);
3829 l_err_stage := 100;
3830 --hr_utility.trace('entered pa_fp_vp_pop_tables_separate');
3831 x_return_status := FND_API.G_RET_STS_SUCCESS;
3832 x_msg_count := 0;
3833 SAVEPOINT VIEW_PLANS_POP_TABLES_SEP;
3834
3835 -- used to query pa_proj_periods_denorm table
3836 select DECODE(pa_fp_view_plans_pub.G_FP_CURRENCY_TYPE,
3837 'PROJFUNC', 'PROJ_FUNCTIONAL',
3838 'PROJ', 'PROJECT',
3839 'TRANSACTION')
3840 into l_currency_type
3841 from dual;
3842
3843 pa_fp_view_plans_pub.G_FP_REV_VERSION_ID := p_rev_budget_version_id;
3844 pa_fp_view_plans_pub.G_FP_COST_VERSION_ID := p_cost_budget_version_id;
3845 pa_fp_view_plans_pub.G_DISPLAY_FROM := 'BOTH';
3846 l_err_stage := 200;
3847 -- this is for populating PERIODS PL/SQL table
3848 l_row_number := 0;
3849 select NVL(po.report_labor_hrs_from_code, 'COST'),
3850 pa_fp_view_plans_pub.G_DEFAULT_AMOUNT_TYPE_CODE,
3851 pa_fp_view_plans_pub.G_DEFAULT_AMT_SUBTYPE_CODE,
3852 -- po.default_amount_type_code,
3853 -- po.default_amount_subtype_code
3854 bv.period_profile_id
3855 into l_report_labor_hrs_from_code,
3856 l_default_amount_type_code,
3857 l_default_amount_subtype_code,
3858 l_period_profile_id
3859 from pa_proj_fp_options po,
3860 pa_budget_versions bv
3861 where bv.budget_version_id = p_cost_budget_version_id and
3862 bv.fin_plan_type_id = po.fin_plan_type_id and
3863 po.project_id = p_project_id and
3864 po.fin_plan_option_level_code = 'PLAN_TYPE';
3865 l_err_stage := 300;
3866 pa_debug.write('pa_fp_view_plans_pub.pa_fp_vp_pop_tables_separate', '200: periodprofileid= ' || l_period_profile_id, 1);
3867 -- insert all cost rows into the COST PL/SQL table
3868 open av_cost_csr;
3869 fetch av_cost_csr bulk collect into
3870 l_c_project_id,
3871 l_c_task_id,
3872 l_c_resource_list_member_id,
3873 l_c_cost_budget_version_id,
3874 l_c_cost_res_assignment_id,
3875 l_c_revenue_budget_version_id,
3876 l_c_revenue_res_assignment_id,
3877 l_c_element_name,
3878 l_c_element_level,
3879 l_c_labor_hours,
3880 l_c_burdened_cost,
3881 l_c_raw_cost,
3882 l_c_revenue,
3883 l_c_margin,
3884 l_c_margin_percent,
3885 l_c_line_editable_flag,
3886 l_c_row_level,
3887 l_c_parent_element_name,
3888 l_c_unit_of_measure;
3889 close av_cost_csr;
3890 l_err_stage := 400;
3891 -- insert all revenue rows into the REVENUE PL/SQL table
3892 open av_revenue_csr;
3893 fetch av_revenue_csr bulk collect into
3894 l_r_project_id,
3895 l_r_task_id,
3896 l_r_resource_list_member_id,
3897 l_r_cost_budget_version_id,
3898 l_r_cost_res_assignment_id,
3899 l_r_revenue_budget_version_id,
3900 l_r_revenue_res_assignment_id,
3901 l_r_element_name,
3902 l_r_element_level,
3903 l_r_labor_hours,
3904 l_r_burdened_cost,
3905 l_r_raw_cost,
3906 l_r_revenue,
3907 l_r_margin,
3908 l_r_margin_percent,
3909 l_r_line_editable_flag,
3910 l_r_row_level,
3911 l_r_parent_element_name,
3912 l_r_unit_of_measure;
3913 close av_revenue_csr;
3914 l_err_stage := 500;
3915 pa_debug.write('pa_fp_view_plans_pub.pa_fp_vp_pop_tables_separate', '300: bulk collected into pl/sql tables', 1);
3916 -- now, iterate through all rows in the COST table,
3917 --hr_utility.trace('l_c_project_id.first = ' || TO_CHAR(l_c_project_id.first));
3918 for i in nvl(l_c_project_id.first,0)..nvl(l_c_project_id.last,-1) loop
3919 l_found_complement := false;
3920 -- look for a row in REVENUE table with same project-task-resource id combo
3921 for j in nvl(l_r_project_id.first,0)..nvl(l_r_project_id.last,-1) loop
3922 if (l_r_project_id(j) = l_c_project_id(i)) and
3923 (l_r_task_id(j) = l_c_task_id(i)) and
3924 -- (l_r_revenue_res_assignment_id(j) = l_c_cost_res_assignment_id(i)) and
3925 ((l_r_resource_list_member_id(j) = l_c_resource_list_member_id(i)) or
3926 (l_r_resource_list_member_id(j) = 0 and l_c_resource_list_member_id(i) = pa_fp_view_plans_pub.Get_Uncat_Res_List_Member_Id) or
3927 (l_r_resource_list_member_id(j) = pa_fp_view_plans_pub.Get_Uncat_Res_List_Member_Id and l_c_resource_list_member_id(i) = 0)) then
3928 -- a match has been found: add data from REVENUE PL/SQL to the COST PL/SQL table
3929 --hr_utility.trace('FOUND MATCH');
3930 --hr_utility.trace('cost res assid= ' || to_char(l_c_cost_res_assignment_id(i)));
3931 --hr_utility.trace('rev res assid= ' || to_char(l_r_revenue_res_assignment_id(j)));
3932 l_found_complement := true;
3933 l_c_revenue_budget_version_id(i) := l_r_revenue_budget_version_id(j);
3934 l_c_revenue_res_assignment_id(i) := l_r_revenue_res_assignment_id(j);
3935 l_c_revenue(i) := l_r_revenue(j);
3936 if (pa_fp_view_plans_pub.G_FP_CALC_MARGIN_FROM = 'R') or (l_c_burdened_cost(i) is null) then
3937 l_c_margin(i) := l_c_revenue(i) - l_c_raw_cost(i);
3938 else
3939 l_c_margin(i) := l_c_revenue(i) - l_c_burdened_cost(i);
3940 end if; -- burdened_cost is null
3941 -- divide by zero special case
3942 if l_c_revenue(i) = 0 then
3943 l_c_margin_percent(i) := 0;
3944 else
3945 l_c_margin_percent(i) := l_c_margin(i) / l_c_revenue(i);
3946 end if;
3947
3948 if pa_fp_view_plans_pub.G_FP_CALC_QUANTITY_FROM = 'REVENUE' then
3949 l_c_labor_hours(i) := l_r_labor_hours(j);
3950 else
3951 l_c_labor_hours(i) := l_c_labor_hours(i);
3952 end if;
3953 l_c_has_child_element(i) :=
3954 pa_fp_view_plans_pub.has_child_rows
3955 (l_c_project_id(i),
3956 l_c_cost_budget_version_id(i),
3957 l_c_revenue_budget_version_id(i),
3958 l_c_task_id(i),
3959 l_c_resource_list_member_id(i),
3960 null,
3961 'A');
3962
3963 /* ---- populate the PERIODS PL/SQL table with the following rows ---- */
3964 /* ---- COST, REVENUE, MARGIN, MARGIN_PERCENT, LABOR_HOURS ---- */
3965 /* 11/12/2002 --> check to see if flag = 'Y' before creating row */
3966 /* ONLY if pa_fp_view_plans_pub.G_AMT_OR_PD = 'P' */
3967 if pa_fp_view_plans_pub.G_AMT_OR_PD = 'P' then
3968 -- start with the COST version as the source
3969 l_cur_resource_assignment_id := l_c_cost_res_assignment_id(i);
3970
3971 -- process the QUANTITY row based on the value of l_report_labor_hrs_from_code
3972 if l_report_labor_hrs_from_code = 'COST' then
3973 if pa_fp_view_plans_pub.G_DISPLAY_FLAG_QUANTITY = 'Y' then
3974 --hr_utility.trace('adding QUANTITY row');
3975 l_row_number := l_row_number + 1; -- increment row counter
3976 l_pd_project_id(l_row_number) := l_c_project_id(i);
3977 l_pd_task_id(l_row_number) := l_c_task_id(i);
3978 l_pd_resource_list_member_id(l_row_number) := l_c_resource_list_member_id(i);
3979 l_pd_unit_of_measure(l_row_number) := l_c_unit_of_measure(i);
3980 l_pd_cost_budget_version_id(l_row_number) := l_c_cost_budget_version_id(i);
3981 l_pd_cost_res_assignment_id(l_row_number) := l_c_cost_res_assignment_id(i);
3982 l_pd_revenue_budget_version_id(l_row_number) := -1;
3983 l_pd_revenue_res_assignment_id(l_row_number) := -1;
3984 l_pd_element_name(l_row_number) := l_c_element_name(i);
3985 l_pd_element_level(l_row_number) := l_c_element_level(i);
3986 l_pd_row_level(l_row_number) := l_c_row_level(i);
3987 l_pd_line_editable_flag(l_row_number) := l_c_line_editable_flag(i);
3988 l_pd_parent_element_name(l_row_number) := l_c_parent_element_name(i);
3989 l_pd_amount_type(l_row_number) := 'QUANTITY';
3990 l_pd_amount_subtype(l_row_number) := 'QUANTITY';
3991 l_pd_amount_type_id(l_row_number) := 215; -- amount_type_id of 'QUANTITY'
3992 l_pd_amount_subtype_id(l_row_number) := 215; -- amount_subtype_id of 'QUANTITY'
3993 -- DEFAULT_AMOUNT_TYPE/SUBTYPE_CODE check: if not the default, then demote
3994 if not ((l_default_amount_type_code = 'QUANTITY') and
3995 (l_default_amount_subtype_code = 'QUANTITY')) then
3996 l_pd_parent_element_name(l_row_number) := l_pd_element_name(l_row_number);
3997 l_pd_element_name(l_row_number) := null;
3998 l_pd_has_child_element(l_row_number) := 'N';
3999 else
4000 l_pd_has_child_element(l_row_number) := 'Y';
4001 end if;
4002 l_pd_period_1(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4003 (p_period_profile_id => l_period_profile_id,
4004 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4005 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4006 p_project_currency_type => l_currency_type,
4007 p_amount_type_id => 215,
4008 p_period_number => 1);
4009 --hr_utility.trace('VALUE is = ' || to_char(l_pd_period_1(l_row_number)));
4010 --hr_utility.trace('get_period_n_value for period 2');
4011 l_pd_period_2(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4012 (p_period_profile_id => l_period_profile_id,
4013 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4014 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4015 p_project_currency_type => l_currency_type,
4016 p_amount_type_id => 215,
4017 p_period_number => 2);
4018 l_pd_period_3(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4019 (p_period_profile_id => l_period_profile_id,
4020 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4021 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4022 p_project_currency_type => l_currency_type,
4023 p_amount_type_id => 215,
4024 p_period_number => 3);
4025 l_pd_period_4(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4026 (p_period_profile_id => l_period_profile_id,
4027 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4028 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4029 p_project_currency_type => l_currency_type,
4030 p_amount_type_id => 215,
4031 p_period_number => 4);
4032 l_pd_period_5(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4033 (p_period_profile_id => l_period_profile_id,
4034 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4035 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4036 p_project_currency_type => l_currency_type,
4037 p_amount_type_id => 215,
4038 p_period_number => 5);
4039 l_pd_period_6(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4040 (p_period_profile_id => l_period_profile_id,
4041 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4042 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4043 p_project_currency_type => l_currency_type,
4044 p_amount_type_id => 215,
4045 p_period_number => 6);
4046 l_pd_period_7(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4047 (p_period_profile_id => l_period_profile_id,
4048 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4049 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4050 p_project_currency_type => l_currency_type,
4051 p_amount_type_id => 215,
4052 p_period_number => 7);
4053 l_pd_period_8(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4054 (p_period_profile_id => l_period_profile_id,
4055 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4056 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4057 p_project_currency_type => l_currency_type,
4058 p_amount_type_id => 215,
4059 p_period_number => 8);
4060 l_pd_period_9(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4061 (p_period_profile_id => l_period_profile_id,
4062 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4063 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4064 p_project_currency_type => l_currency_type,
4065 p_amount_type_id => 215,
4066 p_period_number => 9);
4067 l_pd_period_10(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4068 (p_period_profile_id => l_period_profile_id,
4069 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4070 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4071 p_project_currency_type => l_currency_type,
4072 p_amount_type_id => 215,
4073 p_period_number => 10);
4074 l_pd_period_11(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4075 (p_period_profile_id => l_period_profile_id,
4076 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4077 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4078 p_project_currency_type => l_currency_type,
4079 p_amount_type_id => 215,
4080 p_period_number => 11);
4081 l_pd_period_12(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4082 (p_period_profile_id => l_period_profile_id,
4083 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4084 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4085 p_project_currency_type => l_currency_type,
4086 p_amount_type_id => 215,
4087 p_period_number => 12);
4088 l_pd_period_13(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4089 (p_period_profile_id => l_period_profile_id,
4090 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4091 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4092 p_project_currency_type => l_currency_type,
4093 p_amount_type_id => 215,
4094 p_period_number => 13);
4095 l_pd_preceding(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4096 (p_period_profile_id => l_period_profile_id,
4097 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4098 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4099 p_project_currency_type => l_currency_type,
4100 p_amount_type_id => 215,
4101 p_period_number => 0);
4102 l_pd_succeeding(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4103 (p_period_profile_id => l_period_profile_id,
4104 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4105 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4106 p_project_currency_type => l_currency_type,
4107 p_amount_type_id => 215,
4108 p_period_number => 14);
4109 l_pd_project_total(l_row_number) := l_c_labor_hours(i); -- bug 2699651
4110 end if; -- display_flag: QUANTITY
4111 end if; -- QUANTITY
4112
4113 if pa_fp_view_plans_pub.G_DISPLAY_FLAG_BURDCOST = 'Y' then
4114 --hr_utility.trace('adding BURDENED COST row');
4115 -- process the BURDENED_COST row from the COST version
4116 l_row_number := l_row_number + 1; -- increment row counter
4117 -- 02/14/03 dlai: use appropriate cost row based on G_FP_CALC_MARGIN_FROM
4118 if pa_fp_view_plans_pub.G_FP_CALC_MARGIN_FROM = 'B' then
4119 l_cost_row_number := l_row_number;
4120 end if;
4121 /*
4122 if l_c_burdened_cost(i) is not null then
4123 l_cost_row_number := l_row_number; -- used when calculating margin, margin_percent
4124 end if;
4125 */
4126 l_pd_project_id(l_row_number) := l_c_project_id(i);
4127 l_pd_task_id(l_row_number) := l_c_task_id(i);
4128 l_pd_resource_list_member_id(l_row_number) := l_c_resource_list_member_id(i);
4129 l_pd_unit_of_measure(l_row_number) := null;
4130 l_pd_cost_budget_version_id(l_row_number) := l_c_cost_budget_version_id(i);
4131 l_pd_cost_res_assignment_id(l_row_number) := l_c_cost_res_assignment_id(i);
4132 l_pd_revenue_budget_version_id(l_row_number) := -1;
4133 l_pd_revenue_res_assignment_id(l_row_number) := -1;
4134 l_pd_element_name(l_row_number) := l_c_element_name(i);
4135 l_pd_element_level(l_row_number) := l_c_element_level(i);
4136 l_pd_row_level(l_row_number) := l_c_row_level(i);
4137 l_pd_line_editable_flag(l_row_number) := l_c_line_editable_flag(i);
4138 l_pd_parent_element_name(l_row_number) := l_c_parent_element_name(i);
4139 l_pd_amount_type(l_row_number) := 'COST';
4140 l_pd_amount_subtype(l_row_number) := 'BURDENED_COST';
4141 l_pd_amount_type_id(l_row_number) := 150; -- amount_type_id for 'COST'
4142 l_pd_amount_subtype_id(l_row_number) := 165; -- amount_subtype_id for 'BURDENED_COST'
4143 -- DEFAULT_AMOUNT_TYPE_CODE check: if not the default, then demote
4144 if not ((l_default_amount_type_code = 'COST') and
4145 (l_default_amount_subtype_code = 'BURDENED_COST')) then
4146 l_pd_parent_element_name(l_row_number) := l_pd_element_name(l_row_number);
4147 l_pd_element_name(l_row_number) := null;
4148 l_pd_has_child_element(l_row_number) := 'N';
4149 else
4150 l_pd_has_child_element(l_row_number) := 'Y';
4151 end if;
4152 l_pd_period_1(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4153 (p_period_profile_id => l_period_profile_id,
4154 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4155 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4156 p_project_currency_type => l_currency_type,
4157 --p_amount_type_id => 150,
4158 p_amount_type_id => 165,
4159 p_period_number => 1);
4160 --hr_utility.trace('VALUE is = ' || to_char(l_pd_period_1(l_row_number)));
4161 l_pd_period_2(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4162 (p_period_profile_id => l_period_profile_id,
4163 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4164 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4165 p_project_currency_type => l_currency_type,
4166 --p_amount_type_id => 150,
4167 p_amount_type_id => 165,
4168 p_period_number => 2);
4169 l_pd_period_3(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4170 (p_period_profile_id => l_period_profile_id,
4171 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4172 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4173 p_project_currency_type => l_currency_type,
4174 --p_amount_type_id => 150,
4175 p_amount_type_id => 165,
4176 p_period_number => 3);
4177 l_pd_period_4(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4178 (p_period_profile_id => l_period_profile_id,
4179 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4180 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4181 p_project_currency_type => l_currency_type,
4182 --p_amount_type_id => 150,
4183 p_amount_type_id => 165,
4184 p_period_number => 4);
4185 l_pd_period_5(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4186 (p_period_profile_id => l_period_profile_id,
4187 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4188 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4189 p_project_currency_type => l_currency_type,
4190 --p_amount_type_id => 150,
4191 p_amount_type_id => 165,
4192 p_period_number => 5);
4193 l_pd_period_6(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4194 (p_period_profile_id => l_period_profile_id,
4195 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4196 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4197 p_project_currency_type => l_currency_type,
4198 --p_amount_type_id => 150,
4199 p_amount_type_id => 165,
4200 p_period_number => 6);
4201 l_pd_period_7(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4202 (p_period_profile_id => l_period_profile_id,
4203 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4204 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4205 p_project_currency_type => l_currency_type,
4206 --p_amount_type_id => 150,
4207 p_amount_type_id => 165,
4208 p_period_number => 7);
4209 l_pd_period_8(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4210 (p_period_profile_id => l_period_profile_id,
4211 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4212 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4213 p_project_currency_type => l_currency_type,
4214 --p_amount_type_id => 150,
4215 p_amount_type_id => 165,
4216 p_period_number => 8);
4217 l_pd_period_9(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4218 (p_period_profile_id => l_period_profile_id,
4219 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4220 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4221 p_project_currency_type => l_currency_type,
4222 --p_amount_type_id => 150,
4223 p_amount_type_id => 165,
4224 p_period_number => 9);
4225 l_pd_period_10(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4226 (p_period_profile_id => l_period_profile_id,
4227 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4228 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4229 p_project_currency_type => l_currency_type,
4230 --p_amount_type_id => 150,
4231 p_amount_type_id => 165,
4232 p_period_number => 10);
4233 l_pd_period_11(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4234 (p_period_profile_id => l_period_profile_id,
4235 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4236 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4237 p_project_currency_type => l_currency_type,
4238 --p_amount_type_id => 150,
4239 p_amount_type_id => 165,
4240 p_period_number => 11);
4241 l_pd_period_12(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4242 (p_period_profile_id => l_period_profile_id,
4243 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4244 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4245 p_project_currency_type => l_currency_type,
4246 --p_amount_type_id => 150,
4247 p_amount_type_id => 165,
4248 p_period_number => 12);
4249 l_pd_period_13(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4250 (p_period_profile_id => l_period_profile_id,
4251 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4252 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4253 p_project_currency_type => l_currency_type,
4254 --p_amount_type_id => 150,
4255 p_amount_type_id => 165,
4256 p_period_number => 13);
4257 l_pd_preceding(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4258 (p_period_profile_id => l_period_profile_id,
4259 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4260 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4261 p_project_currency_type => l_currency_type,
4262 --p_amount_type_id => 150,
4263 p_amount_type_id => 165,
4264 p_period_number => 0);
4265 l_pd_succeeding(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4266 (p_period_profile_id => l_period_profile_id,
4267 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4268 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4269 p_project_currency_type => l_currency_type,
4270 --p_amount_type_id => 150,
4271 p_amount_type_id => 165,
4272 p_period_number => 14);
4273 l_pd_project_total(l_row_number) := l_c_burdened_cost(i); -- bug 2699651
4274 end if; -- display_flag: BURDENED_COST
4275
4276 if pa_fp_view_plans_pub.G_DISPLAY_FLAG_RAWCOST = 'Y' then
4277 --hr_utility.trace('adding RAW COST row');
4278 -- process the RAW_COST row from the COST version
4279 l_row_number := l_row_number + 1; -- increment row counter
4280 -- 02/14/03 dlai: use appropriate cost row based on G_FP_CALC_MARGIN_FROM
4281 if pa_fp_view_plans_pub.G_FP_CALC_MARGIN_FROM <> 'B' then
4282 l_cost_row_number := l_row_number;
4283 end if;
4284 /*
4285 if l_c_burdened_cost(i) is null then
4286 l_cost_row_number := l_row_number; -- used when calculating margin, margin_percent
4287 end if; -- if burdened_cost is null, calculate margin using revenue - raw_cost
4288 */
4289 l_pd_project_id(l_row_number) := l_c_project_id(i);
4290 l_pd_task_id(l_row_number) := l_c_task_id(i);
4291 l_pd_resource_list_member_id(l_row_number) := l_c_resource_list_member_id(i);
4292 l_pd_unit_of_measure(l_row_number) := null;
4293 l_pd_cost_budget_version_id(l_row_number) := l_c_cost_budget_version_id(i);
4294 l_pd_cost_res_assignment_id(l_row_number) := l_c_cost_res_assignment_id(i);
4295 l_pd_revenue_budget_version_id(l_row_number) := -1;
4296 l_pd_revenue_res_assignment_id(l_row_number) := -1;
4297 l_pd_element_name(l_row_number) := l_c_element_name(i);
4298 l_pd_element_level(l_row_number) := l_c_element_level(i);
4299 l_pd_row_level(l_row_number) := l_c_row_level(i);
4300 l_pd_line_editable_flag(l_row_number) := l_c_line_editable_flag(i);
4301 l_pd_parent_element_name(l_row_number) := l_c_parent_element_name(i);
4302 l_pd_amount_type(l_row_number) := 'COST';
4303 l_pd_amount_subtype(l_row_number) := 'RAW_COST';
4304 l_pd_amount_type_id(l_row_number) := 150; -- amount_type_id for 'COST'
4305 l_pd_amount_subtype_id(l_row_number) := 160; -- amount_subtype_id for 'RAW_COST'
4306 -- DEFAULT_AMOUNT_TYPE_CODE check: if not the default, then demote
4307 if not ((l_default_amount_type_code = 'COST') and
4308 (l_default_amount_subtype_code = 'RAW_COST')) then
4309 l_pd_parent_element_name(l_row_number) := l_pd_element_name(l_row_number);
4310 l_pd_element_name(l_row_number) := null;
4311 l_pd_has_child_element(l_row_number) := 'N';
4312 else
4313 l_pd_has_child_element(l_row_number) := 'Y';
4314 end if;
4315 l_pd_period_1(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4316 (p_period_profile_id => l_period_profile_id,
4317 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4318 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4319 p_project_currency_type => l_currency_type,
4320 --p_amount_type_id => 150,
4321 p_amount_type_id => 160,
4322 p_period_number => 1);
4323 l_pd_period_2(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4324 (p_period_profile_id => l_period_profile_id,
4325 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4326 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4327 p_project_currency_type => l_currency_type,
4328 --p_amount_type_id => 150,
4329 p_amount_type_id => 160,
4330 p_period_number => 2);
4331 l_pd_period_3(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4332 (p_period_profile_id => l_period_profile_id,
4333 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4334 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4335 p_project_currency_type => l_currency_type,
4336 --p_amount_type_id => 150,
4337 p_amount_type_id => 160,
4338 p_period_number => 3);
4339 l_pd_period_4(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4340 (p_period_profile_id => l_period_profile_id,
4341 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4342 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4343 p_project_currency_type => l_currency_type,
4344 --p_amount_type_id => 150,
4345 p_amount_type_id => 160,
4346 p_period_number => 4);
4347 l_pd_period_5(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4348 (p_period_profile_id => l_period_profile_id,
4349 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4350 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4351 p_project_currency_type => l_currency_type,
4352 --p_amount_type_id => 150,
4353 p_amount_type_id => 160,
4354 p_period_number => 5);
4355 l_pd_period_6(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4356 (p_period_profile_id => l_period_profile_id,
4357 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4358 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4359 p_project_currency_type => l_currency_type,
4360 --p_amount_type_id => 150,
4361 p_amount_type_id => 160,
4362 p_period_number => 6);
4363 l_pd_period_7(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4364 (p_period_profile_id => l_period_profile_id,
4365 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4366 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4367 p_project_currency_type => l_currency_type,
4368 --p_amount_type_id => 150,
4369 p_amount_type_id => 160,
4370 p_period_number => 7);
4371 l_pd_period_8(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4372 (p_period_profile_id => l_period_profile_id,
4373 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4374 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4375 p_project_currency_type => l_currency_type,
4376 --p_amount_type_id => 150,
4377 p_amount_type_id => 160,
4378 p_period_number => 8);
4379 l_pd_period_9(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4380 (p_period_profile_id => l_period_profile_id,
4381 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4382 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4383 p_project_currency_type => l_currency_type,
4384 --p_amount_type_id => 150,
4385 p_amount_type_id => 160,
4386 p_period_number => 9);
4387 l_pd_period_10(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4388 (p_period_profile_id => l_period_profile_id,
4389 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4390 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4391 p_project_currency_type => l_currency_type,
4392 --p_amount_type_id => 150,
4393 p_amount_type_id => 160,
4394 p_period_number => 10);
4395 l_pd_period_11(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4396 (p_period_profile_id => l_period_profile_id,
4397 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4398 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4399 p_project_currency_type => l_currency_type,
4400 --p_amount_type_id => 150,
4401 p_amount_type_id => 160,
4402 p_period_number => 11);
4403 l_pd_period_12(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4404 (p_period_profile_id => l_period_profile_id,
4405 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4406 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4407 p_project_currency_type => l_currency_type,
4408 --p_amount_type_id => 150,
4409 p_amount_type_id => 160,
4410 p_period_number => 12);
4411 l_pd_period_13(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4412 (p_period_profile_id => l_period_profile_id,
4413 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4414 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4415 p_project_currency_type => l_currency_type,
4416 --p_amount_type_id => 150,
4417 p_amount_type_id => 160,
4418 p_period_number => 13);
4419 l_pd_preceding(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4420 (p_period_profile_id => l_period_profile_id,
4421 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4422 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4423 p_project_currency_type => l_currency_type,
4424 --p_amount_type_id => 150,
4425 p_amount_type_id => 160,
4426 p_period_number => 0);
4427 l_pd_succeeding(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4428 (p_period_profile_id => l_period_profile_id,
4429 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4430 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4431 p_project_currency_type => l_currency_type,
4432 --p_amount_type_id => 150,
4433 p_amount_type_id => 160,
4434 p_period_number => 14);
4435 l_pd_project_total(l_row_number) := l_c_raw_cost(i); -- bug 2699651
4436 end if; --display_flag: RAW COST
4437
4438 -- now use the REVENUE version as the source
4439 l_cur_resource_assignment_id := l_r_revenue_res_assignment_id(j);
4440 -- process the UTILIZATION row based on the value of l_report_labor_hrs_from_code
4441 if l_report_labor_hrs_from_code = 'REVENUE' then
4442
4443 if pa_fp_view_plans_pub.G_DISPLAY_FLAG_QUANTITY = 'Y' then
4444 l_row_number := l_row_number + 1; -- increment row counter
4445 l_pd_project_id(l_row_number) := l_r_project_id(j);
4446 l_pd_task_id(l_row_number) := l_r_task_id(j);
4447 l_pd_resource_list_member_id(l_row_number) := l_r_resource_list_member_id(j);
4448 l_pd_unit_of_measure(l_row_number) := l_r_unit_of_measure(j);
4449 l_pd_cost_budget_version_id(l_row_number) := -1;
4450 l_pd_cost_res_assignment_id(l_row_number) := -1;
4451 l_pd_revenue_budget_version_id(l_row_number) := l_r_revenue_budget_version_id(j);
4452 l_pd_revenue_res_assignment_id(l_row_number) := l_r_revenue_res_assignment_id(j);
4453 l_pd_element_name(l_row_number) := l_r_element_name(j);
4454 l_pd_element_level(l_row_number) := l_r_element_level(j);
4455 l_pd_row_level(l_row_number) := l_r_row_level(j);
4456 l_pd_line_editable_flag(l_row_number) := l_r_line_editable_flag(j);
4457 l_pd_parent_element_name(l_row_number) := l_r_parent_element_name(j);
4458 l_pd_amount_type(l_row_number) := 'QUANTITY';
4459 l_pd_amount_subtype(l_row_number) := 'QUANTITY';
4460 l_pd_amount_type_id(l_row_number) := 215; -- amount_type_id for 'QUANTITY'
4461 l_pd_amount_subtype_id(l_row_number) := 215; -- amount_subtype_id for 'QUANTITY'
4462 -- DEFAULT_AMOUNT_TYPE_CODE check: if not the default, then demote
4463 if not ((l_default_amount_type_code = 'QUANTITY') and
4464 (l_default_amount_subtype_code = 'QUANTITY')) then
4465 l_pd_parent_element_name(l_row_number) := l_pd_element_name(l_row_number);
4466 l_pd_element_name(l_row_number) := null;
4467 l_pd_has_child_element(l_row_number) := 'N';
4468 else
4469 l_pd_has_child_element(l_row_number) := 'Y';
4470 end if;
4471 l_pd_period_1(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4472 (p_period_profile_id => l_period_profile_id,
4473 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
4474 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
4475 p_project_currency_type => l_currency_type,
4476 p_amount_type_id => 215,
4477 p_period_number => 1);
4478 l_pd_period_2(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4479 (p_period_profile_id => l_period_profile_id,
4480 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
4481 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
4482 p_project_currency_type => l_currency_type,
4483 p_amount_type_id => 215,
4484 p_period_number => 1);
4485 l_pd_period_2(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4486 (p_period_profile_id => l_period_profile_id,
4487 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
4488 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
4489 p_project_currency_type => l_currency_type,
4490 p_amount_type_id => 215,
4491 p_period_number => 2);
4492 l_pd_period_3(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4493 (p_period_profile_id => l_period_profile_id,
4494 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
4495 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
4496 p_project_currency_type => l_currency_type,
4497 p_amount_type_id => 215,
4498 p_period_number => 3);
4499 l_pd_period_4(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4500 (p_period_profile_id => l_period_profile_id,
4501 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
4502 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
4503 p_project_currency_type => l_currency_type,
4504 p_amount_type_id => 215,
4505 p_period_number => 4);
4506 l_pd_period_5(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4507 (p_period_profile_id => l_period_profile_id,
4508 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
4509 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
4510 p_project_currency_type => l_currency_type,
4511 p_amount_type_id => 215,
4512 p_period_number => 5);
4513 l_pd_period_6(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4514 (p_period_profile_id => l_period_profile_id,
4515 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
4516 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
4517 p_project_currency_type => l_currency_type,
4518 p_amount_type_id => 215,
4519 p_period_number => 6);
4520 l_pd_period_7(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4521 (p_period_profile_id => l_period_profile_id,
4522 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
4523 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
4524 p_project_currency_type => l_currency_type,
4525 p_amount_type_id => 215,
4526 p_period_number => 7);
4527 l_pd_period_8(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4528 (p_period_profile_id => l_period_profile_id,
4529 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
4530 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
4531 p_project_currency_type => l_currency_type,
4532 p_amount_type_id => 215,
4533 p_period_number => 8);
4534 l_pd_period_9(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4535 (p_period_profile_id => l_period_profile_id,
4536 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
4537 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
4538 p_project_currency_type => l_currency_type,
4539 p_amount_type_id => 215,
4540 p_period_number => 9);
4541 l_pd_period_10(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4542 (p_period_profile_id => l_period_profile_id,
4543 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
4544 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
4545 p_project_currency_type => l_currency_type,
4546 p_amount_type_id => 215,
4547 p_period_number => 10);
4548 l_pd_period_11(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4549 (p_period_profile_id => l_period_profile_id,
4550 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
4551 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
4552 p_project_currency_type => l_currency_type,
4553 p_amount_type_id => 215,
4554 p_period_number => 11);
4555 l_pd_period_12(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4556 (p_period_profile_id => l_period_profile_id,
4557 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
4558 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
4559 p_project_currency_type => l_currency_type,
4560 p_amount_type_id => 215,
4561 p_period_number => 12);
4562 l_pd_period_13(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4563 (p_period_profile_id => l_period_profile_id,
4564 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
4565 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
4566 p_project_currency_type => l_currency_type,
4567 p_amount_type_id => 215,
4568 p_period_number => 13);
4569 l_pd_preceding(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4570 (p_period_profile_id => l_period_profile_id,
4571 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
4572 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
4573 p_project_currency_type => l_currency_type,
4574 p_amount_type_id => 215,
4575 p_period_number => 0);
4576 l_pd_succeeding(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4577 (p_period_profile_id => l_period_profile_id,
4578 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
4579 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
4580 p_project_currency_type => l_currency_type,
4581 p_amount_type_id => 215,
4582 p_period_number => 14);
4583 l_pd_project_total(l_row_number) := l_r_labor_hours(j); -- bug 2699651
4584 end if; --display_flag: QUANTITY
4585 end if; -- QUANTITY
4586
4587 if pa_fp_view_plans_pub.G_DISPLAY_FLAG_REVENUE = 'Y' then
4588 --hr_utility.trace('adding REVENUE row');
4589 -- process the REVENUE row for this REVENUE version
4590 l_row_number := l_row_number + 1; -- increment row counter
4591 l_revenue_row_number := l_row_number; -- used when calculating margin, margin_percent
4592 l_pd_project_id(l_row_number) := l_r_project_id(j);
4593 l_pd_task_id(l_row_number) := l_r_task_id(j);
4594 l_pd_resource_list_member_id(l_row_number) := l_r_resource_list_member_id(j);
4595 l_pd_unit_of_measure(l_row_number) := null;
4596 l_pd_cost_budget_version_id(l_row_number) := -1;
4597 l_pd_cost_res_assignment_id(l_row_number) := -1;
4598 l_pd_revenue_budget_version_id(l_row_number) := l_r_revenue_budget_version_id(j);
4599 l_pd_revenue_res_assignment_id(l_row_number) := l_r_revenue_res_assignment_id(j);
4600 l_pd_element_name(l_row_number) := l_r_element_name(j);
4601 l_pd_element_level(l_row_number) := l_r_element_level(j);
4602 l_pd_row_level(l_row_number) := l_r_row_level(j);
4603 l_pd_line_editable_flag(l_row_number) := l_r_line_editable_flag(j);
4604 l_pd_parent_element_name(l_row_number) := l_r_parent_element_name(j);
4605 l_pd_amount_type(l_row_number) := 'REVENUE';
4606 l_pd_amount_subtype(l_row_number) := 'REVENUE';
4607 l_pd_amount_type_id(l_row_number) := 100; -- amount_type_id for 'REVENUE'
4608 l_pd_amount_subtype_id(l_row_number) := 100; -- amount_subtype_id for 'REVENUE'
4609 -- DEFAULT_AMOUNT_TYPE_CODE check: if not the default, then demote
4610 if not ((l_default_amount_type_code = 'REVENUE') and
4611 (l_default_amount_subtype_code = 'REVENUE')) then
4612 l_pd_parent_element_name(l_row_number) := l_pd_element_name(l_row_number);
4613 l_pd_element_name(l_row_number) := null;
4614 l_pd_has_child_element(l_row_number) := 'N';
4615 else
4616 l_pd_has_child_element(l_row_number) := 'Y';
4617 end if;
4618 l_pd_period_1(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4619 (p_period_profile_id => l_period_profile_id,
4620 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
4621 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
4622 p_project_currency_type => l_currency_type,
4623 p_amount_type_id => 100,
4624 p_period_number => 1);
4625 l_pd_period_2(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4626 (p_period_profile_id => l_period_profile_id,
4627 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
4628 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
4629 p_project_currency_type => l_currency_type,
4630 p_amount_type_id => 100,
4631 p_period_number => 2);
4632 l_pd_period_3(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4633 (p_period_profile_id => l_period_profile_id,
4634 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
4635 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
4636 p_project_currency_type => l_currency_type,
4637 p_amount_type_id => 100,
4638 p_period_number => 3);
4639 l_pd_period_4(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4640 (p_period_profile_id => l_period_profile_id,
4641 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
4642 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
4643 p_project_currency_type => l_currency_type,
4644 p_amount_type_id => 100,
4645 p_period_number => 4);
4646 l_pd_period_5(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4647 (p_period_profile_id => l_period_profile_id,
4648 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
4649 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
4650 p_project_currency_type => l_currency_type,
4651 p_amount_type_id => 100,
4652 p_period_number => 5);
4653 l_pd_period_6(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4654 (p_period_profile_id => l_period_profile_id,
4655 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
4656 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
4657 p_project_currency_type => l_currency_type,
4658 p_amount_type_id => 100,
4659 p_period_number => 6);
4660 l_pd_period_7(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4661 (p_period_profile_id => l_period_profile_id,
4662 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
4663 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
4664 p_project_currency_type => l_currency_type,
4665 p_amount_type_id => 100,
4666 p_period_number => 7);
4667 l_pd_period_8(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4668 (p_period_profile_id => l_period_profile_id,
4669 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
4670 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
4671 p_project_currency_type => l_currency_type,
4672 p_amount_type_id => 100,
4673 p_period_number => 8);
4674 l_pd_period_9(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4675 (p_period_profile_id => l_period_profile_id,
4676 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
4677 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
4678 p_project_currency_type => l_currency_type,
4679 p_amount_type_id => 100,
4680 p_period_number => 9);
4681 l_pd_period_10(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4682 (p_period_profile_id => l_period_profile_id,
4683 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
4684 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
4685 p_project_currency_type => l_currency_type,
4686 p_amount_type_id => 100,
4687 p_period_number => 10);
4688 l_pd_period_11(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4689 (p_period_profile_id => l_period_profile_id,
4690 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
4691 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
4692 p_project_currency_type => l_currency_type,
4693 p_amount_type_id => 100,
4694 p_period_number => 11);
4695 l_pd_period_12(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4696 (p_period_profile_id => l_period_profile_id,
4697 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
4698 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
4699 p_project_currency_type => l_currency_type,
4700 p_amount_type_id => 100,
4701 p_period_number => 12);
4702 l_pd_period_13(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4703 (p_period_profile_id => l_period_profile_id,
4704 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
4705 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
4706 p_project_currency_type => l_currency_type,
4707 p_amount_type_id => 100,
4708 p_period_number => 13);
4709 l_pd_preceding(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4710 (p_period_profile_id => l_period_profile_id,
4711 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
4712 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
4713 p_project_currency_type => l_currency_type,
4714 p_amount_type_id => 100,
4715 p_period_number => 0);
4716 l_pd_succeeding(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4717 (p_period_profile_id => l_period_profile_id,
4718 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
4719 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
4720 p_project_currency_type => l_currency_type,
4721 p_amount_type_id => 100,
4722 p_period_number => 14);
4723 l_pd_project_total(l_row_number) := l_r_revenue(j); -- bug 2699651
4724 end if; -- display_flag: REVENUE
4725
4726 if pa_fp_view_plans_pub.G_DISPLAY_FLAG_MARGIN = 'Y' then
4727 --hr_utility.trace('adding MARGIN row');
4728 -- finally, insert the MARGIN and MARGIN_PERCENT rows
4729 -- MARGIN row
4730 l_row_number := l_row_number + 1; -- increment row counter
4731 l_pd_project_id(l_row_number) := l_c_project_id(i);
4732 l_pd_task_id(l_row_number) := l_c_task_id(i);
4733 l_pd_resource_list_member_id(l_row_number) := l_c_resource_list_member_id(i);
4734 l_pd_unit_of_measure(l_row_number) := null;
4735 l_pd_cost_budget_version_id(l_row_number) := l_c_cost_budget_version_id(i);
4736 l_pd_cost_res_assignment_id(l_row_number) := l_c_cost_res_assignment_id(i);
4737 l_pd_revenue_budget_version_id(l_row_number) := l_r_revenue_budget_version_id(j);
4738 l_pd_revenue_res_assignment_id(l_row_number) := l_r_revenue_res_assignment_id(j);
4739 l_pd_element_name(l_row_number) := l_c_element_name(i);
4740 l_pd_element_level(l_row_number) := l_c_element_level(i);
4741 l_pd_row_level(l_row_number) := l_c_row_level(i);
4742 --l_pd_line_editable_flag(l_row_number) := l_c_line_editable_flag(i);
4743 l_pd_line_editable_flag(l_row_number) := 'N'; -- cannot edit margin
4744 l_pd_parent_element_name(l_row_number) := l_c_parent_element_name(i);
4745 l_pd_amount_type(l_row_number) := 'MARGIN';
4746 l_pd_amount_subtype(l_row_number) := 'MARGIN';
4747 l_pd_amount_type_id(l_row_number) := 230; -- amount_type_id of MARGIN
4748 l_pd_amount_subtype_id(l_row_number) := 230; -- amount_subtype_id of MARGIN
4749 -- DEFAULT_AMOUNT_TYPE_CODE check: if not the default, then demote
4750 if not ((l_default_amount_type_code = 'MARGIN') and
4751 (l_default_amount_subtype_code = 'MARGIN')) then
4752 l_pd_parent_element_name(l_row_number) := l_pd_element_name(l_row_number);
4753 l_pd_element_name(l_row_number) := null;
4754 l_pd_has_child_element(l_row_number) := 'N';
4755 else
4756 l_pd_has_child_element(l_row_number) := 'Y';
4757 end if;
4758 l_pd_period_1(l_row_number) := l_pd_period_1(l_revenue_row_number)-l_pd_period_1(l_cost_row_number);
4759 l_pd_period_2(l_row_number) := l_pd_period_2(l_revenue_row_number)-l_pd_period_2(l_cost_row_number);
4760 l_pd_period_3(l_row_number) := l_pd_period_3(l_revenue_row_number)-l_pd_period_3(l_cost_row_number);
4761 l_pd_period_4(l_row_number) := l_pd_period_4(l_revenue_row_number)-l_pd_period_4(l_cost_row_number);
4762 l_pd_period_5(l_row_number) := l_pd_period_5(l_revenue_row_number)-l_pd_period_5(l_cost_row_number);
4763 l_pd_period_6(l_row_number) := l_pd_period_6(l_revenue_row_number)-l_pd_period_6(l_cost_row_number);
4764 l_pd_period_7(l_row_number) := l_pd_period_7(l_revenue_row_number)-l_pd_period_7(l_cost_row_number);
4765 l_pd_period_8(l_row_number) := l_pd_period_8(l_revenue_row_number)-l_pd_period_8(l_cost_row_number);
4766 l_pd_period_9(l_row_number) := l_pd_period_9(l_revenue_row_number)-l_pd_period_9(l_cost_row_number);
4767 l_pd_period_10(l_row_number) := l_pd_period_10(l_revenue_row_number)-l_pd_period_10(l_cost_row_number);
4768 l_pd_period_11(l_row_number) := l_pd_period_11(l_revenue_row_number)-l_pd_period_11(l_cost_row_number);
4769 l_pd_period_12(l_row_number) := l_pd_period_12(l_revenue_row_number)-l_pd_period_12(l_cost_row_number);
4770 l_pd_period_13(l_row_number) := l_pd_period_13(l_revenue_row_number)-l_pd_period_13(l_cost_row_number);
4771 l_pd_preceding(l_row_number) := l_pd_preceding(l_revenue_row_number)-l_pd_preceding(l_cost_row_number);
4772 l_pd_succeeding(l_row_number) := l_pd_succeeding(l_revenue_row_number)-l_pd_succeeding(l_cost_row_number);
4773 l_pd_project_total(l_row_number) := l_pd_project_total(l_revenue_row_number)-l_pd_project_total(l_cost_row_number); -- bug 2699651
4774 end if; -- display_flag: MARGIN
4775
4776 if pa_fp_view_plans_pub.G_DISPLAY_FLAG_MARGINPCT = 'Y' then
4777 --hr_utility.trace('adding MARGIN PERCENT row');
4778 -- MARGIN_PERCENT
4779 l_row_number := l_row_number + 1; -- increment row counter
4780 l_pd_project_id(l_row_number) := l_c_project_id(i);
4781 l_pd_task_id(l_row_number) := l_c_task_id(i);
4782 l_pd_resource_list_member_id(l_row_number) := l_c_resource_list_member_id(i);
4783 l_pd_unit_of_measure(l_row_number) := null;
4784 l_pd_cost_budget_version_id(l_row_number) := l_c_cost_budget_version_id(i);
4785 l_pd_cost_res_assignment_id(l_row_number) := l_c_cost_res_assignment_id(i);
4786 l_pd_revenue_budget_version_id(l_row_number) := l_r_revenue_budget_version_id(j);
4787 l_pd_revenue_res_assignment_id(l_row_number) := l_r_revenue_res_assignment_id(j);
4788 l_pd_element_name(l_row_number) := l_c_element_name(i);
4789 l_pd_element_level(l_row_number) := l_c_element_level(i);
4790 l_pd_row_level(l_row_number) := l_c_row_level(i);
4791 --l_pd_line_editable_flag(l_row_number) := l_c_line_editable_flag(i);
4792 l_pd_line_editable_flag(l_row_number) := 'N'; -- cannot edit margin_pct
4793 l_pd_parent_element_name(l_row_number) := l_c_parent_element_name(i);
4794 l_pd_amount_type(l_row_number) := 'MARGIN_PERCENT';
4795 l_pd_amount_subtype(l_row_number) := 'MARGIN_PERCENT';
4796 l_pd_amount_type_id(l_row_number) := 231; -- amount_type_id of MARGIN_PERCENT
4797 l_pd_amount_subtype_id(l_row_number) := 231; -- amount_subtype_id of MARGIN_PERCENT
4798 -- DEFAULT_AMOUNT_TYPE_CODE check: if not the default, then demote
4799 if not ((l_default_amount_type_code = 'MARGIN_PERCENT') and
4800 (l_default_amount_subtype_code = 'MARGIN_PERCENT')) then
4801 l_pd_parent_element_name(l_row_number) := l_pd_element_name(l_row_number);
4802 l_pd_element_name(l_row_number) := null;
4803 l_pd_has_child_element(l_row_number) := 'N';
4804 else
4805 l_pd_has_child_element(l_row_number) := 'Y';
4806 end if;
4807 l_pd_period_1(l_row_number) := pa_fp_view_plans_util.calc_margin_percent(l_pd_period_1(l_cost_row_number),l_pd_period_1(l_revenue_row_number));
4808 l_pd_period_2(l_row_number) := pa_fp_view_plans_util.calc_margin_percent(l_pd_period_2(l_cost_row_number),l_pd_period_2(l_revenue_row_number));
4809 l_pd_period_3(l_row_number) := pa_fp_view_plans_util.calc_margin_percent(l_pd_period_3(l_cost_row_number),l_pd_period_3(l_revenue_row_number));
4810 l_pd_period_4(l_row_number) := pa_fp_view_plans_util.calc_margin_percent(l_pd_period_4(l_cost_row_number),l_pd_period_4(l_revenue_row_number));
4811 l_pd_period_5(l_row_number) := pa_fp_view_plans_util.calc_margin_percent(l_pd_period_5(l_cost_row_number),l_pd_period_5(l_revenue_row_number));
4812 l_pd_period_6(l_row_number) := pa_fp_view_plans_util.calc_margin_percent(l_pd_period_6(l_cost_row_number),l_pd_period_6(l_revenue_row_number));
4813 l_pd_period_7(l_row_number) := pa_fp_view_plans_util.calc_margin_percent(l_pd_period_7(l_cost_row_number),l_pd_period_7(l_revenue_row_number));
4814 l_pd_period_8(l_row_number) := pa_fp_view_plans_util.calc_margin_percent(l_pd_period_8(l_cost_row_number),l_pd_period_8(l_revenue_row_number));
4815 l_pd_period_9(l_row_number) := pa_fp_view_plans_util.calc_margin_percent(l_pd_period_9(l_cost_row_number),l_pd_period_9(l_revenue_row_number));
4816 l_pd_period_10(l_row_number) := pa_fp_view_plans_util.calc_margin_percent(l_pd_period_10(l_cost_row_number),l_pd_period_10(l_revenue_row_number));
4817 l_pd_period_11(l_row_number) := pa_fp_view_plans_util.calc_margin_percent(l_pd_period_11(l_cost_row_number),l_pd_period_11(l_revenue_row_number));
4818 l_pd_period_12(l_row_number) := pa_fp_view_plans_util.calc_margin_percent(l_pd_period_12(l_cost_row_number),l_pd_period_12(l_revenue_row_number));
4819 l_pd_period_13(l_row_number) := pa_fp_view_plans_util.calc_margin_percent(l_pd_period_13(l_cost_row_number),l_pd_period_13(l_revenue_row_number));
4820 l_pd_preceding(l_row_number) := pa_fp_view_plans_util.calc_margin_percent(l_pd_preceding(l_cost_row_number),l_pd_preceding(l_revenue_row_number));
4821 l_pd_succeeding(l_row_number) := pa_fp_view_plans_util.calc_margin_percent(l_pd_succeeding(l_cost_row_number),l_pd_succeeding(l_revenue_row_number));
4822 l_pd_project_total(l_row_number) := pa_fp_view_plans_util.calc_margin_percent(l_pd_project_total(l_cost_row_number),l_pd_project_total(l_revenue_row_number)); -- bug 2699651
4823 end if; -- display_flag: MARGIN PERCENT
4824 end if; -- pa_fp_view_plans_pub.G_AMT_OR_PD = 'P'
4825 /*
4826 l_r_project_id.delete(j);
4827 l_r_task_id.delete(j);
4828 l_r_resource_list_member_id.delete(j);
4829 l_r_cost_budget_version_id.delete(j);
4830 l_r_cost_res_assignment_id.delete(j);
4831 l_r_revenue_budget_version_id.delete(j);
4832 l_r_revenue_res_assignment_id.delete(j);
4833 l_r_element_name.delete(j);
4834 l_r_element_level.delete(j);
4835 l_r_labor_hours.delete(j);
4836 l_r_burdened_cost.delete(j);
4837 l_r_revenue.delete(j);
4838 l_r_margin.delete(j);
4839 l_r_margin_percent.delete(j);
4840 l_r_line_editable_flag.delete(j);
4841 exit;
4842 */
4843 end if;
4844 if l_found_complement then
4845 -- after transferring data, delete row from REVENUE PL/SQL table:
4846 -- to do this, we need to shift up all subsequent rows, and delete the very last row
4847 if j=l_r_project_id.last then
4848 -- We've reached the last row; delete it
4849 l_r_project_id.delete(j);
4850 l_r_task_id.delete(j);
4851 l_r_resource_list_member_id.delete(j);
4852 l_r_cost_budget_version_id.delete(j);
4853 l_r_cost_res_assignment_id.delete(j);
4854 l_r_revenue_budget_version_id.delete(j);
4855 l_r_revenue_res_assignment_id.delete(j);
4856 l_r_element_name.delete(j);
4857 l_r_element_level.delete(j);
4858 l_r_labor_hours.delete(j);
4859 l_r_burdened_cost.delete(j);
4860 l_r_revenue.delete(j);
4861 l_r_margin.delete(j);
4862 l_r_margin_percent.delete(j);
4863 l_r_line_editable_flag.delete(j);
4864 l_r_raw_cost.delete(j);
4865 l_r_row_level.delete(j);
4866 l_r_parent_element_name.delete(j);
4867 l_r_unit_of_measure.delete(j);
4868 else
4869 -- shift up all rows after deleted row
4870 l_r_project_id(j) := l_r_project_id(j+1);
4871 l_r_task_id(j) := l_r_task_id(j+1);
4872 l_r_resource_list_member_id(j) := l_r_resource_list_member_id(j+1);
4873 l_r_cost_budget_version_id(j) := l_r_cost_budget_version_id(j+1);
4874 l_r_cost_res_assignment_id(j) := l_r_cost_res_assignment_id(j+1);
4875 l_r_revenue_budget_version_id(j) := l_r_revenue_budget_version_id(j+1);
4876 l_r_revenue_res_assignment_id(j) := l_r_revenue_res_assignment_id(j+1);
4877 l_r_element_name(j) := l_r_element_name(j+1);
4878 l_r_element_level(j) := l_r_element_level(j+1);
4879 l_r_labor_hours(j) := l_r_labor_hours(j+1);
4880 l_r_burdened_cost(j) := l_r_burdened_cost(j+1);
4881 l_r_revenue(j) := l_r_revenue(j+1);
4882 l_r_margin(j) := l_r_margin(j+1);
4883 l_r_margin_percent(j) := l_r_margin_percent(j+1);
4884 l_r_line_editable_flag(j) := l_r_line_editable_flag(j+1);
4885 l_r_raw_cost(j) := l_r_raw_cost(j+1);
4886 l_r_row_level(j) := l_r_row_level(j+1);
4887 l_r_parent_element_name(j) := l_r_parent_element_name(j+1);
4888 l_r_unit_of_measure(j) := l_r_unit_of_measure(j+1);
4889 end if;
4890 end if; -- found complement in loop: SHIFT ALL SUBSEQUENT ROWS UP AND DELETE LAST ROW
4891 end loop; -- REVENUE PL/SQL loop
4892 if not l_found_complement then
4893
4894 -- did not find a complement in REVENUE PL/SQL table; pad revenue #'s with 0's
4895 l_c_revenue(i) := 0;
4896 l_c_margin(i) := 0;
4897 l_c_margin_percent(i) := 0;
4898 l_c_has_child_element(i) :=
4899 pa_fp_view_plans_pub.has_child_rows
4900 (l_c_project_id(i),
4901 l_c_cost_budget_version_id(i),
4902 -1,
4903 l_c_task_id(i),
4904 l_c_resource_list_member_id(i),
4905 null,
4906 'A');
4907 /* ---- populate the PERIODS PL/SQL table with the following rows ---- */
4908 /* ---- COST, REVENUE, MARGIN, MARGIN_PERCENT, LABOR_HOURS ---- */
4909 /* 11/12/2002: populate the rows only if flag = 'Y' */
4910 /* ONLY if pa_fp_view_plans_pub.G_AMT_OR_PD = 'P' */
4911 -- use the COST version as the source for COST row
4912 l_cur_resource_assignment_id := l_c_cost_res_assignment_id(i);
4913 if pa_fp_view_plans_pub.G_AMT_OR_PD = 'P' then
4914 if pa_fp_view_plans_pub.G_DISPLAY_FLAG_QUANTITY = 'Y' then
4915 -- process the QUANTITY row based on the value of l_report_labor_hrs_from_code
4916 if l_report_labor_hrs_from_code = 'COST' then
4917 l_row_number := l_row_number + 1; -- increment row counter
4918 l_pd_project_id(l_row_number) := l_c_project_id(i);
4919 l_pd_task_id(l_row_number) := l_c_task_id(i);
4920 l_pd_resource_list_member_id(l_row_number) := l_c_resource_list_member_id(i);
4921 l_pd_unit_of_measure(l_row_number) := l_c_unit_of_measure(i);
4922 l_pd_cost_budget_version_id(l_row_number) := l_c_cost_budget_version_id(i);
4923 l_pd_cost_res_assignment_id(l_row_number) := l_c_cost_res_assignment_id(i);
4924 l_pd_revenue_budget_version_id(l_row_number) := -1;
4925 l_pd_revenue_res_assignment_id(l_row_number) := -1;
4926 l_pd_element_name(l_row_number) := l_c_element_name(i);
4927 l_pd_element_level(l_row_number) := l_c_element_level(i);
4928 l_pd_row_level(l_row_number) := l_c_row_level(i);
4929 l_pd_line_editable_flag(l_row_number) := l_c_line_editable_flag(i);
4930 l_pd_parent_element_name(l_row_number) := l_c_parent_element_name(i);
4931 l_pd_amount_type(l_row_number) := 'QUANTITY';
4932 l_pd_amount_subtype(l_row_number) := 'QUANTITY';
4933 l_pd_amount_type_id(l_row_number) := 215; -- amount_type_id of 'QUANTITY'
4934 l_pd_amount_subtype_id(l_row_number) := 215; -- amount_subtype_id of 'QUANTITY'
4935 -- DEFAULT_AMOUNT_TYPE_CODE check: if not the default, then demote
4936 if not ((l_default_amount_type_code = 'QUANTITY') and
4937 (l_default_amount_subtype_code = 'QUANTITY')) then
4938 l_pd_parent_element_name(l_row_number) := l_pd_element_name(l_row_number);
4939 l_pd_element_name(l_row_number) := null;
4940 l_pd_has_child_element(l_row_number) := 'N';
4941 else
4942 l_pd_has_child_element(l_row_number) := 'Y';
4943 end if;
4944 l_pd_period_1(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4945 (p_period_profile_id => l_period_profile_id,
4946 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4947 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4948 p_project_currency_type => l_currency_type,
4949 p_amount_type_id => 215,
4950 p_period_number => 1);
4951 l_pd_period_2(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4952 (p_period_profile_id => l_period_profile_id,
4953 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4954 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4955 p_project_currency_type => l_currency_type,
4956 p_amount_type_id => 215,
4957 p_period_number => 2);
4958 l_pd_period_3(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4959 (p_period_profile_id => l_period_profile_id,
4960 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4961 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4962 p_project_currency_type => l_currency_type,
4963 p_amount_type_id => 215,
4964 p_period_number => 3);
4965 l_pd_period_4(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4966 (p_period_profile_id => l_period_profile_id,
4967 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4968 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4969 p_project_currency_type => l_currency_type,
4970 p_amount_type_id => 215,
4971 p_period_number => 4);
4972 l_pd_period_5(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4973 (p_period_profile_id => l_period_profile_id,
4974 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4975 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4976 p_project_currency_type => l_currency_type,
4977 p_amount_type_id => 215,
4978 p_period_number => 5);
4979 l_pd_period_6(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4980 (p_period_profile_id => l_period_profile_id,
4981 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4982 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4983 p_project_currency_type => l_currency_type,
4984 p_amount_type_id => 215,
4985 p_period_number => 6);
4986 l_pd_period_7(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4987 (p_period_profile_id => l_period_profile_id,
4988 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4989 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4990 p_project_currency_type => l_currency_type,
4991 p_amount_type_id => 215,
4992 p_period_number => 7);
4993 l_pd_period_8(l_row_number) := pa_fp_view_plans_util.get_period_n_value
4994 (p_period_profile_id => l_period_profile_id,
4995 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
4996 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
4997 p_project_currency_type => l_currency_type,
4998 p_amount_type_id => 215,
4999 p_period_number => 8);
5000 l_pd_period_9(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5001 (p_period_profile_id => l_period_profile_id,
5002 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
5003 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
5004 p_project_currency_type => l_currency_type,
5005 p_amount_type_id => 215,
5006 p_period_number => 9);
5007 l_pd_period_10(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5008 (p_period_profile_id => l_period_profile_id,
5009 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
5010 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
5011 p_project_currency_type => l_currency_type,
5012 p_amount_type_id => 215,
5013 p_period_number => 10);
5014 l_pd_period_11(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5015 (p_period_profile_id => l_period_profile_id,
5016 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
5017 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
5018 p_project_currency_type => l_currency_type,
5019 p_amount_type_id => 215,
5020 p_period_number => 11);
5021 l_pd_period_12(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5022 (p_period_profile_id => l_period_profile_id,
5023 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
5024 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
5025 p_project_currency_type => l_currency_type,
5026 p_amount_type_id => 215,
5027 p_period_number => 12);
5028 l_pd_period_13(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5029 (p_period_profile_id => l_period_profile_id,
5030 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
5031 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
5032 p_project_currency_type => l_currency_type,
5033 p_amount_type_id => 215,
5034 p_period_number => 13);
5035 l_pd_preceding(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5036 (p_period_profile_id => l_period_profile_id,
5037 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
5038 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
5039 p_project_currency_type => l_currency_type,
5040 p_amount_type_id => 215,
5041 p_period_number => 0);
5042 l_pd_succeeding(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5043 (p_period_profile_id => l_period_profile_id,
5044 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
5045 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
5046 p_project_currency_type => l_currency_type,
5047 p_amount_type_id => 215,
5048 p_period_number => 14);
5049 l_pd_project_total(l_row_number) := l_c_labor_hours(i); -- bug 2699651
5050 -- we need to insert an empty QUANTITY row if it's not reported from COST version
5051 else
5052 l_row_number := l_row_number + 1; -- increment row counter
5053 l_pd_project_id(l_row_number) := l_c_project_id(i);
5054 l_pd_task_id(l_row_number) := l_c_task_id(i);
5055 l_pd_resource_list_member_id(l_row_number) := l_c_resource_list_member_id(i);
5056 l_pd_unit_of_measure(l_row_number) := l_c_unit_of_measure(i);
5057 l_pd_cost_budget_version_id(l_row_number) := l_c_cost_budget_version_id(i);
5058 l_pd_cost_res_assignment_id(l_row_number) := l_c_cost_res_assignment_id(i);
5059 l_pd_revenue_budget_version_id(l_row_number) := -1;
5060 l_pd_revenue_res_assignment_id(l_row_number) := -1;
5061 l_pd_element_name(l_row_number) := l_c_element_name(i);
5062 l_pd_element_level(l_row_number) := l_c_element_level(i);
5063 l_pd_row_level(l_row_number) := l_c_row_level(i);
5064 --l_pd_line_editable_flag(l_row_number) := l_c_line_editable_flag(i);
5065 l_pd_line_editable_flag(l_row_number) := 'N'; -- cannot edit dummy insert
5066 l_pd_parent_element_name(l_row_number) := l_c_parent_element_name(i);
5067 l_pd_amount_type(l_row_number) := 'QUANTITY';
5068 l_pd_amount_subtype(l_row_number) := 'QUANTITY';
5069 l_pd_amount_type_id(l_row_number) := 215; -- amount_type_id of QUANTITY
5070 l_pd_amount_subtype_id(l_row_number) := 215; -- amount_subtype_id of QUANTITY
5071 -- DEFAULT_AMOUNT_TYPE_CODE check: if not the default, then demote
5072 if not ((l_default_amount_type_code = 'QUANTITY') and
5073 (l_default_amount_subtype_code = 'QUANTITY')) then
5074 l_pd_parent_element_name(l_row_number) := l_pd_element_name(l_row_number);
5075 l_pd_element_name(l_row_number) := null;
5076 l_pd_has_child_element(l_row_number) := 'N';
5077 else
5078 l_pd_has_child_element(l_row_number) := 'Y';
5079 end if;
5080 l_pd_period_1(l_row_number) := null;
5081 l_pd_period_2(l_row_number) := null;
5082 l_pd_period_3(l_row_number) := null;
5083 l_pd_period_4(l_row_number) := null;
5084 l_pd_period_5(l_row_number) := null;
5085 l_pd_period_6(l_row_number) := null;
5086 l_pd_period_7(l_row_number) := null;
5087 l_pd_period_8(l_row_number) := null;
5088 l_pd_period_9(l_row_number) := null;
5089 l_pd_period_10(l_row_number) := null;
5090 l_pd_period_11(l_row_number) := null;
5091 l_pd_period_12(l_row_number) := null;
5092 l_pd_period_13(l_row_number) := null;
5093 l_pd_preceding(l_row_number) := null;
5094 l_pd_succeeding(l_row_number) := null;
5095 l_pd_project_total(l_row_number) := null; -- bug 2699651
5096 end if; -- QUANTITY
5097 end if; -- display_flag: QUANTITY
5098
5099 if pa_fp_view_plans_pub.G_DISPLAY_FLAG_BURDCOST = 'Y' then
5100 -- process the BURDENED_COST row for this COST version
5101 l_row_number := l_row_number + 1; -- increment row counter
5102 l_pd_project_id(l_row_number) := l_c_project_id(i);
5103 l_pd_task_id(l_row_number) := l_c_task_id(i);
5104 l_pd_resource_list_member_id(l_row_number) := l_c_resource_list_member_id(i);
5105 l_pd_unit_of_measure(l_row_number) := null;
5106 l_pd_cost_budget_version_id(l_row_number) := l_c_cost_budget_version_id(i);
5107 l_pd_cost_res_assignment_id(l_row_number) := l_c_cost_res_assignment_id(i);
5108 l_pd_revenue_budget_version_id(l_row_number) := -1;
5109 l_pd_revenue_res_assignment_id(l_row_number) := -1;
5110 l_pd_element_name(l_row_number) := l_c_element_name(i);
5111 l_pd_element_level(l_row_number) := l_c_element_level(i);
5112 l_pd_row_level(l_row_number) := l_c_row_level(i);
5113 l_pd_line_editable_flag(l_row_number) := l_c_line_editable_flag(i);
5114 l_pd_parent_element_name(l_row_number) := l_c_parent_element_name(i);
5115 l_pd_amount_type(l_row_number) := 'COST';
5116 l_pd_amount_subtype(l_row_number) := 'BURDENED_COST';
5117 l_pd_amount_type_id(l_row_number) := 150; -- amount_type_id for 'COST'
5118 l_pd_amount_subtype_id(l_row_number) := 165; -- amount_subtype_id for 'BURDENED_COST'
5119 -- DEFAULT_AMOUNT_TYPE_CODE check: if not the default, then demote
5120 if not ((l_default_amount_type_code = 'COST') and
5121 (l_default_amount_subtype_code = 'BURDENED_COST')) then
5122 l_pd_parent_element_name(l_row_number) := l_pd_element_name(l_row_number);
5123 l_pd_element_name(l_row_number) := null;
5124 l_pd_has_child_element(l_row_number) := 'N';
5125 else
5126 l_pd_has_child_element(l_row_number) := 'Y';
5127 end if;
5128 l_pd_period_1(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5129 (p_period_profile_id => l_period_profile_id,
5130 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
5131 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
5132 p_project_currency_type => l_currency_type,
5133 p_amount_type_id => 165,
5134 p_period_number => 1);
5135 l_pd_period_2(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5136 (p_period_profile_id => l_period_profile_id,
5137 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
5138 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
5139 p_project_currency_type => l_currency_type,
5140 p_amount_type_id => 165,
5141 p_period_number => 2);
5142 l_pd_period_3(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5143 (p_period_profile_id => l_period_profile_id,
5144 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
5145 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
5146 p_project_currency_type => l_currency_type,
5147 p_amount_type_id => 165,
5148 p_period_number => 3);
5149 l_pd_period_4(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5150 (p_period_profile_id => l_period_profile_id,
5151 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
5152 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
5153 p_project_currency_type => l_currency_type,
5154 p_amount_type_id => 165,
5155 p_period_number => 4);
5156 l_pd_period_5(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5157 (p_period_profile_id => l_period_profile_id,
5158 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
5159 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
5160 p_project_currency_type => l_currency_type,
5161 --p_amount_type_id => 150,
5162 p_amount_type_id => 165,
5163 p_period_number => 5);
5164 l_pd_period_6(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5165 (p_period_profile_id => l_period_profile_id,
5166 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
5167 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
5168 p_project_currency_type => l_currency_type,
5169 p_amount_type_id => 165,
5170 p_period_number => 6);
5171 l_pd_period_7(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5172 (p_period_profile_id => l_period_profile_id,
5173 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
5174 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
5175 p_project_currency_type => l_currency_type,
5176 p_amount_type_id => 165,
5177 p_period_number => 7);
5178 l_pd_period_8(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5179 (p_period_profile_id => l_period_profile_id,
5180 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
5181 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
5182 p_project_currency_type => l_currency_type,
5183 p_amount_type_id => 165,
5184 p_period_number => 8);
5185 l_pd_period_9(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5186 (p_period_profile_id => l_period_profile_id,
5187 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
5188 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
5189 p_project_currency_type => l_currency_type,
5190 p_amount_type_id => 165,
5191 p_period_number => 9);
5192 l_pd_period_10(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5193 (p_period_profile_id => l_period_profile_id,
5194 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
5195 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
5196 p_project_currency_type => l_currency_type,
5197 p_amount_type_id => 165,
5198 p_period_number => 10);
5199 l_pd_period_11(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5200 (p_period_profile_id => l_period_profile_id,
5201 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
5202 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
5203 p_project_currency_type => l_currency_type,
5204 p_amount_type_id => 165,
5205 p_period_number => 11);
5206 l_pd_period_12(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5207 (p_period_profile_id => l_period_profile_id,
5208 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
5209 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
5210 p_project_currency_type => l_currency_type,
5211 p_amount_type_id => 165,
5212 p_period_number => 12);
5213 l_pd_period_13(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5214 (p_period_profile_id => l_period_profile_id,
5215 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
5216 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
5217 p_project_currency_type => l_currency_type,
5218 p_amount_type_id => 165,
5219 p_period_number => 13);
5220 l_pd_preceding(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5221 (p_period_profile_id => l_period_profile_id,
5222 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
5223 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
5224 p_project_currency_type => l_currency_type,
5225 p_amount_type_id => 165,
5226 p_period_number => 0);
5227 l_pd_succeeding(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5228 (p_period_profile_id => l_period_profile_id,
5229 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
5230 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
5231 p_project_currency_type => l_currency_type,
5232 p_amount_type_id => 165,
5233 p_period_number => 14);
5234 l_pd_project_total(l_row_number) := l_c_burdened_cost(i); -- bug 2699651
5235 end if; -- display_flag: BURDENED_COST
5236
5237 if pa_fp_view_plans_pub.G_DISPLAY_FLAG_RAWCOST = 'Y' then
5238 -- process the RAW_COST row for this COST version
5239 l_row_number := l_row_number + 1; -- increment row counter
5240 l_pd_project_id(l_row_number) := l_c_project_id(i);
5241 l_pd_task_id(l_row_number) := l_c_task_id(i);
5242 l_pd_resource_list_member_id(l_row_number) := l_c_resource_list_member_id(i);
5243 l_pd_unit_of_measure(l_row_number) := null;
5244 l_pd_cost_budget_version_id(l_row_number) := l_c_cost_budget_version_id(i);
5245 l_pd_cost_res_assignment_id(l_row_number) := l_c_cost_res_assignment_id(i);
5246 l_pd_revenue_budget_version_id(l_row_number) := -1;
5247 l_pd_revenue_res_assignment_id(l_row_number) := -1;
5248 l_pd_element_name(l_row_number) := l_c_element_name(i);
5249 l_pd_element_level(l_row_number) := l_c_element_level(i);
5250 l_pd_row_level(l_row_number) := l_c_row_level(i);
5251 l_pd_line_editable_flag(l_row_number) := l_c_line_editable_flag(i);
5252 l_pd_parent_element_name(l_row_number) := l_c_parent_element_name(i);
5253 l_pd_amount_type(l_row_number) := 'COST';
5254 l_pd_amount_subtype(l_row_number) := 'RAW_COST';
5255 l_pd_amount_type_id(l_row_number) := 150; -- amount_type_id for 'COST'
5256 l_pd_amount_subtype_id(l_row_number) := 160; -- amount_subtype_id for 'RAW_COST'
5257 -- DEFAULT_AMOUNT_TYPE_CODE check: if not the default, then demote
5258 if not ((l_default_amount_type_code = 'COST') and
5259 (l_default_amount_subtype_code = 'RAW_COST')) then
5260 l_pd_parent_element_name(l_row_number) := l_pd_element_name(l_row_number);
5261 l_pd_element_name(l_row_number) := null;
5262 l_pd_has_child_element(l_row_number) := 'N';
5263 else
5264 l_pd_has_child_element(l_row_number) := 'Y';
5265 end if;
5266 l_pd_period_1(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5267 (p_period_profile_id => l_period_profile_id,
5268 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
5269 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
5270 p_project_currency_type => l_currency_type,
5271 p_amount_type_id => 160,
5272 p_period_number => 1);
5273 l_pd_period_2(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5274 (p_period_profile_id => l_period_profile_id,
5275 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
5276 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
5277 p_project_currency_type => l_currency_type,
5278 p_amount_type_id => 160,
5279 p_period_number => 2);
5280 l_pd_period_3(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5281 (p_period_profile_id => l_period_profile_id,
5282 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
5283 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
5284 p_project_currency_type => l_currency_type,
5285 p_amount_type_id => 160,
5286 p_period_number => 3);
5287 l_pd_period_4(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5288 (p_period_profile_id => l_period_profile_id,
5289 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
5290 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
5291 p_project_currency_type => l_currency_type,
5292 p_amount_type_id => 160,
5293 p_period_number => 4);
5294 l_pd_period_5(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5295 (p_period_profile_id => l_period_profile_id,
5296 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
5297 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
5298 p_project_currency_type => l_currency_type,
5299 p_amount_type_id => 160,
5300 p_period_number => 5);
5301 l_pd_period_6(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5302 (p_period_profile_id => l_period_profile_id,
5303 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
5304 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
5305 p_project_currency_type => l_currency_type,
5306 p_amount_type_id => 160,
5307 p_period_number => 6);
5308 l_pd_period_7(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5309 (p_period_profile_id => l_period_profile_id,
5310 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
5311 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
5312 p_project_currency_type => l_currency_type,
5313 p_amount_type_id => 160,
5314 p_period_number => 7);
5315 l_pd_period_8(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5316 (p_period_profile_id => l_period_profile_id,
5317 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
5318 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
5319 p_project_currency_type => l_currency_type,
5320 p_amount_type_id => 160,
5321 p_period_number => 8);
5322 l_pd_period_9(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5323 (p_period_profile_id => l_period_profile_id,
5324 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
5325 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
5326 p_project_currency_type => l_currency_type,
5327 p_amount_type_id => 160,
5328 p_period_number => 9);
5329 l_pd_period_10(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5330 (p_period_profile_id => l_period_profile_id,
5331 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
5332 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
5333 p_project_currency_type => l_currency_type,
5334 p_amount_type_id => 160,
5335 p_period_number => 10);
5336 l_pd_period_11(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5337 (p_period_profile_id => l_period_profile_id,
5338 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
5339 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
5340 p_project_currency_type => l_currency_type,
5341 p_amount_type_id => 160,
5342 p_period_number => 11);
5343 l_pd_period_12(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5344 (p_period_profile_id => l_period_profile_id,
5345 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
5346 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
5347 p_project_currency_type => l_currency_type,
5348 p_amount_type_id => 160,
5349 p_period_number => 12);
5350 l_pd_period_13(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5351 (p_period_profile_id => l_period_profile_id,
5352 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
5353 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
5354 p_project_currency_type => l_currency_type,
5355 p_amount_type_id => 160,
5356 p_period_number => 13);
5357 l_pd_preceding(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5358 (p_period_profile_id => l_period_profile_id,
5359 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
5360 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
5361 p_project_currency_type => l_currency_type,
5362 p_amount_type_id => 160,
5363 p_period_number => 0);
5364 l_pd_succeeding(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5365 (p_period_profile_id => l_period_profile_id,
5366 p_budget_version_id => l_pd_cost_budget_version_id(l_row_number),
5367 p_resource_assignment_id => l_pd_cost_res_assignment_id(l_row_number),
5368 p_project_currency_type => l_currency_type,
5369 p_amount_type_id => 160,
5370 p_period_number => 14);
5371 l_pd_project_total(l_row_number) := l_c_raw_cost(i); -- bug 2699651
5372 end if; -- display_flag: RAW COST
5373
5374 if pa_fp_view_plans_pub.G_DISPLAY_FLAG_REVENUE = 'Y' then
5375 -- insert (0'S) for REVENUE row
5376 l_row_number := l_row_number + 1; -- increment row counter
5377 l_pd_project_id(l_row_number) := l_c_project_id(i);
5378 l_pd_task_id(l_row_number) := l_c_task_id(i);
5379 l_pd_resource_list_member_id(l_row_number) := l_c_resource_list_member_id(i);
5380 l_pd_unit_of_measure(l_row_number) := null;
5381 l_pd_cost_budget_version_id(l_row_number) := l_c_cost_budget_version_id(i);
5382 l_pd_cost_res_assignment_id(l_row_number) := l_c_cost_res_assignment_id(i);
5383 l_pd_revenue_budget_version_id(l_row_number) := -1;
5384 l_pd_revenue_res_assignment_id(l_row_number) := -1;
5385 l_pd_element_name(l_row_number) := l_c_element_name(i);
5386 l_pd_element_level(l_row_number) := l_c_element_level(i);
5387 l_pd_row_level(l_row_number) := l_c_row_level(i);
5388 --l_pd_line_editable_flag(l_row_number) := l_c_line_editable_flag(i);
5389 l_pd_line_editable_flag(l_row_number) := 'N'; -- there is no revenue RAID
5390 l_pd_parent_element_name(l_row_number) := l_c_parent_element_name(i);
5391 l_pd_amount_type(l_row_number) := 'REVENUE';
5392 l_pd_amount_subtype(l_row_number) := 'REVENUE';
5393 l_pd_amount_type_id(l_row_number) := 100; -- amount_type_id of REVENUE
5394 l_pd_amount_subtype_id(l_row_number) := 100; -- amount_subtype_id of REVENUE
5395 -- DEFAULT_AMOUNT_TYPE_CODE check: if not the default, then demote
5396 if not ((l_default_amount_type_code = 'REVENUE') and
5397 (l_default_amount_subtype_code = 'REVENUE')) then
5398 l_pd_parent_element_name(l_row_number) := l_pd_element_name(l_row_number);
5399 l_pd_element_name(l_row_number) := null;
5400 l_pd_has_child_element(l_row_number) := 'N';
5401 else
5402 l_pd_has_child_element(l_row_number) := 'Y';
5403 end if;
5404 l_pd_period_1(l_row_number) := null;
5405 l_pd_period_2(l_row_number) := null;
5406 l_pd_period_3(l_row_number) := null;
5407 l_pd_period_4(l_row_number) := null;
5408 l_pd_period_5(l_row_number) := null;
5409 l_pd_period_6(l_row_number) := null;
5410 l_pd_period_7(l_row_number) := null;
5411 l_pd_period_8(l_row_number) := null;
5412 l_pd_period_9(l_row_number) := null;
5413 l_pd_period_10(l_row_number) := null;
5414 l_pd_period_11(l_row_number) := null;
5415 l_pd_period_12(l_row_number) := null;
5416 l_pd_period_13(l_row_number) := null;
5417 l_pd_preceding(l_row_number) := null;
5418 l_pd_succeeding(l_row_number) := null;
5419 l_pd_project_total(l_row_number) := null; -- bug 2699651
5420 end if; -- display_flag: REVENUE
5421
5422 if pa_fp_view_plans_pub.G_DISPLAY_FLAG_MARGIN = 'Y' then
5423 -- insert (0's) for MARGIN row
5424 l_row_number := l_row_number + 1; -- increment row counter
5425 l_pd_project_id(l_row_number) := l_c_project_id(i);
5426 l_pd_task_id(l_row_number) := l_c_task_id(i);
5427 l_pd_resource_list_member_id(l_row_number) := l_c_resource_list_member_id(i);
5428 l_pd_unit_of_measure(l_row_number) := null;
5429 l_pd_cost_budget_version_id(l_row_number) := l_c_cost_budget_version_id(i);
5430 l_pd_cost_res_assignment_id(l_row_number) := l_c_cost_res_assignment_id(i);
5431 l_pd_revenue_budget_version_id(l_row_number) := -1;
5432 l_pd_revenue_res_assignment_id(l_row_number) := -1;
5433 l_pd_element_name(l_row_number) := l_c_element_name(i);
5434 l_pd_element_level(l_row_number) := l_c_element_level(i);
5435 l_pd_row_level(l_row_number) := l_c_row_level(i);
5436 --l_pd_line_editable_flag(l_row_number) := l_c_line_editable_flag(i);
5437 l_pd_line_editable_flag(l_row_number) := 'N'; -- cannot edit inserted row
5438 l_pd_parent_element_name(l_row_number) := l_c_parent_element_name(i);
5439 l_pd_amount_type(l_row_number) := 'MARGIN';
5440 l_pd_amount_subtype(l_row_number) := 'MARGIN';
5441 l_pd_amount_type_id(l_row_number) := 230; -- amount_type_id of MARGIN
5442 l_pd_amount_subtype_id(l_row_number) := 230; -- amount_subtype_id of MARGIN
5443 -- DEFAULT_AMOUNT_TYPE_CODE check: if not the default, then demote
5444 if not ((l_default_amount_type_code = 'MARGIN') and
5445 (l_default_amount_subtype_code = 'MARGIN')) then
5446 l_pd_parent_element_name(l_row_number) := l_pd_element_name(l_row_number);
5447 l_pd_element_name(l_row_number) := null;
5448 l_pd_has_child_element(l_row_number) := 'N';
5449 else
5450 l_pd_has_child_element(l_row_number) := 'Y';
5451 end if;
5452 l_pd_period_1(l_row_number) := null;
5453 l_pd_period_2(l_row_number) := null;
5454 l_pd_period_3(l_row_number) := null;
5455 l_pd_period_4(l_row_number) := null;
5456 l_pd_period_5(l_row_number) := null;
5457 l_pd_period_6(l_row_number) := null;
5458 l_pd_period_7(l_row_number) := null;
5459 l_pd_period_8(l_row_number) := null;
5460 l_pd_period_9(l_row_number) := null;
5461 l_pd_period_10(l_row_number) := null;
5462 l_pd_period_11(l_row_number) := null;
5463 l_pd_period_12(l_row_number) := null;
5464 l_pd_period_13(l_row_number) := null;
5465 l_pd_preceding(l_row_number) := null;
5466 l_pd_succeeding(l_row_number) := null;
5467 l_pd_project_total(l_row_number) := null; -- bug 2699651
5468 end if; -- display_flag: MARGIN
5469
5470 if pa_fp_view_plans_pub.G_DISPLAY_FLAG_MARGINPCT = 'Y' then
5471 -- insert (0'S) for MARGIN_PERCENT row
5472 l_row_number := l_row_number + 1; -- increment row counter
5473 l_pd_project_id(l_row_number) := l_c_project_id(i);
5474 l_pd_task_id(l_row_number) := l_c_task_id(i);
5475 l_pd_resource_list_member_id(l_row_number) := l_c_resource_list_member_id(i);
5476 l_pd_unit_of_measure(l_row_number) := null;
5477 l_pd_cost_budget_version_id(l_row_number) := l_c_cost_budget_version_id(i);
5478 l_pd_cost_res_assignment_id(l_row_number) := l_c_cost_res_assignment_id(i);
5479 l_pd_revenue_budget_version_id(l_row_number) := -1;
5480 l_pd_revenue_res_assignment_id(l_row_number) := -1;
5481 l_pd_element_name(l_row_number) := l_c_element_name(i);
5482 l_pd_element_level(l_row_number) := l_c_element_level(i);
5483 l_pd_row_level(l_row_number) := l_c_row_level(i);
5484 --l_pd_line_editable_flag(l_row_number) := l_c_line_editable_flag(i);
5485 l_pd_line_editable_flag(l_row_number) := 'N'; -- cannot edit inserted row
5486 l_pd_parent_element_name(l_row_number) := l_c_parent_element_name(i);
5487 l_pd_amount_type(l_row_number) := 'MARGIN_PERCENT';
5488 l_pd_amount_subtype(l_row_number) := 'MARGIN_PERCENT';
5489 l_pd_amount_type_id(l_row_number) := 231; -- amount_type_id of MARGIN_PERCENT
5490 l_pd_amount_subtype_id(l_row_number) := 231; -- amount_subtype_id of MARGIN_PERCENT
5491 -- DEFAULT_AMOUNT_TYPE_CODE check: if not the default, then demote
5492 if not ((l_default_amount_type_code = 'MARGIN_PERCENT') and
5493 (l_default_amount_subtype_code = 'MARGIN_PERCENT')) then
5494 l_pd_parent_element_name(l_row_number) := l_pd_element_name(l_row_number);
5495 l_pd_element_name(l_row_number) := null;
5496 l_pd_has_child_element(l_row_number) := 'N';
5497 else
5498 l_pd_has_child_element(l_row_number) := 'Y';
5499 end if;
5500 l_pd_period_1(l_row_number) := null;
5501 l_pd_period_2(l_row_number) := null;
5502 l_pd_period_3(l_row_number) := null;
5503 l_pd_period_4(l_row_number) := null;
5504 l_pd_period_5(l_row_number) := null;
5505 l_pd_period_6(l_row_number) := null;
5506 l_pd_period_7(l_row_number) := null;
5507 l_pd_period_8(l_row_number) := null;
5508 l_pd_period_9(l_row_number) := null;
5509 l_pd_period_10(l_row_number) := null;
5510 l_pd_period_11(l_row_number) := null;
5511 l_pd_period_12(l_row_number) := null;
5512 l_pd_period_13(l_row_number) := null;
5513 l_pd_preceding(l_row_number) := null;
5514 l_pd_succeeding(l_row_number) := null;
5515 l_pd_project_total(l_row_number) := null; -- bug 2699651
5516 end if; -- display_flag: MARGIN PERCENT
5517 end if; -- pa_fp_view_plans_pub.G_AMT_OR_PD = 'P'
5518 end if; -- not found_complement
5519 end loop; -- COST PL/SQL loop
5520 pa_debug.write('pa_fp_view_plans_pub.pa_fp_vp_pop_tables_separate', '400: iterated through cost pl/sql table', 1);
5521 l_err_stage := 600;
5522 -- after looping through the COST PL/SQL table, iterate through the REVENUE PL/SQL
5523 -- table, and copy over the untouched rows for PERIOD PL/SQL table
5524 for k in nvl(l_r_project_id.first,0)..nvl(l_r_project_id.last,-1) loop
5525
5526 -- copy over the REVENUE PL/SQL rows into PERIODS PL/SQL table, padding cost #'s with 0's
5527 l_cur_resource_assignment_id := l_r_revenue_res_assignment_id(k);
5528
5529 if pa_fp_view_plans_pub.G_AMT_OR_PD = 'P' then
5530 if pa_fp_view_plans_pub.G_DISPLAY_FLAG_QUANTITY = 'Y' then
5531 -- process the QUANTITY row based on the value of l_report_labor_hrs_from_code
5532 if l_report_labor_hrs_from_code = 'REVENUE' then
5533 l_row_number := l_row_number + 1; -- increment row counter
5534 l_pd_project_id(l_row_number) := l_r_project_id(k);
5535 l_pd_task_id(l_row_number) := l_r_task_id(k);
5536 l_pd_resource_list_member_id(l_row_number) := l_r_resource_list_member_id(k);
5537 l_pd_unit_of_measure(l_row_number) := l_r_unit_of_measure(k);
5538 l_pd_cost_budget_version_id(l_row_number) := -1;
5539 l_pd_cost_res_assignment_id(l_row_number) := -1;
5540 l_pd_revenue_budget_version_id(l_row_number) := l_r_revenue_budget_version_id(k);
5541 l_pd_revenue_res_assignment_id(l_row_number) := l_r_revenue_res_assignment_id(k);
5542 l_pd_element_name(l_row_number) := l_r_element_name(k);
5543 l_pd_element_level(l_row_number) := l_r_element_level(k);
5544 l_pd_row_level(l_row_number) := l_r_row_level(k);
5545 l_pd_line_editable_flag(l_row_number) := l_r_line_editable_flag(k);
5546 l_pd_parent_element_name(l_row_number) := l_r_parent_element_name(k);
5547 l_pd_amount_type(l_row_number) := 'QUANTITY';
5548 l_pd_amount_subtype(l_row_number) := 'QUANTITY';
5549 l_pd_amount_type_id(l_row_number) := 215; -- amount_type_id of 'QUANTITY'
5550 l_pd_amount_subtype_id(l_row_number) := 215; -- amount_subtype_id of 'QUANTITY'
5551 -- DEFAULT_AMOUNT_TYPE_CODE check: if not the default, then demote
5552 if not ((l_default_amount_type_code = 'QUANTITY') and
5553 (l_default_amount_subtype_code = 'QUANTITY')) then
5554 l_pd_parent_element_name(l_row_number) := l_pd_element_name(l_row_number);
5555 l_pd_element_name(l_row_number) := null;
5556 l_pd_has_child_element(l_row_number) := 'N';
5557 else
5558 l_pd_has_child_element(l_row_number) := 'Y';
5559 end if;
5560 l_pd_period_1(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5561 (p_period_profile_id => l_period_profile_id,
5562 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
5563 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
5564 p_project_currency_type => l_currency_type,
5565 p_amount_type_id => 215,
5566 p_period_number => 1);
5567 l_pd_period_2(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5568 (p_period_profile_id => l_period_profile_id,
5569 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
5570 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
5571 p_project_currency_type => l_currency_type,
5572 p_amount_type_id => 215,
5573 p_period_number => 2);
5574 l_pd_period_3(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5575 (p_period_profile_id => l_period_profile_id,
5576 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
5577 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
5578 p_project_currency_type => l_currency_type,
5579 p_amount_type_id => 215,
5580 p_period_number => 3);
5581 l_pd_period_4(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5582 (p_period_profile_id => l_period_profile_id,
5583 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
5584 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
5585 p_project_currency_type => l_currency_type,
5586 p_amount_type_id => 215,
5587 p_period_number => 4);
5588 l_pd_period_5(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5589 (p_period_profile_id => l_period_profile_id,
5590 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
5591 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
5592 p_project_currency_type => l_currency_type,
5593 p_amount_type_id => 215,
5594 p_period_number => 5);
5595 l_pd_period_6(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5596 (p_period_profile_id => l_period_profile_id,
5597 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
5598 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
5599 p_project_currency_type => l_currency_type,
5600 p_amount_type_id => 215,
5601 p_period_number => 6);
5602 l_pd_period_7(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5603 (p_period_profile_id => l_period_profile_id,
5604 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
5605 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
5606 p_project_currency_type => l_currency_type,
5607 p_amount_type_id => 215,
5608 p_period_number => 7);
5609 l_pd_period_8(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5610 (p_period_profile_id => l_period_profile_id,
5611 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
5612 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
5613 p_project_currency_type => l_currency_type,
5614 p_amount_type_id => 215,
5615 p_period_number => 8);
5616 l_pd_period_9(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5617 (p_period_profile_id => l_period_profile_id,
5618 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
5619 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
5620 p_project_currency_type => l_currency_type,
5621 p_amount_type_id => 215,
5622 p_period_number => 9);
5623 l_pd_period_10(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5624 (p_period_profile_id => l_period_profile_id,
5625 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
5626 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
5627 p_project_currency_type => l_currency_type,
5628 p_amount_type_id => 215,
5629 p_period_number => 10);
5630 l_pd_period_11(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5631 (p_period_profile_id => l_period_profile_id,
5632 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
5633 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
5634 p_project_currency_type => l_currency_type,
5635 p_amount_type_id => 215,
5636 p_period_number => 11);
5637 l_pd_period_12(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5638 (p_period_profile_id => l_period_profile_id,
5639 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
5640 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
5641 p_project_currency_type => l_currency_type,
5642 p_amount_type_id => 215,
5643 p_period_number => 12);
5644 l_pd_period_13(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5645 (p_period_profile_id => l_period_profile_id,
5646 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
5647 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
5648 p_project_currency_type => l_currency_type,
5649 p_amount_type_id => 215,
5650 p_period_number => 13);
5651 l_pd_preceding(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5652 (p_period_profile_id => l_period_profile_id,
5653 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
5654 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
5655 p_project_currency_type => l_currency_type,
5656 p_amount_type_id => 215,
5657 p_period_number => 0);
5658 l_pd_succeeding(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5659 (p_period_profile_id => l_period_profile_id,
5660 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
5661 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
5662 p_project_currency_type => l_currency_type,
5663 p_amount_type_id => 215,
5664 p_period_number => 14);
5665 l_pd_project_total(l_row_number) := l_r_labor_hours(k); -- bug 2699651
5666 -- we need to insert an empty QUANTITY row if it's not reported from REVENUE version
5667 else
5668 l_row_number := l_row_number + 1; -- increment row counter
5669 l_pd_project_id(l_row_number) := l_r_project_id(k);
5670 l_pd_task_id(l_row_number) := l_r_task_id(k);
5671 l_pd_resource_list_member_id(l_row_number) := l_r_resource_list_member_id(k);
5672 l_pd_unit_of_measure(l_row_number) := l_r_unit_of_measure(k);
5673 l_pd_cost_budget_version_id(l_row_number) := -1;
5674 l_pd_cost_res_assignment_id(l_row_number) := -1;
5675 l_pd_revenue_budget_version_id(l_row_number) := l_r_revenue_budget_version_id(k);
5676 l_pd_revenue_res_assignment_id(l_row_number) := l_r_revenue_res_assignment_id(k);
5677 l_pd_element_name(l_row_number) := l_r_element_name(k);
5678 l_pd_element_level(l_row_number) := l_r_element_level(k);
5679 l_pd_row_level(l_row_number) := l_r_row_level(k);
5680 --l_pd_line_editable_flag(l_row_number) := l_r_line_editable_flag(k);
5681 l_pd_line_editable_flag(l_row_number) := 'N'; -- cannot edit inserted row
5682 l_pd_parent_element_name(l_row_number) := l_r_parent_element_name(k);
5683 l_pd_amount_type(l_row_number) := 'QUANTITY';
5684 l_pd_amount_subtype(l_row_number) := 'QUANTITY';
5685 l_pd_amount_type_id(l_row_number) := 215; -- amount_type_id of QUANTITY
5686 l_pd_amount_subtype_id(l_row_number) := 215; -- amount_subtype_id of QUANTITY
5687 -- DEFAULT_AMOUNT_TYPE_CODE check: if not the default, then demote
5688 if not ((l_default_amount_type_code = 'QUANTITY') and
5689 (l_default_amount_subtype_code = 'QUANTITY')) then
5690 l_pd_parent_element_name(l_row_number) := l_pd_element_name(l_row_number);
5691 l_pd_element_name(l_row_number) := null;
5692 l_pd_has_child_element(l_row_number) := 'N';
5693 else
5694 l_pd_has_child_element(l_row_number) := 'Y';
5695 end if;
5696 l_pd_period_1(l_row_number) := null;
5697 l_pd_period_2(l_row_number) := null;
5698 l_pd_period_3(l_row_number) := null;
5699 l_pd_period_4(l_row_number) := null;
5700 l_pd_period_5(l_row_number) := null;
5701 l_pd_period_6(l_row_number) := null;
5702 l_pd_period_7(l_row_number) := null;
5703 l_pd_period_8(l_row_number) := null;
5704 l_pd_period_9(l_row_number) := null;
5705 l_pd_period_10(l_row_number) := null;
5706 l_pd_period_11(l_row_number) := null;
5707 l_pd_period_12(l_row_number) := null;
5708 l_pd_period_13(l_row_number) := null;
5709 l_pd_preceding(l_row_number) := null;
5710 l_pd_succeeding(l_row_number) := null;
5711 l_pd_project_total(l_row_number) := null; -- bug 2699651
5712 end if; -- QUANTITY
5713 end if; -- display_flag: QUANTITY
5714
5715 if pa_fp_view_plans_pub.G_DISPLAY_FLAG_REVENUE = 'Y' then
5716 -- process the REVENUE row for this REVENUE version
5717 l_row_number := l_row_number + 1; -- increment row counter
5718 l_pd_project_id(l_row_number) := l_r_project_id(k);
5719 l_pd_task_id(l_row_number) := l_r_task_id(k);
5720 l_pd_resource_list_member_id(l_row_number) := l_r_resource_list_member_id(k);
5721 l_pd_unit_of_measure(l_row_number) := null;
5722 l_pd_cost_budget_version_id(l_row_number) := -1;
5723 l_pd_cost_res_assignment_id(l_row_number) := -1;
5724 l_pd_revenue_budget_version_id(l_row_number) := l_r_revenue_budget_version_id(k);
5725 l_pd_revenue_res_assignment_id(l_row_number) := l_r_revenue_res_assignment_id(k);
5726 l_pd_element_name(l_row_number) := l_r_element_name(k);
5727 l_pd_element_level(l_row_number) := l_r_element_level(k);
5728 l_pd_row_level(l_row_number) := l_r_row_level(k);
5729 l_pd_parent_element_name(l_row_number) := l_r_parent_element_name(k);
5730 l_pd_line_editable_flag(l_row_number) := l_r_line_editable_flag(k);
5731 l_pd_amount_type(l_row_number) := 'REVENUE';
5732 l_pd_amount_subtype(l_row_number) := 'REVENUE';
5733 l_pd_amount_type_id(l_row_number) := 100; -- amount_type_code of 'REVENUE'
5734 l_pd_amount_subtype_id(l_row_number) := 100; -- amount_subtype_code of 'REVENUE'
5735 -- DEFAULT_AMOUNT_TYPE_CODE check: if not the default, then demote
5736 if not ((l_default_amount_type_code = 'REVENUE') and
5737 (l_default_amount_subtype_code = 'REVENUE')) then
5738 l_pd_parent_element_name(l_row_number) := l_pd_element_name(l_row_number);
5739 l_pd_element_name(l_row_number) := null;
5740 l_pd_has_child_element(l_row_number) := 'N';
5741 else
5742 l_pd_has_child_element(l_row_number) := 'Y';
5743 end if;
5744 l_pd_period_1(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5745 (p_period_profile_id => l_period_profile_id,
5746 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
5747 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
5748 p_project_currency_type => l_currency_type,
5749 p_amount_type_id => 100,
5750 p_period_number => 1);
5751 l_pd_period_2(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5752 (p_period_profile_id => l_period_profile_id,
5753 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
5754 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
5755 p_project_currency_type => l_currency_type,
5756 p_amount_type_id => 100,
5757 p_period_number => 2);
5758 l_pd_period_3(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5759 (p_period_profile_id => l_period_profile_id,
5760 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
5761 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
5762 p_project_currency_type => l_currency_type,
5763 p_amount_type_id => 100,
5764 p_period_number => 3);
5765 l_pd_period_4(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5766 (p_period_profile_id => l_period_profile_id,
5767 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
5768 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
5769 p_project_currency_type => l_currency_type,
5770 p_amount_type_id => 100,
5771 p_period_number => 4);
5772 l_pd_period_5(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5773 (p_period_profile_id => l_period_profile_id,
5774 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
5775 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
5776 p_project_currency_type => l_currency_type,
5777 p_amount_type_id => 100,
5778 p_period_number => 5);
5779 l_pd_period_6(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5780 (p_period_profile_id => l_period_profile_id,
5781 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
5782 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
5783 p_project_currency_type => l_currency_type,
5784 p_amount_type_id => 100,
5785 p_period_number => 6);
5786 l_pd_period_7(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5787 (p_period_profile_id => l_period_profile_id,
5788 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
5789 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
5790 p_project_currency_type => l_currency_type,
5791 p_amount_type_id => 100,
5792 p_period_number => 7);
5793 l_pd_period_8(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5794 (p_period_profile_id => l_period_profile_id,
5795 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
5796 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
5797 p_project_currency_type => l_currency_type,
5798 p_amount_type_id => 100,
5799 p_period_number => 8);
5800 l_pd_period_9(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5801 (p_period_profile_id => l_period_profile_id,
5802 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
5803 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
5804 p_project_currency_type => l_currency_type,
5805 p_amount_type_id => 100,
5806 p_period_number => 9);
5807 l_pd_period_10(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5808 (p_period_profile_id => l_period_profile_id,
5809 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
5810 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
5811 p_project_currency_type => l_currency_type,
5812 p_amount_type_id => 100,
5813 p_period_number => 10);
5814 l_pd_period_11(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5815 (p_period_profile_id => l_period_profile_id,
5816 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
5817 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
5818 p_project_currency_type => l_currency_type,
5819 p_amount_type_id => 100,
5820 p_period_number => 11);
5821 l_pd_period_12(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5822 (p_period_profile_id => l_period_profile_id,
5823 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
5824 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
5825 p_project_currency_type => l_currency_type,
5826 p_amount_type_id => 100,
5827 p_period_number => 12);
5828 l_pd_period_13(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5829 (p_period_profile_id => l_period_profile_id,
5830 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
5831 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
5832 p_project_currency_type => l_currency_type,
5833 p_amount_type_id => 100,
5834 p_period_number => 13);
5835 l_pd_preceding(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5836 (p_period_profile_id => l_period_profile_id,
5837 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
5838 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
5839 p_project_currency_type => l_currency_type,
5840 p_amount_type_id => 100,
5841 p_period_number => 0);
5842 l_pd_succeeding(l_row_number) := pa_fp_view_plans_util.get_period_n_value
5843 (p_period_profile_id => l_period_profile_id,
5844 p_budget_version_id => l_pd_revenue_budget_version_id(l_row_number),
5845 p_resource_assignment_id => l_pd_revenue_res_assignment_id(l_row_number),
5846 p_project_currency_type => l_currency_type,
5847 p_amount_type_id => 100,
5848 p_period_number => 14);
5849 l_pd_project_total(l_row_number) := l_r_revenue(k); -- bug 2699651
5850 end if; -- display_flag: REVENUE
5851
5852 if pa_fp_view_plans_pub.G_DISPLAY_FLAG_BURDCOST = 'Y' then
5853 -- insert (0'S) for BURDENED_COST row
5854 l_row_number := l_row_number + 1; -- increment row counter
5855 l_pd_project_id(l_row_number) := l_r_project_id(k);
5856 l_pd_task_id(l_row_number) := l_r_task_id(k);
5857 l_pd_resource_list_member_id(l_row_number) := l_r_resource_list_member_id(k);
5858 l_pd_unit_of_measure(l_row_number) := null;
5859 l_pd_cost_budget_version_id(l_row_number) := -1;
5860 l_pd_cost_res_assignment_id(l_row_number) := -1;
5861 l_pd_revenue_budget_version_id(l_row_number) := l_r_revenue_budget_version_id(k);
5862 l_pd_revenue_res_assignment_id(l_row_number) := l_r_revenue_res_assignment_id(k);
5863 l_pd_element_name(l_row_number) := l_r_element_name(k);
5864 l_pd_element_level(l_row_number) := l_r_element_level(k);
5865 l_pd_row_level(l_row_number) := l_r_row_level(k);
5866 l_pd_parent_element_name(l_row_number) := l_r_parent_element_name(k);
5867 --l_pd_line_editable_flag(l_row_number) := l_r_line_editable_flag(k);
5868 l_pd_line_editable_flag(l_row_number) := 'N'; -- cannot edit inserted rows
5869 l_pd_amount_type(l_row_number) := 'COST';
5870 l_pd_amount_subtype(l_row_number) := 'BURDENED_COST';
5871 l_pd_amount_type_id(l_row_number) := 150; -- amount_type_id of COST
5872 l_pd_amount_subtype_id(l_row_number) := 165; -- amount_subtype_id of BURDENED_COST
5873 -- DEFAULT_AMOUNT_TYPE_CODE check: if not the default, then demote
5874 if not ((l_default_amount_type_code = 'COST') and
5875 (l_default_amount_subtype_code = 'BURDENED_COST')) then
5876 l_pd_parent_element_name(l_row_number) := l_pd_element_name(l_row_number);
5877 l_pd_element_name(l_row_number) := null;
5878 l_pd_has_child_element(l_row_number) := 'N';
5879 else
5880 l_pd_has_child_element(l_row_number) := 'Y';
5881 end if;
5882 l_pd_period_1(l_row_number) := null;
5883 l_pd_period_2(l_row_number) := null;
5884 l_pd_period_3(l_row_number) := null;
5885 l_pd_period_4(l_row_number) := null;
5886 l_pd_period_5(l_row_number) := null;
5887 l_pd_period_6(l_row_number) := null;
5888 l_pd_period_7(l_row_number) := null;
5889 l_pd_period_8(l_row_number) := null;
5890 l_pd_period_9(l_row_number) := null;
5891 l_pd_period_10(l_row_number) := null;
5892 l_pd_period_11(l_row_number) := null;
5893 l_pd_period_12(l_row_number) := null;
5894 l_pd_period_13(l_row_number) := null;
5895 l_pd_preceding(l_row_number) := null;
5896 l_pd_succeeding(l_row_number) := null;
5897 l_pd_project_total(l_row_number) := null; -- bug 2699651
5898 end if; -- display_flag: BURDENED COST
5899
5900 if pa_fp_view_plans_pub.G_DISPLAY_FLAG_RAWCOST = 'Y' then
5901 -- insert (0'S) for RAW_COST row
5902 l_row_number := l_row_number + 1; -- increment row counter
5903 l_pd_project_id(l_row_number) := l_r_project_id(k);
5904 l_pd_task_id(l_row_number) := l_r_task_id(k);
5905 l_pd_resource_list_member_id(l_row_number) := l_r_resource_list_member_id(k);
5906 l_pd_unit_of_measure(l_row_number) := null;
5907 l_pd_cost_budget_version_id(l_row_number) := -1;
5908 l_pd_cost_res_assignment_id(l_row_number) := -1;
5909 l_pd_revenue_budget_version_id(l_row_number) := l_r_revenue_budget_version_id(k);
5910 l_pd_revenue_res_assignment_id(l_row_number) := l_r_revenue_res_assignment_id(k);
5911 l_pd_element_name(l_row_number) := l_r_element_name(k);
5912 l_pd_element_level(l_row_number) := l_r_element_level(k);
5913 l_pd_row_level(l_row_number) := l_r_row_level(k);
5914 l_pd_parent_element_name(l_row_number) := l_r_parent_element_name(k);
5915 --l_pd_line_editable_flag(l_row_number) := l_r_line_editable_flag(k);
5916 l_pd_line_editable_flag(l_row_number) := 'N'; -- cannot edit inserted row
5917 l_pd_amount_type(l_row_number) := 'COST';
5918 l_pd_amount_subtype(l_row_number) := 'RAW_COST';
5919 l_pd_amount_type_id(l_row_number) := 150; -- amount_type_id of COST
5920 l_pd_amount_subtype_id(l_row_number) := 160; -- amount_subtype_id of BURDENED_COST
5921 -- DEFAULT_AMOUNT_TYPE_CODE check: if not the default, then demote
5922 if not ((l_default_amount_type_code = 'COST') and
5923 (l_default_amount_subtype_code = 'RAW_COST')) then
5924 l_pd_parent_element_name(l_row_number) := l_pd_element_name(l_row_number);
5925 l_pd_element_name(l_row_number) := null;
5926 l_pd_has_child_element(l_row_number) := 'N';
5927 else
5928 l_pd_has_child_element(l_row_number) := 'Y';
5929 end if;
5930 l_pd_period_1(l_row_number) := null;
5931 l_pd_period_2(l_row_number) := null;
5932 l_pd_period_3(l_row_number) := null;
5933 l_pd_period_4(l_row_number) := null;
5934 l_pd_period_5(l_row_number) := null;
5935 l_pd_period_6(l_row_number) := null;
5936 l_pd_period_7(l_row_number) := null;
5937 l_pd_period_8(l_row_number) := null;
5938 l_pd_period_9(l_row_number) := null;
5939 l_pd_period_10(l_row_number) := null;
5940 l_pd_period_11(l_row_number) := null;
5941 l_pd_period_12(l_row_number) := null;
5942 l_pd_period_13(l_row_number) := null;
5943 l_pd_preceding(l_row_number) := null;
5944 l_pd_succeeding(l_row_number) := null;
5945 l_pd_project_total(l_row_number) := null; -- bug 2699651
5946 end if; -- display_flag: RAW COST
5947
5948 if pa_fp_view_plans_pub.G_DISPLAY_FLAG_MARGIN = 'Y' then
5949 -- insert (0'S) for MARGIN row
5950 l_row_number := l_row_number + 1; -- increment row counter
5951 l_pd_project_id(l_row_number) := l_r_project_id(k);
5952 l_pd_task_id(l_row_number) := l_r_task_id(k);
5953 l_pd_resource_list_member_id(l_row_number) := l_r_resource_list_member_id(k);
5954 l_pd_unit_of_measure(l_row_number) := null;
5955 l_pd_cost_budget_version_id(l_row_number) := -1;
5956 l_pd_cost_res_assignment_id(l_row_number) := -1;
5957 l_pd_revenue_budget_version_id(l_row_number) := l_r_revenue_budget_version_id(k);
5958 l_pd_revenue_res_assignment_id(l_row_number) := l_r_revenue_res_assignment_id(k);
5959 l_pd_element_name(l_row_number) := l_r_element_name(k);
5960 l_pd_element_level(l_row_number) := l_r_element_level(k);
5961 l_pd_row_level(l_row_number) := l_r_row_level(k);
5962 --l_pd_line_editable_flag(l_row_number) := l_r_line_editable_flag(k);
5963 l_pd_line_editable_flag(l_row_number) := 'N'; -- cannot edit inserted row
5964 l_pd_parent_element_name(l_row_number) := l_r_parent_element_name(k);
5965 l_pd_amount_type(l_row_number) := 'MARGIN';
5966 l_pd_amount_subtype(l_row_number) := 'MARGIN';
5967 l_pd_amount_type_id(l_row_number) := 230; -- amount_type_id of MARGIN
5968 l_pd_amount_subtype_id(l_row_number) := 230; -- amount_type_id of MARGIN
5969 -- DEFAULT_AMOUNT_TYPE_CODE check: if not the default, then demote
5970 if not ((l_default_amount_type_code = 'MARGIN') and
5971 (l_default_amount_subtype_code = 'MARGIN')) then
5972 l_pd_parent_element_name(l_row_number) := l_pd_element_name(l_row_number);
5973 l_pd_element_name(l_row_number) := null;
5974 l_pd_has_child_element(l_row_number) := 'N';
5975 else
5976 l_pd_has_child_element(l_row_number) := 'Y';
5977 end if;
5978 l_pd_period_1(l_row_number) := null;
5979 l_pd_period_2(l_row_number) := null;
5980 l_pd_period_3(l_row_number) := null;
5981 l_pd_period_4(l_row_number) := null;
5982 l_pd_period_5(l_row_number) := null;
5983 l_pd_period_6(l_row_number) := null;
5984 l_pd_period_7(l_row_number) := null;
5985 l_pd_period_8(l_row_number) := null;
5986 l_pd_period_9(l_row_number) := null;
5987 l_pd_period_10(l_row_number) := null;
5988 l_pd_period_11(l_row_number) := null;
5989 l_pd_period_12(l_row_number) := null;
5990 l_pd_period_13(l_row_number) := null;
5991 l_pd_preceding(l_row_number) := null;
5992 l_pd_succeeding(l_row_number) := null;
5993 l_pd_project_total(l_row_number) := null; -- bug 2699651
5994 end if; -- display_flag: MARGIN
5995
5996 if pa_fp_view_plans_pub.G_DISPLAY_FLAG_MARGINPCT = 'Y' then
5997 -- insert (0'S) for MARGIN_PERCENT row
5998 l_row_number := l_row_number + 1; -- increment row counter
5999 l_pd_project_id(l_row_number) := l_r_project_id(k);
6000 l_pd_task_id(l_row_number) := l_r_task_id(k);
6001 l_pd_resource_list_member_id(l_row_number) := l_r_resource_list_member_id(k);
6002 l_pd_unit_of_measure(l_row_number) := null;
6003 l_pd_cost_budget_version_id(l_row_number) := -1;
6004 l_pd_cost_res_assignment_id(l_row_number) := -1;
6005 l_pd_revenue_budget_version_id(l_row_number) := l_r_revenue_budget_version_id(k);
6006 l_pd_revenue_res_assignment_id(l_row_number) := l_r_revenue_res_assignment_id(k);
6007 l_pd_element_name(l_row_number) := l_r_element_name(k);
6008 l_pd_element_level(l_row_number) := l_r_element_level(k);
6009 l_pd_row_level(l_row_number) := l_r_row_level(k);
6010 --l_pd_line_editable_flag(l_row_number) := l_r_line_editable_flag(k);
6011 l_pd_line_editable_flag(l_row_number) := 'N'; -- cannot edit inserted row
6012 l_pd_parent_element_name(l_row_number) := l_r_parent_element_name(k);
6013 l_pd_amount_type(l_row_number) := 'MARGIN_PERCENT';
6014 l_pd_amount_subtype(l_row_number) := 'MARGIN_PERCENT';
6015 l_pd_amount_type_id(l_row_number) := 231; -- amount_type_id of MARGIN_PERCENT
6016 l_pd_amount_subtype_id(l_row_number) := 231; -- amount_type_id of MARGIN_PERCENT
6017 -- DEFAULT_AMOUNT_TYPE_CODE check: if not the default, then demote
6018 if not ((l_default_amount_type_code = 'MARGIN_PERCENT') and
6019 (l_default_amount_subtype_code = 'MARGIN_PERCENT')) then
6020 l_pd_parent_element_name(l_row_number) := l_pd_element_name(l_row_number);
6021 l_pd_element_name(l_row_number) := null;
6022 l_pd_has_child_element(l_row_number) := 'N';
6023 else
6024 l_pd_has_child_element(l_row_number) := 'Y';
6025 end if;
6026 l_pd_period_1(l_row_number) := null;
6027 l_pd_period_2(l_row_number) := null;
6028 l_pd_period_3(l_row_number) := null;
6029 l_pd_period_4(l_row_number) := null;
6030 l_pd_period_5(l_row_number) := null;
6031 l_pd_period_6(l_row_number) := null;
6032 l_pd_period_7(l_row_number) := null;
6033 l_pd_period_8(l_row_number) := null;
6034 l_pd_period_9(l_row_number) := null;
6035 l_pd_period_10(l_row_number) := null;
6036 l_pd_period_11(l_row_number) := null;
6037 l_pd_period_12(l_row_number) := null;
6038 l_pd_period_13(l_row_number) := null;
6039 l_pd_preceding(l_row_number) := null;
6040 l_pd_succeeding(l_row_number) := null;
6041 l_pd_project_total(l_row_number) := null; -- bug 2699651
6042 end if; -- display_flag: MARGIN PERCENT
6043 end if; -- pa_fp_view_plans_pub.G_AMT_OR_PD = 'P'
6044 end loop; -- REVENUE PL/SQL loop: the untouched rows
6045 l_err_stage := 700;
6046 pa_debug.write('pa_fp_view_plans_pub.pa_fp_vp_pop_tables_separate', '500: iterated through rev pl/sql table', 1);
6047
6048 /* TRANSFER DATA FROM PL/SQL TABLES TO GLOBAL TEMPORARY TABLES */
6049
6050 -- POPULATE global temporary table PA_FIN_VP_AMTS_VIEW_TMP from the
6051 -- COST PL/SQL table
6052 -- rows in the COST PL/SQL table
6053
6054 if pa_fp_view_plans_pub.G_AMT_OR_PD = 'A' then
6055 forall x in nvl(l_c_project_id.first,0)..nvl(l_c_project_id.last,-1)
6056 insert into pa_fin_vp_amts_view_tmp
6057 (project_id,
6058 task_id,
6059 resource_list_member_id,
6060 element_name,
6061 element_level,
6062 labor_hours,
6063 burdened_cost,
6064 raw_cost,
6065 revenue,
6066 margin,
6067 margin_percent,
6068 editable_flag,
6069 row_level,
6070 parent_element_name,
6071 cost_resource_assignment_id,
6072 rev_resource_assignment_id,
6073 all_resource_assignment_id,
6074 unit_of_measure,
6075 has_child_element) values
6076 (l_c_project_id(x),
6077 l_c_task_id(x),
6078 l_c_resource_list_member_id(x),
6079 l_c_element_name(x),
6080 l_c_element_level(x),
6081 l_c_labor_hours(x),
6082 l_c_burdened_cost(x),
6083 l_c_raw_cost(x),
6084 l_c_revenue(x),
6085 l_c_margin(x),
6086 l_c_margin_percent(x),
6087 l_c_line_editable_flag(x),
6088 l_c_row_level(x),
6089 l_c_parent_element_name(x),
6090 l_c_cost_res_assignment_id(x),
6091 l_c_revenue_res_assignment_id(x),
6092 -1,
6093 l_c_unit_of_measure(x),
6094 l_c_has_child_element(x));
6095 l_err_stage := 800;
6096 pa_debug.write('pa_fp_view_plans_pub.pa_fp_vp_pop_tables_separate', '600: transfer from cost pl/sql table to amts_tmp table', 1);
6097 -- rows in the REVENUE PL/SQL table
6098 forall y in nvl(l_r_project_id.first,0)..nvl(l_r_project_id.last,-1)
6099 insert into pa_fin_vp_amts_view_tmp
6100 (project_id,
6101 task_id,
6102 resource_list_member_id,
6103 element_name,
6104 element_level,
6105 labor_hours,
6106 burdened_cost,
6107 raw_cost,
6108 revenue,
6109 margin,
6110 margin_percent,
6111 editable_flag,
6112 row_level,
6113 parent_element_name,
6114 cost_resource_assignment_id,
6115 rev_resource_assignment_id,
6116 all_resource_assignment_id,
6117 unit_of_measure,
6118 has_child_element) values
6119 (l_r_project_id(y),
6120 l_r_task_id(y),
6121 l_r_resource_list_member_id(y),
6122 l_r_element_name(y),
6123 l_r_element_level(y),
6124 l_r_labor_hours(y),
6125 0, -- burdened_cost
6126 0, -- raw_cost
6127 l_r_revenue(y),
6128 0, -- margin
6129 0, -- margin_percent
6130 l_r_line_editable_flag(y),
6131 l_r_row_level(y),
6132 l_r_parent_element_name(y),
6133 -1,
6134 l_r_revenue_res_assignment_id(y),
6135 -1,
6136 l_r_unit_of_measure(y),
6137 'Y'); -- PERFORMANCE LIABILITY: FOR UNMARRIED REVENUE ROWS, WE SAY ALWAYS HAVE CHILD
6138 end if; -- pa_fp_view_plans_pub.G_AMT_OR_PD= 'A'
6139 l_err_stage := 900;
6140 pa_debug.write('pa_fp_view_plans_pub.pa_fp_vp_pop_tables_separate', '700: transfer from rev pl/sql table to amts_tmp table', 1);
6141 --hr_utility.trace('total rows is ' || to_char(nvl(l_c_project_id.last,0) + nvl(l_r_project_id.last,0)));
6142 -- POPULATE global temporary table PA_FIN_VP_PDS_VIEW_TMP from the
6143 -- PERIODS PL/SQL table
6144 if pa_fp_view_plans_pub.G_AMT_OR_PD = 'P' then
6145 --hr_utility.trace('inserting into pa_fin_vp_pds_view_tmp for POP_TEM_TABLES_SEP');
6146 --hr_utility.trace('l_pd_project_id.last= ' || to_char(l_pd_project_id.last));
6147 forall z in nvl(l_pd_project_id.first,0)..nvl(l_pd_project_id.last,-1)
6148 insert into pa_fin_vp_pds_view_tmp
6149 (project_id,
6150 task_id,
6151 resource_list_member_id,
6152 uom,
6153 element_name,
6154 element_level,
6155 editable_flag,
6156 row_level,
6157 parent_element_name,
6158 amount_type,
6159 amount_subtype,
6160 amount_type_id,
6161 amount_subtype_id,
6162 period_amount1,
6163 period_amount2,
6164 period_amount3,
6165 period_amount4,
6166 period_amount5,
6167 period_amount6,
6168 period_amount7,
6169 period_amount8,
6170 period_amount9,
6171 period_amount10,
6172 period_amount11,
6173 period_amount12,
6174 period_amount13,
6175 cost_resource_assignment_id,
6176 rev_resource_assignment_id,
6177 all_resource_assignment_id,
6178 preceding_periods_amount,
6179 succeeding_periods_amount,
6180 has_child_element,
6181 project_total) values
6182 (l_pd_project_id(z),
6183 l_pd_task_id(z),
6184 l_pd_resource_list_member_id(z),
6185 l_pd_unit_of_measure(z),
6186 l_pd_element_name(z),
6187 l_pd_element_level(z),
6188 l_pd_line_editable_flag(z),
6189 l_pd_row_level(z),
6190 l_pd_parent_element_name(z),
6191 l_pd_amount_type(z),
6192 l_pd_amount_subtype(z),
6193 l_pd_amount_type_id(z),
6194 l_pd_amount_subtype_id(z),
6195 l_pd_period_1(z),
6196 l_pd_period_2(z),
6197 l_pd_period_3(z),
6198 l_pd_period_4(z),
6199 l_pd_period_5(z),
6200 l_pd_period_6(z),
6201 l_pd_period_7(z),
6202 l_pd_period_8(z),
6203 l_pd_period_9(z),
6204 l_pd_period_10(z),
6205 l_pd_period_11(z),
6206 l_pd_period_12(z),
6207 l_pd_period_13(z),
6208 l_pd_cost_res_assignment_id(z),
6209 l_pd_revenue_res_assignment_id(z),
6210 -1,
6211 l_pd_preceding(z),
6212 l_pd_succeeding(z),
6213 l_pd_has_child_element(z),
6214 l_pd_project_total(z));
6215 end if; --pa_fp_view_plans_pub.G_AMT_OR_PD = 'P'
6216 l_err_stage:= 1000;
6217 pa_debug.write('pa_fp_view_plans_pub.pa_fp_vp_pop_tables_separate', '700: transfer from pds pl/sql table to pds_tmp table', 1);
6218 commit;
6219 pa_debug.write('pa_fp_view_plans_pub.pa_fp_vp_pop_tables_separate', '800: leaving procedure', 2);
6220 EXCEPTION
6221 when others then
6222 rollback to VIEW_PLANS_POP_TABLES_SEP;
6223 --hr_utility.trace('error stage= ' || to_char(l_err_stage));
6224 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6225 x_msg_count := 1;
6226 x_msg_data := SQLERRM;
6227 FND_MSG_PUB.add_exc_msg( p_pkg_name => 'PA_FP_VIEW_PLANS_PUB',
6228 p_procedure_name => 'pa_fp_vp_pop_tables_separate');
6229 pa_debug.reset_err_stack;
6230 return;
6231 end pa_fp_vp_pop_tables_separate;
6232 /* ------------------------------------------------------------------ */
6233
6234 /* PROCEDURE: pa_fp_vp_pop_tables_together
6235 * Populates pa_fin_vp_amts_view_tmp assuming that both cost and revenue numbers are
6236 * stored in same budget version
6237 */
6238 -- modified for new AMOUNT_TYPE_CODE and AMOUNT_SUBTYPE_CODE
6239 -- modified for RAW_COST logic and MARGIN calculation logic 06/20/02
6240 -- 11/12/2002 Dlai: updated cursors to select project OR projfunc amounts
6241 -- added logic for inserting rows for periodic view only if
6242 -- flag='Y' for that amount type
6243 -- 11/25/2002 Dlai: select ra.total_plan_quantity for labor hours
6244 -- 02/17/2003 Dlai: added l_pd_unit_of_measure (bug 2807032)
6245 -- 02/20/2003 Dlai: added l_has_child_element/l_pd_has_child_element
6246 -- 07/25/2003 Dlai: for PA_FIN_VP_PDS_VIEW_TMP, populate project_total
6247 procedure pa_fp_vp_pop_tables_together
6248 (p_project_id IN pa_budget_versions.project_id%TYPE,
6249 p_budget_version_id IN pa_budget_versions.budget_version_id%TYPE,
6250 x_return_status OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
6251 x_msg_count OUT NOCOPY NUMBER, --File.Sql.39 bug 4440895
6252 x_msg_data OUT NOCOPY VARCHAR2) --File.Sql.39 bug 4440895
6253 is
6254
6255 /* LOCAL VARIABLES */
6256 l_report_labor_hrs_from_code pa_proj_fp_options.report_labor_hrs_from_code%TYPE;
6257 l_cur_resource_assignment_id pa_resource_assignments.resource_assignment_id%TYPE;
6258 l_row_number NUMBER; -- keep track of number of rows in PERIODS PL/SQL table
6259 l_cost_row_number NUMBER; -- PERIODS PL/SQL: cost row for calculating margin
6260 l_revenue_row_number NUMBER; -- PERIODS PL/SQL: rev row for calculating margin
6261 l_period_profile_id pa_proj_period_profiles.period_profile_id%TYPE; -- used to retrieve values for period numbers
6262 l_default_amount_type_code pa_proj_fp_options.default_amount_type_code%TYPE;
6263 l_default_amount_subtype_code pa_proj_fp_options.default_amount_subtype_code%TYPE;
6264 l_currency_type VARCHAR2(30);
6265
6266 cursor av_csr is
6267 select ra.project_id,
6268 ra.task_id,
6269 ra.resource_list_member_id,
6270 ra.budget_version_id,
6271 ra.resource_assignment_id,
6272 pa_fp_view_plans_util.assign_element_name
6273 (ra.project_id,
6274 ra.task_id,
6275 ra.resource_list_member_id) as element_name, -- element_name
6276 pa_fp_view_plans_util.assign_element_level
6277 (ra.project_id,
6278 ra.budget_version_id,
6279 ra.task_id,
6280 ra.resource_list_member_id) as element_level, -- element_level
6281 -- ra.total_utilization_hours as labor_hours,
6282 ra.total_plan_quantity as labor_hours,
6283 DECODE(pa_fp_view_plans_pub.G_FP_CURRENCY_TYPE,
6284 'PROJ', ra.total_project_burdened_cost,
6285 ra.total_plan_burdened_cost) as burdened_cost, -- burdened_cost
6286 DECODE(pa_fp_view_plans_pub.G_FP_CURRENCY_TYPE,
6287 'PROJ', ra.total_project_raw_cost,
6288 ra.total_plan_raw_cost) as raw_cost, -- raw_cost
6289 DECODE(pa_fp_view_plans_pub.G_FP_CURRENCY_TYPE,
6290 'PROJ', ra.total_project_revenue,
6291 ra.total_plan_revenue) as revenue, -- revenue
6292 DECODE(pa_fp_view_plans_pub.G_FP_CURRENCY_TYPE,
6293 'PROJ', DECODE(pa_fp_view_plans_pub.G_FP_CALC_MARGIN_FROM,
6294 'R', (ra.total_project_revenue - ra.total_project_raw_cost),
6295 (ra.total_project_revenue - ra.total_project_burdened_cost)),
6296 DECODE(pa_fp_view_plans_pub.G_FP_CALC_MARGIN_FROM,
6297 'R', (ra.total_plan_revenue - total_plan_raw_cost),
6298 (ra.total_plan_revenue - ra.total_plan_burdened_cost))) as margin, -- margin
6299 DECODE(pa_fp_view_plans_pub.G_FP_CURRENCY_TYPE,
6300 'PROJ',
6301 DECODE(ra.total_project_revenue,
6302 0, 0,
6303 null, null,
6304 DECODE(pa_fp_view_plans_pub.G_FP_CALC_MARGIN_FROM,
6305 'R', (ra.total_project_revenue - ra.total_project_raw_cost)/
6306 ra.total_project_revenue,
6307 (ra.total_project_revenue - ra.total_project_burdened_cost)/
6308 ra.total_project_revenue)),
6309 DECODE(ra.total_plan_revenue,
6310 0, 0,
6311 null, null,
6312 DECODE(pa_fp_view_plans_pub.G_FP_CALC_MARGIN_FROM,
6313 'R', (ra.total_plan_revenue - ra.total_plan_raw_cost)/
6314 ra.total_plan_revenue,
6315 (ra.total_plan_revenue - ra.total_plan_burdened_cost)/
6316 ra.total_plan_revenue))) as margin_percent, -- margin_percent
6317 DECODE(ra.resource_assignment_type,
6318 'ROLLED_UP', 'N',
6319 'USER_ENTERED', 'Y',
6320 'Y') as line_editable_flag, -- line_editable_flag
6321 pa_fp_view_plans_util.assign_row_level
6322 (ra.project_id,
6323 ra.task_id,
6324 ra.resource_list_member_id) as row_level,
6325 pa_fp_view_plans_util.assign_parent_element
6326 (ra.project_id,
6327 ra.task_id,
6328 ra.resource_list_member_id) as parent_element_name,
6329 ra.unit_of_measure,
6330 pa_fp_view_plans_pub.has_child_rows
6331 (p_project_id,
6332 p_budget_version_id,
6333 -1,
6334 ra.task_id,
6335 ra.resource_list_member_id,
6336 null,
6337 'A') as has_child_element
6338 from pa_resource_assignments ra,
6339 pa_proj_fp_options po
6340 where ra.budget_version_id = p_budget_version_id and
6341 ra.budget_version_id = po.fin_plan_version_id and
6342 po.fin_plan_option_level_code='PLAN_VERSION' and
6343 ((ra.resource_assignment_type = 'USER_ENTERED' and
6344 exists (select 1 from pa_budget_lines bl
6345 where bl.budget_version_id = ra.budget_version_id and
6346 bl.resource_assignment_id = ra.resource_assignment_id)) or
6347 ra.resource_assignment_type = 'ROLLED_UP');
6348
6349 /* PL/SQL tables */
6350 l_project_id pa_fp_view_plans_pub.av_tab_project_id;
6351 l_task_id pa_fp_view_plans_pub.av_tab_task_id;
6352 l_resource_list_member_id pa_fp_view_plans_pub.av_tab_resource_list_member_id;
6353 l_budget_version_id pa_fp_view_plans_pub.av_tab_cost_budget_version_id;
6354 l_res_assignment_id pa_fp_view_plans_pub.av_tab_cost_res_assignment_id;
6355 l_element_name pa_fp_view_plans_pub.av_tab_element_name;
6356 l_element_level pa_fp_view_plans_pub.av_tab_element_level;
6357 l_labor_hours pa_fp_view_plans_pub.av_tab_labor_hours;
6358 l_burdened_cost pa_fp_view_plans_pub.av_tab_burdened_cost;
6359 l_raw_cost pa_fp_view_plans_pub.av_tab_raw_cost;
6360 l_revenue pa_fp_view_plans_pub.av_tab_revenue;
6361 l_margin pa_fp_view_plans_pub.av_tab_margin;
6362 l_margin_percent pa_fp_view_plans_pub.av_tab_margin_percent;
6363 l_line_editable_flag pa_fp_view_plans_pub.av_tab_line_editable;
6364 l_row_level pa_fp_view_plans_pub.av_tab_row_level;
6365 l_parent_element_name pa_fp_view_plans_pub.av_tab_element_name;
6366 l_unit_of_measure pa_fp_view_plans_pub.av_tab_unit_of_measure;
6367 l_has_child_element pa_fp_view_plans_pub.av_tab_has_child_element;
6368
6369 /* PL/SQL table for PERIODS VIEW */
6370 l_pd_project_id pa_fp_view_plans_pub.av_tab_project_id;
6371 l_pd_task_id pa_fp_view_plans_pub.av_tab_task_id;
6372 l_pd_resource_list_member_id pa_fp_view_plans_pub.av_tab_resource_list_member_id;
6373 l_pd_unit_of_measure pa_fp_view_plans_pub.av_tab_unit_of_measure;
6374 l_pd_budget_version_id pa_fp_view_plans_pub.av_tab_cost_budget_version_id;
6375 l_pd_res_assignment_id pa_fp_view_plans_pub.av_tab_cost_res_assignment_id;
6376 l_pd_element_name pa_fp_view_plans_pub.av_tab_element_name;
6377 l_pd_element_level pa_fp_view_plans_pub.av_tab_element_level;
6378 l_pd_line_editable_flag pa_fp_view_plans_pub.av_tab_line_editable;
6379 l_pd_row_level pa_fp_view_plans_pub.av_tab_row_level;
6380 l_pd_parent_element_name pa_fp_view_plans_pub.av_tab_element_name;
6381 l_pd_amount_type pa_fp_view_plans_pub.av_tab_amount_type;
6382 l_pd_amount_subtype pa_fp_view_plans_pub.av_tab_amount_subtype;
6383 l_pd_amount_type_id pa_fp_view_plans_pub.av_tab_amount_type_id;
6384 l_pd_amount_subtype_id pa_fp_view_plans_pub.av_tab_amount_subtype_id;
6385 l_pd_period_1 pa_fp_view_plans_pub.av_tab_period_numbers;
6386 l_pd_period_2 pa_fp_view_plans_pub.av_tab_period_numbers;
6387 l_pd_period_3 pa_fp_view_plans_pub.av_tab_period_numbers;
6388 l_pd_period_4 pa_fp_view_plans_pub.av_tab_period_numbers;
6389 l_pd_period_5 pa_fp_view_plans_pub.av_tab_period_numbers;
6390 l_pd_period_6 pa_fp_view_plans_pub.av_tab_period_numbers;
6391 l_pd_period_7 pa_fp_view_plans_pub.av_tab_period_numbers;
6392 l_pd_period_8 pa_fp_view_plans_pub.av_tab_period_numbers;
6393 l_pd_period_9 pa_fp_view_plans_pub.av_tab_period_numbers;
6394 l_pd_period_10 pa_fp_view_plans_pub.av_tab_period_numbers;
6395 l_pd_period_11 pa_fp_view_plans_pub.av_tab_period_numbers;
6396 l_pd_period_12 pa_fp_view_plans_pub.av_tab_period_numbers;
6397 l_pd_period_13 pa_fp_view_plans_pub.av_tab_period_numbers;
6398 l_pd_preceding pa_fp_view_plans_pub.av_tab_preceding_amts;
6399 l_pd_succeeding pa_fp_view_plans_pub.av_tab_succeeding_amts;
6400 l_pd_has_child_element pa_fp_view_plans_pub.av_tab_has_child_element;
6401 l_pd_project_total pa_fp_view_plans_pub.av_tab_period_numbers; -- bug 2699651
6402 -- local debugging variables
6403 l_err_stage NUMBER(15);
6404
6405 begin
6406 --hr_utility.trace_on(null, 'dlai');
6407 l_err_stage := 100;
6408 pa_debug.write('pa_fp_view_plans_pub.pa_fp_vp_pop_tables_together', '100: entering pa_fp_vp_pop_tables_together', 2);
6409 --hr_utility.trace('entered pa_fp_vp_pop_tables_together: 100');
6410 x_return_status := FND_API.G_RET_STS_SUCCESS;
6411 x_msg_count := 0;
6412 SAVEPOINT VIEW_PLANS_POP_TABLES_SAME;
6413
6414 -- used to query pa_proj_periods_denorm table
6415 select DECODE(pa_fp_view_plans_pub.G_FP_CURRENCY_TYPE,
6416 'PROJFUNC', 'PROJ_FUNCTIONAL',
6417 'PROJ', 'PROJECT',
6418 'TRANSACTION')
6419 into l_currency_type
6420 from dual;
6421
6422 -- this is for populating PERIODS PL/SQL table
6423 l_row_number := 0;
6424 select NVL(po.report_labor_hrs_from_code, 'COST'),
6425 pa_fp_view_plans_pub.G_DEFAULT_AMOUNT_TYPE_CODE,
6426 pa_fp_view_plans_pub.G_DEFAULT_AMT_SUBTYPE_CODE,
6427 -- po.default_amount_type_code,
6428 -- po.default_amount_subtype_code
6429 bv.period_profile_id
6430 into l_report_labor_hrs_from_code,
6431 l_default_amount_type_code,
6432 l_default_amount_subtype_code,
6433 l_period_profile_id
6434 from pa_proj_fp_options po,
6435 pa_budget_versions bv
6436 where bv.budget_version_id = p_budget_version_id and
6437 bv.fin_plan_type_id = po.fin_plan_type_id and
6438 po.project_id = p_project_id and
6439 po.fin_plan_option_level_code = 'PLAN_TYPE';
6440 l_err_stage := 200;
6441 pa_debug.write('pa_fp_view_plans_pub.pa_fp_vp_pop_tables_together', '200: retrieved periodprofileid= ' || l_period_profile_id, 1);
6442 --hr_utility.trace('retrieved period profile id: 200');
6443 -- populate the AMOUNTS PL/SQL table
6444 open av_csr;
6445 fetch av_csr bulk collect into
6446 l_project_id,
6447 l_task_id,
6448 l_resource_list_member_id,
6449 l_budget_version_id,
6450 l_res_assignment_id,
6451 l_element_name,
6452 l_element_level,
6453 l_labor_hours,
6454 l_burdened_cost,
6455 l_raw_cost,
6456 l_revenue,
6457 l_margin,
6458 l_margin_percent,
6459 l_line_editable_flag,
6460 l_row_level,
6461 l_parent_element_name,
6462 l_unit_of_measure,
6463 l_has_child_element;
6464 close av_csr;
6465 l_err_stage := 300;
6466 pa_debug.write('pa_fp_view_plans_pub.pa_fp_vp_pop_tables_together', '300: bulk collected into amts pl/sql table', 1);
6467 --hr_utility.trace('bulk collected into amts pl/sql table: 300');
6468 --hr_utility.trace('number of rows = ' || TO_CHAR(l_project_id.last));
6469
6470 -- populate the PERIODS PL/SQL table
6471 -- ONLY if pa_fp_view_plans_pub.G_AMT_OR_PD = 'P'
6472 if pa_fp_view_plans_pub.G_AMT_OR_PD = 'P' then
6473 --hr_utility.trace('l_project_id.first= ' || to_char(l_project_id.first));
6474 --hr_utility.trace('l_project_id.last= ' || to_char(l_project_id.last));
6475 for i in nvl(l_project_id.first,0)..nvl(l_project_id.last,-1) loop
6476 --hr_utility.trace('i= ' || to_char(i));
6477 --hr_utility.trace('loop: ' || to_char(i));
6478 if pa_fp_view_plans_pub.G_DISPLAY_FLAG_QUANTITY = 'Y' then
6479 l_row_number := l_row_number + 1;
6480 -- process the QUANTITY numbers
6481 l_pd_project_id(l_row_number) := l_project_id(i);
6482 l_pd_task_id(l_row_number) := l_task_id(i);
6483 l_pd_resource_list_member_id(l_row_number) := l_resource_list_member_id(i);
6484 l_pd_unit_of_measure(l_row_number) := l_unit_of_measure(i);
6485 l_pd_budget_version_id(l_row_number) := l_budget_version_id(i);
6486 l_pd_res_assignment_id(l_row_number) := l_res_assignment_id(i);
6487 l_pd_element_name(l_row_number) := l_element_name(i);
6488 l_pd_element_level(l_row_number) := l_element_level(i);
6489 l_pd_row_level(l_row_number) := l_row_level(i);
6490 l_pd_parent_element_name(l_row_number) := l_parent_element_name(i);
6491 l_pd_line_editable_flag(l_row_number) := l_line_editable_flag(i);
6492 l_pd_amount_type(l_row_number) := 'QUANTITY';
6493 l_pd_amount_subtype(l_row_number) := 'QUANTITY';
6494 l_pd_amount_type_id(l_row_number) := 215; -- amount_type_id for QUANTITY
6495 l_pd_amount_subtype_id(l_row_number) := 215; -- amount_subtype_id for QUANTITY
6496 -- DEFAULT_AMOUNT_TYPE_CODE check: if not the default, then demote
6497 if not ((l_default_amount_type_code = 'QUANTITY') and
6498 (l_default_amount_subtype_code = 'QUANTITY')) then
6499 l_pd_parent_element_name(l_row_number) := l_pd_element_name(l_row_number);
6500 l_pd_element_name(l_row_number) := null;
6501 l_pd_has_child_element(l_row_number) := 'N';
6502 else
6503 l_pd_has_child_element(l_row_number) := 'Y';
6504 end if;
6505 --hr_utility.trace('quantity: period1');
6506 --hr_utility.trace('p_period_profile_id= ' || to_char(l_period_profile_id));
6507 --hr_utility.trace('p_resource_assignment_id= ' || to_char(l_pd_res_assignment_id(l_row_number)));
6508 --hr_utility.trace('p_project_currency_type= ' || l_currency_type);
6509 l_pd_period_1(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6510 (p_period_profile_id => l_period_profile_id,
6511 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6512 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6513 p_project_currency_type => l_currency_type,
6514 p_amount_type_id => 215,
6515 p_period_number => 1);
6516 l_pd_period_2(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6517 (p_period_profile_id => l_period_profile_id,
6518 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6519 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6520 p_project_currency_type => l_currency_type,
6521 p_amount_type_id => 215,
6522 p_period_number => 2);
6523 l_pd_period_3(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6524 (p_period_profile_id => l_period_profile_id,
6525 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6526 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6527 p_project_currency_type => l_currency_type,
6528 p_amount_type_id => 215,
6529 p_period_number => 3);
6530 l_pd_period_4(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6531 (p_period_profile_id => l_period_profile_id,
6532 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6533 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6534 p_project_currency_type => l_currency_type,
6535 p_amount_type_id => 215,
6536 p_period_number => 4);
6537 l_pd_period_5(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6538 (p_period_profile_id => l_period_profile_id,
6539 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6540 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6541 p_project_currency_type => l_currency_type,
6542 p_amount_type_id => 215,
6543 p_period_number => 5);
6544 l_pd_period_6(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6545 (p_period_profile_id => l_period_profile_id,
6546 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6547 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6548 p_project_currency_type => l_currency_type,
6549 p_amount_type_id => 215,
6550 p_period_number => 6);
6551 l_pd_period_7(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6552 (p_period_profile_id => l_period_profile_id,
6553 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6554 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6555 p_project_currency_type => l_currency_type,
6556 p_amount_type_id => 215,
6557 p_period_number => 7);
6558 l_pd_period_8(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6559 (p_period_profile_id => l_period_profile_id,
6560 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6561 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6562 p_project_currency_type => l_currency_type,
6563 p_amount_type_id => 215,
6564 p_period_number => 8);
6565 l_pd_period_9(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6566 (p_period_profile_id => l_period_profile_id,
6567 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6568 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6569 p_project_currency_type => l_currency_type,
6570 p_amount_type_id => 215,
6571 p_period_number => 9);
6572 l_pd_period_10(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6573 (p_period_profile_id => l_period_profile_id,
6574 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6575 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6576 p_project_currency_type => l_currency_type,
6577 p_amount_type_id => 215,
6578 p_period_number => 10);
6579 l_pd_period_11(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6580 (p_period_profile_id => l_period_profile_id,
6581 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6582 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6583 p_project_currency_type => l_currency_type,
6584 p_amount_type_id => 215,
6585 p_period_number => 11);
6586 l_pd_period_12(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6587 (p_period_profile_id => l_period_profile_id,
6588 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6589 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6590 p_project_currency_type => l_currency_type,
6591 p_amount_type_id => 215,
6592 p_period_number => 12);
6593 l_pd_period_13(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6594 (p_period_profile_id => l_period_profile_id,
6595 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6596 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6597 p_project_currency_type => l_currency_type,
6598 p_amount_type_id => 215,
6599 p_period_number => 13);
6600 l_pd_preceding(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6601 (p_period_profile_id => l_period_profile_id,
6602 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6603 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6604 p_project_currency_type => l_currency_type,
6605 p_amount_type_id => 215,
6606 p_period_number => 0);
6607 l_pd_succeeding(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6608 (p_period_profile_id => l_period_profile_id,
6609 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6610 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6611 p_project_currency_type => l_currency_type,
6612 p_amount_type_id => 215,
6613 p_period_number => 14);
6614 l_pd_project_total(l_row_number) := l_labor_hours(i); -- bug 2699651
6615 end if; -- display_flag: QUANTITY
6616
6617 if pa_fp_view_plans_pub.G_DISPLAY_FLAG_BURDCOST = 'Y' then
6618 -- process the BURDENED_COST numbers
6619 l_row_number := l_row_number + 1;
6620 l_pd_project_id(l_row_number) := l_project_id(i);
6621 l_pd_task_id(l_row_number) := l_task_id(i);
6622 l_pd_resource_list_member_id(l_row_number) := l_resource_list_member_id(i);
6623 l_pd_unit_of_measure(l_row_number) := null;
6624 l_pd_budget_version_id(l_row_number) := l_budget_version_id(i);
6625 l_pd_res_assignment_id(l_row_number) := l_res_assignment_id(i);
6626 l_pd_element_name(l_row_number) := l_element_name(i);
6627 l_pd_element_level(l_row_number) := l_element_level(i);
6628 l_pd_row_level(l_row_number) := l_row_level(i);
6629 l_pd_parent_element_name(l_row_number) := l_parent_element_name(i);
6630 l_pd_line_editable_flag(l_row_number) := l_line_editable_flag(i);
6631 l_pd_amount_type(l_row_number) := 'COST';
6632 l_pd_amount_subtype(l_row_number) := 'BURDENED_COST';
6633 l_pd_amount_type_id(l_row_number) := 150; -- amount_type_id for COST
6634 l_pd_amount_subtype_id(l_row_number) := 165; -- amount_subtype_id for BURDENED_COST
6635 -- DEFAULT_AMOUNT_TYPE_CODE check: if not the default, then demote
6636 if not ((l_default_amount_type_code = 'COST') and
6637 (l_default_amount_subtype_code = 'BURDENED_COST')) then
6638 l_pd_parent_element_name(l_row_number) := l_pd_element_name(l_row_number);
6639 l_pd_element_name(l_row_number) := null;
6640 l_pd_has_child_element(l_row_number) := 'N';
6641 else
6642 l_pd_has_child_element(l_row_number) := 'Y';
6643 end if;
6644 -- 02/14/03 dlai: use appropriate cost row based on G_FP_CALC_MARGIN_FROM
6645 if pa_fp_view_plans_pub.G_FP_CALC_MARGIN_FROM = 'B' then
6646 l_cost_row_number := l_row_number;
6647 end if;
6648 /*
6649 if l_burdened_cost(i) is not null then
6650 l_cost_row_number := l_row_number;
6651 end if;
6652 */
6653 --hr_utility.trace('burdened cost: period1');
6654 l_pd_period_1(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6655 (p_period_profile_id => l_period_profile_id,
6656 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6657 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6658 p_project_currency_type => l_currency_type,
6659 --p_amount_type_id => 150,
6660 p_amount_type_id => 165,
6661 p_period_number => 1);
6662 l_pd_period_2(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6663 (p_period_profile_id => l_period_profile_id,
6664 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6665 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6666 p_project_currency_type => l_currency_type,
6667 --p_amount_type_id => 150,
6668 p_amount_type_id => 165,
6669 p_period_number => 2);
6670 l_pd_period_3(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6671 (p_period_profile_id => l_period_profile_id,
6672 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6673 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6674 p_project_currency_type => l_currency_type,
6675 --p_amount_type_id => 150,
6676 p_amount_type_id => 165,
6677 p_period_number => 3);
6678 l_pd_period_4(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6679 (p_period_profile_id => l_period_profile_id,
6680 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6681 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6682 p_project_currency_type => l_currency_type,
6683 --p_amount_type_id => 150,
6684 p_amount_type_id => 165,
6685 p_period_number => 4);
6686 l_pd_period_5(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6687 (p_period_profile_id => l_period_profile_id,
6688 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6689 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6690 p_project_currency_type => l_currency_type,
6691 --p_amount_type_id => 150,
6692 p_amount_type_id => 165,
6693 p_period_number => 5);
6694 l_pd_period_6(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6695 (p_period_profile_id => l_period_profile_id,
6696 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6697 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6698 p_project_currency_type => l_currency_type,
6699 --p_amount_type_id => 150,
6700 p_amount_type_id => 165,
6701 p_period_number => 6);
6702 l_pd_period_7(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6703 (p_period_profile_id => l_period_profile_id,
6704 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6705 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6706 p_project_currency_type => l_currency_type,
6707 --p_amount_type_id => 150,
6708 p_amount_type_id => 165,
6709 p_period_number => 7);
6710 l_pd_period_8(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6711 (p_period_profile_id => l_period_profile_id,
6712 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6713 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6714 p_project_currency_type => l_currency_type,
6715 --p_amount_type_id => 150,
6716 p_amount_type_id => 165,
6717 p_period_number => 8);
6718 l_pd_period_9(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6719 (p_period_profile_id => l_period_profile_id,
6720 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6721 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6722 p_project_currency_type => l_currency_type,
6723 --p_amount_type_id => 150,
6724 p_amount_type_id => 165,
6725 p_period_number => 9);
6726 l_pd_period_10(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6727 (p_period_profile_id => l_period_profile_id,
6728 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6729 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6730 p_project_currency_type => l_currency_type,
6731 --p_amount_type_id => 150,
6732 p_amount_type_id => 165,
6733 p_period_number => 10);
6734 l_pd_period_11(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6735 (p_period_profile_id => l_period_profile_id,
6736 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6737 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6738 p_project_currency_type => l_currency_type,
6739 --p_amount_type_id => 150,
6740 p_amount_type_id => 165,
6741 p_period_number => 11);
6742 l_pd_period_12(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6743 (p_period_profile_id => l_period_profile_id,
6744 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6745 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6746 p_project_currency_type => l_currency_type,
6747 --p_amount_type_id => 150,
6748 p_amount_type_id => 165,
6749 p_period_number => 12);
6750 l_pd_period_13(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6751 (p_period_profile_id => l_period_profile_id,
6752 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6753 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6754 p_project_currency_type => l_currency_type,
6755 --p_amount_type_id => 150,
6756 p_amount_type_id => 165,
6757 p_period_number => 13);
6758 l_pd_preceding(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6759 (p_period_profile_id => l_period_profile_id,
6760 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6761 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6762 p_project_currency_type => l_currency_type,
6763 --p_amount_type_id => 150,
6764 p_amount_type_id => 165,
6765 p_period_number => 0);
6766 l_pd_succeeding(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6767 (p_period_profile_id => l_period_profile_id,
6768 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6769 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6770 p_project_currency_type => l_currency_type,
6771 --p_amount_type_id => 150,
6772 p_amount_type_id => 165,
6773 p_period_number => 14);
6774 l_pd_project_total(l_row_number) := l_burdened_cost(i); -- bug 2699651
6775 end if; -- display_flag: BURDENED COST
6776
6777 if pa_fp_view_plans_pub.G_DISPLAY_FLAG_RAWCOST = 'Y' then
6778 -- process the RAW_COST numbers
6779 l_row_number := l_row_number + 1;
6780 l_pd_project_id(l_row_number) := l_project_id(i);
6781 l_pd_task_id(l_row_number) := l_task_id(i);
6782 l_pd_resource_list_member_id(l_row_number) := l_resource_list_member_id(i);
6783 l_pd_unit_of_measure(l_row_number) := null;
6784 l_pd_budget_version_id(l_row_number) := l_budget_version_id(i);
6785 l_pd_res_assignment_id(l_row_number) := l_res_assignment_id(i);
6786 l_pd_element_name(l_row_number) := l_element_name(i);
6787 l_pd_element_level(l_row_number) := l_element_level(i);
6788 l_pd_row_level(l_row_number) := l_row_level(i);
6789 l_pd_parent_element_name(l_row_number) := l_parent_element_name(i);
6790 l_pd_line_editable_flag(l_row_number) := l_line_editable_flag(i);
6791 l_pd_amount_type(l_row_number) := 'COST';
6792 l_pd_amount_subtype(l_row_number) := 'RAW_COST';
6793 l_pd_amount_type_id(l_row_number) := 150; -- amount_type_id for COST
6794 l_pd_amount_subtype_id(l_row_number) := 160; -- amount_subtype_id for RAW_COST
6795 -- DEFAULT_AMOUNT_TYPE_CODE check: if not the default, then demote
6796 if not ((l_default_amount_type_code = 'COST') and
6797 (l_default_amount_subtype_code = 'RAW_COST')) then
6798 l_pd_parent_element_name(l_row_number) := l_pd_element_name(l_row_number);
6799 l_pd_element_name(l_row_number) := null;
6800 l_pd_has_child_element(l_row_number) := 'N';
6801 else
6802 l_pd_has_child_element(l_row_number) := 'Y';
6803 end if;
6804 -- 02/14/03 dlai: use appropriate cost row based on G_FP_CALC_MARGIN_FROM
6805 if pa_fp_view_plans_pub.G_FP_CALC_MARGIN_FROM <> 'B' then
6806 l_cost_row_number := l_row_number;
6807 end if;
6808 /*
6809 if l_burdened_cost(i) is null then
6810 l_cost_row_number := l_row_number;
6811 end if;
6812 */
6813 --hr_utility.trace('raw cost: period1');
6814 l_pd_period_1(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6815 (p_period_profile_id => l_period_profile_id,
6816 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6817 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6818 p_project_currency_type => l_currency_type,
6819 --p_amount_type_id => 150,
6820 p_amount_type_id => 160,
6821 p_period_number => 1);
6822 l_pd_period_2(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6823 (p_period_profile_id => l_period_profile_id,
6824 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6825 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6826 p_project_currency_type => l_currency_type,
6827 --p_amount_type_id => 150,
6828 p_amount_type_id => 160,
6829 p_period_number => 2);
6830 l_pd_period_3(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6831 (p_period_profile_id => l_period_profile_id,
6832 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6833 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6834 p_project_currency_type => l_currency_type,
6835 --p_amount_type_id => 150,
6836 p_amount_type_id => 160,
6837 p_period_number => 3);
6838 l_pd_period_4(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6839 (p_period_profile_id => l_period_profile_id,
6840 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6841 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6842 p_project_currency_type => l_currency_type,
6843 --p_amount_type_id => 150,
6844 p_amount_type_id => 160,
6845 p_period_number => 4);
6846 l_pd_period_5(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6847 (p_period_profile_id => l_period_profile_id,
6848 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6849 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6850 p_project_currency_type => l_currency_type,
6851 --p_amount_type_id => 150,
6852 p_amount_type_id => 160,
6853 p_period_number => 5);
6854 l_pd_period_6(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6855 (p_period_profile_id => l_period_profile_id,
6856 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6857 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6858 p_project_currency_type => l_currency_type,
6859 --p_amount_type_id => 150,
6860 p_amount_type_id => 160,
6861 p_period_number => 6);
6862 l_pd_period_7(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6863 (p_period_profile_id => l_period_profile_id,
6864 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6865 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6866 p_project_currency_type => l_currency_type,
6867 --p_amount_type_id => 150,
6868 p_amount_type_id => 160,
6869 p_period_number => 7);
6870 l_pd_period_8(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6871 (p_period_profile_id => l_period_profile_id,
6872 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6873 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6874 p_project_currency_type => l_currency_type,
6875 --p_amount_type_id => 150,
6876 p_amount_type_id => 160,
6877 p_period_number => 8);
6878 l_pd_period_9(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6879 (p_period_profile_id => l_period_profile_id,
6880 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6881 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6882 p_project_currency_type => l_currency_type,
6883 --p_amount_type_id => 150,
6884 p_amount_type_id => 160,
6885 p_period_number => 9);
6886 l_pd_period_10(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6887 (p_period_profile_id => l_period_profile_id,
6888 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6889 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6890 p_project_currency_type => l_currency_type,
6891 --p_amount_type_id => 150,
6892 p_amount_type_id => 160,
6893 p_period_number => 10);
6894 l_pd_period_11(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6895 (p_period_profile_id => l_period_profile_id,
6896 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6897 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6898 p_project_currency_type => l_currency_type,
6899 --p_amount_type_id => 150,
6900 p_amount_type_id => 160,
6901 p_period_number => 11);
6902 l_pd_period_12(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6903 (p_period_profile_id => l_period_profile_id,
6904 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6905 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6906 p_project_currency_type => l_currency_type,
6907 --p_amount_type_id => 150,
6908 p_amount_type_id => 160,
6909 p_period_number => 12);
6910 l_pd_period_13(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6911 (p_period_profile_id => l_period_profile_id,
6912 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6913 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6914 p_project_currency_type => l_currency_type,
6915 --p_amount_type_id => 150,
6916 p_amount_type_id => 160,
6917 p_period_number => 13);
6918 l_pd_preceding(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6919 (p_period_profile_id => l_period_profile_id,
6920 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6921 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6922 p_project_currency_type => l_currency_type,
6923 --p_amount_type_id => 150,
6924 p_amount_type_id => 160,
6925 p_period_number => 0);
6926 l_pd_succeeding(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6927 (p_period_profile_id => l_period_profile_id,
6928 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6929 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6930 p_project_currency_type => l_currency_type,
6931 --p_amount_type_id => 150,
6932 p_amount_type_id => 160,
6933 p_period_number => 14);
6934 l_pd_project_total(l_row_number) := l_raw_cost(i); -- bug 2699651
6935 end if; -- display_flag: RAW COST
6936
6937 if pa_fp_view_plans_pub.G_DISPLAY_FLAG_REVENUE = 'Y' then
6938 -- process REVENUE information
6939 l_row_number := l_row_number + 1;
6940 l_pd_project_id(l_row_number) := l_project_id(i);
6941 l_pd_task_id(l_row_number) := l_task_id(i);
6942 l_pd_resource_list_member_id(l_row_number) := l_resource_list_member_id(i);
6943 l_pd_unit_of_measure(l_row_number) := null;
6944 l_pd_budget_version_id(l_row_number) := l_budget_version_id(i);
6945 l_pd_res_assignment_id(l_row_number) := l_res_assignment_id(i);
6946 l_pd_element_name(l_row_number) := l_element_name(i);
6947 l_pd_element_level(l_row_number) := l_element_level(i);
6948 l_pd_row_level(l_row_number) := l_row_level(i);
6949 l_pd_parent_element_name(l_row_number) := l_parent_element_name(i);
6950 l_pd_line_editable_flag(l_row_number) := l_line_editable_flag(i);
6951 l_pd_amount_type(l_row_number) := 'REVENUE';
6952 l_pd_amount_subtype(l_row_number) := 'REVENUE';
6953 l_pd_amount_type_id(l_row_number) := 100; -- amount_type_id for REVENUE
6954 l_pd_amount_subtype_id(l_row_number) := 100; -- amount_subtype_id for REVENUE
6955 -- DEFAULT_AMOUNT_TYPE_CODE check: if not the default, then demote
6956 if not ((l_default_amount_type_code = 'REVENUE') and
6957 (l_default_amount_subtype_code = 'REVENUE')) then
6958 l_pd_parent_element_name(l_row_number) := l_pd_element_name(l_row_number);
6959 l_pd_element_name(l_row_number) := null;
6960 l_pd_has_child_element(l_row_number) := 'N';
6961 else
6962 l_pd_has_child_element(l_row_number) := 'Y';
6963 end if;
6964 l_revenue_row_number := l_row_number;
6965 --hr_utility.trace('revenue: period1');
6966 l_pd_period_1(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6967 (p_period_profile_id => l_period_profile_id,
6968 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6969 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6970 p_project_currency_type => l_currency_type,
6971 p_amount_type_id => 100,
6972 p_period_number => 1);
6973 l_pd_period_2(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6974 (p_period_profile_id => l_period_profile_id,
6975 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6976 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6977 p_project_currency_type => l_currency_type,
6978 p_amount_type_id => 100,
6979 p_period_number => 2);
6980 l_pd_period_3(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6981 (p_period_profile_id => l_period_profile_id,
6982 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6983 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6984 p_project_currency_type => l_currency_type,
6985 p_amount_type_id => 100,
6986 p_period_number => 3);
6987 l_pd_period_4(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6988 (p_period_profile_id => l_period_profile_id,
6989 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6990 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6991 p_project_currency_type => l_currency_type,
6992 p_amount_type_id => 100,
6993 p_period_number => 4);
6994 l_pd_period_5(l_row_number) := pa_fp_view_plans_util.get_period_n_value
6995 (p_period_profile_id => l_period_profile_id,
6996 p_budget_version_id => l_pd_budget_version_id(l_row_number),
6997 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
6998 p_project_currency_type => l_currency_type,
6999 p_amount_type_id => 100,
7000 p_period_number => 5);
7001 l_pd_period_6(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7002 (p_period_profile_id => l_period_profile_id,
7003 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7004 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7005 p_project_currency_type => l_currency_type,
7006 p_amount_type_id => 100,
7007 p_period_number => 6);
7008 l_pd_period_7(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7009 (p_period_profile_id => l_period_profile_id,
7010 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7011 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7012 p_project_currency_type => l_currency_type,
7013 p_amount_type_id => 100,
7014 p_period_number => 7);
7015 l_pd_period_8(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7016 (p_period_profile_id => l_period_profile_id,
7017 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7018 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7019 p_project_currency_type => l_currency_type,
7020 p_amount_type_id => 100,
7021 p_period_number => 8);
7022 l_pd_period_9(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7023 (p_period_profile_id => l_period_profile_id,
7024 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7025 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7026 p_project_currency_type => l_currency_type,
7027 p_amount_type_id => 100,
7028 p_period_number => 9);
7029 l_pd_period_10(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7030 (p_period_profile_id => l_period_profile_id,
7031 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7032 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7033 p_project_currency_type => l_currency_type,
7034 p_amount_type_id => 100,
7035 p_period_number => 10);
7036 l_pd_period_11(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7037 (p_period_profile_id => l_period_profile_id,
7038 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7039 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7040 p_project_currency_type => l_currency_type,
7041 p_amount_type_id => 100,
7042 p_period_number => 11);
7043 l_pd_period_12(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7044 (p_period_profile_id => l_period_profile_id,
7045 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7046 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7047 p_project_currency_type => l_currency_type,
7048 p_amount_type_id => 100,
7049 p_period_number => 12);
7050 l_pd_period_13(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7051 (p_period_profile_id => l_period_profile_id,
7052 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7053 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7054 p_project_currency_type => l_currency_type,
7055 p_amount_type_id => 100,
7056 p_period_number => 13);
7057 l_pd_preceding(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7058 (p_period_profile_id => l_period_profile_id,
7059 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7060 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7061 p_project_currency_type => l_currency_type,
7062 p_amount_type_id => 100,
7063 p_period_number => 0);
7064 l_pd_succeeding(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7065 (p_period_profile_id => l_period_profile_id,
7066 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7067 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7068 p_project_currency_type => l_currency_type,
7069 p_amount_type_id => 100,
7070 p_period_number => 14);
7071 l_pd_project_total(l_row_number) := l_revenue(i); -- bug 2699651
7072 end if; -- display_flag: REVENUE
7073
7074 if pa_fp_view_plans_pub.G_DISPLAY_FLAG_MARGIN = 'Y' then
7075 -- calculate and insert the MARGIN row
7076 l_row_number := l_row_number + 1;
7077 l_pd_project_id(l_row_number) := l_project_id(i);
7078 l_pd_task_id(l_row_number) := l_task_id(i);
7079 l_pd_resource_list_member_id(l_row_number) := l_resource_list_member_id(i);
7080 l_pd_unit_of_measure(l_row_number) := null;
7081 l_pd_budget_version_id(l_row_number) := l_budget_version_id(i);
7082 l_pd_res_assignment_id(l_row_number) := l_res_assignment_id(i);
7083 l_pd_element_name(l_row_number) := l_element_name(i);
7084 l_pd_element_level(l_row_number) := l_element_level(i);
7085 l_pd_row_level(l_row_number) := l_row_level(i);
7086 l_pd_parent_element_name(l_row_number) := l_parent_element_name(i);
7087 l_pd_line_editable_flag(l_row_number) := l_line_editable_flag(i);
7088 l_pd_amount_type(l_row_number) := 'MARGIN';
7089 l_pd_amount_subtype(l_row_number) := 'MARGIN';
7090 l_pd_amount_type_id(l_row_number) := 230; -- amount_type_id for MARGIN
7091 l_pd_amount_subtype_id(l_row_number) := 230; -- amount_subtype_id for MARGIN
7092 -- DEFAULT_AMOUNT_TYPE_CODE check: if not the default, then demote
7093 if not ((l_default_amount_type_code = 'MARGIN') and
7094 (l_default_amount_subtype_code = 'MARGIN')) then
7095 l_pd_parent_element_name(l_row_number) := l_pd_element_name(l_row_number);
7096 l_pd_element_name(l_row_number) := null;
7097 l_pd_has_child_element(l_row_number) := 'N';
7098 else
7099 l_pd_has_child_element(l_row_number) := 'Y';
7100 end if;
7101 l_pd_period_1(l_row_number) := l_pd_period_1(l_revenue_row_number)-l_pd_period_1(l_cost_row_number);
7102 l_pd_period_2(l_row_number) := l_pd_period_2(l_revenue_row_number)-l_pd_period_2(l_cost_row_number);
7103 l_pd_period_3(l_row_number) := l_pd_period_3(l_revenue_row_number)-l_pd_period_3(l_cost_row_number);
7104 l_pd_period_4(l_row_number) := l_pd_period_4(l_revenue_row_number)-l_pd_period_4(l_cost_row_number);
7105 l_pd_period_5(l_row_number) := l_pd_period_5(l_revenue_row_number)-l_pd_period_5(l_cost_row_number);
7106 l_pd_period_6(l_row_number) := l_pd_period_6(l_revenue_row_number)-l_pd_period_6(l_cost_row_number);
7107 l_pd_period_7(l_row_number) := l_pd_period_7(l_revenue_row_number)-l_pd_period_7(l_cost_row_number);
7108 l_pd_period_8(l_row_number) := l_pd_period_8(l_revenue_row_number)-l_pd_period_8(l_cost_row_number);
7109 l_pd_period_9(l_row_number) := l_pd_period_9(l_revenue_row_number)-l_pd_period_9(l_cost_row_number);
7110 l_pd_period_10(l_row_number) := l_pd_period_10(l_revenue_row_number)-l_pd_period_10(l_cost_row_number);
7111 l_pd_period_11(l_row_number) := l_pd_period_11(l_revenue_row_number)-l_pd_period_11(l_cost_row_number);
7112 l_pd_period_12(l_row_number) := l_pd_period_12(l_revenue_row_number)-l_pd_period_12(l_cost_row_number);
7113 l_pd_period_13(l_row_number) := l_pd_period_13(l_revenue_row_number)-l_pd_period_13(l_cost_row_number);
7114 l_pd_preceding(l_row_number) := l_pd_preceding(l_revenue_row_number)-l_pd_preceding(l_cost_row_number);
7115 l_pd_succeeding(l_row_number) := l_pd_succeeding(l_revenue_row_number)-l_pd_succeeding(l_cost_row_number);
7116 l_pd_project_total(l_row_number) := l_pd_project_total(l_revenue_row_number)-l_pd_project_total(l_cost_row_number); -- bug 2699651
7117 end if; -- display_flag: MARGIN
7118
7119 if pa_fp_view_plans_pub.G_DISPLAY_FLAG_MARGINPCT = 'Y' then
7120 -- calculate and insert the MARGIN_PERCENT row
7121 l_row_number := l_row_number + 1;
7122 l_pd_project_id(l_row_number) := l_project_id(i);
7123 l_pd_task_id(l_row_number) := l_task_id(i);
7124 l_pd_resource_list_member_id(l_row_number) := l_resource_list_member_id(i);
7125 l_pd_unit_of_measure(l_row_number) := null;
7126 l_pd_budget_version_id(l_row_number) := l_budget_version_id(i);
7127 l_pd_res_assignment_id(l_row_number) := l_res_assignment_id(i);
7128 l_pd_element_name(l_row_number) := l_element_name(i);
7129 l_pd_element_level(l_row_number) := l_element_level(i);
7130 l_pd_row_level(l_row_number) := l_row_level(i);
7131 l_pd_parent_element_name(l_row_number) := l_row_level(i);
7132 l_pd_line_editable_flag(l_row_number) := l_line_editable_flag(i);
7133 l_pd_amount_type(l_row_number) := 'MARGIN_PERCENT';
7134 l_pd_amount_subtype(l_row_number) := 'MARGIN_PERCENT';
7135 l_pd_amount_type_id(l_row_number) := 231; -- amount_type_id of MARGIN_PERCENT
7136 l_pd_amount_subtype_id(l_row_number) := 231; -- amount_subtype_id of MARGIN_PERCENT
7137 -- DEFAULT_AMOUNT_TYPE_CODE check: if not the default, then demote
7138 if not ((l_default_amount_type_code = 'MARGIN_PERCENT') and
7139 (l_default_amount_subtype_code = 'MARGIN_PERCENT')) then
7140 l_pd_parent_element_name(l_row_number) := l_pd_element_name(l_row_number);
7141 l_pd_element_name(l_row_number) := null;
7142 l_pd_has_child_element(l_row_number) := 'N';
7143 else
7144 l_pd_has_child_element(l_row_number) := 'Y';
7145 end if;
7146 l_pd_period_1(l_row_number) := pa_fp_view_plans_util.calc_margin_percent(l_pd_period_1(l_cost_row_number),l_pd_period_1(l_revenue_row_number));
7147 l_pd_period_2(l_row_number) := pa_fp_view_plans_util.calc_margin_percent(l_pd_period_2(l_cost_row_number),l_pd_period_2(l_revenue_row_number));
7148 l_pd_period_3(l_row_number) := pa_fp_view_plans_util.calc_margin_percent(l_pd_period_3(l_cost_row_number),l_pd_period_3(l_revenue_row_number));
7149 l_pd_period_4(l_row_number) := pa_fp_view_plans_util.calc_margin_percent(l_pd_period_4(l_cost_row_number),l_pd_period_4(l_revenue_row_number));
7150 l_pd_period_5(l_row_number) := pa_fp_view_plans_util.calc_margin_percent(l_pd_period_5(l_cost_row_number),l_pd_period_5(l_revenue_row_number));
7151 l_pd_period_6(l_row_number) := pa_fp_view_plans_util.calc_margin_percent(l_pd_period_6(l_cost_row_number),l_pd_period_6(l_revenue_row_number));
7152 l_pd_period_7(l_row_number) := pa_fp_view_plans_util.calc_margin_percent(l_pd_period_7(l_cost_row_number),l_pd_period_7(l_revenue_row_number));
7153 l_pd_period_8(l_row_number) := pa_fp_view_plans_util.calc_margin_percent(l_pd_period_8(l_cost_row_number),l_pd_period_8(l_revenue_row_number));
7154 l_pd_period_9(l_row_number) := pa_fp_view_plans_util.calc_margin_percent(l_pd_period_9(l_cost_row_number),l_pd_period_9(l_revenue_row_number));
7155 l_pd_period_10(l_row_number) := pa_fp_view_plans_util.calc_margin_percent(l_pd_period_10(l_cost_row_number),l_pd_period_10(l_revenue_row_number));
7156 l_pd_period_11(l_row_number) := pa_fp_view_plans_util.calc_margin_percent(l_pd_period_11(l_cost_row_number),l_pd_period_11(l_revenue_row_number));
7157 l_pd_period_12(l_row_number) := pa_fp_view_plans_util.calc_margin_percent(l_pd_period_12(l_cost_row_number),l_pd_period_12(l_revenue_row_number));
7158 l_pd_period_13(l_row_number) := pa_fp_view_plans_util.calc_margin_percent(l_pd_period_13(l_cost_row_number),l_pd_period_13(l_revenue_row_number));
7159 l_pd_preceding(l_row_number) := pa_fp_view_plans_util.calc_margin_percent(l_pd_preceding(l_cost_row_number),l_pd_preceding(l_revenue_row_number));
7160 l_pd_succeeding(l_row_number) := pa_fp_view_plans_util.calc_margin_percent(l_pd_succeeding(l_cost_row_number),l_pd_succeeding(l_revenue_row_number));
7161 end if; -- display_from: MARGIN PERCENT
7162 l_pd_project_total(l_row_number) := pa_fp_view_plans_util.calc_margin_percent(l_pd_project_total(l_cost_row_number),l_pd_project_total(l_revenue_row_number)); -- bug 2699651
7163 end loop;
7164 end if; -- pa_fp_view_plans_pub.G_AMT_OR_PD = 'P'
7165 l_err_stage := 400;
7166 pa_debug.write('pa_fp_view_plans_pub.pa_fp_vp_pop_tables_together', '400: populated the pds pl/sql tables', 1);
7167 --hr_utility.trace('populated the pds pl/sql tables: 400');
7168
7169 /* TRANSFER DATA FROM PL/SQL TABLES TO GLOBAL TEMPORARY TABLES */
7170 -- POPULATE global temporary table PA_FIN_VP_AMTS_VIEW_TMP
7171 -- ONLY if pa_fp_view_plans_pub.G_AMT_OR_PD = 'A'
7172 if pa_fp_view_plans_pub.G_AMT_OR_PD = 'A' then
7173 forall i in nvl(l_project_id.first,0)..nvl(l_project_id.last,-1)
7174 insert into pa_fin_vp_amts_view_tmp
7175 (project_id,
7176 task_id,
7177 resource_list_member_id,
7178 element_name,
7179 element_level,
7180 labor_hours,
7181 burdened_cost,
7182 raw_cost,
7183 revenue,
7184 margin,
7185 margin_percent,
7186 editable_flag,
7187 row_level,
7188 parent_element_name,
7189 cost_resource_assignment_id,
7190 rev_resource_assignment_id,
7191 all_resource_assignment_id,
7192 unit_of_measure,
7193 has_child_element) values
7194 (l_project_id(i),
7195 l_task_id(i),
7196 l_resource_list_member_id(i),
7197 l_element_name(i),
7198 l_element_level(i),
7199 l_labor_hours(i),
7200 l_burdened_cost(i),
7201 l_raw_cost(i),
7202 l_revenue(i),
7203 l_margin(i),
7204 l_margin_percent(i),
7205 l_line_editable_flag(i),
7206 l_row_level(i),
7207 l_parent_element_name(i),
7208 -1,
7209 -1,
7210 l_res_assignment_id(i),
7211 l_unit_of_measure(i),
7212 l_has_child_element(i));
7213 l_err_stage := 500;
7214 pa_debug.write('pa_fp_view_plans_pub.pa_fp_vp_pop_tables_together', '500: populated the amts_tmp tables', 1);
7215 --hr_utility.trace('populated the amts_tmp table: 500');
7216 commit;
7217 end if; -- pa_fp_view_plans_pub.G_AMT_OR_PD = 'A'
7218
7219 -- POPULATE global temporary table PA_FIN_VP_PDS_VIEW_TMP from the
7220 -- PERIODS PL/SQL table
7221 -- ONLY if pa_fp_view_plans_pub.G_AMT_OR_PD = 'P'
7222 if pa_fp_view_plans_pub.G_AMT_OR_PD = 'P' then
7223 --hr_utility.trace('l_pd_project_id.first= ' || TO_CHAR(l_pd_project_id.first));
7224 --hr_utility.trace('l_pd_project_id.last= ' || TO_CHAR(l_pd_project_id.last));
7225 forall z in nvl(l_pd_project_id.first,0)..nvl(l_pd_project_id.last,-1)
7226 insert into pa_fin_vp_pds_view_tmp
7227 (project_id,
7228 task_id,
7229 resource_list_member_id,
7230 uom,
7231 element_name,
7232 element_level,
7233 editable_flag,
7234 row_level,
7235 parent_element_name,
7236 amount_type,
7237 amount_subtype,
7238 amount_type_id,
7239 amount_subtype_id,
7240 period_amount1,
7241 period_amount2,
7242 period_amount3,
7243 period_amount4,
7244 period_amount5,
7245 period_amount6,
7246 period_amount7,
7247 period_amount8,
7248 period_amount9,
7249 period_amount10,
7250 period_amount11,
7251 period_amount12,
7252 period_amount13,
7253 cost_resource_assignment_id,
7254 rev_resource_assignment_id,
7255 all_resource_assignment_id,
7256 preceding_periods_amount,
7257 succeeding_periods_amount,
7258 has_child_element,
7259 project_total) values
7260 (l_pd_project_id(z),
7261 l_pd_task_id(z),
7262 l_pd_resource_list_member_id(z),
7263 l_pd_unit_of_measure(z),
7264 l_pd_element_name(z),
7265 l_pd_element_level(z),
7266 l_pd_line_editable_flag(z),
7267 l_pd_row_level(z),
7268 l_pd_parent_element_name(z),
7269 l_pd_amount_type(z),
7270 l_pd_amount_subtype(z),
7271 l_pd_amount_type_id(z),
7272 l_pd_amount_subtype_id(z),
7273 l_pd_period_1(z),
7274 l_pd_period_2(z),
7275 l_pd_period_3(z),
7276 l_pd_period_4(z),
7277 l_pd_period_5(z),
7278 l_pd_period_6(z),
7279 l_pd_period_7(z),
7280 l_pd_period_8(z),
7281 l_pd_period_9(z),
7282 l_pd_period_10(z),
7283 l_pd_period_11(z),
7284 l_pd_period_12(z),
7285 l_pd_period_13(z),
7286 -1,
7287 -1,
7288 l_pd_res_assignment_id(z),
7289 l_pd_preceding(z),
7290 l_pd_succeeding(z),
7291 l_pd_has_child_element(z),
7292 l_pd_project_total(z));
7293 l_err_stage := 600;
7294 pa_debug.write('pa_fp_view_plans_pub.pa_fp_vp_pop_tables_together', '600: populated the pds_tmp tables', 1);
7295 --hr_utility.trace('populated the pds_temp table: 600');
7296 commit;
7297 end if; -- pa_fp_view_plans_pub.G_AMT_OR_PD = 'P'
7298 pa_debug.write('pa_fp_view_plans_pub.pa_fp_vp_pop_tables_together', '700: leaving procedure', 2);
7299
7300 EXCEPTION
7301 when others then
7302 rollback to VIEW_PLANS_POP_TABLES_SAME;
7303 --hr_utility.trace('l_err_stage= ' || to_char(l_err_stage));
7304 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7305 x_msg_count := 1;
7306 x_msg_data := SQLERRM;
7307 FND_MSG_PUB.add_exc_msg( p_pkg_name => 'PA_FP_VIEW_PLANS_PUB',
7308 p_procedure_name => 'View_Plans_Pop_Tables_Tog');
7309 pa_debug.reset_err_stack;
7310 return;
7311 end pa_fp_vp_pop_tables_together;
7312 /* ------------------------------------------------------------- */
7313
7314 /* PROCEDURE: pa_fp_vp_pop_tables_single
7315 * Populates pa_fin_vp_amts_view_tmp assuming that only one budget version
7316 * (either COST_ONLY or REVENUE_ONLY) is supplied
7317 */
7318 -- modified for new AMOUNT_TYPE_CODE and AMOUNT_SUBTYPE_CODE
7319 -- modified for logic for RAW_COST and MARGIN 06/20/02
7320 -- 11/12/2002 Dlai: updated cursors to select project OR projfunc amounts
7321 -- added logic for inserting rows for periodic view only if
7322 -- flag='Y' for that amount type
7323 -- 11/25/2002 Dlai: for labor_hrs column, query ra.total_plan_quantity
7324 -- 02/17/2003 Dlai: added l_pd_unit_of_measure (bug 2807032)
7325 -- 02/20/2003 Dlai: added l_has_child_element/l_pd_has_child_element
7326 -- 07/25/2003 Dlai: for PA_FIN_VP_PDS_VIEW_TMP, populate project_total
7327 -- 10/07/2003 Dlai: added l_pd_project_total(l_row_number) := null for Margin row
7328 procedure pa_fp_vp_pop_tables_single
7329 (p_project_id IN pa_budget_versions.project_id%TYPE,
7330 p_budget_version_id IN pa_budget_versions.budget_version_id%TYPE,
7331 p_cost_or_rev IN VARCHAR2,
7332 x_return_status OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
7333 x_msg_count OUT NOCOPY NUMBER, --File.Sql.39 bug 4440895
7334 x_msg_data OUT NOCOPY VARCHAR2) --File.Sql.39 bug 4440895
7335 as
7336
7337 /* local variables */
7338 l_report_labor_hrs_from_code pa_proj_fp_options.report_labor_hrs_from_code%TYPE;
7339 l_cur_resource_assignment_id pa_resource_assignments.resource_assignment_id%TYPE;
7340 l_row_number NUMBER; -- keep track of number of rows in PERIODS PL/SQL table
7341 l_period_profile_id pa_proj_period_profiles.period_profile_id%TYPE; -- used to retrieve values for period numbers
7342 l_default_amount_type_code VARCHAR2(30);
7343 l_default_amount_subtype_code VARCHAR2(30);
7344 l_currency_type VARCHAR2(30);
7345
7346 cursor av_cost_csr is
7347 select ra.project_id,
7348 ra.task_id,
7349 ra.resource_list_member_id,
7350 ra.budget_version_id,
7351 ra.resource_assignment_id,
7352 pa_fp_view_plans_util.assign_element_name
7353 (ra.project_id,
7354 ra.task_id,
7355 ra.resource_list_member_id) as element_name, -- element_name
7356 pa_fp_view_plans_util.assign_element_level
7357 (ra.project_id,
7358 ra.budget_version_id,
7359 ra.task_id,
7360 ra.resource_list_member_id) as element_level, -- element_level
7361 DECODE(po.report_labor_hrs_from_code,
7362 'REVENUE', 0,
7363 -- ra.total_utilization_hours) as labor_hours,
7364 ra.total_plan_quantity) as labor_hours,
7365 DECODE(pa_fp_view_plans_pub.G_FP_CURRENCY_TYPE,
7366 'PROJ', ra.total_project_burdened_cost,
7367 ra.total_plan_burdened_cost) as burdened_cost, -- burdened_cost
7368 DECODE(pa_fp_view_plans_pub.G_FP_CURRENCY_TYPE,
7369 'PROJ', ra.total_project_raw_cost,
7370 ra.total_plan_raw_cost) as raw_cost, -- raw_cost
7371 0 as revenue, -- revenue
7372 0 as margin, -- margin
7373 0 as margin_percent, -- margin_percent
7374 DECODE(ra.resource_assignment_type,
7375 'ROLLED_UP', 'N',
7376 'USER_ENTERED', 'Y',
7377 'Y') as line_editable_flag, -- line_editable_flag
7378 pa_fp_view_plans_util.assign_row_level
7379 (ra.project_id,
7380 ra.task_id,
7381 ra.resource_list_member_id) as row_level,
7382 pa_fp_view_plans_util.assign_parent_element
7383 (ra.project_id,
7384 ra.task_id,
7385 ra.resource_list_member_id) as parent_element_name,
7386 ra.unit_of_measure,
7387 pa_fp_view_plans_pub.has_child_rows
7388 (p_project_id,
7389 p_budget_version_id,
7390 -1,
7391 ra.task_id,
7392 ra.resource_list_member_id,
7393 null,
7394 'A') as has_child_element
7395 from pa_resource_assignments ra,
7396 pa_proj_fp_options po
7397 where ra.budget_version_id = p_budget_version_id and
7398 ra.budget_version_id = po.fin_plan_version_id and
7399 po.fin_plan_option_level_code='PLAN_VERSION' and
7400 ((ra.resource_assignment_type = 'USER_ENTERED' and
7401 exists (select 1 from pa_budget_lines bl
7402 where bl.budget_version_id = ra.budget_version_id and
7403 bl.resource_assignment_id = ra.resource_assignment_id)) or
7404 ra.resource_assignment_type = 'ROLLED_UP');
7405
7406 cursor av_rev_csr is
7407 select ra.project_id,
7408 ra.task_id,
7409 ra.resource_list_member_id,
7410 ra.budget_version_id,
7411 ra.resource_assignment_id,
7412 pa_fp_view_plans_util.assign_element_name
7413 (ra.project_id,
7414 ra.task_id,
7415 ra.resource_list_member_id) as element_name, -- element_name
7416 pa_fp_view_plans_util.assign_element_level
7417 (ra.project_id,
7418 ra.budget_version_id,
7419 ra.task_id,
7420 ra.resource_list_member_id) as element_level, -- element_level
7421 DECODE(po.report_labor_hrs_from_code,
7422 'COST', 0,
7423 -- ra.total_utilization_hours) as labor_hours,
7424 ra.total_plan_quantity) as labor_hours,
7425 0 as burdened_cost, -- burdened_cost
7426 0 as raw_cost, -- raw_cost
7427 DECODE(pa_fp_view_plans_pub.G_FP_CURRENCY_TYPE,
7428 'PROJ', ra.total_project_revenue,
7429 ra.total_plan_revenue) as revenue, -- revenue
7430 0 as margin, -- margin
7431 0 as margin_percent, -- margin_percent
7432 DECODE(ra.resource_assignment_type,
7433 'ROLLED_UP', 'N',
7434 'USER_ENTERED', 'Y',
7435 'Y') as line_editable_flag, -- line_editable_flag
7436 pa_fp_view_plans_util.assign_row_level
7437 (ra.project_id,
7438 ra.task_id,
7439 ra.resource_list_member_id) as row_level,
7440 pa_fp_view_plans_util.assign_parent_element
7441 (ra.project_id,
7442 ra.task_id,
7443 ra.resource_list_member_id) as parent_element_name,
7444 ra.unit_of_measure,
7445 pa_fp_view_plans_pub.has_child_rows
7446 (p_project_id,
7447 p_budget_version_id,
7448 -1,
7449 ra.task_id,
7450 ra.resource_list_member_id,
7451 null,
7452 'A') as has_child_element
7453 from pa_resource_assignments ra,
7454 pa_proj_fp_options po
7455 where ra.budget_version_id = p_budget_version_id and
7456 ra.budget_version_id = po.fin_plan_version_id and
7457 po.fin_plan_option_level_code='PLAN_VERSION' and
7458 ((ra.resource_assignment_type = 'USER_ENTERED' and
7459 exists (select 1 from pa_budget_lines bl
7460 where bl.budget_version_id = ra.budget_version_id and
7461 bl.resource_assignment_id = ra.resource_assignment_id)) or
7462 ra.resource_assignment_type = 'ROLLED_UP');
7463
7464 /* AMOUNTS VIEW PL/SQL tables */
7465 l_project_id pa_fp_view_plans_pub.av_tab_project_id;
7466 l_task_id pa_fp_view_plans_pub.av_tab_task_id;
7467 l_resource_list_member_id pa_fp_view_plans_pub.av_tab_resource_list_member_id;
7468 l_budget_version_id pa_fp_view_plans_pub.av_tab_cost_budget_version_id;
7469 l_res_assignment_id pa_fp_view_plans_pub.av_tab_cost_res_assignment_id;
7470 l_element_name pa_fp_view_plans_pub.av_tab_element_name;
7471 l_element_level pa_fp_view_plans_pub.av_tab_element_level;
7472 l_labor_hours pa_fp_view_plans_pub.av_tab_labor_hours;
7473 l_burdened_cost pa_fp_view_plans_pub.av_tab_burdened_cost;
7474 l_raw_cost pa_fp_view_plans_pub.av_tab_raw_cost;
7475 l_revenue pa_fp_view_plans_pub.av_tab_revenue;
7476 l_margin pa_fp_view_plans_pub.av_tab_margin;
7477 l_margin_percent pa_fp_view_plans_pub.av_tab_margin_percent;
7478 l_line_editable_flag pa_fp_view_plans_pub.av_tab_line_editable;
7479 l_row_level pa_fp_view_plans_pub.av_tab_row_level;
7480 l_parent_element_name pa_fp_view_plans_pub.av_tab_element_name;
7481 l_unit_of_measure pa_fp_view_plans_pub.av_tab_unit_of_measure;
7482 l_has_child_element pa_fp_view_plans_pub.av_tab_has_child_element;
7483
7484 /* PL/SQL table for PERIODS VIEW */
7485 l_pd_project_id pa_fp_view_plans_pub.av_tab_project_id;
7486 l_pd_task_id pa_fp_view_plans_pub.av_tab_task_id;
7487 l_pd_resource_list_member_id pa_fp_view_plans_pub.av_tab_resource_list_member_id;
7488 l_pd_unit_of_measure pa_fp_view_plans_pub.av_tab_unit_of_measure;
7489 l_pd_budget_version_id pa_fp_view_plans_pub.av_tab_cost_budget_version_id;
7490 l_pd_res_assignment_id pa_fp_view_plans_pub.av_tab_cost_res_assignment_id;
7491 l_pd_element_name pa_fp_view_plans_pub.av_tab_element_name;
7492 l_pd_element_level pa_fp_view_plans_pub.av_tab_element_level;
7493 l_pd_line_editable_flag pa_fp_view_plans_pub.av_tab_line_editable;
7494 l_pd_row_level pa_fp_view_plans_pub.av_tab_row_level;
7495 l_pd_parent_element_name pa_fp_view_plans_pub.av_tab_element_name;
7496 l_pd_amount_type pa_fp_view_plans_pub.av_tab_amount_type;
7497 l_pd_amount_subtype pa_fp_view_plans_pub.av_tab_amount_subtype;
7498 l_pd_amount_type_id pa_fp_view_plans_pub.av_tab_amount_type_id;
7499 l_pd_amount_subtype_id pa_fp_view_plans_pub.av_tab_amount_subtype_id;
7500 l_pd_period_1 pa_fp_view_plans_pub.av_tab_period_numbers;
7501 l_pd_period_2 pa_fp_view_plans_pub.av_tab_period_numbers;
7502 l_pd_period_3 pa_fp_view_plans_pub.av_tab_period_numbers;
7503 l_pd_period_4 pa_fp_view_plans_pub.av_tab_period_numbers;
7504 l_pd_period_5 pa_fp_view_plans_pub.av_tab_period_numbers;
7505 l_pd_period_6 pa_fp_view_plans_pub.av_tab_period_numbers;
7506 l_pd_period_7 pa_fp_view_plans_pub.av_tab_period_numbers;
7507 l_pd_period_8 pa_fp_view_plans_pub.av_tab_period_numbers;
7508 l_pd_period_9 pa_fp_view_plans_pub.av_tab_period_numbers;
7509 l_pd_period_10 pa_fp_view_plans_pub.av_tab_period_numbers;
7510 l_pd_period_11 pa_fp_view_plans_pub.av_tab_period_numbers;
7511 l_pd_period_12 pa_fp_view_plans_pub.av_tab_period_numbers;
7512 l_pd_period_13 pa_fp_view_plans_pub.av_tab_period_numbers;
7513 l_pd_preceding pa_fp_view_plans_pub.av_tab_preceding_amts;
7514 l_pd_succeeding pa_fp_view_plans_pub.av_tab_succeeding_amts;
7515 l_pd_has_child_element pa_fp_view_plans_pub.av_tab_has_child_element;
7516 l_pd_project_total pa_fp_view_plans_pub.av_tab_period_numbers; --bug 2699651
7517 -- local debugging variables
7518 l_err_stage NUMBER(15);
7519
7520 begin
7521 --hr_utility.trace_on(null, 'dlai');
7522 l_err_stage := 100;
7523 pa_debug.write('pa_fp_view_plans_pub.pa_fp_vp_pop_tables_single', '100: entering procedure', 2);
7524 --hr_utility.trace('entered pa_fp_vp_pop_tables_single:100');
7525 x_return_status := FND_API.G_RET_STS_SUCCESS;
7526 x_msg_count := 0;
7527 SAVEPOINT VIEW_PLANS_POP_TABLES_SINGLE;
7528 -- used to query pa_proj_periods_denorm table
7529 select DECODE(pa_fp_view_plans_pub.G_FP_CURRENCY_TYPE,
7530 'PROJFUNC', 'PROJ_FUNCTIONAL',
7531 'PROJ', 'PROJECT',
7532 'TRANSACTION')
7533 into l_currency_type
7534 from dual;
7535
7536 -- this is for populating PERIODS PL/SQL table
7537 l_row_number := 0;
7538 select NVL(po.report_labor_hrs_from_code, 'COST'),
7539 -- po.default_amount_type_code,
7540 -- po.default_amount_subtype_code
7541 pa_fp_view_plans_pub.G_DEFAULT_AMOUNT_TYPE_CODE,
7542 pa_fp_view_plans_pub.G_DEFAULT_AMT_SUBTYPE_CODE,
7543 bv.period_profile_id
7544 into l_report_labor_hrs_from_code,
7545 l_default_amount_type_code,
7546 l_default_amount_subtype_code,
7547 l_period_profile_id
7548 from pa_proj_fp_options po,
7549 pa_budget_versions bv
7550 where bv.budget_version_id = p_budget_version_id and
7551 bv.fin_plan_type_id = po.fin_plan_type_id and
7552 po.project_id = p_project_id and
7553 po.fin_plan_option_level_code = 'PLAN_TYPE';
7554 l_err_stage := 200;
7555 pa_debug.write('pa_fp_view_plans_pub.pa_fp_vp_pop_tables_single', '200: retrieved periodprofileid= ' || l_period_profile_id, 1);
7556 --hr_utility.trace('retrieved periodprofileid: 200');
7557 -- populate AMOUNTS PL/SQL TABLES
7558 if p_cost_or_rev = 'C' then
7559 pa_debug.write('pa_fp_view_plans_pub.pa_fp_vp_pop_tables_single', '300: this is a COST version - populating amts pl/sql tables', 1);
7560 open av_cost_csr;
7561 fetch av_cost_csr bulk collect into
7562 l_project_id,
7563 l_task_id,
7564 l_resource_list_member_id,
7565 l_budget_version_id,
7566 l_res_assignment_id,
7567 l_element_name,
7568 l_element_level,
7569 l_labor_hours,
7570 l_burdened_cost,
7571 l_raw_cost,
7572 l_revenue,
7573 l_margin,
7574 l_margin_percent,
7575 l_line_editable_flag,
7576 l_row_level,
7577 l_parent_element_name,
7578 l_unit_of_measure,
7579 l_has_child_element;
7580 close av_cost_csr;
7581 l_err_stage := 300;
7582 /* ---- populate the PERIODS PL/SQL table with the following rows ---- */
7583 /* ---- COST, REVENUE, MARGIN, MARGIN_PERCENT, QUANTITY ---- */
7584 /* ONLY IF pa_fp_view_plans_pub.G_AMT_OR_PD = 'P' */
7585 if pa_fp_view_plans_pub.G_AMT_OR_PD = 'P' then
7586 --hr_utility.trace('l_project_id.first= ' || to_char(l_project_id.first));
7587 --hr_utility.trace('l_project_id.last= ' || to_char(l_project_id.last));
7588 for i in nvl(l_project_id.first,0)..nvl(l_project_id.last,-1) loop
7589 --hr_utility.trace('i= ' || to_char(i));
7590 if pa_fp_view_plans_pub.G_DISPLAY_FLAG_QUANTITY = 'Y' then
7591 -- process QUANTITY numbers based on report_labor_hrs_from_code
7592 l_row_number := l_row_number + 1; -- increment row counter
7593 l_pd_project_id(l_row_number) := l_project_id(i);
7594 l_pd_task_id(l_row_number) := l_task_id(i);
7595 l_pd_resource_list_member_id(l_row_number) := l_resource_list_member_id(i);
7596 l_pd_unit_of_measure(l_row_number) := l_unit_of_measure(i);
7597 l_pd_budget_version_id(l_row_number) := l_budget_version_id(i);
7598 l_pd_res_assignment_id(l_row_number) := l_res_assignment_id(i);
7599 l_pd_element_name(l_row_number) := l_element_name(i);
7600 l_pd_element_level(l_row_number) := l_element_level(i);
7601 l_pd_row_level(l_row_number) := l_row_level(i);
7602 l_pd_parent_element_name(l_row_number) := l_parent_element_name(i);
7603 l_pd_line_editable_flag(l_row_number) := l_line_editable_flag(i);
7604 l_pd_amount_type(l_row_number) := 'QUANTITY';
7605 l_pd_amount_subtype(l_row_number) := 'QUANTITY';
7606 l_pd_amount_type_id(l_row_number) := 215; -- amount_type for 'QUANTITY'
7607 l_pd_amount_subtype_id(l_row_number) := 215; -- amount_subtype for 'QUANTITY'
7608 -- DEFAULT_AMOUNT_TYPE_CODE check: if not the default, then demote
7609 if not ((l_default_amount_type_code = 'QUANTITY') and
7610 (l_default_amount_subtype_code = 'QUANTITY')) then
7611 l_pd_parent_element_name(l_row_number) := l_pd_element_name(l_row_number);
7612 l_pd_element_name(l_row_number) := null;
7613 l_pd_has_child_element(l_row_number) := 'N';
7614 else
7615 l_pd_has_child_element(l_row_number) := 'Y';
7616 end if;
7617 if (l_report_labor_hrs_from_code = 'COST') then
7618 --hr_utility.trace('try to getperiodnvalue');
7619 --hr_utility.trace('raid= ' || to_char(l_pd_res_assignment_id(l_row_number)));
7620 --hr_utility.trace('ppid= ' || to_char(l_period_profile_id));
7621 l_pd_period_1(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7622 (p_period_profile_id => l_period_profile_id,
7623 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7624 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7625 p_project_currency_type => l_currency_type,
7626 p_amount_type_id => 215,
7627 p_period_number => 1);
7628 --hr_utility.trace('reached here');
7629 l_pd_period_2(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7630 (p_period_profile_id => l_period_profile_id,
7631 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7632 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7633 p_project_currency_type => l_currency_type,
7634 p_amount_type_id => 215,
7635 p_period_number => 2);
7636 l_pd_period_3(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7637 (p_period_profile_id => l_period_profile_id,
7638 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7639 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7640 p_project_currency_type => l_currency_type,
7641 p_amount_type_id => 215,
7642 p_period_number => 3);
7643 l_pd_period_4(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7644 (p_period_profile_id => l_period_profile_id,
7645 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7646 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7647 p_project_currency_type => l_currency_type,
7648 p_amount_type_id => 215,
7649 p_period_number => 4);
7650 l_pd_period_5(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7651 (p_period_profile_id => l_period_profile_id,
7652 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7653 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7654 p_project_currency_type => l_currency_type,
7655 p_amount_type_id => 215,
7656 p_period_number => 5);
7657 l_pd_period_6(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7658 (p_period_profile_id => l_period_profile_id,
7659 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7660 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7661 p_project_currency_type => l_currency_type,
7662 p_amount_type_id => 215,
7663 p_period_number => 6);
7664 l_pd_period_7(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7665 (p_period_profile_id => l_period_profile_id,
7666 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7667 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7668 p_project_currency_type => l_currency_type,
7669 p_amount_type_id => 215,
7670 p_period_number => 7);
7671 l_pd_period_8(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7672 (p_period_profile_id => l_period_profile_id,
7673 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7674 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7675 p_project_currency_type => l_currency_type,
7676 p_amount_type_id => 215,
7677 p_period_number => 8);
7678 l_pd_period_9(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7679 (p_period_profile_id => l_period_profile_id,
7680 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7681 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7682 p_project_currency_type => l_currency_type,
7683 p_amount_type_id => 215,
7684 p_period_number => 9);
7685 l_pd_period_10(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7686 (p_period_profile_id => l_period_profile_id,
7687 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7688 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7689 p_project_currency_type => l_currency_type,
7690 p_amount_type_id => 215,
7691 p_period_number => 10);
7692 l_pd_period_11(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7693 (p_period_profile_id => l_period_profile_id,
7694 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7695 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7696 p_project_currency_type => l_currency_type,
7697 p_amount_type_id => 215,
7698 p_period_number => 11);
7699 l_pd_period_12(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7700 (p_period_profile_id => l_period_profile_id,
7701 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7702 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7703 p_project_currency_type => l_currency_type,
7704 p_amount_type_id => 215,
7705 p_period_number => 12);
7706 l_pd_period_13(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7707 (p_period_profile_id => l_period_profile_id,
7708 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7709 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7710 p_project_currency_type => l_currency_type,
7711 p_amount_type_id => 215,
7712 p_period_number => 13);
7713 l_pd_preceding(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7714 (p_period_profile_id => l_period_profile_id,
7715 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7716 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7717 p_project_currency_type => l_currency_type,
7718 p_amount_type_id => 215,
7719 p_period_number => 0);
7720 l_pd_succeeding(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7721 (p_period_profile_id => l_period_profile_id,
7722 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7723 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7724 p_project_currency_type => l_currency_type,
7725 p_amount_type_id => 215,
7726 p_period_number => 14);
7727 l_pd_project_total(l_row_number) := l_labor_hours(i); -- bug 2699651
7728 else
7729 l_pd_unit_of_measure(l_row_number) := l_unit_of_measure(i);
7730 l_pd_period_1(l_row_number) := null;
7731 l_pd_period_2(l_row_number) := null;
7732 l_pd_period_3(l_row_number) := null;
7733 l_pd_period_4(l_row_number) := null;
7734 l_pd_period_5(l_row_number) := null;
7735 l_pd_period_6(l_row_number) := null;
7736 l_pd_period_7(l_row_number) := null;
7737 l_pd_period_8(l_row_number) := null;
7738 l_pd_period_9(l_row_number) := null;
7739 l_pd_period_10(l_row_number) := null;
7740 l_pd_period_11(l_row_number) := null;
7741 l_pd_period_12(l_row_number) := null;
7742 l_pd_period_13(l_row_number) := null;
7743 l_pd_preceding(l_row_number) := null;
7744 l_pd_succeeding(l_row_number) := null;
7745 l_pd_line_editable_flag(l_row_number) := 'N'; --do not edit inserted row
7746 l_pd_project_total(l_row_number) := null; -- bug 2699651
7747 end if; -- report_labour_hrs_from_code = 'COST'
7748 end if; -- display_from: QUANTITY
7749
7750 if pa_fp_view_plans_pub.G_DISPLAY_FLAG_BURDCOST = 'Y' then
7751 -- process BURDENED_COST numbers from COST BUDGET VERSION
7752 l_row_number := l_row_number + 1; -- increment row counter
7753 l_pd_project_id(l_row_number) := l_project_id(i);
7754 l_pd_task_id(l_row_number) := l_task_id(i);
7755 l_pd_resource_list_member_id(l_row_number) := l_resource_list_member_id(i);
7756 l_pd_unit_of_measure(l_row_number) := null;
7757 l_pd_budget_version_id(l_row_number) := l_budget_version_id(i);
7758 l_pd_res_assignment_id(l_row_number) := l_res_assignment_id(i);
7759 l_pd_element_name(l_row_number) := l_element_name(i);
7760 l_pd_element_level(l_row_number) := l_element_level(i);
7761 l_pd_row_level(l_row_number) := l_row_level(i);
7762 l_pd_parent_element_name(l_row_number) := l_parent_element_name(i);
7763 l_pd_line_editable_flag(l_row_number) := l_line_editable_flag(i);
7764 l_pd_amount_type(l_row_number) := 'COST';
7765 l_pd_amount_subtype(l_row_number) := 'BURDENED_COST';
7766 l_pd_amount_type_id(l_row_number) := 150; -- amount_type_id for 'COST'
7767 l_pd_amount_subtype_id(l_row_number) := 165; -- amount_subtype_id for 'BURDENED_COST'
7768 -- DEFAULT_AMOUNT_TYPE_CODE check: if not the default, then demote
7769 if not ((l_default_amount_type_code = 'COST') and
7770 (l_default_amount_subtype_code = 'BURDENED_COST')) then
7771 l_pd_parent_element_name(l_row_number) := l_pd_element_name(l_row_number);
7772 l_pd_element_name(l_row_number) := null;
7773 l_pd_has_child_element(l_row_number) := 'N';
7774 else
7775 l_pd_has_child_element(l_row_number) := 'Y';
7776 end if;
7777 l_pd_period_1(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7778 (p_period_profile_id => l_period_profile_id,
7779 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7780 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7781 p_project_currency_type => l_currency_type,
7782 --p_amount_type_id => 150,
7783 p_amount_type_id => 165,
7784 p_period_number => 1);
7785 l_pd_period_2(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7786 (p_period_profile_id => l_period_profile_id,
7787 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7788 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7789 p_project_currency_type => l_currency_type,
7790 --p_amount_type_id => 150,
7791 p_amount_type_id => 165,
7792 p_period_number => 2);
7793 l_pd_period_3(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7794 (p_period_profile_id => l_period_profile_id,
7795 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7796 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7797 p_project_currency_type => l_currency_type,
7798 --p_amount_type_id => 150,
7799 p_amount_type_id => 165,
7800 p_period_number => 3);
7801 l_pd_period_4(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7802 (p_period_profile_id => l_period_profile_id,
7803 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7804 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7805 p_project_currency_type => l_currency_type,
7806 --p_amount_type_id => 150,
7807 p_amount_type_id => 165,
7808 p_period_number => 4);
7809 l_pd_period_5(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7810 (p_period_profile_id => l_period_profile_id,
7811 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7812 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7813 p_project_currency_type => l_currency_type,
7814 --p_amount_type_id => 150,
7815 p_amount_type_id => 165,
7816 p_period_number => 5);
7817 l_pd_period_6(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7818 (p_period_profile_id => l_period_profile_id,
7819 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7820 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7821 p_project_currency_type => l_currency_type,
7822 --p_amount_type_id => 150,
7823 p_amount_type_id => 165,
7824 p_period_number => 6);
7825 l_pd_period_7(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7826 (p_period_profile_id => l_period_profile_id,
7827 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7828 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7829 p_project_currency_type => l_currency_type,
7830 --p_amount_type_id => 150,
7831 p_amount_type_id => 165,
7832 p_period_number => 7);
7833 l_pd_period_8(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7834 (p_period_profile_id => l_period_profile_id,
7835 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7836 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7837 p_project_currency_type => l_currency_type,
7838 --p_amount_type_id => 150,
7839 p_amount_type_id => 165,
7840 p_period_number => 8);
7841 l_pd_period_9(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7842 (p_period_profile_id => l_period_profile_id,
7843 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7844 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7845 p_project_currency_type => l_currency_type,
7846 --p_amount_type_id => 150,
7847 p_amount_type_id => 165,
7848 p_period_number => 9);
7849 l_pd_period_10(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7850 (p_period_profile_id => l_period_profile_id,
7851 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7852 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7853 p_project_currency_type => l_currency_type,
7854 --p_amount_type_id => 150,
7855 p_amount_type_id => 165,
7856 p_period_number => 10);
7857 l_pd_period_11(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7858 (p_period_profile_id => l_period_profile_id,
7859 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7860 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7861 p_project_currency_type => l_currency_type,
7862 --p_amount_type_id => 150,
7863 p_amount_type_id => 165,
7864 p_period_number => 11);
7865 l_pd_period_12(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7866 (p_period_profile_id => l_period_profile_id,
7867 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7868 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7869 p_project_currency_type => l_currency_type,
7870 --p_amount_type_id => 150,
7871 p_amount_type_id => 165,
7872 p_period_number => 12);
7873 l_pd_period_13(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7874 (p_period_profile_id => l_period_profile_id,
7875 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7876 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7877 p_project_currency_type => l_currency_type,
7878 --p_amount_type_id => 150,
7879 p_amount_type_id => 165,
7880 p_period_number => 13);
7881 l_pd_preceding(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7882 (p_period_profile_id => l_period_profile_id,
7883 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7884 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7885 p_project_currency_type => l_currency_type,
7886 --p_amount_type_id => 150,
7887 p_amount_type_id => 165,
7888 p_period_number => 0);
7889 l_pd_succeeding(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7890 (p_period_profile_id => l_period_profile_id,
7891 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7892 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7893 p_project_currency_type => l_currency_type,
7894 --p_amount_type_id => 150,
7895 p_amount_type_id => 165,
7896 p_period_number => 14);
7897 l_pd_project_total(l_row_number) := l_burdened_cost(i); -- bug 2699651
7898 end if; -- display_flag: BURDENED COST
7899
7900 if pa_fp_view_plans_pub.G_DISPLAY_FLAG_RAWCOST = 'Y' then
7901 -- process RAW_COST numbers from COST BUDGET VERSION
7902 l_row_number := l_row_number + 1; -- increment row counter
7903 l_pd_project_id(l_row_number) := l_project_id(i);
7904 l_pd_task_id(l_row_number) := l_task_id(i);
7905 l_pd_resource_list_member_id(l_row_number) := l_resource_list_member_id(i);
7906 l_pd_unit_of_measure(l_row_number) := null;
7907 l_pd_budget_version_id(l_row_number) := l_budget_version_id(i);
7908 l_pd_res_assignment_id(l_row_number) := l_res_assignment_id(i);
7909 l_pd_element_name(l_row_number) := l_element_name(i);
7910 l_pd_element_level(l_row_number) := l_element_level(i);
7911 l_pd_row_level(l_row_number) := l_row_level(i);
7912 l_pd_parent_element_name(l_row_number) := l_parent_element_name(i);
7913 l_pd_line_editable_flag(l_row_number) := l_line_editable_flag(i);
7914 l_pd_amount_type(l_row_number) := 'COST';
7915 l_pd_amount_subtype(l_row_number) := 'RAW_COST';
7916 l_pd_amount_type_id(l_row_number) := 150; -- amount_type_id for 'COST'
7917 l_pd_amount_subtype_id(l_row_number) := 160; -- amount_subtype_id for 'RAW_COST'
7918 -- DEFAULT_AMOUNT_TYPE_CODE check: if not the default, then demote
7919 if not ((l_default_amount_type_code = 'COST') and
7920 (l_default_amount_subtype_code = 'RAW_COST')) then
7921 l_pd_parent_element_name(l_row_number) := l_pd_element_name(l_row_number);
7922 l_pd_element_name(l_row_number) := null;
7923 l_pd_has_child_element(l_row_number) := 'N';
7924 else
7925 l_pd_has_child_element(l_row_number) := 'Y';
7926 end if;
7927 l_pd_period_1(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7928 (p_period_profile_id => l_period_profile_id,
7929 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7930 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7931 p_project_currency_type => l_currency_type,
7932 --p_amount_type_id => 150,
7933 p_amount_type_id => 160,
7934 p_period_number => 1);
7935 l_pd_period_2(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7936 (p_period_profile_id => l_period_profile_id,
7937 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7938 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7939 p_project_currency_type => l_currency_type,
7940 --p_amount_type_id => 150,
7941 p_amount_type_id => 160,
7942 p_period_number => 2);
7943 l_pd_period_3(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7944 (p_period_profile_id => l_period_profile_id,
7945 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7946 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7947 p_project_currency_type => l_currency_type,
7948 --p_amount_type_id => 150,
7949 p_amount_type_id => 160,
7950 p_period_number => 3);
7951 l_pd_period_4(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7952 (p_period_profile_id => l_period_profile_id,
7953 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7954 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7955 p_project_currency_type => l_currency_type,
7956 --p_amount_type_id => 150,
7957 p_amount_type_id => 160,
7958 p_period_number => 4);
7959 l_pd_period_5(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7960 (p_period_profile_id => l_period_profile_id,
7961 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7962 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7963 p_project_currency_type => l_currency_type,
7964 --p_amount_type_id => 150,
7965 p_amount_type_id => 160,
7966 p_period_number => 5);
7967 l_pd_period_6(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7968 (p_period_profile_id => l_period_profile_id,
7969 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7970 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7971 p_project_currency_type => l_currency_type,
7972 --p_amount_type_id => 150,
7973 p_amount_type_id => 160,
7974 p_period_number => 6);
7975 l_pd_period_7(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7976 (p_period_profile_id => l_period_profile_id,
7977 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7978 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7979 p_project_currency_type => l_currency_type,
7980 --p_amount_type_id => 150,
7981 p_amount_type_id => 160,
7982 p_period_number => 7);
7983 l_pd_period_8(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7984 (p_period_profile_id => l_period_profile_id,
7985 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7986 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7987 p_project_currency_type => l_currency_type,
7988 --p_amount_type_id => 150,
7989 p_amount_type_id => 160,
7990 p_period_number => 8);
7991 l_pd_period_9(l_row_number) := pa_fp_view_plans_util.get_period_n_value
7992 (p_period_profile_id => l_period_profile_id,
7993 p_budget_version_id => l_pd_budget_version_id(l_row_number),
7994 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
7995 p_project_currency_type => l_currency_type,
7996 --p_amount_type_id => 150,
7997 p_amount_type_id => 160,
7998 p_period_number => 9);
7999 l_pd_period_10(l_row_number) := pa_fp_view_plans_util.get_period_n_value
8000 (p_period_profile_id => l_period_profile_id,
8001 p_budget_version_id => l_pd_budget_version_id(l_row_number),
8002 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
8003 p_project_currency_type => l_currency_type,
8004 --p_amount_type_id => 150,
8005 p_amount_type_id => 160,
8006 p_period_number => 10);
8007 l_pd_period_11(l_row_number) := pa_fp_view_plans_util.get_period_n_value
8008 (p_period_profile_id => l_period_profile_id,
8009 p_budget_version_id => l_pd_budget_version_id(l_row_number),
8010 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
8011 p_project_currency_type => l_currency_type,
8012 --p_amount_type_id => 150,
8013 p_amount_type_id => 160,
8014 p_period_number => 11);
8015 l_pd_period_12(l_row_number) := pa_fp_view_plans_util.get_period_n_value
8016 (p_period_profile_id => l_period_profile_id,
8017 p_budget_version_id => l_pd_budget_version_id(l_row_number),
8018 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
8019 p_project_currency_type => l_currency_type,
8020 --p_amount_type_id => 150,
8021 p_amount_type_id => 160,
8022 p_period_number => 12);
8023 l_pd_period_13(l_row_number) := pa_fp_view_plans_util.get_period_n_value
8024 (p_period_profile_id => l_period_profile_id,
8025 p_budget_version_id => l_pd_budget_version_id(l_row_number),
8026 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
8027 p_project_currency_type => l_currency_type,
8028 --p_amount_type_id => 150,
8029 p_amount_type_id => 160,
8030 p_period_number => 13);
8031 l_pd_preceding(l_row_number) := pa_fp_view_plans_util.get_period_n_value
8032 (p_period_profile_id => l_period_profile_id,
8033 p_budget_version_id => l_pd_budget_version_id(l_row_number),
8034 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
8035 p_project_currency_type => l_currency_type,
8036 --p_amount_type_id => 150,
8037 p_amount_type_id => 160,
8038 p_period_number => 0);
8039 l_pd_succeeding(l_row_number) := pa_fp_view_plans_util.get_period_n_value
8040 (p_period_profile_id => l_period_profile_id,
8041 p_budget_version_id => l_pd_budget_version_id(l_row_number),
8042 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
8043 p_project_currency_type => l_currency_type,
8044 --p_amount_type_id => 150,
8045 p_amount_type_id => 160,
8046 p_period_number => 14);
8047 l_pd_project_total(l_row_number) := l_raw_cost(i); -- bug 2699651
8048 end if; -- display_flag: RAW COST
8049
8050 if pa_fp_view_plans_pub.G_DISPLAY_FLAG_REVENUE = 'Y' then
8051 -- POPULATE null'S for REVENUE row in PERIODS PL/SQL TABLE
8052 l_row_number := l_row_number + 1; -- increment row counter
8053 l_pd_project_id(l_row_number) := l_project_id(i);
8054 l_pd_task_id(l_row_number) := l_task_id(i);
8055 l_pd_resource_list_member_id(l_row_number) := l_resource_list_member_id(i);
8056 l_pd_unit_of_measure(l_row_number) := null;
8057 l_pd_budget_version_id(l_row_number) := l_budget_version_id(i);
8058 l_pd_res_assignment_id(l_row_number) := l_res_assignment_id(i);
8059 l_pd_element_name(l_row_number) := l_element_name(i);
8060 l_pd_element_level(l_row_number) := l_element_level(i);
8061 l_pd_row_level(l_row_number) := l_row_level(i);
8062 l_pd_parent_element_name(l_row_number) := l_parent_element_name(i);
8063 --l_pd_line_editable_flag(l_row_number) := l_line_editable_flag(i);
8064 l_pd_line_editable_flag(l_row_number) := 'N'; -- cannot edit inserted row
8065 l_pd_amount_type(l_row_number) := 'REVENUE';
8066 l_pd_amount_subtype(l_row_number) := 'REVENUE';
8067 l_pd_amount_type_id(l_row_number) := 100; -- amount_type_id of REVENUE
8068 l_pd_amount_subtype_id(l_row_number) := 100; -- amount_subtype_id of REVENUE
8069 -- DEFAULT_AMOUNT_TYPE_CODE check: if not the default, then demote
8070 if not ((l_default_amount_type_code = 'REVENUE') and
8071 (l_default_amount_subtype_code = 'REVENUE')) then
8072 l_pd_parent_element_name(l_row_number) := l_pd_element_name(l_row_number);
8073 l_pd_element_name(l_row_number) := null;
8074 l_pd_has_child_element(l_row_number) := 'N';
8075 else
8076 l_pd_has_child_element(l_row_number) := 'Y';
8077 end if;
8078 l_pd_period_1(l_row_number) := null;
8079 l_pd_period_2(l_row_number) := null;
8080 l_pd_period_3(l_row_number) := null;
8081 l_pd_period_4(l_row_number) := null;
8082 l_pd_period_5(l_row_number) := null;
8083 l_pd_period_6(l_row_number) := null;
8084 l_pd_period_7(l_row_number) := null;
8085 l_pd_period_8(l_row_number) := null;
8086 l_pd_period_9(l_row_number) := null;
8087 l_pd_period_10(l_row_number) := null;
8088 l_pd_period_11(l_row_number) := null;
8089 l_pd_period_12(l_row_number) := null;
8090 l_pd_period_13(l_row_number) := null;
8091 l_pd_preceding(l_row_number) := null;
8092 l_pd_succeeding(l_row_number) := null;
8093 l_pd_project_total(l_row_number) := null; -- bug 2699651
8094 end if; -- display_from: REVENUE
8095
8096 if pa_fp_view_plans_pub.G_DISPLAY_FLAG_MARGIN = 'Y' then
8097 -- POPULATE 0'S for MARGIN row in PERIODS PL/SQL TABLE
8098 l_row_number := l_row_number + 1; -- increment row counter
8099 l_pd_project_id(l_row_number) := l_project_id(i);
8100 l_pd_task_id(l_row_number) := l_task_id(i);
8101 l_pd_resource_list_member_id(l_row_number) := l_resource_list_member_id(i);
8102 l_pd_unit_of_measure(l_row_number) := null;
8103 l_pd_budget_version_id(l_row_number) := l_budget_version_id(i);
8104 l_pd_res_assignment_id(l_row_number) := l_res_assignment_id(i);
8105 l_pd_element_name(l_row_number) := l_element_name(i);
8106 l_pd_element_level(l_row_number) := l_element_level(i);
8107 l_pd_row_level(l_row_number) := l_row_level(i);
8108 l_pd_parent_element_name(l_row_number) := l_parent_element_name(i);
8109 --l_pd_line_editable_flag(l_row_number) := l_line_editable_flag(i);
8110 l_pd_line_editable_flag(l_row_number) := 'N'; -- cannot edit inserted row
8111 l_pd_amount_type(l_row_number) := 'MARGIN';
8112 l_pd_amount_subtype(l_row_number) := 'MARGIN';
8113 l_pd_amount_type_id(l_row_number) := 230; -- amount_type_id of MARGIN
8114 l_pd_amount_subtype_id(l_row_number) := 230; -- amount_subtype_id of MARGIN
8115 -- DEFAULT_AMOUNT_TYPE_CODE check: if not the default, then demote
8116 if not ((l_default_amount_type_code = 'MARGIN') and
8117 (l_default_amount_subtype_code = 'MARGIN')) then
8118 l_pd_parent_element_name(l_row_number) := l_pd_element_name(l_row_number);
8119 l_pd_element_name(l_row_number) := null;
8120 l_pd_has_child_element(l_row_number) := 'N';
8121 else
8122 l_pd_has_child_element(l_row_number) := 'Y';
8123 end if;
8124 l_pd_period_1(l_row_number) := null;
8125 l_pd_period_2(l_row_number) := null;
8126 l_pd_period_3(l_row_number) := null;
8127 l_pd_period_4(l_row_number) := null;
8128 l_pd_period_5(l_row_number) := null;
8129 l_pd_period_6(l_row_number) := null;
8130 l_pd_period_7(l_row_number) := null;
8131 l_pd_period_8(l_row_number) := null;
8132 l_pd_period_9(l_row_number) := null;
8133 l_pd_period_10(l_row_number) := null;
8134 l_pd_period_11(l_row_number) := null;
8135 l_pd_period_12(l_row_number) := null;
8136 l_pd_period_13(l_row_number) := null;
8137 l_pd_preceding(l_row_number) := null;
8138 l_pd_succeeding(l_row_number) := null;
8139 l_pd_project_total(l_row_number) := null; -- bug 3179756
8140 end if; -- display_from: MARGIN
8141
8142 if pa_fp_view_plans_pub.G_DISPLAY_FLAG_MARGINPCT = 'Y' then
8143 -- POPULATE 0'S for MARGIN_PERCENT row in PERIODS PL/SQL TABLE
8144 l_row_number := l_row_number + 1; -- increment row counter
8145 l_pd_project_id(l_row_number) := l_project_id(i);
8146 l_pd_task_id(l_row_number) := l_task_id(i);
8147 l_pd_resource_list_member_id(l_row_number) := l_resource_list_member_id(i);
8148 l_pd_unit_of_measure(l_row_number) := null;
8149 l_pd_budget_version_id(l_row_number) := l_budget_version_id(i);
8150 l_pd_res_assignment_id(l_row_number) := l_res_assignment_id(i);
8151 l_pd_element_name(l_row_number) := l_element_name(i);
8152 l_pd_element_level(l_row_number) := l_element_level(i);
8153 l_pd_row_level(l_row_number) := l_row_level(i);
8154 l_pd_parent_element_name(l_row_number) := l_parent_element_name(i);
8155 --l_pd_line_editable_flag(l_row_number) := l_line_editable_flag(i);
8156 l_pd_line_editable_flag(l_row_number) := 'N'; -- cannot edit inserted row
8157 l_pd_amount_type(l_row_number) := 'MARGIN_PERCENT';
8158 l_pd_amount_subtype(l_row_number) := 'MARGIN_PERCENT';
8159 l_pd_amount_type_id(l_row_number) := 231; -- amount_type_id of MARGIN_PERCENT
8160 l_pd_amount_subtype_id(l_row_number) := 231; -- amount_subtype_id of MARGIN_PERCENT
8161 -- DEFAULT_AMOUNT_TYPE_CODE check: if not the default, then demote
8162 if not ((l_default_amount_type_code = 'MARGIN_PERCENT') and
8163 (l_default_amount_subtype_code = 'MARGIN_PERCENT')) then
8164 l_pd_parent_element_name(l_row_number) := l_pd_element_name(l_row_number);
8165 l_pd_element_name(l_row_number) := null;
8166 l_pd_has_child_element(l_row_number) := 'N';
8167 else
8168 l_pd_has_child_element(l_row_number) := 'Y';
8169 end if;
8170 l_pd_period_1(l_row_number) := null;
8171 l_pd_period_2(l_row_number) := null;
8172 l_pd_period_3(l_row_number) := null;
8173 l_pd_period_4(l_row_number) := null;
8174 l_pd_period_5(l_row_number) := null;
8175 l_pd_period_6(l_row_number) := null;
8176 l_pd_period_7(l_row_number) := null;
8177 l_pd_period_8(l_row_number) := null;
8178 l_pd_period_9(l_row_number) := null;
8179 l_pd_period_10(l_row_number) := null;
8180 l_pd_period_11(l_row_number) := null;
8181 l_pd_period_12(l_row_number) := null;
8182 l_pd_period_13(l_row_number) := null;
8183 l_pd_preceding(l_row_number) := null;
8184 l_pd_succeeding(l_row_number) := null;
8185 l_pd_project_total(l_row_number) := null; -- bug 2699651
8186 end if; --display_from: MARGIN PERCENT
8187 end loop;
8188 end if; --pa_fp_view_plans_pub.G_AMT_OR_PD = 'P'
8189 l_err_stage := 400;
8190 pa_debug.write('pa_fp_view_plans_pub.pa_fp_vp_pop_tables_single', '400: COST version - FINISHED populating amts pl/sql tables', 1);
8191
8192 -- POPULATE global temporary table PA_FIN_VP_AMTS_VIEW_TMP
8193 -- ONLY if pa_fp_view_plans_pub.G_AMT_OR_PD = 'A'
8194 if pa_fp_view_plans_pub.G_AMT_OR_PD = 'A' then
8195 forall i in nvl(l_project_id.first,0)..nvl(l_project_id.last,-1)
8196 insert into pa_fin_vp_amts_view_tmp
8197 (project_id,
8198 task_id,
8199 resource_list_member_id,
8200 element_name,
8201 element_level,
8202 labor_hours,
8203 burdened_cost,
8204 raw_cost,
8205 revenue,
8206 margin,
8207 margin_percent,
8208 editable_flag,
8209 row_level,
8210 parent_element_name,
8211 cost_resource_assignment_id,
8212 rev_resource_assignment_id,
8213 all_resource_assignment_id,
8214 unit_of_measure,
8215 has_child_element) values
8216 (l_project_id(i),
8217 l_task_id(i),
8218 l_resource_list_member_id(i),
8219 l_element_name(i),
8220 l_element_level(i),
8221 l_labor_hours(i),
8222 l_burdened_cost(i),
8223 l_raw_cost(i),
8224 null, -- revenue
8225 null, -- margin
8226 null, -- margin percent
8227 l_line_editable_flag(i),
8228 l_row_level(i),
8229 l_parent_element_name(i),
8230 l_res_assignment_id(i),
8231 -1,
8232 -1,
8233 l_unit_of_measure(i),
8234 l_has_child_element(i));
8235 end if; --pa_fp_view_plans_pub.G_AMT_OR_PD= 'A'
8236 l_err_stage := 500;
8237 pa_debug.write('pa_fp_view_plans_pub.pa_fp_vp_pop_tables_single', '800: amts temp table populated', 1);
8238
8239 -- POPULATE global temporary table PA_FIN_VP_PDS_VIEW_TMP
8240 -- ONLY if pa_fp_view_plans_pub.G_AMT_OR_PD = 'P'
8241 if pa_fp_view_plans_pub.G_AMT_OR_PD = 'P' then
8242 forall z in nvl(l_pd_project_id.first,0)..nvl(l_pd_project_id.last,-1)
8243 insert into pa_fin_vp_pds_view_tmp
8244 (project_id,
8245 task_id,
8246 resource_list_member_id,
8247 uom,
8248 element_name,
8249 element_level,
8250 editable_flag,
8251 row_level,
8252 parent_element_name,
8253 amount_type,
8254 amount_subtype,
8255 amount_type_id,
8256 amount_subtype_id,
8257 period_amount1,
8258 period_amount2,
8259 period_amount3,
8260 period_amount4,
8261 period_amount5,
8262 period_amount6,
8263 period_amount7,
8264 period_amount8,
8265 period_amount9,
8266 period_amount10,
8267 period_amount11,
8268 period_amount12,
8269 period_amount13,
8270 cost_resource_assignment_id,
8271 rev_resource_assignment_id,
8272 all_resource_assignment_id,
8273 preceding_periods_amount,
8274 succeeding_periods_amount,
8275 has_child_element,
8276 project_total) values
8277 (l_pd_project_id(z),
8278 l_pd_task_id(z),
8279 l_pd_resource_list_member_id(z),
8280 l_pd_unit_of_measure(z),
8281 l_pd_element_name(z),
8282 l_pd_element_level(z),
8283 l_pd_line_editable_flag(z),
8284 l_pd_row_level(z),
8285 l_pd_parent_element_name(z),
8286 l_pd_amount_type(z),
8287 l_pd_amount_subtype(z),
8288 l_pd_amount_type_id(z),
8289 l_pd_amount_subtype_id(z),
8290 l_pd_period_1(z),
8291 l_pd_period_2(z),
8292 l_pd_period_3(z),
8293 l_pd_period_4(z),
8294 l_pd_period_5(z),
8295 l_pd_period_6(z),
8296 l_pd_period_7(z),
8297 l_pd_period_8(z),
8298 l_pd_period_9(z),
8299 l_pd_period_10(z),
8300 l_pd_period_11(z),
8301 l_pd_period_12(z),
8302 l_pd_period_13(z),
8303 l_pd_res_assignment_id(z),
8304 -1,
8305 -1,
8306 l_pd_preceding(z),
8307 l_pd_succeeding(z),
8308 l_pd_has_child_element(z),
8309 l_pd_project_total(z));
8310 end if; -- pa_fp_view_plans_pub.G_AMT_OR_PD = 'P'
8311 l_err_stage := 600;
8312 pa_debug.write('pa_fp_view_plans_pub.pa_fp_vp_pop_tables_single', '900: pds temp table populated', 1);
8313
8314
8315 elsif p_cost_or_rev = 'R' then
8316 l_err_stage := 700;
8317 pa_debug.write('pa_fp_view_plans_pub.pa_fp_vp_pop_tables_single', '500: this is a REVENUE version - populating amts pl/sql tables', 1);
8318 --hr_utility.trace('this is a REVENUE version: 500');
8319 open av_rev_csr;
8320 fetch av_rev_csr bulk collect into
8321 l_project_id,
8322 l_task_id,
8323 l_resource_list_member_id,
8324 l_budget_version_id,
8325 l_res_assignment_id,
8326 l_element_name,
8327 l_element_level,
8328 l_labor_hours,
8329 l_burdened_cost,
8330 l_raw_cost,
8331 l_revenue,
8332 l_margin,
8333 l_margin_percent,
8334 l_line_editable_flag,
8335 l_row_level,
8336 l_parent_element_name,
8337 l_unit_of_measure,
8338 l_has_child_element;
8339 close av_rev_csr;
8340 l_err_stage := 800;
8341 /* ---- populate the PERIODS PL/SQL table with the following rows ---- */
8342 /* ---- COST, REVENUE, MARGIN, MARGIN_PERCENT, QUANTITY ---- */
8343 /* ONLY if pa_fp_view_plans_pub.G_AMT_OR_PD = 'P' */
8344 --hr_utility.trace('number of rows in csr= ' || TO_CHAR(l_project_id.last));
8345 if pa_fp_view_plans_pub.G_AMT_OR_PD = 'P' then
8346 for i in nvl(l_project_id.first,0)..nvl(l_project_id.last,-1) loop
8347
8348 if pa_fp_view_plans_pub.G_DISPLAY_FLAG_QUANTITY = 'Y' then
8349 --hr_utility.trace('inserting row for Quantity: ' || TO_CHAR(i));
8350 -- process the QUANTITY numbers based on report_labor_hrs_from_code
8351 l_row_number := l_row_number + 1; -- increment row counter
8352 l_pd_project_id(l_row_number) := l_project_id(i);
8353 l_pd_task_id(l_row_number) := l_task_id(i);
8354 l_pd_resource_list_member_id(l_row_number) := l_resource_list_member_id(i);
8355 l_pd_unit_of_measure(l_row_number) := l_unit_of_measure(i);
8356 l_pd_budget_version_id(l_row_number) := l_budget_version_id(i);
8357 l_pd_res_assignment_id(l_row_number) := l_res_assignment_id(i);
8358 l_pd_element_name(l_row_number) := l_element_name(i);
8359 l_pd_element_level(l_row_number) := l_element_level(i);
8360 l_pd_row_level(l_row_number) := l_row_level(i);
8361 l_pd_parent_element_name(l_row_number) := l_parent_element_name(i);
8362 l_pd_line_editable_flag(l_row_number) := l_line_editable_flag(i);
8363 l_pd_amount_type(l_row_number) := 'QUANTITY';
8364 l_pd_amount_subtype(l_row_number) := 'QUANTITY';
8365 l_pd_amount_type_id(l_row_number) := 215; -- amount_type_id for 'QUANTITY'
8366 l_pd_amount_subtype_id(l_row_number) := 215; -- amount_subtype_id for 'QUANTITY'
8367 -- DEFAULT_AMOUNT_TYPE_CODE check: if not the default, then demote
8368 if not ((l_default_amount_type_code = 'QUANTITY') and
8369 (l_default_amount_subtype_code = 'QUANTITY')) then
8370 l_pd_parent_element_name(l_row_number) := l_pd_element_name(l_row_number);
8371 l_pd_element_name(l_row_number) := null;
8372 l_pd_has_child_element(l_row_number) := 'N';
8373 else
8374 l_pd_has_child_element(l_row_number) := 'Y';
8375 end if;
8376 if (l_report_labor_hrs_from_code = 'REVENUE') then
8377 l_pd_period_1(l_row_number) := pa_fp_view_plans_util.get_period_n_value
8378 (p_period_profile_id => l_period_profile_id,
8379 p_budget_version_id => l_pd_budget_version_id(l_row_number),
8380 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
8381 p_project_currency_type => l_currency_type,
8382 p_amount_type_id => 215,
8383 p_period_number => 1);
8384 l_pd_period_2(l_row_number) := pa_fp_view_plans_util.get_period_n_value
8385 (p_period_profile_id => l_period_profile_id,
8386 p_budget_version_id => l_pd_budget_version_id(l_row_number),
8387 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
8388 p_project_currency_type => l_currency_type,
8389 p_amount_type_id => 215,
8390 p_period_number => 2);
8391 l_pd_period_3(l_row_number) := pa_fp_view_plans_util.get_period_n_value
8392 (p_period_profile_id => l_period_profile_id,
8393 p_budget_version_id => l_pd_budget_version_id(l_row_number),
8394 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
8395 p_project_currency_type => l_currency_type,
8396 p_amount_type_id => 215,
8397 p_period_number => 3);
8398 l_pd_period_4(l_row_number) := pa_fp_view_plans_util.get_period_n_value
8399 (p_period_profile_id => l_period_profile_id,
8400 p_budget_version_id => l_pd_budget_version_id(l_row_number),
8401 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
8402 p_project_currency_type => l_currency_type,
8403 p_amount_type_id => 215,
8404 p_period_number => 4);
8405 l_pd_period_5(l_row_number) := pa_fp_view_plans_util.get_period_n_value
8406 (p_period_profile_id => l_period_profile_id,
8407 p_budget_version_id => l_pd_budget_version_id(l_row_number),
8408 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
8409 p_project_currency_type => l_currency_type,
8410 p_amount_type_id => 215,
8411 p_period_number => 5);
8412 l_pd_period_6(l_row_number) := pa_fp_view_plans_util.get_period_n_value
8413 (p_period_profile_id => l_period_profile_id,
8414 p_budget_version_id => l_pd_budget_version_id(l_row_number),
8415 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
8416 p_project_currency_type => l_currency_type,
8417 p_amount_type_id => 215,
8418 p_period_number => 6);
8419 l_pd_period_7(l_row_number) := pa_fp_view_plans_util.get_period_n_value
8420 (p_period_profile_id => l_period_profile_id,
8421 p_budget_version_id => l_pd_budget_version_id(l_row_number),
8422 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
8423 p_project_currency_type => l_currency_type,
8424 p_amount_type_id => 215,
8425 p_period_number => 7);
8426 l_pd_period_8(l_row_number) := pa_fp_view_plans_util.get_period_n_value
8427 (p_period_profile_id => l_period_profile_id,
8428 p_budget_version_id => l_pd_budget_version_id(l_row_number),
8429 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
8430 p_project_currency_type => l_currency_type,
8431 p_amount_type_id => 215,
8432 p_period_number => 8);
8433 l_pd_period_9(l_row_number) := pa_fp_view_plans_util.get_period_n_value
8434 (p_period_profile_id => l_period_profile_id,
8435 p_budget_version_id => l_pd_budget_version_id(l_row_number),
8436 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
8437 p_project_currency_type => l_currency_type,
8438 p_amount_type_id => 215,
8439 p_period_number => 9);
8440 l_pd_period_10(l_row_number) := pa_fp_view_plans_util.get_period_n_value
8441 (p_period_profile_id => l_period_profile_id,
8442 p_budget_version_id => l_pd_budget_version_id(l_row_number),
8443 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
8444 p_project_currency_type => l_currency_type,
8445 p_amount_type_id => 215,
8446 p_period_number => 10);
8447 l_pd_period_11(l_row_number) := pa_fp_view_plans_util.get_period_n_value
8448 (p_period_profile_id => l_period_profile_id,
8449 p_budget_version_id => l_pd_budget_version_id(l_row_number),
8450 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
8451 p_project_currency_type => l_currency_type,
8452 p_amount_type_id => 215,
8453 p_period_number => 11);
8454 l_pd_period_12(l_row_number) := pa_fp_view_plans_util.get_period_n_value
8455 (p_period_profile_id => l_period_profile_id,
8456 p_budget_version_id => l_pd_budget_version_id(l_row_number),
8457 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
8458 p_project_currency_type => l_currency_type,
8459 p_amount_type_id => 215,
8460 p_period_number => 12);
8461 l_pd_period_13(l_row_number) := pa_fp_view_plans_util.get_period_n_value
8462 (p_period_profile_id => l_period_profile_id,
8463 p_budget_version_id => l_pd_budget_version_id(l_row_number),
8464 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
8465 p_project_currency_type => l_currency_type,
8466 p_amount_type_id => 215,
8467 p_period_number => 13);
8468 l_pd_preceding(l_row_number) := pa_fp_view_plans_util.get_period_n_value
8469 (p_period_profile_id => l_period_profile_id,
8470 p_budget_version_id => l_pd_budget_version_id(l_row_number),
8471 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
8472 p_project_currency_type => l_currency_type,
8473 p_amount_type_id => 215,
8474 p_period_number => 0);
8475 l_pd_succeeding(l_row_number) := pa_fp_view_plans_util.get_period_n_value
8476 (p_period_profile_id => l_period_profile_id,
8477 p_budget_version_id => l_pd_budget_version_id(l_row_number),
8478 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
8479 p_project_currency_type => l_currency_type,
8480 p_amount_type_id => 215,
8481 p_period_number => 14);
8482 l_pd_project_total(l_row_number) := l_labor_hours(i); -- bug 2699651
8483 else
8484 l_pd_unit_of_measure(l_row_number) := l_unit_of_measure(i);
8485 l_pd_period_1(l_row_number) := null;
8486 l_pd_period_2(l_row_number) := null;
8487 l_pd_period_3(l_row_number) := null;
8488 l_pd_period_4(l_row_number) := null;
8489 l_pd_period_5(l_row_number) := null;
8490 l_pd_period_6(l_row_number) := null;
8491 l_pd_period_7(l_row_number) := null;
8492 l_pd_period_8(l_row_number) := null;
8493 l_pd_period_9(l_row_number) := null;
8494 l_pd_period_10(l_row_number) := null;
8495 l_pd_period_11(l_row_number) := null;
8496 l_pd_period_12(l_row_number) := null;
8497 l_pd_period_13(l_row_number) := null;
8498 l_pd_preceding(l_row_number) := null;
8499 l_pd_succeeding(l_row_number) := null;
8500 l_pd_line_editable_flag(l_row_number) := 'N'; -- cannot edit inserted row
8501 l_pd_project_total(l_row_number) := null; -- bug 2699651
8502 end if; -- QUANTITY
8503 end if; -- display_flag: QUANTITY
8504
8505 if pa_fp_view_plans_pub.G_DISPLAY_FLAG_REVENUE = 'Y' then
8506 --hr_utility.trace('inserting row for Revenue: ' || TO_CHAR(i));
8507 -- process REVENUE numbers from REVENUE BUDGET VERSION
8508 l_row_number := l_row_number + 1; -- increment row counter
8509 l_pd_project_id(l_row_number) := l_project_id(i);
8510 l_pd_task_id(l_row_number) := l_task_id(i);
8511 l_pd_resource_list_member_id(l_row_number) := l_resource_list_member_id(i);
8512 l_pd_unit_of_measure(l_row_number) := null;
8513 l_pd_budget_version_id(l_row_number) := l_budget_version_id(i);
8514 l_pd_res_assignment_id(l_row_number) := l_res_assignment_id(i);
8515 l_pd_element_name(l_row_number) := l_element_name(i);
8516 l_pd_element_level(l_row_number) := l_element_level(i);
8517 l_pd_row_level(l_row_number) := l_row_level(i);
8518 l_pd_parent_element_name(l_row_number) := l_parent_element_name(i);
8519 l_pd_line_editable_flag(l_row_number) := l_line_editable_flag(i);
8520 l_pd_amount_type(l_row_number) := 'REVENUE';
8521 l_pd_amount_subtype(l_row_number) := 'REVENUE';
8522 l_pd_amount_type_id(l_row_number) := 100; -- amount_type_id for 'REVENUE'
8523 l_pd_amount_subtype_id(l_row_number) := 100; -- amount_subtype_id for 'REVENUE'
8524 -- DEFAULT_AMOUNT_TYPE_CODE check: if not the default, then demote
8525 if not ((l_default_amount_type_code = 'REVENUE') and
8526 (l_default_amount_subtype_code = 'REVENUE')) then
8527 l_pd_parent_element_name(l_row_number) := l_pd_element_name(l_row_number);
8528 l_pd_element_name(l_row_number) := null;
8529 l_pd_has_child_element(l_row_number) := 'N';
8530 else
8531 l_pd_has_child_element(l_row_number) := 'Y';
8532 end if;
8533 l_pd_period_1(l_row_number) := pa_fp_view_plans_util.get_period_n_value
8534 (p_period_profile_id => l_period_profile_id,
8535 p_budget_version_id => l_pd_budget_version_id(l_row_number),
8536 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
8537 p_project_currency_type => l_currency_type,
8538 p_amount_type_id => 100,
8539 p_period_number => 1);
8540 l_pd_period_2(l_row_number) := pa_fp_view_plans_util.get_period_n_value
8541 (p_period_profile_id => l_period_profile_id,
8542 p_budget_version_id => l_pd_budget_version_id(l_row_number),
8543 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
8544 p_project_currency_type => l_currency_type,
8545 p_amount_type_id => 100,
8546 p_period_number => 2);
8547 l_pd_period_3(l_row_number) := pa_fp_view_plans_util.get_period_n_value
8548 (p_period_profile_id => l_period_profile_id,
8549 p_budget_version_id => l_pd_budget_version_id(l_row_number),
8550 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
8551 p_project_currency_type => l_currency_type,
8552 p_amount_type_id => 100,
8553 p_period_number => 3);
8554 l_pd_period_4(l_row_number) := pa_fp_view_plans_util.get_period_n_value
8555 (p_period_profile_id => l_period_profile_id,
8556 p_budget_version_id => l_pd_budget_version_id(l_row_number),
8557 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
8558 p_project_currency_type => l_currency_type,
8559 p_amount_type_id => 100,
8560 p_period_number => 4);
8561 l_pd_period_5(l_row_number) := pa_fp_view_plans_util.get_period_n_value
8562 (p_period_profile_id => l_period_profile_id,
8563 p_budget_version_id => l_pd_budget_version_id(l_row_number),
8564 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
8565 p_project_currency_type => l_currency_type,
8566 p_amount_type_id => 100,
8567 p_period_number => 5);
8568 l_pd_period_6(l_row_number) := pa_fp_view_plans_util.get_period_n_value
8569 (p_period_profile_id => l_period_profile_id,
8570 p_budget_version_id => l_pd_budget_version_id(l_row_number),
8571 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
8572 p_project_currency_type => l_currency_type,
8573 p_amount_type_id => 100,
8574 p_period_number => 6);
8575 l_pd_period_7(l_row_number) := pa_fp_view_plans_util.get_period_n_value
8576 (p_period_profile_id => l_period_profile_id,
8577 p_budget_version_id => l_pd_budget_version_id(l_row_number),
8578 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
8579 p_project_currency_type => l_currency_type,
8580 p_amount_type_id => 100,
8581 p_period_number => 7);
8582 l_pd_period_8(l_row_number) := pa_fp_view_plans_util.get_period_n_value
8583 (p_period_profile_id => l_period_profile_id,
8584 p_budget_version_id => l_pd_budget_version_id(l_row_number),
8585 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
8586 p_project_currency_type => l_currency_type,
8587 p_amount_type_id => 100,
8588 p_period_number => 8);
8589 l_pd_period_9(l_row_number) := pa_fp_view_plans_util.get_period_n_value
8590 (p_period_profile_id => l_period_profile_id,
8591 p_budget_version_id => l_pd_budget_version_id(l_row_number),
8592 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
8593 p_project_currency_type => l_currency_type,
8594 p_amount_type_id => 100,
8595 p_period_number => 9);
8596 l_pd_period_10(l_row_number) := pa_fp_view_plans_util.get_period_n_value
8597 (p_period_profile_id => l_period_profile_id,
8598 p_budget_version_id => l_pd_budget_version_id(l_row_number),
8599 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
8600 p_project_currency_type => l_currency_type,
8601 p_amount_type_id => 100,
8602 p_period_number => 10);
8603 l_pd_period_11(l_row_number) := pa_fp_view_plans_util.get_period_n_value
8604 (p_period_profile_id => l_period_profile_id,
8605 p_budget_version_id => l_pd_budget_version_id(l_row_number),
8606 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
8607 p_project_currency_type => l_currency_type,
8608 p_amount_type_id => 100,
8609 p_period_number => 11);
8610 l_pd_period_12(l_row_number) := pa_fp_view_plans_util.get_period_n_value
8611 (p_period_profile_id => l_period_profile_id,
8612 p_budget_version_id => l_pd_budget_version_id(l_row_number),
8613 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
8614 p_project_currency_type => l_currency_type,
8615 p_amount_type_id => 100,
8616 p_period_number => 12);
8617 l_pd_period_13(l_row_number) := pa_fp_view_plans_util.get_period_n_value
8618 (p_period_profile_id => l_period_profile_id,
8619 p_budget_version_id => l_pd_budget_version_id(l_row_number),
8620 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
8621 p_project_currency_type => l_currency_type,
8622 p_amount_type_id => 100,
8623 p_period_number => 13);
8624 l_pd_preceding(l_row_number) := pa_fp_view_plans_util.get_period_n_value
8625 (p_period_profile_id => l_period_profile_id,
8626 p_budget_version_id => l_pd_budget_version_id(l_row_number),
8627 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
8628 p_project_currency_type => l_currency_type,
8629 p_amount_type_id => 100,
8630 p_period_number => 0);
8631 l_pd_succeeding(l_row_number) := pa_fp_view_plans_util.get_period_n_value
8632 (p_period_profile_id => l_period_profile_id,
8633 p_budget_version_id => l_pd_budget_version_id(l_row_number),
8634 p_resource_assignment_id => l_pd_res_assignment_id(l_row_number),
8635 p_project_currency_type => l_currency_type,
8636 p_amount_type_id => 100,
8637 p_period_number => 14);
8638 l_pd_project_total(l_row_number) := l_revenue(i); -- bug 2699651
8639 end if; -- display_from: REVENUE
8640
8641 if pa_fp_view_plans_pub.G_DISPLAY_FLAG_BURDCOST = 'Y' then
8642 --hr_utility.trace('creating row for burdened cost: ' || TO_CHAR(i));
8643 -- POPULATE null'S for BURDENED_COST row in PERIODS PL/SQL TABLE
8644 l_row_number := l_row_number + 1; -- increment row counter
8645 l_pd_project_id(l_row_number) := l_project_id(i);
8646 l_pd_task_id(l_row_number) := l_task_id(i);
8647 l_pd_resource_list_member_id(l_row_number) := l_resource_list_member_id(i);
8648 l_pd_unit_of_measure(l_row_number) := null;
8649 l_pd_budget_version_id(l_row_number) := l_budget_version_id(i);
8650 l_pd_res_assignment_id(l_row_number) := l_res_assignment_id(i);
8651 l_pd_element_name(l_row_number) := l_element_name(i);
8652 l_pd_element_level(l_row_number) := l_element_level(i);
8653 l_pd_row_level(l_row_number) := l_row_level(i);
8654 l_pd_parent_element_name(l_row_number) := l_parent_element_name(i);
8655 --l_pd_line_editable_flag(l_row_number) := l_line_editable_flag(i);
8656 l_pd_line_editable_flag(l_row_number) := 'N'; -- cannot edit inserted row
8657 l_pd_amount_type(l_row_number) := 'COST';
8658 l_pd_amount_subtype(l_row_number) := 'BURDENED_COST';
8659 l_pd_amount_type_id(l_row_number) := 150; -- amount_type_id of COST
8660 l_pd_amount_subtype_id(l_row_number) := 165; -- amount_subtype_id of BURDENED_COST
8661 -- DEFAULT_AMOUNT_TYPE_CODE check: if not the default, then demote
8662 if not ((l_default_amount_type_code = 'COST') and
8663 (l_default_amount_subtype_code = 'BURDENED_COST')) then
8664 l_pd_parent_element_name(l_row_number) := l_pd_element_name(l_row_number);
8665 l_pd_element_name(l_row_number) := null;
8666 l_pd_has_child_element(l_row_number) := 'N';
8667 else
8668 l_pd_has_child_element(l_row_number) := 'Y';
8669 end if;
8670 l_pd_period_1(l_row_number) := null;
8671 l_pd_period_2(l_row_number) := null;
8672 l_pd_period_3(l_row_number) := null;
8673 l_pd_period_4(l_row_number) := null;
8674 l_pd_period_5(l_row_number) := null;
8675 l_pd_period_6(l_row_number) := null;
8676 l_pd_period_7(l_row_number) := null;
8677 l_pd_period_8(l_row_number) := null;
8678 l_pd_period_9(l_row_number) := null;
8679 l_pd_period_10(l_row_number) := null;
8680 l_pd_period_11(l_row_number) := null;
8681 l_pd_period_12(l_row_number) := null;
8682 l_pd_period_13(l_row_number) := null;
8683 l_pd_preceding(l_row_number) := null;
8684 l_pd_succeeding(l_row_number) := null;
8685 l_pd_project_total(l_row_number) := null; -- bug 2699651
8686 end if; -- display_from: BURDENED COST
8687
8688 if pa_fp_view_plans_pub.G_DISPLAY_FLAG_RAWCOST = 'Y' then
8689 --hr_utility.trace('inserting row for RawCost: ' || TO_CHAR(i));
8690 -- POPULATE null'S for RAW_COST row in PERIODS PL/SQL TABLE
8691 l_row_number := l_row_number + 1; -- increment row counter
8692 l_pd_project_id(l_row_number) := l_project_id(i);
8693 l_pd_task_id(l_row_number) := l_task_id(i);
8694 l_pd_resource_list_member_id(l_row_number) := l_resource_list_member_id(i);
8695 l_pd_unit_of_measure(l_row_number) := null;
8696 l_pd_budget_version_id(l_row_number) := l_budget_version_id(i);
8697 l_pd_res_assignment_id(l_row_number) := l_res_assignment_id(i);
8698 l_pd_element_name(l_row_number) := l_element_name(i);
8699 l_pd_element_level(l_row_number) := l_element_level(i);
8700 l_pd_row_level(l_row_number) := l_row_level(i);
8701 l_pd_parent_element_name(l_row_number) := l_parent_element_name(i);
8702 --l_pd_line_editable_flag(l_row_number) := l_line_editable_flag(i);
8703 l_pd_line_editable_flag(l_row_number) := 'N'; -- cannot edit inserted row
8704 l_pd_amount_type(l_row_number) := 'COST';
8705 l_pd_amount_subtype(l_row_number) := 'RAW_COST';
8706 l_pd_amount_type_id(l_row_number) := 150; -- amount_type_id of COST
8707 l_pd_amount_subtype_id(l_row_number) := 160; -- amount_subtype_id of RAW_COST
8708 -- DEFAULT_AMOUNT_TYPE_CODE check: if not the default, then demote
8709 if not ((l_default_amount_type_code = 'COST') and
8710 (l_default_amount_subtype_code = 'RAW_COST')) then
8711 l_pd_parent_element_name(l_row_number) := l_pd_element_name(l_row_number);
8712 l_pd_element_name(l_row_number) := null;
8713 l_pd_has_child_element(l_row_number) := 'N';
8714 else
8715 l_pd_has_child_element(l_row_number) := 'Y';
8716 end if;
8717 l_pd_period_1(l_row_number) := null;
8718 l_pd_period_2(l_row_number) := null;
8719 l_pd_period_3(l_row_number) := null;
8720 l_pd_period_4(l_row_number) := null;
8721 l_pd_period_5(l_row_number) := null;
8722 l_pd_period_6(l_row_number) := null;
8723 l_pd_period_7(l_row_number) := null;
8724 l_pd_period_8(l_row_number) := null;
8725 l_pd_period_9(l_row_number) := null;
8726 l_pd_period_10(l_row_number) := null;
8727 l_pd_period_11(l_row_number) := null;
8728 l_pd_period_12(l_row_number) := null;
8729 l_pd_period_13(l_row_number) := null;
8730 l_pd_preceding(l_row_number) := null;
8731 l_pd_succeeding(l_row_number) := null;
8732 l_pd_project_total(l_row_number) := null; -- bug 2699651
8733 end if; -- display_from: RAW COST
8734
8735 if pa_fp_view_plans_pub.G_DISPLAY_FLAG_MARGIN = 'Y' then
8736 --hr_utility.trace('inserting row for Margin: ' || TO_CHAR(i));
8737 -- POPULATE null'S for MARGIN row in PERIODS PL/SQL TABLE
8738 l_row_number := l_row_number + 1; -- increment row counter
8739 l_pd_project_id(l_row_number) := l_project_id(i);
8740 l_pd_task_id(l_row_number) := l_task_id(i);
8741 l_pd_resource_list_member_id(l_row_number) := l_resource_list_member_id(i);
8742 l_pd_unit_of_measure(l_row_number) := null;
8743 l_pd_budget_version_id(l_row_number) := l_budget_version_id(i);
8744 l_pd_res_assignment_id(l_row_number) := l_res_assignment_id(i);
8745 l_pd_element_name(l_row_number) := l_element_name(i);
8746 l_pd_element_level(l_row_number) := l_element_level(i);
8747 l_pd_row_level(l_row_number) := l_row_level(i);
8748 l_pd_parent_element_name(l_row_number) := l_parent_element_name(i);
8749 --l_pd_line_editable_flag(l_row_number) := l_line_editable_flag(i);
8750 l_pd_line_editable_flag(l_row_number) := 'N'; -- cannot edit inserted row
8751 l_pd_amount_type(l_row_number) := 'MARGIN';
8752 l_pd_amount_subtype(l_row_number) := 'MARGIN';
8753 l_pd_amount_type_id(l_row_number) := 230; -- amount_type_id of MARGIN
8754 l_pd_amount_subtype_id(l_row_number) := 230; -- amount_subtype_id of MARGIN
8755 -- DEFAULT_AMOUNT_TYPE_CODE check: if not the default, then demote
8756 if not ((l_default_amount_type_code = 'MARGIN') and
8757 (l_default_amount_subtype_code = 'MARGIN')) then
8758 l_pd_parent_element_name(l_row_number) := l_pd_element_name(l_row_number);
8759 l_pd_element_name(l_row_number) := null;
8760 l_pd_has_child_element(l_row_number) := 'N';
8761 else
8762 l_pd_has_child_element(l_row_number) := 'Y';
8763 end if;
8764 l_pd_period_1(l_row_number) := null;
8765 l_pd_period_2(l_row_number) := null;
8766 l_pd_period_3(l_row_number) := null;
8767 l_pd_period_4(l_row_number) := null;
8768 l_pd_period_5(l_row_number) := null;
8769 l_pd_period_6(l_row_number) := null;
8770 l_pd_period_7(l_row_number) := null;
8771 l_pd_period_8(l_row_number) := null;
8772 l_pd_period_9(l_row_number) := null;
8773 l_pd_period_10(l_row_number) := null;
8774 l_pd_period_11(l_row_number) := null;
8775 l_pd_period_12(l_row_number) := null;
8776 l_pd_period_13(l_row_number) := null;
8777 l_pd_preceding(l_row_number) := null;
8778 l_pd_succeeding(l_row_number) := null;
8779 l_pd_project_total(l_row_number) := null; -- bug 2699651
8780 end if; -- display_from: MARGIN
8781
8782 if pa_fp_view_plans_pub.G_DISPLAY_FLAG_MARGINPCT = 'Y' then
8783 --hr_utility.trace('inserting row for MarginPct: ' || TO_CHAR(i));
8784 -- POPULATE null'S for MARGIN_PERCENT row in PERIODS PL/SQL TABLE
8785 l_row_number := l_row_number + 1; -- increment row counter
8786 l_pd_project_id(l_row_number) := l_project_id(i);
8787 l_pd_task_id(l_row_number) := l_task_id(i);
8788 l_pd_resource_list_member_id(l_row_number) := l_resource_list_member_id(i);
8789 l_pd_unit_of_measure(l_row_number) := null;
8790 l_pd_budget_version_id(l_row_number) := l_budget_version_id(i);
8791 l_pd_res_assignment_id(l_row_number) := l_res_assignment_id(i);
8792 l_pd_element_name(l_row_number) := l_element_name(i);
8793 l_pd_element_level(l_row_number) := l_element_level(i);
8794 l_pd_row_level(l_row_number) := l_row_level(i);
8795 l_pd_parent_element_name(l_row_number) := l_parent_element_name(i);
8796 --l_pd_line_editable_flag(l_row_number) := l_line_editable_flag(i);
8797 l_pd_line_editable_flag(l_row_number) := 'N'; -- cannot edit inserted row
8798 l_pd_amount_type(l_row_number) := 'MARGIN_PERCENT';
8799 l_pd_amount_subtype(l_row_number) := 'MARGIN_PERCENT';
8800 l_pd_amount_type_id(l_row_number) := 231; -- amount_type_id of MARGIN_PERCENT
8801 l_pd_amount_subtype_id(l_row_number) := 231; -- amount_subtype_id of MARGIN_PERCENT
8802 -- DEFAULT_AMOUNT_TYPE_CODE check: if not the default, then demote
8803 if not ((l_default_amount_type_code = 'MARGIN_PERCENT') and
8804 (l_default_amount_subtype_code = 'MARGIN_PERCENT')) then
8805 l_pd_parent_element_name(l_row_number) := l_pd_element_name(l_row_number);
8806 l_pd_element_name(l_row_number) := null;
8807 l_pd_has_child_element(l_row_number) := 'N';
8808 else
8809 l_pd_has_child_element(l_row_number) := 'Y';
8810 end if;
8811 l_pd_period_1(l_row_number) := null;
8812 l_pd_period_2(l_row_number) := null;
8813 l_pd_period_3(l_row_number) := null;
8814 l_pd_period_4(l_row_number) := null;
8815 l_pd_period_5(l_row_number) := null;
8816 l_pd_period_6(l_row_number) := null;
8817 l_pd_period_7(l_row_number) := null;
8818 l_pd_period_8(l_row_number) := null;
8819 l_pd_period_9(l_row_number) := null;
8820 l_pd_period_10(l_row_number) := null;
8821 l_pd_period_11(l_row_number) := null;
8822 l_pd_period_12(l_row_number) := null;
8823 l_pd_period_13(l_row_number) := null;
8824 l_pd_preceding(l_row_number) := null;
8825 l_pd_succeeding(l_row_number) := null;
8826 l_pd_project_total(l_row_number) := null; -- bug 2699651
8827 end if; --display_from: MARGIN PERCENT
8828 end loop;
8829 end if; -- pa_fp_view_plans_pub.G_AMT_OR_PD = 'P'
8830 l_err_stage:= 900;
8831 pa_debug.write('pa_fp_view_plans_pub.pa_fp_vp_pop_tables_single', '600: REVENUE version - FINISHED populating amts pl/sql tables', 1);
8832 --hr_utility.trace('finished populating amts pl/sql tables: 600');
8833
8834 -- POPULATE global temporary table PA_FIN_VP_AMTS_VIEW_TMP
8835 -- only if pa_fp_view_plans_pub.G_AMT_OR_PD = 'A'
8836 if pa_fp_view_plans_pub.G_AMT_OR_PD = 'A' then
8837 forall i in nvl(l_project_id.first,0)..nvl(l_project_id.last,-1)
8838 insert into pa_fin_vp_amts_view_tmp
8839 (project_id,
8840 task_id,
8841 resource_list_member_id,
8842 element_name,
8843 element_level,
8844 labor_hours,
8845 burdened_cost,
8846 raw_cost,
8847 revenue,
8848 margin,
8849 margin_percent,
8850 editable_flag,
8851 row_level,
8852 parent_element_name,
8853 cost_resource_assignment_id,
8854 rev_resource_assignment_id,
8855 all_resource_assignment_id,
8856 unit_of_measure,
8857 has_child_element) values
8858 (l_project_id(i),
8859 l_task_id(i),
8860 l_resource_list_member_id(i),
8861 l_element_name(i),
8862 l_element_level(i),
8863 l_labor_hours(i),
8864 null, -- burdened_cost
8865 null, -- raw_cost
8866 l_revenue(i),
8867 null, -- margin
8868 null, -- margin_percent
8869 l_line_editable_flag(i),
8870 l_row_level(i),
8871 l_parent_element_name(i),
8872 -1,
8873 l_res_assignment_id(i),
8874 -1,
8875 l_unit_of_measure(i),
8876 l_has_child_element(i));
8877 l_err_stage:= 1000;
8878 pa_debug.write('pa_fp_view_plans_pub.pa_fp_vp_pop_tables_single', '800: amts temp table populated', 1);
8879 --hr_utility.trace('amts temp table populated: 800');
8880 end if; -- pa_fp_view_plans_pub.G_AMT_OR_PD= 'A'
8881
8882 -- POPULATE global temporary table PA_FIN_VP_PDS_VIEW_TMP
8883 -- only if in periodic mode
8884 if pa_fp_view_plans_pub.G_AMT_OR_PD = 'P' then
8885 forall z in nvl(l_pd_project_id.first,0)..nvl(l_pd_project_id.last,-1)
8886 insert into pa_fin_vp_pds_view_tmp
8887 (project_id,
8888 task_id,
8889 resource_list_member_id,
8890 uom,
8891 element_name,
8892 element_level,
8893 editable_flag,
8894 row_level,
8895 parent_element_name,
8896 amount_type,
8897 amount_subtype,
8898 amount_type_id,
8899 amount_subtype_id,
8900 period_amount1,
8901 period_amount2,
8902 period_amount3,
8903 period_amount4,
8904 period_amount5,
8905 period_amount6,
8906 period_amount7,
8907 period_amount8,
8908 period_amount9,
8909 period_amount10,
8910 period_amount11,
8911 period_amount12,
8912 period_amount13,
8913 cost_resource_assignment_id,
8914 rev_resource_assignment_id,
8915 all_resource_assignment_id,
8916 preceding_periods_amount,
8917 succeeding_periods_amount,
8918 has_child_element,
8919 project_total) values
8920 (l_pd_project_id(z),
8921 l_pd_task_id(z),
8922 l_pd_resource_list_member_id(z),
8923 l_pd_unit_of_measure(z),
8924 l_pd_element_name(z),
8925 l_pd_element_level(z),
8926 l_pd_line_editable_flag(z),
8927 l_pd_row_level(z),
8928 l_pd_parent_element_name(z),
8929 l_pd_amount_type(z),
8930 l_pd_amount_subtype(z),
8931 l_pd_amount_type_id(z),
8932 l_pd_amount_subtype_id(z),
8933 l_pd_period_1(z),
8934 l_pd_period_2(z),
8935 l_pd_period_3(z),
8936 l_pd_period_4(z),
8937 l_pd_period_5(z),
8938 l_pd_period_6(z),
8939 l_pd_period_7(z),
8940 l_pd_period_8(z),
8941 l_pd_period_9(z),
8942 l_pd_period_10(z),
8943 l_pd_period_11(z),
8944 l_pd_period_12(z),
8945 l_pd_period_13(z),
8946 -1,
8947 l_pd_res_assignment_id(z),
8948 -1,
8949 l_pd_preceding(z),
8950 l_pd_succeeding(z),
8951 l_pd_has_child_element(z),
8952 l_pd_project_total(z));
8953 end if; -- pa_fp_view_plans_pub.G_AMT_OR_PD = 'P'
8954 l_err_stage := 1100;
8955 pa_debug.write('pa_fp_view_plans_pub.pa_fp_vp_pop_tables_single', '900: pds temp table populated', 1);
8956
8957
8958 else
8959 pa_debug.write('pa_fp_view_plans_pub.pa_fp_vp_pop_tables_single', '700: INVALID VALUE FOR p_cost_or_rev', 4);
8960 --hr_utility.trace('invalid value for p_cost_or_rev');
8961 end if;
8962 commit;
8963 pa_debug.write('pa_fp_view_plans_pub.pa_fp_vp_pop_tables_single', '1000: exiting procedure', 2);
8964
8965 EXCEPTION
8966 when others then
8967 rollback to VIEW_PLANS_POP_TABLES_SINGLE;
8968 --hr_utility.trace('l_err_stage= ' || to_char(l_err_stage));
8969 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8970 x_msg_count := 1;
8971 x_msg_data := SQLERRM;
8972 FND_MSG_PUB.add_exc_msg( p_pkg_name => 'PA_FP_VIEW_PLANS_PUB',
8973 p_procedure_name => 'View_Plans_Pop_Tables_Single');
8974 pa_debug.reset_err_stack;
8975 return;
8976 end pa_fp_vp_pop_tables_single;
8977
8978
8979 -- ============ FUNCTION has_child_rows ===============
8980 -- HISTORY:
8981 -- 20-Feb-2003 dlai created: for Hgrid performance enhancement
8982
8983 FUNCTION has_child_rows
8984 (p_project_id IN pa_resource_assignments.project_id%TYPE,
8985 p_budget_version_id1 IN pa_resource_assignments.budget_version_id%TYPE,
8986 p_budget_version_id2 IN pa_resource_assignments.budget_version_id%TYPE,
8987 p_task_id IN pa_resource_assignments.task_id%TYPE,
8988 p_resource_list_member_id IN pa_resource_assignments.resource_list_member_id%TYPE,
8989 p_amount_subtype_code IN pa_proj_periods_denorm.amount_subtype_code%TYPE,
8990 p_amt_or_periodic IN VARCHAR2) return VARCHAR2
8991 IS
8992
8993 l_return_value VARCHAR2(1);
8994 l_res_parent_member_id pa_resource_list_members.parent_member_id%TYPE;
8995 l_resource_list_id pa_resource_list_members.resource_list_id%TYPE;
8996
8997 cursor project_children_csr is
8998 /* Bug 3106741 rewritten for performance improvement
8999 select ra.task_id -- doesn't matter what we select here
9000 from pa_resource_assignments ra,
9001 pa_tasks t
9002 where (ra.budget_version_id in (p_budget_version_id1, p_budget_version_id2) and
9003 ra.task_id=0 and
9004 not (ra.resource_list_member_id in (0,pa_fp_view_plans_pub.Get_Uncat_Res_List_Member_Id))) or
9005 (ra.budget_version_id in (p_budget_version_id1, p_budget_version_id2) and
9006 ra.task_id <> 0 and
9007 ra.task_id = t.task_id and
9008 t.parent_task_id is null);
9009 */
9010 select 1 from dual where exists (
9011 select ra.task_id -- doesn't matter what we select here
9012 from pa_resource_assignments ra
9013 where ra.budget_version_id in (p_budget_version_id1, p_budget_version_id2)
9014 and (
9015 ( ra.task_id=0
9016 and not (ra.resource_list_member_id in (0,pa_fp_view_plans_pub.Get_Uncat_Res_List_Member_Id)))
9017 or
9018 (exists (select 1
9019 from pa_tasks pt
9020 where pt.task_id = pt.top_task_id
9021 and pt.task_id = ra.task_id))
9022 ));
9023
9024 project_children_rec project_children_csr%ROWTYPE;
9025
9026 cursor task_children_csr is
9027 /* Bug 3106741 rewritten for performance improvement
9028 select ra.task_id
9029 from pa_resource_assignments ra,
9030 pa_tasks t
9031 where (ra.budget_version_id in(p_budget_version_id1, p_budget_version_id2) and
9032 ra.task_id=p_task_id and
9033 not (ra.resource_list_member_id in (0,pa_fp_view_plans_pub.Get_Uncat_Res_List_Member_Id))) or
9034 (ra.budget_version_id in (p_budget_version_id1, p_budget_version_id2) and
9035 ra.task_id = t.task_id and t.parent_task_id = p_task_id);
9036 */
9037 select 1 from dual where exists (
9038 select ra.task_id
9039 from pa_resource_assignments ra
9040 where ra.budget_version_id in(p_budget_version_id1, p_budget_version_id2) and
9041 (
9042 (ra.task_id=p_task_id and
9043 not (ra.resource_list_member_id in
9044 (0,pa_fp_view_plans_pub.Get_Uncat_Res_List_Member_Id)
9045 )
9046 )
9047 or
9048 (exists (select 1
9049 from pa_tasks t
9050 where ra.task_id = t.task_id
9051 and t.parent_task_id = p_task_id)
9052 )
9053 ));
9054
9055 task_children_rec task_children_csr%ROWTYPE;
9056
9057 cursor rg_children_csr is
9058 select resource_list_member_id
9059 from pa_resource_list_members
9060 where parent_member_id = p_resource_list_member_id;
9061 rg_children_rec rg_children_csr%ROWTYPE;
9062
9063 BEGIN
9064 if (p_resource_list_member_id = pa_fp_view_plans_pub.Get_Uncat_Res_List_Member_Id and
9065 p_task_id = 0) or
9066 (p_resource_list_member_id = 0 and
9067 p_task_id = 0) then
9068 /* THIS IS A PROJECT-LEVEL ROW */
9069 /* to look for children of a PROJECT-LEVEL row, look for resources/resource groups AND
9070 * for tasks
9071 */
9072 open project_children_csr;
9073 fetch project_children_csr into project_children_rec;
9074 if project_children_csr%NOTFOUND then
9075 if p_amt_or_periodic = 'A' then
9076 l_return_value := 'N';
9077 else
9078 if p_amount_subtype_code = pa_fp_view_plans_pub.Get_Default_Amt_Subtype_Code then
9079 l_return_value := 'Y';
9080 else
9081 l_return_value := 'N';
9082 end if;
9083 end if;
9084 else
9085 l_return_value := 'Y';
9086 end if;
9087 close project_children_csr;
9088
9089 elsif p_resource_list_member_id = 0 or
9090 p_resource_list_member_id = pa_fp_view_plans_pub.Get_Uncat_Res_List_Member_Id then
9091 /* THIS IS A TASK-LEVEL ROW */
9092 /* to look for children of a TASK-LEVEL row, look for resources/resource groups AND
9093 * for sub-tasks
9094 */
9095 open task_children_csr;
9096 fetch task_children_csr into task_children_rec;
9097 if task_children_csr%NOTFOUND then
9098 if p_amt_or_periodic = 'A' then
9099 l_return_value := 'N';
9100 else
9101 if p_amount_subtype_code = pa_fp_view_plans_pub.Get_Default_Amt_Subtype_Code then
9102 l_return_value := 'Y';
9103 else
9104 l_return_value := 'N';
9105 end if;
9106 end if;
9107 else
9108 l_return_value := 'Y';
9109 end if;
9110 close task_children_csr;
9111 else
9112 /* THIS IS EITHER A RESOURCE LIST OR A RESOURCE */
9113 select nvl(parent_member_id, -99),
9114 resource_list_id
9115 into l_res_parent_member_id,
9116 l_resource_list_id
9117 from pa_resource_list_members
9118 where resource_list_member_id = p_resource_list_member_id;
9119 if l_res_parent_member_id = -99 then
9120 /* THIS IS A RESOURCE LIST */
9121 open rg_children_csr;
9122 fetch rg_children_csr into rg_children_rec;
9123 if rg_children_csr%NOTFOUND then
9124 if p_amt_or_periodic = 'A' then
9125 l_return_value := 'N';
9126 else
9127 if p_amount_subtype_code = pa_fp_view_plans_pub.Get_Default_Amt_Subtype_Code then
9128 l_return_value := 'Y';
9129 else
9130 l_return_value := 'N';
9131 end if;
9132 end if;
9133 else
9134 l_return_value := 'Y';
9135 end if;
9136 close rg_children_csr;
9137 else
9138 /* THIS IS A RESOURCE; IT COULD HAVE CHILDREN IF IN PERIODIC MODE */
9139 if p_amt_or_periodic = 'A' then
9140 l_return_value := 'N';
9141 else
9142 if p_amount_subtype_code = pa_fp_view_plans_pub.Get_Default_Amt_Subtype_Code then
9143 l_return_value := 'Y';
9144 else
9145 l_return_value := 'N';
9146 end if;
9147 end if;
9148 end if;
9149 end if;
9150 return l_return_value;
9151 END has_child_rows;
9152
9153
9154 END pa_fp_view_plans_pub;