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