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