DBA Data[Home] [Help]

PACKAGE BODY: APPS.PAY_JP_RESULT_PKG

Source


1 PACKAGE BODY pay_jp_result_pkg AS
2 /* $Header: pyjprslt.pkb 120.3 2006/12/06 06:34:43 keyazawa noship $ */
3 --
4 -- Current ORACLE has so many bugs when using object.
5 -- Avoid using so many objects, or cause unexpected errors.
6 -- These problems will be fixed after 8.2.0.0.0.
7 --
8 -- This function returns result("Result Value" and "Balance Value") of "RUN".
9 -- Available action_type is as follows.
10 --   B : Balance Adjustment
11 --   F : Advance Pay(?)
12 --   I : Balance Initialization
13 --   Q : QuickPay Run
14 --   R : Run
15 --   V : Reversal
16 --   Z : Purge(?)
17 --
18 --
19 PROCEDURE result_values_internal(
20 	p_assignment_action_id	IN NUMBER,
21 	p_effective_date	IN DATE,
22 	p_result_values_by_iv	IN OUT NOCOPY result_values_by_iv_t)
23 IS
24 	--
25 	-- Bulk Result informations.
26 	--
27 	-- To execute bulk fetch, nested loop(or VARRAY) is mandatory.
28 	--
29 	TYPE result_values_t IS TABLE OF PAY_RUN_RESULT_VALUES.RESULT_VALUE%TYPE;
30 	TYPE data_types_t IS TABLE OF VARCHAR2(30);
31 	/* BUG1899306: Modified not to use an object type. ***********
32 	l_input_value_ids	pay_jp_numbers_t;
33 	*********************************************************** */
34 	TYPE numbers_t IS TABLE OF NUMBER;
35 	l_input_value_ids	numbers_t;
36 	l_data_types		data_types_t;
37 	l_result_values		result_values_t;
38 	CURSOR csr_result_value IS
39 /* Removed the hint to fix Bug# 5464717. */
40 		select
41 			piv.input_value_id,
42 			decode(substrb(piv.uom,1,1),'M','N','N','N','I','N','H','N','D','D','T')	DATA_TYPE,
43 			decode(
44 				/* N(Number), T(Text), D(Date) */
45 				decode(substrb(piv.uom,1,1),'M','N','N','N','I','N','H','N','D','D','T'),
46 				'N',fnd_number.number_to_canonical(
47 					sum(
48 						decode(
49 							decode(substrb(piv.uom,1,1),'M','N','N','N','I','N','H','N','D','D','T'),
50 							/* BUG3038738: Modified not to return result value if uom is number type.  **
51 							** When UOM of that result_value is number type, and it exceeds 20 digits  **
52 							** after the decimal point, ORA-06502 error occurs in                      **
53 							** fnd_number.canonical_to_number() function. Because fnd_number uses a    **
54 							** canonical_mask with only 20 decimal places against result_value with up **
55 							** to 38 decimal places. Currently, result_value for number type from this **
56 							** cursor has not been used anywhere.                                      **
57 							'N',fnd_number.canonical_to_number(prrv.result_value),
58 							********************************************************************************* */
59 							'N',
60                 decode(substrb(piv.uom,1,1),'N',0,
61                 fnd_number.canonical_to_number(prrv.result_value)),
62 							NULL
63 						)
64 					)
65 				),
66 				min(distinct prrv.result_value))	RESULT_VALUE
67 		from
68 			pay_run_result_values prrv, -- Run result value
69 			pay_run_results       prr,  -- Run result
70 			pay_input_values_f    piv
71 		where	prr.assignment_action_id = p_assignment_action_id
72 		and	prr.status in ('P','PA')
73 		and	prrv.run_result_id = prr.run_result_id
74 		and	piv.input_value_id = prrv.input_value_id
75 		and	p_effective_date
76 			between piv.effective_start_date and piv.effective_end_date
77 		group by
78 			piv.input_value_id,
79 			decode(substrb(piv.uom,1,1),'M','N','N','N','I','N','H','N','D','D','T');
80 	--
81 	-- Other local variables.
82 	--
83 	l_result_values_by_iv	result_values_by_iv_t;
84 	l_input_value_id	NUMBER;
85 	l_data_type		hr_lookups.LOOKUP_CODE%TYPE;
86 	l_result_value		PAY_RUN_RESULT_VALUES.RESULT_VALUE%TYPE;
87 BEGIN
88 	--
89 	-- Get all result values with bulk collect.
90 	--
91 	open csr_result_value;
92 	fetch csr_result_value bulk collect into l_input_value_ids,l_data_types,l_result_values;
93 	close csr_result_value;
94 	--
95 	-- Convert result values from nexted loop to index-by PL/SQL table.
96 	--
97 	for i in 1..l_input_value_ids.count loop
98 		l_input_value_id	:= l_input_value_ids(i);
99 		l_data_type		:= l_data_types(i);
100 		l_result_value		:= l_result_values(i);
101 		--
102 		-- Setup result_values indexed by input_value_id for current assignment_action_id.
103 		--
104 		l_result_values_by_iv(l_input_value_id).data_type	:= l_data_type;
105 		l_result_values_by_iv(l_input_value_id).result_value	:= l_result_value;
106 		--
107 		-- Unite result_values indexed by input_value_id of current assignment_action_id
108 		-- to the p_result_values_by_iv input variable.
109 		--
110 		if p_result_values_by_iv.exists(l_input_value_id) then
111 			if l_result_value is not NULL then
112 				if p_result_values_by_iv(l_input_value_id).result_value is NULL then
113 					p_result_values_by_iv(l_input_value_id).result_value := l_result_value;
114 				else
115 					if l_data_type = 'N' then
116 						p_result_values_by_iv(l_input_value_id).result_value
117 							:= fnd_number.number_to_canonical(
118 								  fnd_number.canonical_to_number(p_result_values_by_iv(l_input_value_id).result_value)
119 								+ fnd_number.canonical_to_number(l_result_value));
120 					else
121 						p_result_values_by_iv(l_input_value_id).result_value
122 							:= least(p_result_values_by_iv(l_input_value_id).result_value,l_result_value);
123 					end if;
124 				end if;
125 			end if;
126 		else
127 			p_result_values_by_iv(l_input_value_id).data_type	:= l_data_type;
128 			p_result_values_by_iv(l_input_value_id).result_value	:= l_result_value;
129 		end if;
130 	end loop;
131 END result_values_internal;
132 --
133 PROCEDURE balance_values_internal(
134 	p_result_values_by_iv	IN result_values_by_iv_t,
135 	p_balance_type_ids	IN balance_type_ids_t,
136 	p_feed_checking_date	IN DATE,
137 	p_balance_values_by_bal	IN OUT NOCOPY balance_values_by_bal_t)
138 IS
139 	--
140 	-- Bulk Feed informations.
141 	--
142 	/* BUG1899306: Modified not to use EXECUTE IMMEDIATE. ************************
143 	-- Bulk collect is applied to this function to raise performance.
144 	-- Remember that binding SQL in PL/SQL is very slow, that is, fetch is very slow.
145 	-- Additionally, when using bulk fetch with EXECUTE IMMEDIATE,
146 	-- output variables must be declared with "CREATE TYPE".
147 	--
148 	l_feed_bals		pay_jp_numbers_t;
149 	l_feed_ivs		pay_jp_numbers_t;
150 	l_feed_scales		pay_jp_numbers_t;
151 	*************************************************************************** */
152 	--
153 	-- BUG1899306
154 	--
155 	-- Since using object type is a violation of Apps standards, we cannot use
156 	-- EXECUTE IMMEDIATE. That's why fetching balance feed informations was modified
157 	-- to using DBMS_SQL package.
158 	--
159 	l_feed_bals		dbms_sql.Number_Table;
160 	l_feed_ivs		dbms_sql.Number_Table;
161 	l_feed_scales		dbms_sql.Number_Table;
162 	l_stmt_str		VARCHAR2(32767);
163 	l_cur_hdl		NUMBER;
164 	l_rows_processed	NUMBER;
165 	l_idx			NUMBER := 0;
166 	--
167 	-- Other local variables.
168 	--
169 	l_index			NUMBER;
170 	l_balance_type_id	NUMBER;
171 	l_concat_bal		VARCHAR2(32767);
172 	l_input_value_id	NUMBER;
173 	l_concat_iv		VARCHAR2(32767);
174 	l_result_value		PAY_RUN_RESULT_VALUES.RESULT_VALUE%TYPE;
175 BEGIN
176 	--
177 	-- Setup balance values.
178 	--
179 	-- Initialize output variable "p_balance_values_by_bal".
180 	--
181 	if p_balance_type_ids is not NULL then
182 		l_index := p_balance_type_ids.first;
183 		while l_index is not NULL loop
184 			l_balance_type_id := p_balance_type_ids(l_index);
185 			if l_balance_type_id is not NULL then
186 				--
187 				-- If not instantiated, default as "0".
188 				--
189 				if not p_balance_values_by_bal.exists(l_balance_type_id) then
190 					p_balance_values_by_bal(l_balance_type_id) := 0;
191 				end if;
192 				--
193 				-- Construct balance_type_id list used by EXECUTE IMMEDIATE statement below.
194 				--
195 				if l_concat_bal is NULL then
196 					l_concat_bal := to_char(l_balance_type_id);
197 				else
198 					l_concat_bal := l_concat_bal || ',' || to_char(l_balance_type_id);
199 				end if;
200 			end if;
201 			l_index := p_balance_type_ids.next(l_index);
202 		end loop;
203 	end if;
204 	--
205 	-- Construct input_value_id lists used by EXECUTE IMMEDIATE statement below.
206 	--
207 	if l_concat_bal is not NULL then
208 		l_input_value_id	:= p_result_values_by_iv.first;
209 		while l_input_value_id is not NULL loop
210 			--
211 			-- Balance is available only for data_type = 'N'(UOM = M,N,I,etc...).
212 			--
213 			if p_result_values_by_iv(l_input_value_id).data_type = 'N' then
214 				if l_concat_iv is NULL then
215 					l_concat_iv := to_char(l_input_value_id);
216 				else
217 					l_concat_iv := l_concat_iv || ',' || to_char(l_input_value_id);
218 				end if;
219 			end if;
220 			l_input_value_id := p_result_values_by_iv.next(l_input_value_id);
221 		end loop;
222 	end if;
223 	--
224 	-- Setup balance values to output variable "p_balance_values_by_bal".
225 	-- When no balance required(p_concat_bal is NULL) or no results with data_type=Number(p_concat_iv is NULL),
226 	-- the following code is skipped.
227 	--
228 	if l_concat_iv is not NULL then
229 		--
230 		-- Bulk fetch minimum balance feed informations.
231 		--
232 		/* BUG1899306: modified not to use EXECUTE IMMEDIATE ***********************************
233 		execute immediate
234 			'BEGIN
235 				select	pbf.balance_type_id,
236 					pbf.input_value_id,
237 					pbf.scale
238 				bulk collect into
239 					:b_feed_bal,
240 					:b_feed_iv,
241 					:b_feed_scale
242 				from	pay_balance_feeds_f	pbf
243 				where	pbf.balance_type_id in (' || l_concat_bal || ')
244 				and	pbf.input_value_id in (' || l_concat_iv || ')
245 				and	:b_feed_cheking_date
246 					between pbf.effective_start_date and pbf.effective_end_date;
247 			END;'
248 		using	OUT l_feed_bals,
249 			OUT l_feed_ivs,
250 			OUT l_feed_scales,
251 			IN p_feed_checking_date;
252 		************************************************************************************ */
253 		--
254 		-- BUG1899306: Fetch balance feed informations using DBMS_SQL package.
255 		--
256 		l_stmt_str := '	select	pbf.balance_type_id,
257 					pbf.input_value_id,
258 					pbf.scale
259 				from	pay_balance_feeds_f	pbf
260 				where	pbf.balance_type_id in (' || l_concat_bal || ')
261 				and	pbf.input_value_id in (' || l_concat_iv || ')
262 				and	:b_feed_cheking_date
263 				between pbf.effective_start_date and pbf.effective_end_date';
264 		l_cur_hdl := dbms_sql.open_cursor;
265 		dbms_sql.parse(l_cur_hdl, l_stmt_str, DBMS_SQL.NATIVE);
266 		dbms_sql.bind_variable(l_cur_hdl, 'b_feed_cheking_date', p_feed_checking_date);
267 		dbms_sql.define_array(l_cur_hdl, 1, l_feed_bals, 10, l_idx);
268 		dbms_sql.define_array(l_cur_hdl, 2, l_feed_ivs, 10, l_idx);
269 		dbms_sql.define_array(l_cur_hdl, 3, l_feed_scales, 10, l_idx);
270 		l_rows_processed := dbms_sql.execute(l_cur_hdl);
271 		loop
272 			l_rows_processed := dbms_sql.fetch_rows(l_cur_hdl);
273 			dbms_sql.column_value(l_cur_hdl, 1, l_feed_bals);
274 			dbms_sql.column_value(l_cur_hdl, 2, l_feed_ivs);
275 			dbms_sql.column_value(l_cur_hdl, 3, l_feed_scales);
276 			exit when l_rows_processed <> 10;
277 		end loop;
278 		dbms_sql.close_cursor(l_cur_hdl);
279 		--
280 		-- l_feed_bals is not NULL even when no records fetched in above SQL statement.
281 		-- So not necessary to check l_feed_bals is NULL or not.
282 		--
283 		if l_feed_bals.count > 0 then
284 			for i in l_feed_bals.first..l_feed_bals.last loop
285 				--
286 				-- No need to check collection method "EXISTS".
287 				--
288 				l_result_value := p_result_values_by_iv(l_feed_ivs(i)).result_value;
289 				if l_result_value is not NULL and l_result_value <> 0 then
290 					p_balance_values_by_bal(l_feed_bals(i)) := p_balance_values_by_bal(l_feed_bals(i))
291 										 + fnd_number.canonical_to_number(l_result_value) * l_feed_scales(i);
292 				end if;
293 			end loop;
294 		end if;
295 	end if;
296 END balance_values_internal;
297 --
298 PROCEDURE run_internal(
299 	p_assignment_action_id	IN NUMBER,
300 	p_feed_checking_date	IN DATE,
301 	p_balance_type_ids	IN balance_type_ids_t,
302 	p_result_values_by_iv	IN OUT NOCOPY result_values_by_iv_t,
303 	p_balance_values_by_bal	IN OUT NOCOPY balance_values_by_bal_t)
304 IS
305 BEGIN
306 	result_values_internal(
307 		p_assignment_action_id	=> p_assignment_action_id,
308 		p_effective_date	=> p_feed_checking_date,
309 		p_result_values_by_iv	=> p_result_values_by_iv);
310 	balance_values_internal(
311 		p_result_values_by_iv	=> p_result_values_by_iv,
312 		p_balance_type_ids	=> p_balance_type_ids,
313 		p_feed_checking_date	=> p_feed_checking_date,
314 		p_balance_values_by_bal	=> p_balance_values_by_bal);
315 END run_internal;
316 --
317 -- Function result_value
318 --
319 FUNCTION result_value(
320 	p_result_values_by_iv	IN result_values_by_iv_t,
321 	p_input_value_id	IN NUMBER) RETURN VARCHAR2
322 IS
323 	l_result_value	PAY_RUN_RESULT_VALUES.RESULT_VALUE%TYPE;
324 BEGIN
325 	if p_input_value_id is not NULL then
326 		if p_result_values_by_iv.exists(p_input_value_id) then
327 			l_result_value := p_result_values_by_iv(p_input_value_id).result_value;
328 		end if;
329 	end if;
330 	--
331 	-- Return value.
332 	--
333 	return l_result_value;
334 END result_value;
335 --
336 -- Function balance_value
337 --
338 FUNCTION balance_value(
339 	p_balance_values_by_bal	IN balance_values_by_bal_t,
340 	p_balance_type_id	IN NUMBER) RETURN NUMBER
341 IS
342 	l_balance_value	NUMBER;
343 BEGIN
344 	if p_balance_type_id is not NULL then
345 		if p_balance_values_by_bal.exists(p_balance_type_id) then
346 			l_balance_value := p_balance_values_by_bal(p_balance_type_id);
347 		end if;
348 	end if;
349 	--
350 	-- Return value.
351 	--
352 	return l_balance_value;
353 END balance_value;
354 --
355 -- Procedure convert_to_table
356 --
357 PROCEDURE convert_to_table(
358 	p_balance_type_id1	IN NUMBER,
359 	p_balance_type_id2	IN NUMBER,
360 	p_balance_type_id3	IN NUMBER,
361 	p_balance_type_id4	IN NUMBER,
362 	p_balance_type_id5	IN NUMBER,
363 	p_balance_type_id6	IN NUMBER,
364 	p_balance_type_id7	IN NUMBER,
365 	p_balance_type_id8	IN NUMBER,
366 	p_balance_type_id9	IN NUMBER,
367 	p_balance_type_id10	IN NUMBER,
368 	p_balance_type_id11	IN NUMBER,
369 	p_balance_type_id12	IN NUMBER,
370 	p_balance_type_id13	IN NUMBER,
371 	p_balance_type_id14	IN NUMBER,
372 	p_balance_type_id15	IN NUMBER,
373 	p_balance_type_id16	IN NUMBER,
374 	p_balance_type_id17	IN NUMBER,
375 	p_balance_type_id18	IN NUMBER,
376 	p_balance_type_id19	IN NUMBER,
377 	p_balance_type_id20	IN NUMBER,
378 	p_balance_type_id21	IN NUMBER,
379 	p_balance_type_id22	IN NUMBER,
380 	p_balance_type_id23	IN NUMBER,
381 	p_balance_type_id24	IN NUMBER,
382 	p_balance_type_id25	IN NUMBER,
383 	p_balance_type_id26	IN NUMBER,
384 	p_balance_type_id27	IN NUMBER,
385 	p_balance_type_id28	IN NUMBER,
386 	p_balance_type_id29	IN NUMBER,
387 	p_balance_type_id30	IN NUMBER,
388 	p_balance_type_ids	OUT NOCOPY balance_type_ids_t)
389 IS
390 	PROCEDURE set_to_table(
391 		p_balance_type_id	IN NUMBER)
392 	IS
393 	BEGIN
394 		if p_balance_type_id is not NULL then
395 			if p_balance_type_ids is NULL then
396 				p_balance_type_ids := balance_type_ids_t();
397 			else
398 				p_balance_type_ids.extend;
399 				p_balance_type_ids(p_balance_type_ids.count) := p_balance_type_id;
400 			end if;
401 		end if;
402 	END set_to_table;
403 BEGIN
404 	set_to_table(p_balance_type_id1);
405 	set_to_table(p_balance_type_id1);
406 	set_to_table(p_balance_type_id2);
407 	set_to_table(p_balance_type_id3);
408 	set_to_table(p_balance_type_id4);
409 	set_to_table(p_balance_type_id5);
410 	set_to_table(p_balance_type_id6);
411 	set_to_table(p_balance_type_id7);
412 	set_to_table(p_balance_type_id8);
413 	set_to_table(p_balance_type_id9);
414 	set_to_table(p_balance_type_id10);
415 	set_to_table(p_balance_type_id11);
416 	set_to_table(p_balance_type_id12);
417 	set_to_table(p_balance_type_id13);
418 	set_to_table(p_balance_type_id14);
422 	set_to_table(p_balance_type_id18);
419 	set_to_table(p_balance_type_id15);
420 	set_to_table(p_balance_type_id16);
421 	set_to_table(p_balance_type_id17);
423 	set_to_table(p_balance_type_id19);
424 	set_to_table(p_balance_type_id20);
425 	set_to_table(p_balance_type_id21);
426 	set_to_table(p_balance_type_id22);
427 	set_to_table(p_balance_type_id23);
428 	set_to_table(p_balance_type_id24);
429 	set_to_table(p_balance_type_id25);
430 	set_to_table(p_balance_type_id26);
431 	set_to_table(p_balance_type_id27);
432 	set_to_table(p_balance_type_id28);
433 	set_to_table(p_balance_type_id29);
434 	set_to_table(p_balance_type_id30);
435 END convert_to_table;
436 /* BUG1899306: Obsoleted run and prepay functions *************************
437 --
438 -- Function run
439 --
440 FUNCTION run(
441 	p_assignment_action_id	IN NUMBER,
442 	p_input_value_id1	IN NUMBER DEFAULT NULL,
443 	p_input_value_id2	IN NUMBER DEFAULT NULL,
444 	p_input_value_id3	IN NUMBER DEFAULT NULL,
445 	p_input_value_id4	IN NUMBER DEFAULT NULL,
446 	p_input_value_id5	IN NUMBER DEFAULT NULL,
447 	p_input_value_id6	IN NUMBER DEFAULT NULL,
448 	p_input_value_id7	IN NUMBER DEFAULT NULL,
449 	p_input_value_id8	IN NUMBER DEFAULT NULL,
450 	p_input_value_id9	IN NUMBER DEFAULT NULL,
451 	p_input_value_id10	IN NUMBER DEFAULT NULL,
452 	p_input_value_id11	IN NUMBER DEFAULT NULL,
453 	p_input_value_id12	IN NUMBER DEFAULT NULL,
454 	p_input_value_id13	IN NUMBER DEFAULT NULL,
455 	p_input_value_id14	IN NUMBER DEFAULT NULL,
456 	p_input_value_id15	IN NUMBER DEFAULT NULL,
457 	p_input_value_id16	IN NUMBER DEFAULT NULL,
458 	p_input_value_id17	IN NUMBER DEFAULT NULL,
459 	p_input_value_id18	IN NUMBER DEFAULT NULL,
460 	p_input_value_id19	IN NUMBER DEFAULT NULL,
461 	p_input_value_id20	IN NUMBER DEFAULT NULL,
462 	p_input_value_id21	IN NUMBER DEFAULT NULL,
463 	p_input_value_id22	IN NUMBER DEFAULT NULL,
464 	p_input_value_id23	IN NUMBER DEFAULT NULL,
465 	p_input_value_id24	IN NUMBER DEFAULT NULL,
466 	p_input_value_id25	IN NUMBER DEFAULT NULL,
467 	p_input_value_id26	IN NUMBER DEFAULT NULL,
468 	p_input_value_id27	IN NUMBER DEFAULT NULL,
469 	p_input_value_id28	IN NUMBER DEFAULT NULL,
470 	p_input_value_id29	IN NUMBER DEFAULT NULL,
471 	p_input_value_id30	IN NUMBER DEFAULT NULL,
472 	p_input_value_id31	IN NUMBER DEFAULT NULL,
473 	p_input_value_id32	IN NUMBER DEFAULT NULL,
474 	p_input_value_id33	IN NUMBER DEFAULT NULL,
475 	p_input_value_id34	IN NUMBER DEFAULT NULL,
476 	p_input_value_id35	IN NUMBER DEFAULT NULL,
477 	p_input_value_id36	IN NUMBER DEFAULT NULL,
478 	p_input_value_id37	IN NUMBER DEFAULT NULL,
479 	p_input_value_id38	IN NUMBER DEFAULT NULL,
480 	p_input_value_id39	IN NUMBER DEFAULT NULL,
481 	p_input_value_id40	IN NUMBER DEFAULT NULL,
482 	p_input_value_id41	IN NUMBER DEFAULT NULL,
483 	p_input_value_id42	IN NUMBER DEFAULT NULL,
484 	p_input_value_id43	IN NUMBER DEFAULT NULL,
485 	p_input_value_id44	IN NUMBER DEFAULT NULL,
486 	p_input_value_id45	IN NUMBER DEFAULT NULL,
487 	p_input_value_id46	IN NUMBER DEFAULT NULL,
488 	p_input_value_id47	IN NUMBER DEFAULT NULL,
489 	p_input_value_id48	IN NUMBER DEFAULT NULL,
490 	p_input_value_id49	IN NUMBER DEFAULT NULL,
491 	p_input_value_id50	IN NUMBER DEFAULT NULL,
492 	p_input_value_id51	IN NUMBER DEFAULT NULL,
493 	p_input_value_id52	IN NUMBER DEFAULT NULL,
494 	p_input_value_id53	IN NUMBER DEFAULT NULL,
495 	p_input_value_id54	IN NUMBER DEFAULT NULL,
496 	p_input_value_id55	IN NUMBER DEFAULT NULL,
497 	p_input_value_id56	IN NUMBER DEFAULT NULL,
498 	p_input_value_id57	IN NUMBER DEFAULT NULL,
499 	p_input_value_id58	IN NUMBER DEFAULT NULL,
500 	p_input_value_id59	IN NUMBER DEFAULT NULL,
501 	p_input_value_id60	IN NUMBER DEFAULT NULL,
502 	p_input_value_id61	IN NUMBER DEFAULT NULL,
503 	p_input_value_id62	IN NUMBER DEFAULT NULL,
504 	p_input_value_id63	IN NUMBER DEFAULT NULL,
505 	p_input_value_id64	IN NUMBER DEFAULT NULL,
506 	p_input_value_id65	IN NUMBER DEFAULT NULL,
507 	p_input_value_id66	IN NUMBER DEFAULT NULL,
508 	p_input_value_id67	IN NUMBER DEFAULT NULL,
509 	p_input_value_id68	IN NUMBER DEFAULT NULL,
510 	p_input_value_id69	IN NUMBER DEFAULT NULL,
511 	p_input_value_id70	IN NUMBER DEFAULT NULL,
512 	p_input_value_id71	IN NUMBER DEFAULT NULL,
513 	p_input_value_id72	IN NUMBER DEFAULT NULL,
514 	p_input_value_id73	IN NUMBER DEFAULT NULL,
515 	p_input_value_id74	IN NUMBER DEFAULT NULL,
516 	p_input_value_id75	IN NUMBER DEFAULT NULL,
517 	p_input_value_id76	IN NUMBER DEFAULT NULL,
518 	p_input_value_id77	IN NUMBER DEFAULT NULL,
519 	p_input_value_id78	IN NUMBER DEFAULT NULL,
520 	p_input_value_id79	IN NUMBER DEFAULT NULL,
521 	p_input_value_id80	IN NUMBER DEFAULT NULL,
522 	p_input_value_id81	IN NUMBER DEFAULT NULL,
523 	p_input_value_id82	IN NUMBER DEFAULT NULL,
524 	p_input_value_id83	IN NUMBER DEFAULT NULL,
525 	p_input_value_id84	IN NUMBER DEFAULT NULL,
526 	p_input_value_id85	IN NUMBER DEFAULT NULL,
527 	p_input_value_id86	IN NUMBER DEFAULT NULL,
528 	p_input_value_id87	IN NUMBER DEFAULT NULL,
529 	p_input_value_id88	IN NUMBER DEFAULT NULL,
530 	p_input_value_id89	IN NUMBER DEFAULT NULL,
531 	p_input_value_id90	IN NUMBER DEFAULT NULL,
532 	p_input_value_id91	IN NUMBER DEFAULT NULL,
533 	p_input_value_id92	IN NUMBER DEFAULT NULL,
534 	p_input_value_id93	IN NUMBER DEFAULT NULL,
535 	p_input_value_id94	IN NUMBER DEFAULT NULL,
536 	p_input_value_id95	IN NUMBER DEFAULT NULL,
537 	p_input_value_id96	IN NUMBER DEFAULT NULL,
538 	p_input_value_id97	IN NUMBER DEFAULT NULL,
542 	p_balance_type_id1	IN NUMBER DEFAULT NULL,
539 	p_input_value_id98	IN NUMBER DEFAULT NULL,
540 	p_input_value_id99	IN NUMBER DEFAULT NULL,
541 	p_input_value_id100	IN NUMBER DEFAULT NULL,
543 	p_balance_type_id2	IN NUMBER DEFAULT NULL,
544 	p_balance_type_id3	IN NUMBER DEFAULT NULL,
545 	p_balance_type_id4	IN NUMBER DEFAULT NULL,
546 	p_balance_type_id5	IN NUMBER DEFAULT NULL,
547 	p_balance_type_id6	IN NUMBER DEFAULT NULL,
548 	p_balance_type_id7	IN NUMBER DEFAULT NULL,
549 	p_balance_type_id8	IN NUMBER DEFAULT NULL,
550 	p_balance_type_id9	IN NUMBER DEFAULT NULL,
551 	p_balance_type_id10	IN NUMBER DEFAULT NULL,
552 	p_balance_type_id11	IN NUMBER DEFAULT NULL,
553 	p_balance_type_id12	IN NUMBER DEFAULT NULL,
554 	p_balance_type_id13	IN NUMBER DEFAULT NULL,
555 	p_balance_type_id14	IN NUMBER DEFAULT NULL,
556 	p_balance_type_id15	IN NUMBER DEFAULT NULL,
557 	p_balance_type_id16	IN NUMBER DEFAULT NULL,
558 	p_balance_type_id17	IN NUMBER DEFAULT NULL,
559 	p_balance_type_id18	IN NUMBER DEFAULT NULL,
560 	p_balance_type_id19	IN NUMBER DEFAULT NULL,
561 	p_balance_type_id20	IN NUMBER DEFAULT NULL,
562 	p_balance_type_id21	IN NUMBER DEFAULT NULL,
563 	p_balance_type_id22	IN NUMBER DEFAULT NULL,
564 	p_balance_type_id23	IN NUMBER DEFAULT NULL,
565 	p_balance_type_id24	IN NUMBER DEFAULT NULL,
566 	p_balance_type_id25	IN NUMBER DEFAULT NULL,
567 	p_balance_type_id26	IN NUMBER DEFAULT NULL,
568 	p_balance_type_id27	IN NUMBER DEFAULT NULL,
569 	p_balance_type_id28	IN NUMBER DEFAULT NULL,
570 	p_balance_type_id29	IN NUMBER DEFAULT NULL,
571 	p_balance_type_id30	IN NUMBER DEFAULT NULL) RETURN pay_jp_result_run_t
572 IS
573 	--
574 	-- Payroll action information.
575 	--
576 	CURSOR csr_pact IS
577 		select	ppa.effective_date
578 		from	pay_payroll_actions	ppa,
579 			pay_assignment_actions	paa
580 		where	paa.assignment_action_id = p_assignment_action_id
581 		and	ppa.payroll_action_id = paa.payroll_action_id;
582 	l_pact	csr_pact%ROWTYPE;
583 	--
584 	-- Other local variables.
585 	--
586 	l_balance_type_ids	balance_type_ids_t;
587 	l_result_values_by_iv	result_values_by_iv_t;
588 	l_balance_values_by_bal	balance_values_by_bal_t;
589 BEGIN
590 	--
591 	-- Get payroll action information.
592 	--
593 	open csr_pact;
594 	fetch csr_pact into l_pact;
595 	if csr_pact%FOUND then
596 		--
597 		-- Convert input parameters to VARRAY variable.
598 		--
599 		convert_to_table(
600 			p_balance_type_id1	=> p_balance_type_id1,
601 			p_balance_type_id2	=> p_balance_type_id2,
602 			p_balance_type_id3	=> p_balance_type_id3,
603 			p_balance_type_id4	=> p_balance_type_id4,
604 			p_balance_type_id5	=> p_balance_type_id5,
605 			p_balance_type_id6	=> p_balance_type_id6,
606 			p_balance_type_id7	=> p_balance_type_id7,
607 			p_balance_type_id8	=> p_balance_type_id8,
608 			p_balance_type_id9	=> p_balance_type_id9,
609 			p_balance_type_id10	=> p_balance_type_id10,
610 			p_balance_type_id11	=> p_balance_type_id11,
611 			p_balance_type_id12	=> p_balance_type_id12,
612 			p_balance_type_id13	=> p_balance_type_id13,
613 			p_balance_type_id14	=> p_balance_type_id14,
614 			p_balance_type_id15	=> p_balance_type_id15,
615 			p_balance_type_id16	=> p_balance_type_id16,
616 			p_balance_type_id17	=> p_balance_type_id17,
617 			p_balance_type_id18	=> p_balance_type_id18,
618 			p_balance_type_id19	=> p_balance_type_id19,
619 			p_balance_type_id20	=> p_balance_type_id20,
620 			p_balance_type_id21	=> p_balance_type_id21,
621 			p_balance_type_id22	=> p_balance_type_id22,
622 			p_balance_type_id23	=> p_balance_type_id23,
623 			p_balance_type_id24	=> p_balance_type_id24,
624 			p_balance_type_id25	=> p_balance_type_id25,
625 			p_balance_type_id26	=> p_balance_type_id26,
626 			p_balance_type_id27	=> p_balance_type_id27,
627 			p_balance_type_id28	=> p_balance_type_id28,
628 			p_balance_type_id29	=> p_balance_type_id29,
629 			p_balance_type_id30	=> p_balance_type_id30,
630 			p_balance_type_ids	=> l_balance_type_ids);
631 		--
632 		-- Get the following informations.
633 		--   1. All Result Values
634 		--   2. Balance Values specified by l_balance_type_ids.
635 		-- Balance value is returned as "0"(not "NULL" value) when no results for balance_type_id.
636 		--
637 		run_internal(
638 			p_assignment_action_id	=> p_assignment_action_id,
639 			p_feed_checking_date	=> l_pact.effective_date,
640 			p_balance_type_ids	=> l_balance_type_ids,
641 			p_result_values_by_iv	=> l_result_values_by_iv,
642 			p_balance_values_by_bal	=> l_balance_values_by_bal);
643 	end if;
644 	close csr_pact;
645 	--
646 	-- Return value.
647 	--
648 	return pay_jp_result_run_t(
649 		result_value(l_result_values_by_iv,p_input_value_id1),
650 		result_value(l_result_values_by_iv,p_input_value_id2),
651 		result_value(l_result_values_by_iv,p_input_value_id3),
652 		result_value(l_result_values_by_iv,p_input_value_id4),
653 		result_value(l_result_values_by_iv,p_input_value_id5),
654 		result_value(l_result_values_by_iv,p_input_value_id6),
655 		result_value(l_result_values_by_iv,p_input_value_id7),
656 		result_value(l_result_values_by_iv,p_input_value_id8),
657 		result_value(l_result_values_by_iv,p_input_value_id9),
658 		result_value(l_result_values_by_iv,p_input_value_id10),
659 		result_value(l_result_values_by_iv,p_input_value_id11),
660 		result_value(l_result_values_by_iv,p_input_value_id12),
661 		result_value(l_result_values_by_iv,p_input_value_id13),
662 		result_value(l_result_values_by_iv,p_input_value_id14),
663 		result_value(l_result_values_by_iv,p_input_value_id15),
667 		result_value(l_result_values_by_iv,p_input_value_id19),
664 		result_value(l_result_values_by_iv,p_input_value_id16),
665 		result_value(l_result_values_by_iv,p_input_value_id17),
666 		result_value(l_result_values_by_iv,p_input_value_id18),
668 		result_value(l_result_values_by_iv,p_input_value_id20),
669 		result_value(l_result_values_by_iv,p_input_value_id21),
670 		result_value(l_result_values_by_iv,p_input_value_id22),
671 		result_value(l_result_values_by_iv,p_input_value_id23),
672 		result_value(l_result_values_by_iv,p_input_value_id24),
673 		result_value(l_result_values_by_iv,p_input_value_id25),
674 		result_value(l_result_values_by_iv,p_input_value_id26),
675 		result_value(l_result_values_by_iv,p_input_value_id27),
676 		result_value(l_result_values_by_iv,p_input_value_id28),
677 		result_value(l_result_values_by_iv,p_input_value_id29),
678 		result_value(l_result_values_by_iv,p_input_value_id30),
679 		result_value(l_result_values_by_iv,p_input_value_id31),
680 		result_value(l_result_values_by_iv,p_input_value_id32),
681 		result_value(l_result_values_by_iv,p_input_value_id33),
682 		result_value(l_result_values_by_iv,p_input_value_id34),
683 		result_value(l_result_values_by_iv,p_input_value_id35),
684 		result_value(l_result_values_by_iv,p_input_value_id36),
685 		result_value(l_result_values_by_iv,p_input_value_id37),
686 		result_value(l_result_values_by_iv,p_input_value_id38),
687 		result_value(l_result_values_by_iv,p_input_value_id39),
688 		result_value(l_result_values_by_iv,p_input_value_id40),
689 		result_value(l_result_values_by_iv,p_input_value_id41),
690 		result_value(l_result_values_by_iv,p_input_value_id42),
691 		result_value(l_result_values_by_iv,p_input_value_id43),
692 		result_value(l_result_values_by_iv,p_input_value_id44),
693 		result_value(l_result_values_by_iv,p_input_value_id45),
694 		result_value(l_result_values_by_iv,p_input_value_id46),
695 		result_value(l_result_values_by_iv,p_input_value_id47),
696 		result_value(l_result_values_by_iv,p_input_value_id48),
697 		result_value(l_result_values_by_iv,p_input_value_id49),
698 		result_value(l_result_values_by_iv,p_input_value_id50),
699 		result_value(l_result_values_by_iv,p_input_value_id51),
700 		result_value(l_result_values_by_iv,p_input_value_id52),
701 		result_value(l_result_values_by_iv,p_input_value_id53),
702 		result_value(l_result_values_by_iv,p_input_value_id54),
703 		result_value(l_result_values_by_iv,p_input_value_id55),
704 		result_value(l_result_values_by_iv,p_input_value_id56),
705 		result_value(l_result_values_by_iv,p_input_value_id57),
706 		result_value(l_result_values_by_iv,p_input_value_id58),
707 		result_value(l_result_values_by_iv,p_input_value_id59),
708 		result_value(l_result_values_by_iv,p_input_value_id60),
709 		result_value(l_result_values_by_iv,p_input_value_id61),
710 		result_value(l_result_values_by_iv,p_input_value_id62),
711 		result_value(l_result_values_by_iv,p_input_value_id63),
712 		result_value(l_result_values_by_iv,p_input_value_id64),
713 		result_value(l_result_values_by_iv,p_input_value_id65),
714 		result_value(l_result_values_by_iv,p_input_value_id66),
715 		result_value(l_result_values_by_iv,p_input_value_id67),
716 		result_value(l_result_values_by_iv,p_input_value_id68),
717 		result_value(l_result_values_by_iv,p_input_value_id69),
718 		result_value(l_result_values_by_iv,p_input_value_id70),
719 		result_value(l_result_values_by_iv,p_input_value_id71),
720 		result_value(l_result_values_by_iv,p_input_value_id72),
721 		result_value(l_result_values_by_iv,p_input_value_id73),
722 		result_value(l_result_values_by_iv,p_input_value_id74),
723 		result_value(l_result_values_by_iv,p_input_value_id75),
724 		result_value(l_result_values_by_iv,p_input_value_id76),
725 		result_value(l_result_values_by_iv,p_input_value_id77),
726 		result_value(l_result_values_by_iv,p_input_value_id78),
727 		result_value(l_result_values_by_iv,p_input_value_id79),
728 		result_value(l_result_values_by_iv,p_input_value_id80),
729 		result_value(l_result_values_by_iv,p_input_value_id81),
730 		result_value(l_result_values_by_iv,p_input_value_id82),
731 		result_value(l_result_values_by_iv,p_input_value_id83),
732 		result_value(l_result_values_by_iv,p_input_value_id84),
733 		result_value(l_result_values_by_iv,p_input_value_id85),
734 		result_value(l_result_values_by_iv,p_input_value_id86),
735 		result_value(l_result_values_by_iv,p_input_value_id87),
736 		result_value(l_result_values_by_iv,p_input_value_id88),
737 		result_value(l_result_values_by_iv,p_input_value_id89),
738 		result_value(l_result_values_by_iv,p_input_value_id90),
739 		result_value(l_result_values_by_iv,p_input_value_id91),
740 		result_value(l_result_values_by_iv,p_input_value_id92),
741 		result_value(l_result_values_by_iv,p_input_value_id93),
742 		result_value(l_result_values_by_iv,p_input_value_id94),
743 		result_value(l_result_values_by_iv,p_input_value_id95),
744 		result_value(l_result_values_by_iv,p_input_value_id96),
745 		result_value(l_result_values_by_iv,p_input_value_id97),
746 		result_value(l_result_values_by_iv,p_input_value_id98),
747 		result_value(l_result_values_by_iv,p_input_value_id99),
748 		result_value(l_result_values_by_iv,p_input_value_id100),
749 		balance_value(l_balance_values_by_bal,p_balance_type_id1),
750 		balance_value(l_balance_values_by_bal,p_balance_type_id2),
751 		balance_value(l_balance_values_by_bal,p_balance_type_id3),
752 		balance_value(l_balance_values_by_bal,p_balance_type_id4),
753 		balance_value(l_balance_values_by_bal,p_balance_type_id5),
754 		balance_value(l_balance_values_by_bal,p_balance_type_id6),
755 		balance_value(l_balance_values_by_bal,p_balance_type_id7),
759 		balance_value(l_balance_values_by_bal,p_balance_type_id11),
756 		balance_value(l_balance_values_by_bal,p_balance_type_id8),
757 		balance_value(l_balance_values_by_bal,p_balance_type_id9),
758 		balance_value(l_balance_values_by_bal,p_balance_type_id10),
760 		balance_value(l_balance_values_by_bal,p_balance_type_id12),
761 		balance_value(l_balance_values_by_bal,p_balance_type_id13),
762 		balance_value(l_balance_values_by_bal,p_balance_type_id14),
763 		balance_value(l_balance_values_by_bal,p_balance_type_id15),
764 		balance_value(l_balance_values_by_bal,p_balance_type_id16),
765 		balance_value(l_balance_values_by_bal,p_balance_type_id17),
766 		balance_value(l_balance_values_by_bal,p_balance_type_id18),
767 		balance_value(l_balance_values_by_bal,p_balance_type_id19),
768 		balance_value(l_balance_values_by_bal,p_balance_type_id20),
769 		balance_value(l_balance_values_by_bal,p_balance_type_id21),
770 		balance_value(l_balance_values_by_bal,p_balance_type_id22),
771 		balance_value(l_balance_values_by_bal,p_balance_type_id23),
772 		balance_value(l_balance_values_by_bal,p_balance_type_id24),
773 		balance_value(l_balance_values_by_bal,p_balance_type_id25),
774 		balance_value(l_balance_values_by_bal,p_balance_type_id26),
775 		balance_value(l_balance_values_by_bal,p_balance_type_id27),
776 		balance_value(l_balance_values_by_bal,p_balance_type_id28),
777 		balance_value(l_balance_values_by_bal,p_balance_type_id29),
778 		balance_value(l_balance_values_by_bal,p_balance_type_id30));
779 END run;
780 --
781 FUNCTION prepay(
782 	p_assignment_action_id	IN NUMBER,
783 	p_input_value_id1	IN NUMBER DEFAULT NULL,
784 	p_input_value_id2	IN NUMBER DEFAULT NULL,
785 	p_input_value_id3	IN NUMBER DEFAULT NULL,
786 	p_input_value_id4	IN NUMBER DEFAULT NULL,
787 	p_input_value_id5	IN NUMBER DEFAULT NULL,
788 	p_input_value_id6	IN NUMBER DEFAULT NULL,
789 	p_input_value_id7	IN NUMBER DEFAULT NULL,
790 	p_input_value_id8	IN NUMBER DEFAULT NULL,
791 	p_input_value_id9	IN NUMBER DEFAULT NULL,
792 	p_input_value_id10	IN NUMBER DEFAULT NULL,
793 	p_input_value_id11	IN NUMBER DEFAULT NULL,
794 	p_input_value_id12	IN NUMBER DEFAULT NULL,
795 	p_input_value_id13	IN NUMBER DEFAULT NULL,
796 	p_input_value_id14	IN NUMBER DEFAULT NULL,
797 	p_input_value_id15	IN NUMBER DEFAULT NULL,
798 	p_input_value_id16	IN NUMBER DEFAULT NULL,
799 	p_input_value_id17	IN NUMBER DEFAULT NULL,
800 	p_input_value_id18	IN NUMBER DEFAULT NULL,
801 	p_input_value_id19	IN NUMBER DEFAULT NULL,
802 	p_input_value_id20	IN NUMBER DEFAULT NULL,
803 	p_input_value_id21	IN NUMBER DEFAULT NULL,
804 	p_input_value_id22	IN NUMBER DEFAULT NULL,
805 	p_input_value_id23	IN NUMBER DEFAULT NULL,
806 	p_input_value_id24	IN NUMBER DEFAULT NULL,
807 	p_input_value_id25	IN NUMBER DEFAULT NULL,
808 	p_input_value_id26	IN NUMBER DEFAULT NULL,
809 	p_input_value_id27	IN NUMBER DEFAULT NULL,
810 	p_input_value_id28	IN NUMBER DEFAULT NULL,
811 	p_input_value_id29	IN NUMBER DEFAULT NULL,
812 	p_input_value_id30	IN NUMBER DEFAULT NULL,
813 	p_input_value_id31	IN NUMBER DEFAULT NULL,
814 	p_input_value_id32	IN NUMBER DEFAULT NULL,
815 	p_input_value_id33	IN NUMBER DEFAULT NULL,
816 	p_input_value_id34	IN NUMBER DEFAULT NULL,
817 	p_input_value_id35	IN NUMBER DEFAULT NULL,
818 	p_input_value_id36	IN NUMBER DEFAULT NULL,
819 	p_input_value_id37	IN NUMBER DEFAULT NULL,
820 	p_input_value_id38	IN NUMBER DEFAULT NULL,
821 	p_input_value_id39	IN NUMBER DEFAULT NULL,
822 	p_input_value_id40	IN NUMBER DEFAULT NULL,
823 	p_input_value_id41	IN NUMBER DEFAULT NULL,
824 	p_input_value_id42	IN NUMBER DEFAULT NULL,
825 	p_input_value_id43	IN NUMBER DEFAULT NULL,
826 	p_input_value_id44	IN NUMBER DEFAULT NULL,
827 	p_input_value_id45	IN NUMBER DEFAULT NULL,
828 	p_input_value_id46	IN NUMBER DEFAULT NULL,
829 	p_input_value_id47	IN NUMBER DEFAULT NULL,
830 	p_input_value_id48	IN NUMBER DEFAULT NULL,
831 	p_input_value_id49	IN NUMBER DEFAULT NULL,
832 	p_input_value_id50	IN NUMBER DEFAULT NULL,
833 	p_input_value_id51	IN NUMBER DEFAULT NULL,
834 	p_input_value_id52	IN NUMBER DEFAULT NULL,
835 	p_input_value_id53	IN NUMBER DEFAULT NULL,
836 	p_input_value_id54	IN NUMBER DEFAULT NULL,
837 	p_input_value_id55	IN NUMBER DEFAULT NULL,
838 	p_input_value_id56	IN NUMBER DEFAULT NULL,
839 	p_input_value_id57	IN NUMBER DEFAULT NULL,
840 	p_input_value_id58	IN NUMBER DEFAULT NULL,
841 	p_input_value_id59	IN NUMBER DEFAULT NULL,
842 	p_input_value_id60	IN NUMBER DEFAULT NULL,
843 	p_input_value_id61	IN NUMBER DEFAULT NULL,
844 	p_input_value_id62	IN NUMBER DEFAULT NULL,
845 	p_input_value_id63	IN NUMBER DEFAULT NULL,
846 	p_input_value_id64	IN NUMBER DEFAULT NULL,
847 	p_input_value_id65	IN NUMBER DEFAULT NULL,
848 	p_input_value_id66	IN NUMBER DEFAULT NULL,
849 	p_input_value_id67	IN NUMBER DEFAULT NULL,
850 	p_input_value_id68	IN NUMBER DEFAULT NULL,
851 	p_input_value_id69	IN NUMBER DEFAULT NULL,
852 	p_input_value_id70	IN NUMBER DEFAULT NULL,
853 	p_input_value_id71	IN NUMBER DEFAULT NULL,
854 	p_input_value_id72	IN NUMBER DEFAULT NULL,
855 	p_input_value_id73	IN NUMBER DEFAULT NULL,
856 	p_input_value_id74	IN NUMBER DEFAULT NULL,
857 	p_input_value_id75	IN NUMBER DEFAULT NULL,
858 	p_input_value_id76	IN NUMBER DEFAULT NULL,
859 	p_input_value_id77	IN NUMBER DEFAULT NULL,
860 	p_input_value_id78	IN NUMBER DEFAULT NULL,
861 	p_input_value_id79	IN NUMBER DEFAULT NULL,
862 	p_input_value_id80	IN NUMBER DEFAULT NULL,
863 	p_input_value_id81	IN NUMBER DEFAULT NULL,
864 	p_input_value_id82	IN NUMBER DEFAULT NULL,
865 	p_input_value_id83	IN NUMBER DEFAULT NULL,
869 	p_input_value_id87	IN NUMBER DEFAULT NULL,
866 	p_input_value_id84	IN NUMBER DEFAULT NULL,
867 	p_input_value_id85	IN NUMBER DEFAULT NULL,
868 	p_input_value_id86	IN NUMBER DEFAULT NULL,
870 	p_input_value_id88	IN NUMBER DEFAULT NULL,
871 	p_input_value_id89	IN NUMBER DEFAULT NULL,
872 	p_input_value_id90	IN NUMBER DEFAULT NULL,
873 	p_input_value_id91	IN NUMBER DEFAULT NULL,
874 	p_input_value_id92	IN NUMBER DEFAULT NULL,
875 	p_input_value_id93	IN NUMBER DEFAULT NULL,
876 	p_input_value_id94	IN NUMBER DEFAULT NULL,
877 	p_input_value_id95	IN NUMBER DEFAULT NULL,
878 	p_input_value_id96	IN NUMBER DEFAULT NULL,
879 	p_input_value_id97	IN NUMBER DEFAULT NULL,
880 	p_input_value_id98	IN NUMBER DEFAULT NULL,
881 	p_input_value_id99	IN NUMBER DEFAULT NULL,
882 	p_input_value_id100	IN NUMBER DEFAULT NULL,
883 	p_balance_type_id1	IN NUMBER DEFAULT NULL,
884 	p_balance_type_id2	IN NUMBER DEFAULT NULL,
885 	p_balance_type_id3	IN NUMBER DEFAULT NULL,
886 	p_balance_type_id4	IN NUMBER DEFAULT NULL,
887 	p_balance_type_id5	IN NUMBER DEFAULT NULL,
888 	p_balance_type_id6	IN NUMBER DEFAULT NULL,
889 	p_balance_type_id7	IN NUMBER DEFAULT NULL,
890 	p_balance_type_id8	IN NUMBER DEFAULT NULL,
891 	p_balance_type_id9	IN NUMBER DEFAULT NULL,
892 	p_balance_type_id10	IN NUMBER DEFAULT NULL,
893 	p_balance_type_id11	IN NUMBER DEFAULT NULL,
894 	p_balance_type_id12	IN NUMBER DEFAULT NULL,
895 	p_balance_type_id13	IN NUMBER DEFAULT NULL,
896 	p_balance_type_id14	IN NUMBER DEFAULT NULL,
897 	p_balance_type_id15	IN NUMBER DEFAULT NULL,
898 	p_balance_type_id16	IN NUMBER DEFAULT NULL,
899 	p_balance_type_id17	IN NUMBER DEFAULT NULL,
900 	p_balance_type_id18	IN NUMBER DEFAULT NULL,
901 	p_balance_type_id19	IN NUMBER DEFAULT NULL,
902 	p_balance_type_id20	IN NUMBER DEFAULT NULL,
903 	p_balance_type_id21	IN NUMBER DEFAULT NULL,
904 	p_balance_type_id22	IN NUMBER DEFAULT NULL,
905 	p_balance_type_id23	IN NUMBER DEFAULT NULL,
906 	p_balance_type_id24	IN NUMBER DEFAULT NULL,
907 	p_balance_type_id25	IN NUMBER DEFAULT NULL,
908 	p_balance_type_id26	IN NUMBER DEFAULT NULL,
909 	p_balance_type_id27	IN NUMBER DEFAULT NULL,
910 	p_balance_type_id28	IN NUMBER DEFAULT NULL,
911 	p_balance_type_id29	IN NUMBER DEFAULT NULL,
912 	p_balance_type_id30	IN NUMBER DEFAULT NULL) RETURN pay_jp_result_prepay_t
913 IS
914 	l_balance_type_ids		balance_type_ids_t;
915 	l_result_values_by_iv		result_values_by_iv_t;
916 	l_balance_values_by_bal		balance_values_by_bal_t;
917 	--
918 	-- Cursor to fetch assigment actions locked by Pre-payments assact.
919 	--
920 	CURSOR csr_assact IS
921 		select	paa.assignment_action_id,
922 			ppa.effective_date
923 		from	pay_payroll_actions	ppa,	-- Run pact
924 			pay_assignment_actions	paa,	-- Run assact
925 			pay_action_interlocks	pai	-- Locked by Prepay assact
926 		where	pai.locking_action_id = p_assignment_action_id
927 		and	paa.assignment_action_id = pai.locked_action_id
928 		and	ppa.payroll_action_id = paa.payroll_action_id
929 		and	ppa.action_type <> 'V'
930 		and	not exists(
931 				select	NULL
932 				from	pay_payroll_actions	ppa2,	-- Reversal pact
933 					pay_assignment_actions	paa2,	-- Reversal assact
934 					pay_action_interlocks	pai2	-- Locked by Reversal assact
935 				where	pai2.locked_action_id = paa.assignment_action_id
936 				and	paa2.assignment_action_id = pai2.locking_action_id
937 				and	ppa2.payroll_action_id = paa2.payroll_action_id
938 				and	ppa2.action_type = 'V');
939 	--
940 	-- Cursor to fetch payment info.
941 	--
942 	CURSOR csr_payment IS
943 		select	ppp.value
944 		from	pay_pre_payments	ppp
945 		where	ppp.assignment_action_id = p_assignment_action_id
946 		order by ppp.pre_payment_id;
947 	l_payments		pay_jp_numbers_t;
948 	--
949 	-- Function payment
950 	--
951 	FUNCTION payment(p_index IN NUMBER) RETURN NUMBER
952 	IS
953 		l_payment	NUMBER;
954 	BEGIN
955 		--
956 		-- l_payments is not atomically NULL because of bulk fetch.
957 		-- Even if no records returned, l_payments is instantiated.
958 		--
959 		if l_payments.exists(p_index) then
960 			l_payment := l_payments(p_index);
961 		end if;
962 		--
963 		-- Return value.
964 		--
965 		return l_payment;
966 	END payment;
967 BEGIN
968 	--
969 	-- Convert input parameters to VARRAY variable.
970 	--
971 	convert_to_table(
972 		p_balance_type_id1	=> p_balance_type_id1,
973 		p_balance_type_id2	=> p_balance_type_id2,
974 		p_balance_type_id3	=> p_balance_type_id3,
975 		p_balance_type_id4	=> p_balance_type_id4,
976 		p_balance_type_id5	=> p_balance_type_id5,
977 		p_balance_type_id6	=> p_balance_type_id6,
978 		p_balance_type_id7	=> p_balance_type_id7,
979 		p_balance_type_id8	=> p_balance_type_id8,
980 		p_balance_type_id9	=> p_balance_type_id9,
981 		p_balance_type_id10	=> p_balance_type_id10,
982 		p_balance_type_id11	=> p_balance_type_id11,
983 		p_balance_type_id12	=> p_balance_type_id12,
984 		p_balance_type_id13	=> p_balance_type_id13,
985 		p_balance_type_id14	=> p_balance_type_id14,
986 		p_balance_type_id15	=> p_balance_type_id15,
987 		p_balance_type_id16	=> p_balance_type_id16,
988 		p_balance_type_id17	=> p_balance_type_id17,
989 		p_balance_type_id18	=> p_balance_type_id18,
990 		p_balance_type_id19	=> p_balance_type_id19,
991 		p_balance_type_id20	=> p_balance_type_id20,
995 		p_balance_type_id24	=> p_balance_type_id24,
992 		p_balance_type_id21	=> p_balance_type_id21,
993 		p_balance_type_id22	=> p_balance_type_id22,
994 		p_balance_type_id23	=> p_balance_type_id23,
996 		p_balance_type_id25	=> p_balance_type_id25,
997 		p_balance_type_id26	=> p_balance_type_id26,
998 		p_balance_type_id27	=> p_balance_type_id27,
999 		p_balance_type_id28	=> p_balance_type_id28,
1000 		p_balance_type_id29	=> p_balance_type_id29,
1001 		p_balance_type_id30	=> p_balance_type_id30,
1002 		p_balance_type_ids	=> l_balance_type_ids);
1003 	--
1004 	-- Looped by assacts locked by Pre-payments assact.
1005 	--
1006 	for l_assact in csr_assact loop
1007 		run_internal(
1008 			p_assignment_action_id	=> l_assact.assignment_action_id,
1009 			p_feed_checking_date	=> l_assact.effective_date,
1010 			p_balance_type_ids	=> l_balance_type_ids,
1011 			p_result_values_by_iv	=> l_result_values_by_iv,
1012 			p_balance_values_by_bal	=> l_balance_values_by_bal);
1013 	end loop;
1014 	--
1015 	-- Setup Payment information with BULK COLLECT.
1016 	--
1017 	open csr_payment;
1018 	fetch csr_payment bulk collect into l_payments;
1019 	close csr_payment;
1020 	--
1021 	-- Return value.
1022 	--
1023 	return pay_jp_result_prepay_t(
1024 		result_value(l_result_values_by_iv,p_input_value_id1),
1025 		result_value(l_result_values_by_iv,p_input_value_id2),
1026 		result_value(l_result_values_by_iv,p_input_value_id3),
1027 		result_value(l_result_values_by_iv,p_input_value_id4),
1028 		result_value(l_result_values_by_iv,p_input_value_id5),
1029 		result_value(l_result_values_by_iv,p_input_value_id6),
1030 		result_value(l_result_values_by_iv,p_input_value_id7),
1031 		result_value(l_result_values_by_iv,p_input_value_id8),
1032 		result_value(l_result_values_by_iv,p_input_value_id9),
1033 		result_value(l_result_values_by_iv,p_input_value_id10),
1034 		result_value(l_result_values_by_iv,p_input_value_id11),
1035 		result_value(l_result_values_by_iv,p_input_value_id12),
1036 		result_value(l_result_values_by_iv,p_input_value_id13),
1037 		result_value(l_result_values_by_iv,p_input_value_id14),
1038 		result_value(l_result_values_by_iv,p_input_value_id15),
1039 		result_value(l_result_values_by_iv,p_input_value_id16),
1040 		result_value(l_result_values_by_iv,p_input_value_id17),
1041 		result_value(l_result_values_by_iv,p_input_value_id18),
1042 		result_value(l_result_values_by_iv,p_input_value_id19),
1043 		result_value(l_result_values_by_iv,p_input_value_id20),
1044 		result_value(l_result_values_by_iv,p_input_value_id21),
1045 		result_value(l_result_values_by_iv,p_input_value_id22),
1046 		result_value(l_result_values_by_iv,p_input_value_id23),
1047 		result_value(l_result_values_by_iv,p_input_value_id24),
1048 		result_value(l_result_values_by_iv,p_input_value_id25),
1049 		result_value(l_result_values_by_iv,p_input_value_id26),
1050 		result_value(l_result_values_by_iv,p_input_value_id27),
1051 		result_value(l_result_values_by_iv,p_input_value_id28),
1052 		result_value(l_result_values_by_iv,p_input_value_id29),
1053 		result_value(l_result_values_by_iv,p_input_value_id30),
1054 		result_value(l_result_values_by_iv,p_input_value_id31),
1055 		result_value(l_result_values_by_iv,p_input_value_id32),
1056 		result_value(l_result_values_by_iv,p_input_value_id33),
1057 		result_value(l_result_values_by_iv,p_input_value_id34),
1058 		result_value(l_result_values_by_iv,p_input_value_id35),
1059 		result_value(l_result_values_by_iv,p_input_value_id36),
1060 		result_value(l_result_values_by_iv,p_input_value_id37),
1061 		result_value(l_result_values_by_iv,p_input_value_id38),
1062 		result_value(l_result_values_by_iv,p_input_value_id39),
1063 		result_value(l_result_values_by_iv,p_input_value_id40),
1064 		result_value(l_result_values_by_iv,p_input_value_id41),
1065 		result_value(l_result_values_by_iv,p_input_value_id42),
1066 		result_value(l_result_values_by_iv,p_input_value_id43),
1067 		result_value(l_result_values_by_iv,p_input_value_id44),
1068 		result_value(l_result_values_by_iv,p_input_value_id45),
1069 		result_value(l_result_values_by_iv,p_input_value_id46),
1070 		result_value(l_result_values_by_iv,p_input_value_id47),
1071 		result_value(l_result_values_by_iv,p_input_value_id48),
1072 		result_value(l_result_values_by_iv,p_input_value_id49),
1073 		result_value(l_result_values_by_iv,p_input_value_id50),
1074 		result_value(l_result_values_by_iv,p_input_value_id51),
1075 		result_value(l_result_values_by_iv,p_input_value_id52),
1076 		result_value(l_result_values_by_iv,p_input_value_id53),
1077 		result_value(l_result_values_by_iv,p_input_value_id54),
1078 		result_value(l_result_values_by_iv,p_input_value_id55),
1079 		result_value(l_result_values_by_iv,p_input_value_id56),
1080 		result_value(l_result_values_by_iv,p_input_value_id57),
1081 		result_value(l_result_values_by_iv,p_input_value_id58),
1082 		result_value(l_result_values_by_iv,p_input_value_id59),
1083 		result_value(l_result_values_by_iv,p_input_value_id60),
1084 		result_value(l_result_values_by_iv,p_input_value_id61),
1085 		result_value(l_result_values_by_iv,p_input_value_id62),
1086 		result_value(l_result_values_by_iv,p_input_value_id63),
1087 		result_value(l_result_values_by_iv,p_input_value_id64),
1088 		result_value(l_result_values_by_iv,p_input_value_id65),
1089 		result_value(l_result_values_by_iv,p_input_value_id66),
1090 		result_value(l_result_values_by_iv,p_input_value_id67),
1091 		result_value(l_result_values_by_iv,p_input_value_id68),
1092 		result_value(l_result_values_by_iv,p_input_value_id69),
1093 		result_value(l_result_values_by_iv,p_input_value_id70),
1094 		result_value(l_result_values_by_iv,p_input_value_id71),
1095 		result_value(l_result_values_by_iv,p_input_value_id72),
1096 		result_value(l_result_values_by_iv,p_input_value_id73),
1097 		result_value(l_result_values_by_iv,p_input_value_id74),
1098 		result_value(l_result_values_by_iv,p_input_value_id75),
1099 		result_value(l_result_values_by_iv,p_input_value_id76),
1100 		result_value(l_result_values_by_iv,p_input_value_id77),
1101 		result_value(l_result_values_by_iv,p_input_value_id78),
1102 		result_value(l_result_values_by_iv,p_input_value_id79),
1103 		result_value(l_result_values_by_iv,p_input_value_id80),
1104 		result_value(l_result_values_by_iv,p_input_value_id81),
1105 		result_value(l_result_values_by_iv,p_input_value_id82),
1106 		result_value(l_result_values_by_iv,p_input_value_id83),
1107 		result_value(l_result_values_by_iv,p_input_value_id84),
1108 		result_value(l_result_values_by_iv,p_input_value_id85),
1109 		result_value(l_result_values_by_iv,p_input_value_id86),
1110 		result_value(l_result_values_by_iv,p_input_value_id87),
1111 		result_value(l_result_values_by_iv,p_input_value_id88),
1112 		result_value(l_result_values_by_iv,p_input_value_id89),
1113 		result_value(l_result_values_by_iv,p_input_value_id90),
1114 		result_value(l_result_values_by_iv,p_input_value_id91),
1115 		result_value(l_result_values_by_iv,p_input_value_id92),
1116 		result_value(l_result_values_by_iv,p_input_value_id93),
1117 		result_value(l_result_values_by_iv,p_input_value_id94),
1118 		result_value(l_result_values_by_iv,p_input_value_id95),
1119 		result_value(l_result_values_by_iv,p_input_value_id96),
1120 		result_value(l_result_values_by_iv,p_input_value_id97),
1121 		result_value(l_result_values_by_iv,p_input_value_id98),
1122 		result_value(l_result_values_by_iv,p_input_value_id99),
1123 		result_value(l_result_values_by_iv,p_input_value_id100),
1124 		balance_value(l_balance_values_by_bal,p_balance_type_id1),
1125 		balance_value(l_balance_values_by_bal,p_balance_type_id2),
1126 		balance_value(l_balance_values_by_bal,p_balance_type_id3),
1127 		balance_value(l_balance_values_by_bal,p_balance_type_id4),
1128 		balance_value(l_balance_values_by_bal,p_balance_type_id5),
1129 		balance_value(l_balance_values_by_bal,p_balance_type_id6),
1130 		balance_value(l_balance_values_by_bal,p_balance_type_id7),
1131 		balance_value(l_balance_values_by_bal,p_balance_type_id8),
1132 		balance_value(l_balance_values_by_bal,p_balance_type_id9),
1133 		balance_value(l_balance_values_by_bal,p_balance_type_id10),
1134 		balance_value(l_balance_values_by_bal,p_balance_type_id11),
1135 		balance_value(l_balance_values_by_bal,p_balance_type_id12),
1136 		balance_value(l_balance_values_by_bal,p_balance_type_id13),
1137 		balance_value(l_balance_values_by_bal,p_balance_type_id14),
1138 		balance_value(l_balance_values_by_bal,p_balance_type_id15),
1139 		balance_value(l_balance_values_by_bal,p_balance_type_id16),
1140 		balance_value(l_balance_values_by_bal,p_balance_type_id17),
1141 		balance_value(l_balance_values_by_bal,p_balance_type_id18),
1142 		balance_value(l_balance_values_by_bal,p_balance_type_id19),
1143 		balance_value(l_balance_values_by_bal,p_balance_type_id20),
1144 		balance_value(l_balance_values_by_bal,p_balance_type_id21),
1145 		balance_value(l_balance_values_by_bal,p_balance_type_id22),
1146 		balance_value(l_balance_values_by_bal,p_balance_type_id23),
1147 		balance_value(l_balance_values_by_bal,p_balance_type_id24),
1148 		balance_value(l_balance_values_by_bal,p_balance_type_id25),
1149 		balance_value(l_balance_values_by_bal,p_balance_type_id26),
1150 		balance_value(l_balance_values_by_bal,p_balance_type_id27),
1151 		balance_value(l_balance_values_by_bal,p_balance_type_id28),
1152 		balance_value(l_balance_values_by_bal,p_balance_type_id29),
1153 		balance_value(l_balance_values_by_bal,p_balance_type_id30),
1154 		payment(1),
1155 		payment(2),
1156 		payment(3),
1157 		payment(4),
1158 		payment(5));
1159 END prepay;
1160 ************************************************************************ */
1161 --
1162 END pay_jp_result_pkg;