DBA Data[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;