[Home] [Help]
PACKAGE BODY: APPS.FARX_C_WD
Source
1 PACKAGE BODY FARX_C_WD as
2 /* $Header: farxcwdb.pls 120.12.12010000.1 2008/07/28 13:23:13 appldev ship $ */
3
4
5 PROCEDURE WHATIF (
6 errbuf out nocopy varchar2,
7 retcode out nocopy varchar2,
8 argument1 in varchar2, -- book
9 argument20 in varchar2, -- set_of_books_id /* added for enhancement bug 3037321 */
10 argument2 in varchar2, -- begin_period
11 argument3 in varchar2, -- num_periods
12 argument4 in varchar2 default null, -- begin_asset
13 argument5 in varchar2 default null, -- end_asset
14 argument6 in varchar2 default null, -- begin_dpis
15 argument7 in varchar2 default null, -- end_dpis
16 argument8 in varchar2 default null, -- description
17 argument9 in varchar2 default null, -- category flex struct
18 argument10 in varchar2 default null, -- category_id
19 argument11 in varchar2 default null, -- new method
20 argument12 in varchar2 default null, -- new life in months
21 argument13 in varchar2 default null, -- new rate
22 argument14 in varchar2 default null, -- new prorate convention
23 argument15 in varchar2 default null, -- new salvage percentage
24 argument16 in varchar2 default null, -- AMORTIZED yes_no
25 argument17 in varchar2 default null, -- fully reserved yes_no
26 argument18 in varchar2 default 'NO', -- hypothetical NO
27 argument19 in varchar2 default null, -- bonus_rule
28 argument21 in varchar2 default null,
29 argument22 in varchar2 default null,
30 argument23 in varchar2 default null,
31 argument24 in varchar2 default null,
32 argument25 in varchar2 default null,
33 argument26 in varchar2 default null,
34 argument27 in varchar2 default null,
35 argument28 in varchar2 default null,
36 argument29 in varchar2 default null,
37 argument30 in varchar2 default null,
38 argument31 in varchar2 default null,
39 argument32 in varchar2 default null,
40 argument33 in varchar2 default null,
41 argument34 in varchar2 default null,
42 argument35 in varchar2 default null,
43 argument36 in varchar2 default null,
44 argument37 in varchar2 default null,
45 argument38 in varchar2 default null,
46 argument39 in varchar2 default null,
47 argument40 in varchar2 default null,
48 argument41 in varchar2 default null,
49 argument42 in varchar2 default null,
50 argument43 in varchar2 default null,
51 argument44 in varchar2 default null,
52 argument45 in varchar2 default null,
53 argument46 in varchar2 default null,
54 argument47 in varchar2 default null,
55 argument48 in varchar2 default null,
56 argument49 in varchar2 default null,
57 argument50 in varchar2 default null,
58 argument51 in varchar2 default null,
59 argument52 in varchar2 default null,
60 argument53 in varchar2 default null,
61 argument54 in varchar2 default null,
62 argument55 in varchar2 default null,
63 argument56 in varchar2 default null,
64 argument57 in varchar2 default null,
65 argument58 in varchar2 default null,
66 argument59 in varchar2 default null,
67 argument60 in varchar2 default null,
68 argument61 in varchar2 default null,
69 argument62 in varchar2 default null,
70 argument63 in varchar2 default null,
71 argument64 in varchar2 default null,
72 argument65 in varchar2 default null,
73 argument66 in varchar2 default null,
74 argument67 in varchar2 default null,
75 argument68 in varchar2 default null,
76 argument69 in varchar2 default null,
77 argument70 in varchar2 default null,
78 argument71 in varchar2 default null,
79 argument72 in varchar2 default null,
80 argument73 in varchar2 default null,
81 argument74 in varchar2 default null,
82 argument75 in varchar2 default null,
83 argument76 in varchar2 default null,
84 argument77 in varchar2 default null,
85 argument78 in varchar2 default null,
86 argument79 in varchar2 default null,
87 argument80 in varchar2 default null,
88 argument81 in varchar2 default null,
89 argument82 in varchar2 default null,
90 argument83 in varchar2 default null,
91 argument84 in varchar2 default null,
92 argument85 in varchar2 default null,
93 argument86 in varchar2 default null,
94 argument87 in varchar2 default null,
95 argument88 in varchar2 default null,
96 argument89 in varchar2 default null,
97 argument90 in varchar2 default null,
98 argument91 in varchar2 default null,
99 argument92 in varchar2 default null,
100 argument93 in varchar2 default null,
101 argument94 in varchar2 default null,
102 argument95 in varchar2 default null,
103 argument96 in varchar2 default null,
104 argument97 in varchar2 default null,
105 argument98 in varchar2 default null,
106 argument99 in varchar2 default null,
107 argument100 in varchar2 default null) is
108
109
110 -- Arguments as follows: ('M' indicated mandatory; others are optional)
111 -- argument1 book (M)
112 -- argument2 begin_period (M)
113 -- argument3 num_periods (M)
114 -- argument4 begin_asset
115 -- argument5 end_asset
116 -- argument6 begin_dpis
117 -- argument7 end_dpis
118 -- argument8 description
119 -- argument9 category_id
120 -- argument11 new method
121 -- argument12 new life
122 -- argument13 new adjusted_rate
123 -- argument14 new prorate convention
124 -- argument15 new salvage percentage
125 -- argument16 EXPENSED or AMORTIZED
126 -- argument17 check fully reserved assets flag
127 -- argument18 hypothetical not used
128 -- argument19 bonus_rule
129 -- argument20 set_of_books_id (M) /* added for enhancement bug 3037321 */
130
131 h_request_id number;
132 h_user_id varchar2(20);
133 ret boolean;
134
135 h_assets fa_std_types.number_tbl_type;
136 h_num_assets number;
137
138 h_begin_dpis date;
139 h_date_in_service date;
140 h_end_dpis date;
141 h_begin_str varchar2(25);
142 h_end_str varchar2(25);
143 h_date_format varchar2(25);
144
145 h_begin_per varchar2(25);
146
147 h_exp_amt varchar2(10);
148 h_cat_id number;
149 h_cat_struct number;
150
151 h_adj_rate number;
152
153 h_count number;
154
155 h_sqlstmt varchar2(400);
156
157
158 h_mesg_name varchar2(30);
159 h_mesg_str varchar2(2000);
160 h_param_error varchar2(30);
161 h_value_error varchar2(240);
162
163 h_check varchar2(5);
164
165 l_mode varchar2(10); -- This stores value of h_exp_amt or 'PROJ'
166 -- if user didn't provide any parameters.
167
168 begin
169
170 -- dbms_session.reset_package;
171
172 -- VALIDATE THE ARGUMENTS. SINCE RX CLIENT CURRENTLY DOES NO
173 -- VALIDATION, USER CAN ENTER GARBAGE STRINGS IF THEY WANT. NEED
174 -- TO VALIDATE EVERYTHING RIGHT HERE.
175
176
177 -- BOOK
178
179 h_mesg_name := 'FA_WHATIF_PARAM_ERROR';
180 h_value_error := argument1;
181 h_param_error := 'BOOK';
182
183 h_count := 0;
184
185 if argument1 is null then
186
187 fnd_message.set_name('OFA','FA_WHATIF_PARAM_REQUIRED');
188 h_mesg_str := fnd_message.get;
189 fa_rx_conc_mesg_pkg.log(h_mesg_str);
190
191 retcode := 2;
192 return;
193
194 end if;
195
196 select count(*) into h_count
197 from fa_book_controls
198 where book_Type_code = argument1 and rownum < 2;
199
200 if h_count = 0 then
201 fnd_message.set_name('OFA','FA_WHATIF_PARAM_REQUIRED');
202 h_mesg_str := fnd_message.get;
203 fa_rx_conc_mesg_pkg.log(h_mesg_str);
204
205 retcode := 2;
206 return;
207 end if;
208
209 h_mesg_name := 'FA_WHATIF_PARAM_ERROR';
210 h_value_error := argument20;
211 h_param_error := 'SET OF BOOKS ID';
212
213 -- Enhancement Bug 3037321
214 FARX_C_WD.sob_id := to_number(argument20);
215 select mrc_sob_type_code,currency_code
216 into FARX_C_WD.mrc_sob_type,FARX_C_WD.currency
217 from gl_sets_of_books
218 where set_of_books_id = to_number(argument20);
219
220 -- Enhancement Bug 3037321
221 if(FARX_C_WD.mrc_sob_type = 'R') then
222 fnd_client_info.set_currency_context(FARX_C_WD.sob_id);
223 end if;
224
225 -- PERIOD NAME
226 h_mesg_name := 'FA_WHATIF_PARAM_ERROR';
227 h_value_error := argument2;
228 h_param_error := 'PERIOD NAME';
229
230
231 if argument2 is null then
232 fnd_message.set_name('OFA','FA_WHATIF_PARAM_REQUIRED');
233 h_mesg_str := fnd_message.get;
234 fa_rx_conc_mesg_pkg.log(h_mesg_str);
235
236 retcode := 2;
237 return;
238 end if;
239
240 h_count := 0;
241 select count(*) into h_count
242 from fa_book_controls bc, fa_calendar_periods cp
243 where bc.book_type_code = argument1
244 and bc.deprn_calendar = cp.calendar_type
245 and cp.period_name = argument2 and rownum < 2;
246
247 if h_count = 0 then
248
249 fnd_message.set_name('OFA','FA_WHATIF_PARAM_REQUIRED');
250 h_mesg_str := fnd_message.get;
251 fa_rx_conc_mesg_pkg.log(h_mesg_str);
252
253 retcode := 2;
254 return;
255 end if;
256
257
258
259 -- NUM PERIODS
260
261 if ((argument3 is null) OR (to_number(argument3) <= 0 OR
262 to_number(argument3) <> floor(to_number(argument3)))) then
263
264 fnd_message.set_name('OFA','FA_WHATIF_PARAM_REQUIRED');
265 h_mesg_str := fnd_message.get;
266 fa_rx_conc_mesg_pkg.log(h_mesg_str);
267
268 retcode := 2;
269 return;
270 end if;
271
272
273 -- Make sure calendar is defined for duration of projection.
274
275 select count(*) into h_count
276 from fa_book_controls bc, fa_calendar_types ct,
277 fa_calendar_periods cp
278 where bc.book_type_code = argument1
279 and bc.deprn_calendar = ct.calendar_type
280 and ct.calendar_type = cp.calendar_type
281 and cp.start_date >= (select cp1.start_date from
282 fa_calendar_periods cp1
283 where cp1.calendar_type = cp.calendar_type
284 and cp1.period_name = argument2);
285
286 if h_count < to_number(argument3) then
287 fnd_message.set_name('OFA','FA_PROJ_CALS_UNDEFINED');
288 h_mesg_str := fnd_message.get;
289 fa_rx_conc_mesg_pkg.log(h_mesg_str);
290 retcode := 2;
291 return;
292 end if;
293
294
295 --
296 -- NOT hypothetical case
297 --
298 if (upper(argument18) in ('NO', 'N')) then
299
300 -- BEGIN/END ASSET
301
302 if (argument4 is not null and argument5 is not null AND
303 argument5 < argument4) then
304
305 fnd_message.set_name('OFA','FA_WHATIF_BEGIN_END_ASSET');
306 h_mesg_str := fnd_message.get;
307 fa_rx_conc_mesg_pkg.log(h_mesg_str);
308
309 retcode := 2;
310 return;
311 end if;
312
313 -- NOTE: DATE FORMATTING PROBLEMS SHOULD BE FEW AND FAR BETWEEN.
314 -- THIS IS ONE OF THE FEW THINGS THAT THE RX CLIENT CURRENTLY CHECKS
315 -- FOR. MOREOVER, CM WILL PUT ANY UNHANDLED DATE FORMATTING
316 -- EXCEPTIONS INTO THE LOG FILE.
317
318 -- CATEGORY: FIRST GET CATEGORY_ID, THEN CHECK IF EXISTS, ENABLED, ETC.
319
320 if (argument10 is not null) then
321 h_cat_id := to_number(argument10);
322 end if;
323
324 /* ********************************************************************
325 Commenting out all code to validate and get category_id since this
326 is passed from SRS in argument 10
327
328 h_mesg_name := 'FA_FE_LOOKUP_IN_SYSTEM_CTLS';
329 select category_flex_structure into h_cat_struct
330 from fa_system_controls;
331
332 h_mesg_name := 'FA_WHATIF_PARAM_ERROR';
333 h_value_error := argument9;
334 h_param_error := 'CATEGORY';
335
336 if fnd_flex_keyval.validate_segs (
337 operation => 'CHECK_COMBINATION',
338 appl_short_name => 'OFA',
339 key_flex_code => 'CAT#',
340 structure_number => h_cat_struct,
341 concat_segments => argument9,
342 values_or_ids => 'V',
343 validation_date =>SYSDATE,
344 displayable => 'ALL',
345 data_set => NULL,
346 vrule => NULL,
347 where_clause => NULL,
348 get_columns => NULL,
349 allow_nulls => FALSE,
350 allow_orphans => FALSE,
351 resp_appl_id => NULL,
352 resp_id => NULL,
353 user_id => NULL) = FALSE then
354
355 fnd_message.set_name('OFA','FA_WHATIF_NO_CAT');
356 fnd_message.set_token('CAT',argument9,FALSE);
357 h_mesg_str := fnd_message.get;
358 fa_rx_conc_mesg_pkg.log(h_mesg_str);
359
360 retcode := 2;
361 return;
362 end if;
363 h_cat_id := fnd_flex_keyval.combination_id;
364 h_count := 0;
365
366 select count(*) into h_count from fa_categories cat,
367 fa_category_books cb
368 where cat.category_id = h_cat_id
369 and cat.enabled_flag = 'Y' and cat.capitalize_flag = 'YES'
370 and sysdate between nvl(cat.start_date_active,sysdate-1) and
371 nvl(cat.end_date_active,sysdate+1)
372 and cat.category_id = cb.category_id
373 and cb.book_type_code = argument1 and rownum < 2;
374
375 if h_count = 0 then
376 fnd_message.set_name('OFA','FA_WHATIF_CAT_NOT_SET_UP');
377 fnd_message.set_token('CAT',argument9,FALSE);
378 h_mesg_str := fnd_message.get;
379 fa_rx_conc_mesg_pkg.log(h_mesg_str);
380
381 retcode := 2;
382 return;
383 end if;
384 end if;
385 ********************************************************************* */
386
387
388 -- CHECK_FULLY_RESERVED_FLAG
389
390 h_mesg_name := 'FA_WHATIF_PARAM_ERROR';
391 h_value_error := argument17;
392 h_param_error := 'FULLY_RSVD_FLAG';
393
394 if (argument17 not in ('Y','N','YES','NO')) then
395
396 fnd_message.set_name('OFA',h_mesg_name);
397 if h_mesg_name = 'FA_WHATIF_PARAM_ERROR' then
398 fnd_message.set_token('VALUE',h_value_error,FALSE);
399 fnd_message.set_token('PARAM',h_param_error,FALSE);
400 end if;
401 h_mesg_str := fnd_message.get;
402 fa_rx_conc_mesg_pkg.log(h_mesg_str);
403 retcode := 2;
404
405 return;
406 end if;
407
408 -- CONVERT DPIS'S INTO DATE-TYPED VARIABLES
412 h_begin_dpis := to_date(argument6, 'YYYY/MM/DD HH24:MI:SS');
409 -- THIS IS THE APPS STANDARD. SUBMISSION FORM DOES THE SAME THING.
410
411 if (argument6 is not null) then
413 end if;
414
415 if (argument7 is not null) then
416 h_end_dpis := to_date(argument7, 'YYYY/MM/DD HH24:MI:SS');
417 end if;
418
419 if (argument6 is not null and argument7 is not null) then
420 if h_end_dpis < h_begin_dpis then
421 fnd_message.set_name('OFA','FA_SHARED_BAD_END_DATE');
422 h_mesg_str := fnd_message.get;
423 fa_rx_conc_mesg_pkg.log(h_mesg_str);
424 retcode := 2;
425 return;
426 end if;
427 end if;
428
429 end if; -- NOT hypothetical case
430
431 -- METHOD
432 h_mesg_name := 'FA_WHATIF_PARAM_ERROR';
433 h_value_error := argument10;
434 h_param_error := 'METHOD';
435
436 if (argument11 is not null) then
437
438
439 h_count := 0;
440 select count(*) into h_count
441 from fa_methods
442 where method_code = argument11 and rownum < 2;
443
444 if h_count = 0 then
445 fnd_message.set_name('OFA','FA_WHATIF_NO_METHOD');
446 fnd_message.set_token('METHOD',argument11,FALSE);
447 h_mesg_str := fnd_message.get;
448 fa_rx_conc_mesg_pkg.log(h_mesg_str);
449
450 retcode := 2;
451 return;
452 end if;
453 end if;
454
455
456
457 if (argument11 is not null) then
458
459 -- LIFE
460 h_mesg_name := 'FA_WHATIF_PARAM_ERROR';
461 h_value_error := argument12;
462 h_param_error := 'LIFE';
463
464 h_count := 0;
465 select count(*) into h_count from fa_methods
466 where method_code = argument11
467 and rate_source_rule in ('TABLE','CALCULATED','FORMULA')
468 and rownum < 2;
469
470 if h_count > 0 then -- this is a life-based method
471
472 if (argument12 is null) then
473
474 fnd_message.set_name('OFA','FA_MASSCHG_LIFE_BASED_METHOD');
475 h_mesg_str := fnd_message.get;
476 fa_rx_conc_mesg_pkg.log(h_mesg_str);
477
478 retcode := 2;
479 return;
480 end if;
481
482 h_count := 0;
483 select count(*) into h_count from fa_methods
484 where method_code = argument11 and life_in_months = to_number(argument12)
485 and rownum < 2;
486
487 if h_count = 0 then
488 fnd_message.set_name('OFA','FA_SHARED_INVALID_METHOD_LIFE');
489 h_mesg_str := fnd_message.get;
490 fa_rx_conc_mesg_pkg.log(h_mesg_str);
491
492 retcode := 2;
493 return;
494 end if;
495
496 if (argument13 is not null) then
497 fnd_message.set_name('OFA','FA_METHOD_NO_RATES');
498 h_mesg_str := fnd_message.get;
499 fa_rx_conc_mesg_pkg.log(h_mesg_str);
500
501 retcode := 2;
502 return;
503
504 end if;
505
506 end if;
507
508 -- RATE
509 h_mesg_name := 'FA_WHATIF_PARAM_ERROR';
510 h_value_error := argument13;
511 h_param_error := 'RATE';
512
513
514 h_count := 0;
515 select count(*) into h_count from fa_methods m
516 where m.method_code = argument11
517 and m.rate_source_rule = 'FLAT' and rownum < 2;
518
519 if h_count > 0 then -- this is a rate-based method
520
521 if (argument13 is null) then
522 fnd_message.set_name('OFA','FA_MASSCHG_RATE_BASED_METHOD');
523 h_mesg_str := fnd_message.get;
524 fa_rx_conc_mesg_pkg.log(h_mesg_str);
525
526 retcode := 2;
527 return;
528 end if;
529
530 h_adj_rate := to_number(argument13) / 100;
531
532 h_count := 0;
533 select count(*) into h_count from fa_methods m, fa_flat_rates r
534 where m.method_code = argument11
535 and m.method_id = r.method_id
536 and r.adjusted_rate = h_adj_rate and rownum < 2;
537
538 if h_count = 0 then
539 fnd_message.set_name('OFA','FA_SHARED_INVALID_METHOD_RATE');
540 h_mesg_str := fnd_message.get;
541 fa_rx_conc_mesg_pkg.log(h_mesg_str);
542
543 retcode := 2;
544 return;
545
546 end if;
547
548 if (argument12 is not null) then
549 fnd_message.set_name('OFA','FA_METHOD_NO_LIFE');
550 h_mesg_str := fnd_message.get;
551 fa_rx_conc_mesg_pkg.log(h_mesg_str);
552
553 retcode := 2;
554 return;
555
556
557 end if;
558
559 end if;
560
561 end if;
562
563 -- PRORATE CONVENTION
564
565 h_mesg_name := 'FA_WHATIF_PARAM_ERROR';
566 h_value_error := argument14;
567 h_param_error := 'CONVENTION';
568
569 if argument14 is not null then
570
571 h_count := 0;
572 select count(*) into h_count from fa_conventions
573 where prorate_convention_code = argument14 and rownum < 2;
574
575 if h_count = 0 then
576 fnd_message.set_name('OFA','FA_WHATIF_NO_CONVENTION');
577 fnd_message.set_token('CONV',argument14,FALSE);
578 h_mesg_str := fnd_message.get;
579 fa_rx_conc_mesg_pkg.log(h_mesg_str);
580
581 retcode := 2;
582 return;
583 end if;
584 end if;
585
589 h_value_error := argument15;
586 -- SALVAGE_VALUE_PERCENTAGE
587
588 h_mesg_name := 'FA_WHATIF_PARAM_ERROR';
590 h_param_error := 'SALVAGE VALUE';
591
592 if argument15 is not null then
593
594 if (to_number(argument15) < 0 OR to_number(argument15) > 100) then
595 fnd_message.set_name('OFA','FA_SHARED_BAD_PERCENT');
596 h_mesg_str := fnd_message.get;
597 fa_rx_conc_mesg_pkg.log(h_mesg_str);
598
599 retcode := 2;
600 return;
601 end if;
602 end if;
603
604 -- AMORTIZE_FLAG
605
606 h_mesg_name := 'FA_WHATIF_PARAM_ERROR';
607 h_value_error := argument16;
608 h_param_error := 'AMORTIZE_FLAG';
609
610
611 if (upper(argument16) not in ('Y','N','YES','NO','EXPENSED','AMORTIZED'))
612 then
613
614 fnd_message.set_name('OFA',h_mesg_name);
615 if h_mesg_name = 'FA_WHATIF_PARAM_ERROR' then
616 fnd_message.set_token('VALUE',h_value_error,FALSE);
617 fnd_message.set_token('PARAM',h_param_error,FALSE);
618 end if;
619 h_mesg_str := fnd_message.get;
620 fa_rx_conc_mesg_pkg.log(h_mesg_str);
621 retcode := 2;
622
623 return;
624
625 end if;
626
627
628 -- USER_ID
629
630 /* ***************************************************
631 h_mesg_name := 'FA_WHATIF_PARAM_ERROR';
632 h_value_error := argument17;
633 h_param_error := 'USER_ID';
634
635 h_count := 0;
636 select count(*) into h_count from fnd_user
637 where user_id = to_number(argument17) and rownum < 2;
638
639 if (h_count = 0 and to_number(nvl(argument17,'0')) <> 0) then
640
641 fnd_message.set_name('OFA',h_mesg_name);
642 if h_mesg_name = 'FA_WHATIF_PARAM_ERROR' then
643 fnd_message.set_token('VALUE',h_value_error,FALSE);
644 fnd_message.set_token('PARAM',h_param_error,FALSE);
645 end if;
646 h_mesg_str := fnd_message.get;
647 fa_rx_conc_mesg_pkg.log(h_mesg_str);
648 retcode := 2;
649 return;
650 end if;
651 ******************************************************* */
652
653 h_request_id := fnd_global.conc_request_id;
654 fnd_profile.get('USER_ID',h_user_id);
655
656 -- CHECK AMORTIZE_FLAG
657
658 if (upper(argument16) in ('YES','Y')) then h_exp_amt := 'AMORTIZED';
659 elsif (upper(argument16) in ('NO','N')) then h_exp_amt := 'EXPENSED';
660 elsif (argument16 is null) then h_exp_amt := 'EXPENSED';
661 else h_exp_amt := upper(argument16);
662 end if;
663
664
665 -- BONUS RULE
666
667 h_mesg_name := 'FA_WHATIF_PARAM_ERROR';
668 h_value_error := argument19;
669 h_param_error := 'BONUS RULE';
670
671 if argument19 is not null then
672
673 h_count := 0;
674 select count(*) into h_count from fa_bonus_rules
675 where bonus_rule = argument19 and rownum < 2;
676
677 if h_count = 0 then
678
679
680 fnd_message.set_name('OFA',h_mesg_name);
681 if h_mesg_name = 'FA_WHATIF_PARAM_ERROR' then
682 fnd_message.set_token('VALUE',h_value_error,FALSE);
683 fnd_message.set_token('PARAM',h_param_error,FALSE);
684 end if;
685 h_mesg_str := fnd_message.get;
686 fa_rx_conc_mesg_pkg.log(h_mesg_str);
687 retcode := 2;
688 return;
689
690 end if;
691 end if;
692
693 -- NOT hypothetical case
694 if (upper(argument18) in ('NO', 'N')) then
695
696 -- If user doesn't provide value for any of following parameter
697 -- user just wants to see projected amount so any validation in
698 -- whatif_get_assets should not be performed.
699 --
700 -- method => argument11 life => argument12
701 -- adjusted_rate => h_adj_rate prorate_conv => argument14
702 -- salvage_pct => argument15 bonus_rule => argument19
703 --
704 if (argument11 is null) and
705 (argument12 is null) and
706 (h_adj_rate is null) and
707 (argument14 is null) and
708 (argument15 is null) and
709 (argument19 is null) then
710 l_mode := 'PROJ';
711 else
712 l_mode := h_exp_amt;
713 end if;
714
715 -- GENERATE LIST OF ASSETS ON WHICH TO PERFORM WHAT-IF
716
717 h_mesg_name := 'FA_WHATIF_GET_ASSETS_ERR';
718
719 ret := fa_whatif_deprn2_pkg.whatif_get_assets (
720 X_book => argument1,
721 X_begin_asset => argument4,
722 X_end_asset => argument5,
723 X_begin_dpis => h_begin_dpis,
724 X_end_dpis => h_end_dpis,
725 X_description => argument8,
726 X_category_id => h_cat_id,
727 X_mode => l_mode,
728 X_rsv_flag => argument17,
729 X_good_assets => h_assets,
730 X_num_good => h_num_assets,
731 retcode => retcode,
732 errbuf => errbuf);
733
734 -- IF NO ASSETS RETURNED, EXIT WITH WARNING.
735 -- NO NEED TO RUN WHATIF. NO ROWS WOULD GET GENERATED ANYWAYS.
736
737 if h_num_assets = 0 then
738 fnd_message.set_name('OFA','FA_WHATIF_NO_ASSETS');
739 h_mesg_str := fnd_message.get;
743 return;
740 fa_rx_conc_mesg_pkg.log(h_mesg_str);
741
742 retcode := 1;
744 end if;
745
746 -- DO WHAT-IF
747 h_mesg_name := 'FA_WHATIF_RUN_WHATIF_ERR';
748
749 ret := fa_whatif_deprn2_pkg.whatif_deprn (
750 X_assets => h_assets,
751 X_num_assets => h_num_assets,
752 X_method => argument11,
753 X_life => to_number(argument12),
754 X_adjusted_rate => h_adj_rate,
755 X_prorate_conv => argument14,
756 X_salvage_pct => to_number(argument15),
757 X_exp_amt => h_exp_amt,
758 X_book => argument1,
759 X_start_per => argument2,
760 X_num_per => to_number(argument3),
761 X_request_id => h_request_id,
762 X_user_id => to_number(h_user_id),
763 X_hypo => upper(argument18),
764 X_dpis => NULL,
765 X_cost => NULL,
766 X_deprn_rsv => NULL,
767 X_cat_id => NULL,
768 X_bonus_rule => argument19,
769 retcode => retcode,
770 errbuf => errbuf);
771
772 -- retcode := 0;
773
774 fa_whatif_deprn_pkg.g_deprn.delete;
775
776 else -- hypothetical case
777
778 --fa_rx_conc_mesg_pkg.log('calling whatif deprn package');
779
780 if (argument4 is not null) then
781 h_date_in_service := fnd_date.canonical_to_date(argument4);
782 end if;
783
784 if (argument7 is not null) then
785 h_cat_id := to_number(argument7);
786 end if;
787
788 /* *********************************************************
789 h_count := 0;
790
791 h_mesg_name := 'FA_FE_LOOKUP_IN_SYSTEM_CTLS';
792 select category_flex_structure into h_cat_struct
793 from fa_system_controls;
794
795 h_mesg_name := 'FA_WHATIF_PARAM_ERROR';
796 h_value_error := argument7;
797 h_param_error := 'CATEGORY';
798
799 if fnd_flex_keyval.validate_segs (
800 operation => 'CHECK_COMBINATION',
801 appl_short_name => 'OFA',
802 key_flex_code => 'CAT#',
803 structure_number => h_cat_struct,
804 concat_segments => argument7,
805 values_or_ids => 'V',
806 validation_date =>SYSDATE,
807 displayable => 'ALL',
808 data_set => NULL,
809 vrule => NULL,
810 where_clause => NULL,
811 get_columns => NULL,
812 allow_nulls => FALSE,
813 allow_orphans => FALSE,
814 resp_appl_id => NULL,
815 resp_id => NULL,
816 user_id => NULL) = FALSE then
817
818 fnd_message.set_name('OFA','FA_WHATIF_NO_CAT');
819 fnd_message.set_token('CAT',argument7,FALSE);
820 h_mesg_str := fnd_message.get;
821 fa_rx_conc_mesg_pkg.log(h_mesg_str);
822
823 retcode := 2;
824 return;
825 end if;
826 h_cat_id := fnd_flex_keyval.combination_id;
827
828 h_count := 0;
829
830 select count(*) into h_count from fa_categories cat,
831 fa_category_books cb
832 where cat.category_id = h_cat_id
833 and cat.enabled_flag = 'Y' and cat.capitalize_flag = 'YES'
834 and sysdate between nvl(cat.start_date_active,sysdate-1) and
835 nvl(cat.end_date_active,sysdate+1)
836 and cat.category_id = cb.category_id
837 and cb.book_type_code = argument1 and rownum < 2;
838
839 if h_count = 0 then
840 fnd_message.set_name('OFA','FA_WHATIF_CAT_NOT_SET_UP');
841 fnd_message.set_token('CAT',argument7,FALSE);
842 h_mesg_str := fnd_message.get;
843 fa_rx_conc_mesg_pkg.log(h_mesg_str);
844
845 retcode := 2;
846 return;
847 end if;
848 end if;
849 ********************************************************** */
850
851 --fa_rx_conc_mesg_pkg.log(h_date_in_service);
852
853 ret := fa_whatif_deprn2_pkg.whatif_deprn (
854 X_assets => h_assets,
855 X_num_assets => NULL,
856 X_method => argument11,
857 X_life => to_number(argument12),
858 X_adjusted_rate => h_adj_rate,
859 X_prorate_conv => argument14,
860 X_salvage_pct => to_number(argument15),
861 X_exp_amt => h_exp_amt,
862 X_book => argument1,
863 X_start_per => argument2,
864 X_num_per => to_number(argument3),
865 X_request_id => h_request_id,
866 X_user_id => to_number(h_user_id),
867 X_hypo => upper(argument18),
868 X_dpis => h_date_in_service ,
869 X_cost => to_number(argument5),
870 X_deprn_rsv => to_number(argument6),
871 X_cat_id => h_cat_id,
872 X_bonus_rule => argument19,
873 retcode => retcode,
874 errbuf => errbuf);
875
876 end if; -- NOT hypothetical case
877
878 exception when others then
879
880 fa_whatif_deprn_pkg.g_deprn.delete;
881
882 if SQLCODE <> 0 then
883 fa_Rx_conc_mesg_pkg.log(SQLERRM);
884 end if;
885
886 fnd_message.set_name('OFA',h_mesg_name);
887 if h_mesg_name = 'FA_WHATIF_PARAM_ERROR' then
888 fnd_message.set_token('VALUE',h_value_error,FALSE);
889 fnd_message.set_token('PARAM',h_param_error,FALSE);
890 end if;
891 h_mesg_str := fnd_message.get;
892 fa_rx_conc_mesg_pkg.log(h_mesg_str);
893
894
895
896 retcode := 2;
897
898 end whatif;
899
900 END FARX_C_WD;