DBA Data[Home] [Help]

PACKAGE BODY: APPS.FA_MASS_RET_PUB

Source


1 PACKAGE BODY FA_MASS_RET_PUB as
2 /* $Header: FAPMRLDB.pls 120.7 2005/07/28 00:19:21 tkawamur noship $   */
3 
4 g_log_level_rec   fa_api_types.log_level_rec_type;
5 
6 PROCEDURE CREATE_CRITERIA
7    (p_api_version           	in     NUMBER
8    ,p_init_msg_list        	in     VARCHAR2 := FND_API.G_FALSE
9    ,p_commit                	in     VARCHAR2 := FND_API.G_FALSE
10    ,p_validation_level      	in     NUMBER   := FND_API.G_VALID_LEVEL_FULL
11    ,p_calling_fn            	in     VARCHAR2
12    ,x_return_status         	out    NOCOPY VARCHAR2
13    ,x_msg_count             	out    NOCOPY NUMBER
14    ,x_msg_data              	out    NOCOPY VARCHAR2
15    ,px_mass_ret_rec             in out
16 			NOCOPY FA_CUSTOM_RET_VAL_PKG.mass_ret_rec_tbl_type) IS
17 
18 
19 
20   l_mass_ret_rec	fa_custom_ret_val_pkg.mass_ret_rec_tbl_type;
21   mr_count		NUMBER;
22   validation_error 	Exception;
23   error_code		varchar2(30);
24 
25 -- validation cursors
26 
27    l_found 	varchar2(30);
28 
29    l_fiscal_year_name	fa_book_controls.fiscal_year_name%TYPE;
30    l_fiscal_year 	fa_deprn_periods.fiscal_year%TYPE;
31    l_book_class 	fa_book_controls.book_class%TYPE;
32    l_per_close_date	fa_deprn_periods.calendar_period_close_date%TYPE;
33    l_book		fa_book_controls.book_type_code%TYPE;
34 
35    l_category_id	fa_categories.category_id%TYPE;
36    l_retirement_type_code fa_mass_retirements.retirement_type_code%TYPE;
37    l_retirement_date	date;
38    l_status		fa_lookups_b.lookup_code%TYPE;
39    l_location_id	fa_locations.location_id%TYPE;
40    l_employee_id 	number;
41    l_asset_key_id	fa_mass_retirements.asset_key_id%TYPE;
42    l_from_asset_no 	fa_additions_b.asset_number%TYPE;
43    l_to_asset_no	fa_additions_b.asset_number%TYPE;
44 
45    l_msg_data	        varchar2(200);
46    l_loop_no		number;
47    l_yesno		varchar2(10);
48 
49 	  cursor c_bc is
50 	  select bc.fiscal_year_name,
51 		 bc.current_fiscal_year,
52 		 bc.book_class,
53 		 dp.calendar_period_close_date
54 	  from fa_book_controls bc,
55 		fa_deprn_periods dp
56 	  where bc.book_type_code = l_book
57 	  and   bc.last_period_counter = dp.period_counter
58 	  and   dp.book_type_code = bc.book_type_code
59 	  and   bc.book_class <> 'BUDGET'
60 	  and   nvl(bc.date_ineffective, sysdate + 1) > sysdate;
61 
62 	  cursor c_cb is
63 	   Select 'Validated'
64 	   From fa_category_books cb
65 	   Where book_type_code = l_book
66 	   And   category_id    = l_category_id;
67 
68 	   cursor c_lu is
69 	   Select 'Validated'
70 	   From fa_lookups
71 	   Where lookup_type = 'RETIREMENT'
72 	   And lookup_code = l_retirement_type_code;
73 
74 	   cursor c_rd is
75 	   Select 'Validated'
76            FROM fa_deprn_periods fadp
77            WHERE fadp.book_type_code = l_book
78            AND fadp.period_close_date IS NULL
79            AND l_retirement_date
80                      <= fadp.calendar_period_close_date;
81 
82 	   cursor c_rd2 is
83              SELECT 'Validated'
84              FROM fa_fiscal_year
85              WHERE fiscal_year      = l_fiscal_year
86              AND   fiscal_year_name = l_fiscal_year_name
87                    AND l_retirement_date
88                        BETWEEN start_date AND end_date;
89 
90 	   cursor c_status is
91              SELECT 'Validated'
92 	     FROM FA_LOOKUPS
93              WHERE LOOKUP_TYPE = 'MASS_TRX_STATUS'
94              AND LOOKUP_CODE = l_status
95 	     AND LOOKUP_CODE in ('NEW','PENDING','ON_HOLD'
96 );
97 
98 
99 	   cursor c_loc is
100              SELECT 'Validated'
101 	     FROM FA_LOCATIONS
102              WHERE location_id = l_location_id
103 	     AND  sysdate between nvl(start_date_active,sysdate -1)
104 		 and nvl(end_date_active, sysdate +1)
105 	     AND  enabled_flag = 'Y';
106 
107 	   cursor c_emp is
108              SELECT 'Validated'
109 	     FROM FA_EMPLOYEES
110              WHERE employee_id = l_employee_id;
111 
112 	   cursor c_key is
113              SELECT 'Validated'
114 	     FROM FA_ASSET_KEYWORDS
115              WHERE code_combination_id = l_asset_key_id;
116 
117 	   cursor c_fromasset is
118 	     Select 'Validated'
119 	     From fa_books bk,
120 		  fa_additions ad
121 	     Where ad.asset_number = l_from_asset_no
122 	     And ad.asset_id = bk.asset_id
123 	     And bk.book_type_code = l_book
124 	     And bk.date_ineffective is null;
125 
126 	   cursor c_toasset is
127 	     Select 'Validated'
128 	     From fa_books bk,
129 		  fa_additions ad
130 	     Where ad.asset_number = l_to_asset_no
131 	     And ad.asset_id = bk.asset_id
132 	     And bk.book_type_code = l_book
133 	     And bk.date_ineffective is null;
134 
135 -- end validation cursors
136 
137 Begin
138 
139   if (not g_log_level_rec.initialized) then
140       if (NOT fa_util_pub.get_log_level_rec (
141                 x_log_level_rec =>  g_log_level_rec
142       )) then
143          raise validation_error;
144       end if;
145    end if;
146 
147    l_mass_ret_rec := px_mass_ret_rec;
148 
149 
150    FOR  mr_count in 1..l_mass_ret_rec.count LOOP
151 
152 	l_loop_no := mr_count;
153 /* Use same validation as in Create Mass Retirements form */
154 
155 	l_book := l_mass_ret_rec(mr_count).book_type_code;
156 	l_category_id := l_mass_ret_rec(mr_count).category_id;
157 	l_retirement_type_code := l_mass_ret_rec(mr_count).retirement_type_code;
158 	l_retirement_date 	:= l_mass_ret_rec(mr_count).retirement_date;
159 	l_status		:= l_mass_ret_rec(mr_count).status;
160 	l_location_id	:= l_mass_ret_rec(mr_count).location_id;
161 	l_employee_id 	:= l_mass_ret_rec(mr_count).employee_id;
162 	l_asset_key_id	:= l_mass_ret_rec(mr_count).asset_key_id;
163 	l_from_asset_no := l_mass_ret_rec(mr_count).from_asset_number;
164 	l_to_asset_no 	:= l_mass_ret_rec(mr_count).to_asset_number;
165 
166         open c_bc;
167 	fetch c_bc into l_fiscal_year_name,
168 			l_fiscal_year,
169 			l_book_class,
170 		   	l_per_close_date;
171 
172 	if c_bc%NOTFOUND then
173 		error_code := 'BOOK_TYPE_CODE';
174 		raise validation_error;
175 	end if;
176 	close c_bc;
177 
178 	IF l_mass_ret_rec(mr_count).category_id is not null then
179 
180 	  open c_cb;
181 	  fetch c_cb into l_found;
182 	  if c_cb%NOTFOUND then
183 		error_code := 'CATEGORY';
184 		raise validation_error;
185 	  end if;
186 	  close c_cb;
187 	End if;
188 
189 	If l_mass_ret_rec(mr_count).retirement_type_code is not null then
190 	  open c_lu;
191 	  fetch c_lu into l_found;
192 	  if c_lu%NOTFOUND then
193 		error_code := 'RETIREMENT_TYPE_CODE';
194 		raise validation_error;
195 	  end if;
196 	  close c_lu;
197 	End if;
198 
199 	If l_mass_ret_rec(mr_count).retirement_date is not null then
200 
201 	  open c_rd;
202 	  fetch c_rd into l_found;
203 	  if c_rd%NOTFOUND then
204 		error_code := 'RETIREMENT_DATE';
205 		raise validation_error;
206 	  end if;
207 	  close c_rd;
208 
209 	  open c_rd2;
210 	  fetch c_rd2 into l_found;
211 	  if c_rd2%NOTFOUND then
212 		error_code := 'RETIREMENT_DATE2';
213 		raise validation_error;
214 	  end if;
215 	  close c_rd2;
216 	End if;
217 
218 	If l_mass_ret_rec(mr_count).status is not null then
219 	  open c_status;
220 	  fetch c_status into l_found;
221 	  if c_status%NOTFOUND then
222 		error_code := 'STATUS';
223 		raise validation_error;
224 	  end if;
225 	  close c_status;
226 	End if;
227 
228 	If (nvl(l_mass_ret_rec(mr_count).units_to_retire,0) > 0)
229 	and l_book_class = 'TAX' then
230 		error_code := 'TAX';
231 		raise validation_error;
232 	end if;
233 
234 	If nvl(l_mass_ret_rec(mr_count).units_to_retire,0) < 0 then
235 		error_code := 'UNITS';
236 		raise validation_error;
237 	end if;
238 
239 	if nvl(l_mass_ret_rec(mr_count).retire_subcomponents_flag,'NO')
240 	not in  ('NO','YES') then
241 	   	l_yesno := l_mass_ret_rec(mr_count).retire_subcomponents_flag;
242 		error_code := 'SUBCOMPONENTS';
243 		raise validation_error;
244 	end if;
245 
246 -- PROJECT AND TASK VALIDATION
247 
248 -- End project and task
249 
250 	if nvl(l_mass_ret_rec(mr_count).asset_type,'CIP') not in ('EXPENSED',
251 		'CAPITALIZED','CIP') then
252 		error_code := 'ASSET TYPE';
253 		raise validation_error;
254 	end if;
255 
256 	if nvl(l_mass_ret_rec(mr_count).INCLUDE_FULLY_RSVD_FLAG,'NO')
257 	not in ('YES','NO') then
258 		error_code := 'FULLY_RSVD';
259 		raise validation_error;
260 	end if;
261 
262 	if l_mass_ret_rec(mr_count).location_id is not null then
263 
264 	  open c_loc;
265 	  fetch c_loc into l_found;
266 	  if c_loc%NOTFOUND then
267 		error_code := 'LOCATION';
268 		raise validation_error;
269 	  end if;
270 	  close c_loc;
271 
272 	end if;
273 
274 	if l_mass_ret_rec(mr_count).employee_id is not null then
275 
276 	  open c_emp;
277 	  fetch c_emp into l_found;
278 	  if c_emp%NOTFOUND then
279 		error_code := 'EMPLOYEE';
280 		raise validation_error;
281 	  end if;
282 	  close c_emp;
283 
284 	end if;
285 
286 	if l_mass_ret_rec(mr_count).asset_key_id is not null then
287 
288 	  open c_key;
289 	  fetch c_key into l_found;
290 	  if c_key%NOTFOUND then
291 		error_code := 'KEY';
292 		raise validation_error;
293 	  end if;
294 	  close c_key;
295 
296 	end if;
297 
298 	if l_mass_ret_rec(mr_count).from_cost is not null then
299 
300 	  if l_mass_ret_rec(mr_count).from_cost >
301 		nvl(l_mass_ret_rec(mr_count).to_cost,0) then
302 		error_code := 'COST';
303 		raise validation_error;
304 
305 	  end if;
306 
307 	end if;
308 
309 	if l_mass_ret_rec(mr_count).from_asset_number is not null then
310 	  if l_mass_ret_rec(mr_count).from_asset_number <=
311 			l_mass_ret_rec(mr_count).to_asset_number then
312 
313 	     open c_fromasset;
314 	     fetch c_fromasset into l_found;
315 	     if c_fromasset%NOTFOUND then
316 		error_code := 'FROM ASSET';
317 		raise validation_error;
318 	     end if;
319 	     close c_fromasset;
320 
321 	     open c_toasset;
322 	     fetch c_toasset into l_found;
323 	     if c_toasset%NOTFOUND then
324 		error_code := 'TO ASSET';
325 		raise validation_error;
326 	     end if;
327 	     close c_toasset;
328 
329 	  else
330 		error_code := 'FROM ASSET';
331 		raise validation_error;
332 
333 	  end if;
334 
335 
336 	end if;
337 
338 	if l_mass_ret_rec(mr_count).from_date_placed_in_service is not null then
339 
340 
341            if (l_mass_ret_rec(mr_count).from_date_placed_in_service > l_per_close_date)
342 	   or
343 	      (l_mass_ret_rec(mr_count).to_date_placed_in_service > l_per_close_date)
344 	   then
345 		error_code := 'DPIS';
346 		raise validation_error;
347 	   end if;
348 	end if;
349 
350 
351      Insert into fa_mass_retirements (
352 	MASS_RETIREMENT_ID,
353 	BOOK_TYPE_CODE,
354 	RETIRE_SUBCOMPONENTS_FLAG,
355 	STATUS,
356 	RETIRE_REQUEST_ID,
357 	REINSTATE_REQUEST_ID,
358 	RETIREMENT_DATE,
359 	PROCEEDS_OF_SALE,
360 	COST_OF_REMOVAL,
361 	DESCRIPTION,
362 	RETIREMENT_TYPE_CODE,
363 	ASSET_TYPE,
364 	LOCATION_ID,
365 	EMPLOYEE_ID,
366 	CATEGORY_ID,
367 	ASSET_KEY_ID,
368 	FROM_ASSET_NUMBER,
369 	TO_ASSET_NUMBER,
370 	FROM_DATE_PLACED_IN_SERVICE,
371 	TO_DATE_PLACED_IN_SERVICE,
372 	FROM_COST,
373 	MODEL_NUMBER,
374 	TAG_NUMBER,
375 	MANUFACTURER_NAME,
376 	SERIAL_NUMBER,
377 	CREATE_REQUEST_ID,
378 	UNITS_TO_RETIRE,
379 	INCLUDE_FULLY_RSVD_FLAG,
380 	TO_COST,
381 	GROUP_ASSET_ID,
382 	FROM_THRESHOLD_AMOUNT,
383 	TO_THRESHOLD_AMOUNT,
384 	PROJECT_ID,
385 	TASK_ID,
386 	ATTRIBUTE1,
387 	ATTRIBUTE2,
388 	ATTRIBUTE3,
389 	ATTRIBUTE4,
390 	ATTRIBUTE5,
391 	ATTRIBUTE6,
392 	ATTRIBUTE7,
393 	ATTRIBUTE8,
394 	ATTRIBUTE9,
395 	ATTRIBUTE10,
396 	ATTRIBUTE11,
397 	ATTRIBUTE12,
398 	ATTRIBUTE13,
399 	ATTRIBUTE14,
400 	ATTRIBUTE15,
401 	ATTRIBUTE_CATEGORY_CODE,
402 	SEGMENT1_LOW,
403 	SEGMENT2_LOW,
404 	SEGMENT3_LOW,
405 	SEGMENT4_LOW,
406 	SEGMENT5_LOW,
407 	SEGMENT6_LOW,
408 	SEGMENT7_LOW,
409 	SEGMENT8_LOW,
410 	SEGMENT9_LOW,
411 	SEGMENT10_LOW,
412 	SEGMENT11_LOW,
413 	SEGMENT12_LOW,
414 	SEGMENT13_LOW,
415 	SEGMENT14_LOW,
416 	SEGMENT15_LOW,
417 	SEGMENT16_LOW,
418 	SEGMENT17_LOW,
419 	SEGMENT18_LOW,
420 	SEGMENT19_LOW,
421 	SEGMENT20_LOW,
422 	SEGMENT21_LOW,
423 	SEGMENT22_LOW,
424 	SEGMENT23_LOW,
425 	SEGMENT24_LOW,
426 	SEGMENT25_LOW,
427 	SEGMENT26_LOW,
428 	SEGMENT27_LOW,
429 	SEGMENT28_LOW,
430 	SEGMENT29_LOW,
431 	SEGMENT30_LOW,
432 	SEGMENT1_HIGH,
433 	SEGMENT2_HIGH,
434 	SEGMENT3_HIGH,
435 	SEGMENT4_HIGH,
436 	SEGMENT5_HIGH,
437 	SEGMENT6_HIGH,
438 	SEGMENT7_HIGH,
439 	SEGMENT8_HIGH,
440 	SEGMENT9_HIGH,
441 	SEGMENT10_HIGH,
442 	SEGMENT11_HIGH,
443 	SEGMENT12_HIGH,
444 	SEGMENT13_HIGH,
445 	SEGMENT14_HIGH,
446 	SEGMENT15_HIGH,
447 	SEGMENT16_HIGH,
448 	SEGMENT17_HIGH,
449 	SEGMENT18_HIGH,
450 	SEGMENT19_HIGH,
451 	SEGMENT20_HIGH,
452 	SEGMENT21_HIGH,
453 	SEGMENT22_HIGH,
454 	SEGMENT23_HIGH,
455 	SEGMENT24_HIGH,
456 	SEGMENT25_HIGH,
457 	SEGMENT26_HIGH,
458 	SEGMENT27_HIGH,
459 	SEGMENT28_HIGH,
460 	SEGMENT29_HIGH,
461 	SEGMENT30_HIGH,
462 	LAST_UPDATE_DATE,
463 	LAST_UPDATED_BY,
464 	CREATION_DATE,
465 	CREATED_BY,
466 	LAST_UPDATE_LOGIN)
467 	VALUES
468 	(
469 	FA_MASS_TRANSACTIONS_S.NEXTVAL,
470 	L_MASS_RET_REC(mr_count).BOOK_TYPE_CODE,
471 	L_MASS_RET_REC(mr_count).RETIRE_SUBCOMPONENTS_FLAG,
472 	L_MASS_RET_REC(mr_count).STATUS,
473 	L_MASS_RET_REC(mr_count).RETIRE_REQUEST_ID,
474 	L_MASS_RET_REC(mr_count).REINSTATE_REQUEST_ID,
475 	L_MASS_RET_REC(mr_count).RETIREMENT_DATE,
476 	L_MASS_RET_REC(mr_count).PROCEEDS_OF_SALE,
477 	L_MASS_RET_REC(mr_count).COST_OF_REMOVAL,
478 	L_MASS_RET_REC(mr_count).DESCRIPTION,
479 	L_MASS_RET_REC(mr_count).RETIREMENT_TYPE_CODE,
480 	L_MASS_RET_REC(mr_count).ASSET_TYPE,
481 	L_MASS_RET_REC(mr_count).LOCATION_ID,
482 	L_MASS_RET_REC(mr_count).EMPLOYEE_ID,
483 	L_MASS_RET_REC(mr_count).CATEGORY_ID,
484 	L_MASS_RET_REC(mr_count).ASSET_KEY_ID,
485 	L_MASS_RET_REC(mr_count).FROM_ASSET_NUMBER,
486 	L_MASS_RET_REC(mr_count).TO_ASSET_NUMBER,
487 	L_MASS_RET_REC(mr_count).FROM_DATE_PLACED_IN_SERVICE,
488 	L_MASS_RET_REC(mr_count).TO_DATE_PLACED_IN_SERVICE,
489 	L_MASS_RET_REC(mr_count).FROM_COST,
490 	L_MASS_RET_REC(mr_count).MODEL_NUMBER,
491 	L_MASS_RET_REC(mr_count).TAG_NUMBER,
492 	L_MASS_RET_REC(mr_count).MANUFACTURER_NAME,
493 	L_MASS_RET_REC(mr_count).SERIAL_NUMBER,
494 	L_MASS_RET_REC(mr_count).CREATE_REQUEST_ID,
495 	L_MASS_RET_REC(mr_count).UNITS_TO_RETIRE,
496 	L_MASS_RET_REC(mr_count).INCLUDE_FULLY_RSVD_FLAG,
497 	L_MASS_RET_REC(mr_count).TO_COST,
498 	L_MASS_RET_REC(mr_count).GROUP_ASSET_ID,
499 	L_MASS_RET_REC(mr_count).FROM_THRESHOLD_AMOUNT,
500 	L_MASS_RET_REC(mr_count).TO_THRESHOLD_AMOUNT,
501 	L_MASS_RET_REC(mr_count).PROJECT_ID,
502 	L_MASS_RET_REC(mr_count).TASK_ID,
503 	L_MASS_RET_REC(mr_count).ATTRIBUTE1,
504 	L_MASS_RET_REC(mr_count).ATTRIBUTE2,
505 	L_MASS_RET_REC(mr_count).ATTRIBUTE3,
506 	L_MASS_RET_REC(mr_count).ATTRIBUTE4,
507 	L_MASS_RET_REC(mr_count).ATTRIBUTE5,
508 	L_MASS_RET_REC(mr_count).ATTRIBUTE6,
509 	L_MASS_RET_REC(mr_count).ATTRIBUTE7,
510 	L_MASS_RET_REC(mr_count).ATTRIBUTE8,
511 	L_MASS_RET_REC(mr_count).ATTRIBUTE9,
512 	L_MASS_RET_REC(mr_count).ATTRIBUTE10,
513 	L_MASS_RET_REC(mr_count).ATTRIBUTE11,
514 	L_MASS_RET_REC(mr_count).ATTRIBUTE12,
515 	L_MASS_RET_REC(mr_count).ATTRIBUTE13,
516 	L_MASS_RET_REC(mr_count).ATTRIBUTE14,
517 	L_MASS_RET_REC(mr_count).ATTRIBUTE15,
518 	L_MASS_RET_REC(mr_count).ATTRIBUTE_CATEGORY_CODE,
519 	L_MASS_RET_REC(mr_count).SEGMENT1_LOW,
520 	L_MASS_RET_REC(mr_count).SEGMENT2_LOW,
521 	L_MASS_RET_REC(mr_count).SEGMENT3_LOW,
522 	L_MASS_RET_REC(mr_count).SEGMENT4_LOW,
523 	L_MASS_RET_REC(mr_count).SEGMENT5_LOW,
524 	L_MASS_RET_REC(mr_count).SEGMENT6_LOW,
525 	L_MASS_RET_REC(mr_count).SEGMENT7_LOW,
526 	L_MASS_RET_REC(mr_count).SEGMENT8_LOW,
527 	L_MASS_RET_REC(mr_count).SEGMENT9_LOW,
528 	L_MASS_RET_REC(mr_count).SEGMENT10_LOW,
529 	L_MASS_RET_REC(mr_count).SEGMENT11_LOW,
530 	L_MASS_RET_REC(mr_count).SEGMENT12_LOW,
531 	L_MASS_RET_REC(mr_count).SEGMENT13_LOW,
532 	L_MASS_RET_REC(mr_count).SEGMENT14_LOW,
533 	L_MASS_RET_REC(mr_count).SEGMENT15_LOW,
534 	L_MASS_RET_REC(mr_count).SEGMENT16_LOW,
535 	L_MASS_RET_REC(mr_count).SEGMENT17_LOW,
536 	L_MASS_RET_REC(mr_count).SEGMENT18_LOW,
537 	L_MASS_RET_REC(mr_count).SEGMENT19_LOW,
538 	L_MASS_RET_REC(mr_count).SEGMENT20_LOW,
539 	L_MASS_RET_REC(mr_count).SEGMENT21_LOW,
540 	L_MASS_RET_REC(mr_count).SEGMENT22_LOW,
541 	L_MASS_RET_REC(mr_count).SEGMENT23_LOW,
542 	L_MASS_RET_REC(mr_count).SEGMENT24_LOW,
543 	L_MASS_RET_REC(mr_count).SEGMENT25_LOW,
544 	L_MASS_RET_REC(mr_count).SEGMENT26_LOW,
545 	L_MASS_RET_REC(mr_count).SEGMENT27_LOW,
546 	L_MASS_RET_REC(mr_count).SEGMENT28_LOW,
547 	L_MASS_RET_REC(mr_count).SEGMENT29_LOW,
548 	L_MASS_RET_REC(mr_count).SEGMENT30_LOW,
549 	L_MASS_RET_REC(mr_count).SEGMENT1_HIGH,
550 	L_MASS_RET_REC(mr_count).SEGMENT2_HIGH,
551 	L_MASS_RET_REC(mr_count).SEGMENT3_HIGH,
552 	L_MASS_RET_REC(mr_count).SEGMENT4_HIGH,
553 	L_MASS_RET_REC(mr_count).SEGMENT5_HIGH,
554 	L_MASS_RET_REC(mr_count).SEGMENT6_HIGH,
555 	L_MASS_RET_REC(mr_count).SEGMENT7_HIGH,
556 	L_MASS_RET_REC(mr_count).SEGMENT8_HIGH,
557 	L_MASS_RET_REC(mr_count).SEGMENT9_HIGH,
558 	L_MASS_RET_REC(mr_count).SEGMENT10_HIGH,
559 	L_MASS_RET_REC(mr_count).SEGMENT11_HIGH,
560 	L_MASS_RET_REC(mr_count).SEGMENT12_HIGH,
561 	L_MASS_RET_REC(mr_count).SEGMENT13_HIGH,
562 	L_MASS_RET_REC(mr_count).SEGMENT14_HIGH,
563 	L_MASS_RET_REC(mr_count).SEGMENT15_HIGH,
564 	L_MASS_RET_REC(mr_count).SEGMENT16_HIGH,
565 	L_MASS_RET_REC(mr_count).SEGMENT17_HIGH,
566 	L_MASS_RET_REC(mr_count).SEGMENT18_HIGH,
567 	L_MASS_RET_REC(mr_count).SEGMENT19_HIGH,
568 	L_MASS_RET_REC(mr_count).SEGMENT20_HIGH,
569 	L_MASS_RET_REC(mr_count).SEGMENT21_HIGH,
570 	L_MASS_RET_REC(mr_count).SEGMENT22_HIGH,
571 	L_MASS_RET_REC(mr_count).SEGMENT23_HIGH,
572 	L_MASS_RET_REC(mr_count).SEGMENT24_HIGH,
573 	L_MASS_RET_REC(mr_count).SEGMENT25_HIGH,
574 	L_MASS_RET_REC(mr_count).SEGMENT26_HIGH,
575 	L_MASS_RET_REC(mr_count).SEGMENT27_HIGH,
576 	L_MASS_RET_REC(mr_count).SEGMENT28_HIGH,
577 	L_MASS_RET_REC(mr_count).SEGMENT29_HIGH,
578 	L_MASS_RET_REC(mr_count).SEGMENT30_HIGH,
579 	L_MASS_RET_REC(mr_count).LAST_UPDATE_DATE,
580 	L_MASS_RET_REC(mr_count).LAST_UPDATED_BY,
581 	L_MASS_RET_REC(mr_count).CREATION_DATE,
582 	L_MASS_RET_REC(mr_count).CREATED_BY,
583 	L_MASS_RET_REC(mr_count).LAST_UPDATE_LOGIN
584 	);
585 
586   END LOOP;
587 
588 
589 	IF FND_API.To_Boolean(p_commit) THEN
590                 COMMIT WORK;
591 	END IF;
592 
593   x_return_status := 0;
594 
595   Exception
596     When validation_error then
597 
598 	if error_code =  'BOOK_TYPE_CODE' then
599 	  FND_MESSAGE.SET_NAME('OFA', 'FA_BOOK_INEFFECTIVE_BOOK');
600 	  x_msg_data := fnd_message.get;
601 
602 	elsif error_code = 'CATEGORY' then
603 	  FND_MESSAGE.SET_NAME('OFA', 'FA_BOOK_CATBOOK_NOT_DEFINED');
604 	  x_msg_data := fnd_message.get;
605 
606 	elsif error_code = 'RETIREMENT_TYPE_CODE' then
607  	  x_msg_data := 'Retirement Type is incorrect';
608 --
609 	elsif error_code = 'RETIREMENT_DATE' then
610 	  FND_MESSAGE.SET_NAME('OFA', 'FA_SHARED_CANNOT_FUTURE');
611 	  x_msg_data := fnd_message.get;
612 
613 	elsif error_code = 'RETIREMENT_DATE2' then
614 	  FND_MESSAGE.SET_NAME('OFA', 'FA_RET_DATE_MUSTBE_IN_CUR_FY');
615 	  x_msg_data := fnd_message.get;
616 
617 	elsif error_code = 'STATUS' 	then
618 	  FND_MESSAGE.SET_NAME('OFA', 'FA_SHARED_UNKNOWN_STATUS');
619 	  FND_MESSAGE.SET_TOKEN('STATUS',l_status, false);
620 	  x_msg_data := fnd_message.get;
621 
622 	elsif error_code = 'TAX' then
623 	  FND_MESSAGE.SET_NAME('OFA', 'FA_RET_COST_ONLY');
624 	  x_msg_data := fnd_message.get;
625 
626 	elsif error_code = 'UNITS' then
627 	  FND_MESSAGE.SET_NAME('OFA', 'FA_UNT_ADJ_VAL_CUR_UNTS');
628 	  x_msg_data := fnd_message.get;
629 
630 	elsif error_code = 'SUBCOMPONENTS' then
631 	  FND_MESSAGE.SET_NAME('OFA', 'FA_API_SHARED_INVALID_YESNO');
632 	  FND_MESSAGE.SET_TOKEN('VALUE', l_yesno, false);
633 	  FND_MESSAGE.SET_TOKEN('XMLTAG', 'SUBCOMPONENTS', false);
634 	  x_msg_data := fnd_message.get;
635 
636 	elsif error_code = 'ASSET TYPE' then
637 	  FND_MESSAGE.SET_NAME('OFA', 'FA_DPR_BAD_ASSET_TYPE');
638 	  x_msg_data := fnd_message.get;
639 
640 	elsif error_code = 'FULLY_RSVD' then
641 	  FND_MESSAGE.SET_NAME('OFA', 'FA_API_SHARED_INVALID_YESNO');
642 	  x_msg_data := fnd_message.get;
643 
644 	elsif error_code = 'LOCATION' then
645 	  FND_MESSAGE.SET_NAME('OFA', 'FA_INCORRECT_LOCATION');
646 	  x_msg_data := fnd_message.get;
647 
648 	elsif error_code = 'EMPLOYEE' then
649 	  FND_MESSAGE.SET_NAME('OFA', 'FA_INCORRECT_ASSIGNED_TO');
650 	  x_msg_data := fnd_message.get;
651 
652 	elsif error_code = 'KEY' then
653 	  FND_MESSAGE.SET_NAME('OFA', 'FA_INCORRECT_ASSET_KEY');
654 	  FND_MESSAGE.SET_TOKEN('ASSET_KEY_CCID', l_asset_key_id, false);
655 	  x_msg_data := fnd_message.get;
656 
657 	elsif error_code = 'COST' then
658 	  FND_MESSAGE.SET_NAME('OFA', 'FA_FE_CANT_CALC_COST_RET');
659 	  x_msg_data := fnd_message.get;
660 
661 	elsif error_code = 'FROM ASSET' then
662 	  FND_MESSAGE.SET_NAME('OFA', 'FA_REV_FAILED');
663 	  FND_MESSAGE.SET_TOKEN('ASSET_NUMBER',
664 			l_from_asset_no , false);
665 	  x_msg_data := fnd_message.get;
666 
667 	elsif error_code = 'TO ASSET' then
668 	  FND_MESSAGE.SET_NAME('OFA', 'FA_REV_FAILED');
669 	  FND_MESSAGE.SET_TOKEN('ASSET_NUMBER',
670 			l_to_asset_no, false);
671 	  x_msg_data := fnd_message.get;
672 
673 	elsif error_code = 'DPIS' then
674 	  FND_MESSAGE.SET_NAME('OFA', 'FA_SHARED_CANNOT_FUTURE');
675 	  x_msg_data := fnd_message.get;
676 	end if;
677 
678 	x_return_status := 2;
679         Rollback;
680     When others then
681         x_msg_data := sqlerrm;
682 	x_return_status := 2;
683         Rollback;
684 
685 END CREATE_CRITERIA;
686 END FA_MASS_RET_PUB;