DBA Data[Home] [Help]

PACKAGE BODY: APPS.FA_ASSET_SUMM_RPT_PKG

Source


1 PACKAGE BODY FA_ASSET_SUMM_RPT_PKG AS
2 -- $Header: FASSUMRPTPB.pls 120.7.12020000.2 2012/07/23 10:10:55 rmandali ship $
3 FUNCTION ASSIGNED_UNITS(p_asset_id_in IN NUMBER
4                        ,p_ccid_in  IN NUMBER
5                        ,p_transaction_units_in IN NUMBER  /* what does this parameter do? */
6                        ,p_original_cost_in IN NUMBER
7                        ,p_units_in  IN NUMBER)
8 RETURN NUMBER
9 IS
10   ln_units  NUMBER;
11   ln_amount NUMBER;
12 BEGIN
13 
14   SELECT NVL(SUM(fdh.units_assigned),0)
15   INTO   ln_units
16   FROM   fa_distribution_history fdh
17   WHERE  fdh.asset_id            = p_asset_id_in
18   AND    fdh.book_type_code      = P_DIST_SOURCE_BOOK
19   AND    fdh.code_combination_id = p_ccid_in
20   AND    fdh.transaction_header_id_in =
21       (SELECT MAX(fdh1.transaction_header_id_in)
22        FROM   fa_distribution_history fdh1
23              ,fa_transaction_headers  fth1
24        WHERE  fdh1.asset_id            = p_asset_id_in
25        AND    fdh1.book_type_code      = P_DIST_SOURCE_BOOK   /* why P_BOOK_NAME it should be P_BOOK_TYPE_CODE, both are not synonymous */
26        AND    fdh1.code_combination_id = p_ccid_in
27        AND    fdh1.transaction_header_id_in = fth1.transaction_header_id
28        AND    fth1.date_effective <= gd_per_close_date);
29 
30   SELECT (p_original_cost_in/p_units_in) * ln_units
31   INTO   ln_amount
32   FROM   DUAL;
33   /* Dev comments:
34      what happened to rounding of the amount!!
35   */
36   RETURN (ln_amount);
37 END ASSIGNED_UNITS;
38 --=====================================================================
39 --=====================================================================
40 
41 FUNCTION CURRENT_AMOUNT(p_transaction_header_id IN NUMBER
42                         ,p_asset_id_in IN NUMBER
43                         ,p_category_id_in IN NUMBER
44                         ,p_asset_type_in IN VARCHAR2
45                         ,p_ccid_in  IN NUMBER
46                         ,p_location_id_in IN NUMBER)
47 RETURN NUMBER
48 IS
49   ln_amount       NUMBER;
50 BEGIN
51   BEGIN
52   fnd_file.put_line(fnd_file.log,'Begin Original Amount::');
53 
54     SELECT NVL(fdd.cost,0)
55     INTO   ln_amount
56     FROM   fa_deprn_detail         fdd
57           ,fa_distribution_history fdh
58           ,fa_asset_history        fah
59           ,fa_transaction_headers  fth
60     WHERE  fdd.period_counter = (
61               SELECT MAX(fdd1.period_counter)
62               FROM   fa_deprn_detail fdd1
63               WHERE  fdd1.book_type_code  = P_BOOK_NAME
64               AND    fdd1.distribution_id = fdd.distribution_id
65               AND    fdd1.asset_id        = fdd.asset_id
66               AND    fdd1.period_counter  < gn_lex_begin_period_counter)
67     AND    fdd.book_type_code            = P_BOOK_NAME
68     AND    fdh.asset_id                  = fth.asset_id
69     AND    fdh.transaction_header_id_in  = p_transaction_header_id
70     AND    fah.category_id               = p_category_id_in
71     AND    fah.asset_type                = p_asset_type_in
72     AND    fah.asset_id                  = p_asset_id_in
73     AND    fdd.asset_id                  = p_asset_id_in
74     AND    fdd.distribution_id           = fdh.distribution_id
75     AND    fah.asset_type                IN ('CAPITALIZED','CIP')
76     AND    fdh.location_id               = p_location_id_in
77     AND  ((fdh.date_effective               >= fah.date_effective
78           AND fdh.date_effective            < NVL(fah.date_ineffective, fdh.date_effective + 1)
79           AND fdh.transaction_header_id_in  = fth.transaction_header_id)
80          OR(fah.date_effective             > fdh.date_effective
81              AND fah.transaction_header_id_in  = fth.transaction_header_id
82          AND fth.transaction_type_code     = 'ADDITION'  /* CIP ADDITION is not considered?  */
83          AND fah.date_effective < gd_per_open_date))
84     AND    fdh.code_combination_id          = p_ccid_in
85     AND    fdd.distribution_id           = (
86               SELECT MAX(fdd1.distribution_id)
87               FROM   fa_deprn_detail fdd1
88                     ,fa_distribution_history fdh1
89               WHERE  fdd1.book_type_code      = fdd.book_type_code
90               AND    fdd1.asset_id            = fdd.asset_id
91               AND    fdd1.distribution_id     = fdh1.distribution_id
92               AND    fdh1.code_combination_id = fdh.code_combination_id
93               AND    fdh1.location_id         = p_location_id_in
94               AND    fdd1.period_counter      < gn_lex_begin_period_counter);
95   EXCEPTION
96     WHEN NO_DATA_FOUND THEN
97       ln_amount := 0;
98     WHEN OTHERS THEN
99       FND_FILE.PUT_LINE(FND_FILE.LOG,'In CURRENT_AMOUNT');
100 	  --RAISE;
101   END;
102   RETURN ln_amount;
103 END CURRENT_AMOUNT;
104 
105 --=====================================================================
106 --=====================================================================
107 
108 FUNCTION ADDITIONS_AMOUNT(p_transaction_header_id IN NUMBER
109                          ,p_asset_id_in IN NUMBER
110                          ,p_category_id_in IN NUMBER
111                          ,p_asset_type_in IN VARCHAR2
112                          ,p_ccid_in IN NUMBER
113                          ,p_location_id_in IN NUMBER
114                          ,p_fah_trx_header_id IN NUMBER)
115 RETURN NUMBER
116 IS
117   ln_amount       NUMBER;
118 BEGIN
119   BEGIN
120     SELECT NVL(SUM(NVL(DECODE(fadj.debit_credit_flag, 'CR', -1 * fadj.adjustment_amount
121                                              , fadj.adjustment_amount), 0)),0) additions
122     INTO   ln_amount
123     FROM   fa_transaction_headers  fth
124           ,fa_adjustments          fadj
125           ,fa_asset_history        fah
126 		  ,fa_distribution_history fdh
127     WHERE  fth.asset_id                = fah.asset_id
128     AND    fth.asset_id                = fdh.asset_id
129    	AND    fdh.distribution_id         = fadj.distribution_id
130     AND    fdh.transaction_header_id_in  = p_transaction_header_id
131     AND    fah.category_id             = p_category_id_in
132     AND    fah.asset_type              = p_asset_type_in
133     AND    fth.asset_id                = p_asset_id_in
134     AND    fth.book_type_code          = P_BOOK_NAME
135     AND    fadj.transaction_header_id  = fth.transaction_header_id
136     AND    ((fth.transaction_type_code IN ('CIP ADDITION','CIP ADJUSTMENT')
137              AND fah.asset_type       = 'CIP'
138              AND fadj.adjustment_type = 'CIP COST')
139            OR (fth.transaction_type_code = 'ADDITION' AND fah.asset_type       = 'CAPITALIZED'
140 		      AND fadj.adjustment_type = 'COST'))
141     AND    fth.transaction_date_entered <= NVL(gd_period_close_date,fth.transaction_date_entered)
142     AND    fadj.period_counter_adjusted BETWEEN gn_lex_begin_period_counter AND gn_lex_end_period_counter
143     AND    ((fdh.date_effective           >= fah.date_effective
144     AND    fdh.date_effective           < NVL(fah.date_ineffective, fdh.date_effective + 1))
145 	   OR    (fah.date_effective      > fdh.date_effective
146               AND fth.transaction_type_code = 'ADDITION'))
147 	AND    fah.transaction_header_id_in = p_fah_trx_header_id
148 	AND    fdh.code_combination_id      = p_ccid_in
149     AND    fdh.location_id               = p_location_id_in
150 	AND  (fah.asset_type <> 'CAPITALIZED' OR ((fah.asset_type='CAPITALIZED') AND (NOT EXISTS (-- Added these lines as part of the fix to the SR 7284007.992
151     SELECT 'Y'
152 	FROM  fa_asset_history  fah1
153 	WHERE fah1.asset_type='CIP'
154 	and   fah1.transaction_header_id_out = fah.transaction_header_id_in
155 	and   fah1.asset_id = fah.asset_id
156 	))));
157   EXCEPTION
158     WHEN NO_DATA_FOUND THEN
159       ln_amount := 0;
160     WHEN OTHERS THEN
161       FND_FILE.PUT_LINE(FND_FILE.LOG,'In ADDITIONS_AMOUNT');
162 	  --raise; /* why is this missed out? */   /* This is missed out as the program completes in error when run with few Null parameters*/
163   END;
164   /*  IF ln_amount IS NULL THEN   is this condition needed  if we add nvls to the above SUM statement?
165     ln_amount := 0;
166   END IF;*/
167   RETURN ln_amount;
168 END ADDITIONS_AMOUNT;
169 
170 --=====================================================================
171 --=====================================================================
172 
173 FUNCTION RETIREMENT_AMOUNT(p_transaction_header_id IN NUMBER
174                           ,p_asset_id_in IN NUMBER
175                           ,p_category_id_in IN NUMBER
176                           ,p_asset_type_in IN VARCHAR2
177                           ,p_ccid_in IN NUMBER
178                           ,p_location_id_in IN NUMBER)
179 RETURN NUMBER
180 IS
181   ln_amount       NUMBER := 0;
182 BEGIN
183   BEGIN
184     SELECT NVL(SUM(NVL(DECODE(fadj.debit_credit_flag, 'DR',(-1)*fadj.adjustment_amount,fadj.adjustment_amount), 0)),0) retirements
185     INTO   ln_amount
186     FROM   fa_books                fb
187           ,fa_transaction_headers  fth
188           ,fa_adjustments          fadj
189           ,fa_asset_history        fah
190           ,fa_distribution_history fdh
191     WHERE  fth.asset_id                 = fah.asset_id
192     AND    fth.asset_id                 = fdh.asset_id
193     AND    fah.asset_type               = p_asset_type_in
194     AND    fdh.distribution_id          = fadj.distribution_id
195     AND    fah.category_id              = p_category_id_in
196     AND    fdh.transaction_header_id_in  = p_transaction_header_id
197     AND    fth.book_type_code           = P_BOOK_NAME
198     AND    fb.asset_id                  = p_asset_id_in
199     AND    fdh.code_combination_id      = p_ccid_in
200     AND    fadj.transaction_header_id   = fth.transaction_header_id
201     AND    fth.transaction_type_code    IN ('FULL RETIREMENT', 'PARTIAL RETIREMENT', 'REINSTATEMENT')
202     AND    fadj.adjustment_type         IN ('COST', 'CIP COST')
203     AND    fadj.source_type_code        IN ('RETIREMENT', 'CIP RETIREMENT')
204     AND    fadj.period_counter_adjusted BETWEEN gn_lex_begin_period_counter AND gn_lex_end_period_counter
205     AND    fth.transaction_date_entered <= NVL(gd_period_close_date,fth.transaction_date_entered)
206     AND    fth.transaction_header_id    >= fah.transaction_header_id_in
207     AND    fth.transaction_header_id    < NVL(fah.transaction_header_id_out, fth.transaction_header_id + 1)
208     AND    fb.transaction_header_id_in  = fth.transaction_header_id
209     AND    fb.book_type_code            = P_BOOK_NAME
210     AND    fdh.location_id               = p_location_id_in;
211   EXCEPTION
212     WHEN NO_DATA_FOUND THEN
213       ln_amount := 0;
214     WHEN OTHERS THEN
215       FND_FILE.PUT_LINE(FND_FILE.LOG,'In RETIREMENT_AMOUNT');
216   END;
217  /* IF ln_amount IS NULL THEN   is this condition needed  if we add nvls to the above SUM statement?
218     ln_amount := 0;
219   END IF; */
220   RETURN ln_amount;
221 END RETIREMENT_AMOUNT;
222 
223 --=====================================================================
224 --=====================================================================
225 
226 FUNCTION CHANGES_OF_ACCOUNTS(p_transaction_header_id IN NUMBER
227                             ,p_asset_id_in IN NUMBER
228                             ,p_category_id_in IN NUMBER
229                             ,p_asset_type_in IN VARCHAR2
230                             ,p_ccid_in IN NUMBER
231                             ,p_location_id_in IN NUMBER
232 							,p_fah_trx_header_id IN NUMBER)
233 RETURN NUMBER
234 IS
235   ln_amount       NUMBER := 0;
236 BEGIN
237   BEGIN
238     SELECT NVL(SUM(x.all_transferred),0)
239     INTO   ln_amount
240     FROM   (
241         SELECT NVL(DECODE(fadj.debit_credit_flag, 'CR', -1 * fadj.adjustment_amount, fadj.adjustment_amount),0) all_transferred
242         FROM   fa_transaction_headers  fth
243               ,fa_adjustments          fadj
244               ,fa_asset_history        fah1
245               ,fa_distribution_history fdh
246         WHERE EXISTS (
247              SELECT 1
248               FROM   fa_deprn_detail fdd
249               WHERE  fdd.asset_id          = fth.asset_id
250               AND    fdd.book_type_code    = P_BOOK_NAME
251               AND    fdd.deprn_source_code = 'D'
252                     )
253         AND (fah1.asset_type = p_asset_type_in
254             OR (fah1.asset_type = 'CIP'
255               AND EXISTS (
256                   SELECT period_counter_capitalized
257                    FROM   fa_books fb2
258                    WHERE  fb2.asset_id                   = fah1.asset_id
259                    AND    fb2.book_type_code             = P_BOOK_NAME
260                    AND    fb2.period_counter_capitalized < gn_lex_begin_period_counter
261                        )))
262         AND   fadj.period_counter_adjusted BETWEEN gn_lex_begin_period_counter AND gn_lex_end_period_counter
263         AND   fadj.source_type_code        = 'TRANSFER'
264         AND   fadj.adjustment_type         IN ('COST', 'CIP COST')
265         AND   fth.transaction_type_code    <> 'TRANSFER IN'
266         AND   fth.asset_id                 = fah1.asset_id
267         AND   fth.asset_id                 = fdh.asset_id
268         AND   fdh.distribution_id          = fadj.distribution_id
269         AND    fdh.transaction_header_id_in  = p_transaction_header_id
270         AND   fth.asset_id                 = p_asset_id_in
271         AND   fah1.category_id             = p_category_id_in
272         AND   fth.book_type_code           = P_BOOK_NAME
273         AND   fadj.transaction_header_id   = fth.transaction_header_id
274         AND   fth.transaction_date_entered <= gd_period_close_date
275         AND   fadj.asset_id                = fah1.asset_id
276         AND   fadj.book_type_code          = P_BOOK_NAME
277         AND   fdh.code_combination_id      = p_ccid_in
278         AND   fdh.location_id              = p_location_id_in
279         AND   fth.transaction_header_id    >= fah1.transaction_header_id_in
280         AND   fth.transaction_header_id    < NVL(fah1.transaction_header_id_out, fth.transaction_header_id + 1)
281       UNION ALL  -- Added this query as part of the fix to the SR 7284007.992
282         SELECT NVL(SUM(NVL(DECODE(fadj.debit_credit_flag, 'CR', -1 * fadj.adjustment_amount
283                                              , fadj.adjustment_amount),0)),0) all_transferred
284     FROM   fa_transaction_headers  fth
285           ,fa_adjustments          fadj
286           ,fa_asset_history        fah
287           ,fa_distribution_history fdh
288     WHERE  fth.asset_id                = fah.asset_id
289     AND    fth.asset_id                = fdh.asset_id
290     AND    fdh.distribution_id         = fadj.distribution_id
291     AND    fdh.transaction_header_id_in  = p_transaction_header_id
292     AND    fah.category_id             = p_category_id_in
293     AND    fah.asset_type              = p_asset_type_in
294     AND    fth.asset_id                = p_asset_id_in
295     AND    fth.book_type_code          = P_BOOK_NAME
296     AND    fadj.transaction_header_id  = fth.transaction_header_id
297     AND    fth.transaction_type_code = 'ADDITION'
298 	AND    fah.asset_type       = 'CAPITALIZED'
299     AND    fadj.adjustment_type = 'COST'
300     AND    fth.transaction_date_entered <= NVL(gd_period_close_date,fth.transaction_date_entered)
301     AND    fadj.period_counter_adjusted BETWEEN gn_lex_begin_period_counter AND gn_lex_end_period_counter
302     AND    ((fdh.date_effective           >= fah.date_effective
303     AND    fdh.date_effective           < NVL(fah.date_ineffective, fdh.date_effective + 1))
304            OR    (fah.date_effective      > fdh.date_effective
305               AND fth.transaction_type_code = 'ADDITION'))
306               AND    fah.transaction_header_id_in = p_fah_trx_header_id
307               AND    fdh.code_combination_id      = p_ccid_in
308               AND    fdh.location_id              = p_location_id_in
309          AND  ((fah.asset_type='CAPITALIZED') AND (EXISTS (-- Added these lines as part of the fix to the SR 7284007.992
310              SELECT 'Y'
311              FROM  fa_asset_history  fah1
312              WHERE fah1.asset_type='CIP'
313              and   fah1.transaction_header_id_out = fah.transaction_header_id_in
314              and   fah1.asset_id = fah.asset_id
315              )))
316       UNION ALL
317 	  SELECT (-1)*(NVL(SUM(NVL(DECODE(fadj.debit_credit_flag, 'CR', -1 * fadj.adjustment_amount  -- Added this query as part of the fix to the SR 7284007.992
318                                              , fadj.adjustment_amount), 0)),0)) all_transferred
319     FROM   fa_transaction_headers  fth
320           ,fa_adjustments          fadj
321           ,fa_asset_history        fah
322 		  ,fa_distribution_history fdh
323     WHERE  fth.asset_id                = fah.asset_id
324     AND    fth.asset_id                = fdh.asset_id
325    	AND    fdh.distribution_id         = fadj.distribution_id
326     AND    fdh.transaction_header_id_in  = p_transaction_header_id
327     AND    fah.category_id             = p_category_id_in
328     AND    fah.asset_type              = p_asset_type_in
329     AND    fth.asset_id                = p_asset_id_in
330     AND    fth.book_type_code          = P_BOOK_NAME
334     AND    fadj.adjustment_type = 'CIP COST'
331     AND    fadj.transaction_header_id  = fth.transaction_header_id
332     AND    fth.transaction_type_code IN ('CIP ADDITION','CIP ADJUSTMENT')
333     AND    fah.asset_type       = 'CIP'
335     AND    fth.transaction_date_entered <= NVL(gd_period_close_date,fth.transaction_date_entered)
336     AND    fdh.date_effective           >= fah.date_effective
337     AND    fdh.date_effective           < NVL(fah.date_ineffective, fdh.date_effective + 1)
338 	AND    fah.transaction_header_id_in = p_fah_trx_header_id
339 	AND    fdh.code_combination_id      = p_ccid_in
340     AND    fdh.location_id               = p_location_id_in
341 	AND   (EXISTS (
342     SELECT 'Y'
343 	FROM  fa_asset_history  fah1
344           ,fa_transaction_headers  fth1
345 	WHERE fah1.asset_type='CAPITALIZED'
346 	AND   fah1.transaction_header_id_in = fah.transaction_header_id_out
347 	AND   fah1.asset_id = fah.asset_id
348 	AND   fth1.transaction_header_id = fah1.transaction_header_id_in
349 	AND   fth1.transaction_type_code = 'ADDITION'
350 	AND   fth1.transaction_date_entered BETWEEN gd_period_open_date AND gd_period_close_date
351 	))
352 	UNION ALL
353         SELECT NVL(DECODE(fadj.debit_credit_flag, 'CR', -1 * fadj.adjustment_amount, fadj.adjustment_amount),0) all_transferred
354         FROM   fa_transaction_headers    fth
355               ,fa_adjustments          fadj
356               ,fa_asset_history        fah1
357               ,fa_asset_history        fah2
358               ,fa_distribution_history fdh
359         WHERE EXISTS (
360            SELECT 1
361             FROM   fa_deprn_detail fdd
362             WHERE  fdd.asset_id          = fth.asset_id
363             AND    fdd.book_type_code    = P_BOOK_NAME
364             AND    fdd.deprn_source_code = 'D'
365                     )
366         AND (fah1.asset_type   = p_asset_type_in
367            OR (fah1.asset_type = 'CIP'
368              AND EXISTS (
369                 SELECT fb2.period_counter_capitalized
370                  FROM   fa_books fb2
371                  WHERE  fb2.asset_id                   = fah1.asset_id
372                  AND    fb2.book_type_code             = P_BOOK_NAME
373                  AND    fb2.period_counter_capitalized < gn_lex_begin_period_counter
374                       )
375               )
376            )
377        AND   fadj.source_type_code        =  'RECLASS'
378        AND   fadj.adjustment_type         IN ('COST', 'CIP COST')
379        AND   fth.transaction_type_code    <> 'TRANSFER IN'
380        AND   fth.asset_id                 =  fah1.asset_id
381        AND   fth.asset_id                 =  fdh.asset_id
382        AND   fdh.distribution_id          =  fadj.distribution_id
383        AND   fdh.transaction_header_id_in  = p_transaction_header_id
384        AND   fdh.location_id               = p_location_id_in
385        AND   fth.book_type_code           =  P_BOOK_NAME
386        AND   fah2.category_id             =  p_category_id_in
387        AND   fth.asset_id                 =  p_asset_id_in
388        AND   fdh.code_combination_id      = p_ccid_in
389        AND   fadj.transaction_header_id   =  fth.transaction_header_id
390        AND   fth.transaction_date_entered <= gd_period_close_date
391        AND   fadj.period_counter_adjusted BETWEEN gn_lex_begin_period_counter AND gn_lex_end_period_counter
392        AND   fadj.asset_id                =  fah1.asset_id
393        AND   fadj.book_type_code          =  P_BOOK_NAME
394        AND   fah1.asset_id                =  fah2.asset_id
395        AND   fth.transaction_header_id    >= fah1.transaction_header_id_in
396        AND   fth.transaction_header_id    <  NVL(fah1.transaction_header_id_out, fth.transaction_header_id + 1)
397        AND   fdh.date_effective           >= fah2.date_effective
398        AND   fdh.date_effective           <  NVL(fah2.date_ineffective, fdh.date_effective + 1)
399     ) X;
400   EXCEPTION
401     WHEN NO_DATA_FOUND THEN
402       ln_amount := 0;
403     WHEN OTHERS THEN
404       FND_FILE.PUT_LINE(FND_FILE.LOG,'In CHANGES_OF_ACCOUNTS');
405      -- RAISE;
406   END;
407   RETURN ln_amount;
408 END CHANGES_OF_ACCOUNTS;
409 
410 --=====================================================================
411 --=====================================================================
412 
413 FUNCTION ADJUSTMENT_AMOUNT(p_transaction_header_id IN NUMBER
414                           ,p_asset_id_in IN NUMBER
415                           ,p_category_id_in IN NUMBER
416                           ,p_asset_type_in IN VARCHAR2
417                           ,p_location_id_in IN NUMBER
418                           ,p_ccid_in     IN NUMBER)
419 RETURN NUMBER
420 IS
421   ln_amount NUMBER;
422 BEGIN
423   BEGIN
424     SELECT NVL(SUM(DECODE(fadj.debit_credit_flag, 'CR', -1 * fadj.adjustment_amount, fadj.adjustment_amount)),0)
425     INTO   ln_amount
426     FROM   fa_transaction_headers  fth
427           ,fa_adjustments          fadj
428           ,fa_asset_history        fah
429           ,fa_distribution_history fdh
430     WHERE  fth.asset_id                 = fah.asset_id
431     AND    fth.asset_id                 = fdh.asset_id
432     AND    fdh.distribution_id          = fadj.distribution_id
433     AND    fdh.transaction_header_id_in  = p_transaction_header_id
434     AND    fah.category_id              = p_category_id_in
435     AND    fdh.location_id               = p_location_id_in
436     AND    fah.asset_type               = p_asset_type_in
437     AND    fth.book_type_code           = P_BOOK_NAME
438     AND    fdh.code_combination_id      = p_ccid_in
439     AND    fth.asset_id                 = p_asset_id_in
440     AND    fadj.transaction_header_id   = fth.transaction_header_id
441     AND    fadj.period_counter_adjusted BETWEEN gn_lex_begin_period_counter AND gn_lex_end_period_counter
442     AND    fth.transaction_type_code  IN ('ADJUSTMENT')  /* CIP ADJUSTMENT excluded ? */
446     AND    fth.transaction_header_id    < NVL(fah.transaction_header_id_out, fth.transaction_header_id + 1);
443     AND    fadj.adjustment_type    IN ('COST')
444     AND    fth.transaction_date_entered <= gd_period_close_date
445     AND    fth.transaction_header_id    >= fah.transaction_header_id_in
447   EXCEPTION
448     WHEN NO_DATA_FOUND THEN
449       ln_amount := 0;
450     WHEN OTHERS THEN
451       FND_FILE.PUT_LINE(FND_FILE.LOG,'In ADJUSTMENT_AMOUNT');
452 	  -- RAISE;
453   END;
454  /* IF ln_amount IS NULL THEN
455     ln_amount := 0;
456   END IF; */
457   RETURN ln_amount ;
458 END ADJUSTMENT_AMOUNT;
459 
460 --=====================================================================
461 --=====================================================================
462 /* what is this appreciation amount? */
463 FUNCTION APPRECIATION_AMOUNT(p_transaction_header_id IN NUMBER
464                           ,p_asset_id_in IN NUMBER
465                           ,p_category_id_in IN NUMBER
466                           ,p_asset_type_in IN VARCHAR2
467                           ,p_location_id_in IN NUMBER
468                           ,p_ccid_in     IN NUMBER)
469 RETURN NUMBER
470 IS
471   ln_amount NUMBER;
472 BEGIN
473   BEGIN
474     SELECT NVL(SUM(DECODE(fadj.debit_credit_flag, 'CR', -1 * fadj.adjustment_amount, fadj.adjustment_amount)),0)
475     INTO   ln_amount
476     FROM   fa_books                fb
477           ,fa_transaction_headers  fth
478           ,fa_adjustments          fadj
479           ,fa_asset_history        fah
480           ,fa_distribution_history fdh
481     WHERE  fth.asset_id                 = fah.asset_id
482     AND    fth.asset_id                 = fdh.asset_id
483     AND    fdh.distribution_id          = fadj.distribution_id
484     AND    fdh.transaction_header_id_in  = p_transaction_header_id
485     AND    fah.category_id              = p_category_id_in
486     AND    fdh.location_id               = p_location_id_in
487     AND    fah.asset_type               = p_asset_type_in
488     AND    fth.book_type_code           = P_BOOK_NAME
489     AND    fdh.code_combination_id      = p_ccid_in
490     AND    fth.asset_id                 = p_asset_id_in
491     AND    fadj.transaction_header_id   = fth.transaction_header_id
492     AND    fadj.period_counter_adjusted BETWEEN gn_lex_begin_period_counter AND gn_lex_end_period_counter
493     AND    fth.transaction_type_code    IN ('ADJUSTMENT','CIP ADJUSTMENT')
494     AND    fadj.adjustment_type    = 'EXPENSE'
495     AND    fth.transaction_subtype = 'APPREC'
496     AND    fth.transaction_date_entered <= gd_period_close_date
497     AND    fth.transaction_header_id    >= fah.transaction_header_id_in
498     AND    fth.transaction_header_id    < NVL(fah.transaction_header_id_out, fth.transaction_header_id + 1)
499     AND    fb.transaction_header_id_in  = fth.transaction_header_id
500     AND    fb.book_type_code            = P_BOOK_NAME;
501   EXCEPTION
502     WHEN NO_DATA_FOUND THEN
503       ln_amount := 0;
504     WHEN OTHERS THEN
505       FND_FILE.PUT_LINE(FND_FILE.LOG,'In ADJUSTMENT_AMOUNT');
506 	  -- RAISE;
507   END;
508 /* IF ln_amount IS NULL THEN
509     ln_amount := 0;
510   END IF; */
511   RETURN ln_amount ;
512 END APPRECIATION_AMOUNT;
513 
514 --=====================================================================
515 --=====================================================================
516 -- Bit unclear of this requirement for this routine
517 FUNCTION ACCM_DEPRN_AMT(p_transaction_header_id IN NUMBER
518                        ,p_asset_id_in IN NUMBER
519                        ,p_ccid_in IN NUMBER
520                        ,p_location_id_in IN NUMBER)
521 RETURN NUMBER
522 IS
523   ln_amount NUMBER;
524 BEGIN
525   BEGIN
526     SELECT NVL(fdd.deprn_reserve,0)
527     INTO   ln_amount
528     FROM   fa_deprn_summary fds
529           ,fa_deprn_detail  fdd
530           ,fa_distribution_history fdh
531     WHERE  fds.book_type_code      = fdd.book_type_code
532     AND    fds.asset_id            = fdd.asset_id
533     AND    fds.period_counter      = fdd.period_counter
534     AND    fdd.distribution_id     = fdh.distribution_id
535     AND    fdh.transaction_header_id_in  = p_transaction_header_id
536     AND    fdh.book_type_code      = P_DIST_SOURCE_BOOK
537     AND    fdd.asset_id            = fdh.asset_id
538     AND    fds.book_type_code      = P_BOOK_NAME
539     AND    fds.asset_id            = p_asset_id_in
540     AND    fdh.code_combination_id = p_ccid_in
541     AND    fdh.location_id         = p_location_id_in
542     AND    fds.period_counter      = (
543                SELECT MAX(fds1.period_counter)
544                FROM   fa_deprn_summary fds1
545                      ,fa_deprn_detail  fdd1
546                      ,fa_distribution_history fdh1
547                WHERE  fds1.book_type_code      = fdd1.book_type_code
548                AND    fds1.asset_id            = fdd1.asset_id
549                AND    fds1.period_counter      = fdd1.period_counter
550                AND    fdd1.distribution_id     = fdh1.distribution_id
551                AND    fdh1.book_type_code      =  P_DIST_SOURCE_BOOK
552                AND    fdd1.asset_id            = fdh1.asset_id
553                AND    fds1.book_type_code      = fds.book_type_code
554                AND    fds1.asset_id            = fds.asset_id
555                AND    fdh1.code_combination_id = fdh.code_combination_id
556                AND    fdh1.location_id         = p_location_id_in
557                AND    fds1.period_counter      BETWEEN gn_lex_begin_period_counter AND gn_lex_end_period_counter
558                                );
559     EXCEPTION
560       WHEN NO_DATA_FOUND THEN
561 BEGIN
562     SELECT fdd.deprn_reserve
563     INTO   ln_amount
564     FROM   fa_deprn_summary fds
565           ,fa_deprn_detail  fdd
569     AND    fds.asset_id            = fdd.asset_id
566           ,fa_distribution_history fdh
567           ,fa_books  fb
568     WHERE  fds.book_type_code      = fdd.book_type_code
570     AND    fds.period_counter      = fdd.period_counter
571     AND    fdd.distribution_id     = fdh.distribution_id
572     AND    fdh.book_type_code      = P_DIST_SOURCE_BOOK
573     AND    fdd.asset_id            = fdh.asset_id
574     AND    fds.book_type_code      = P_BOOK_NAME
575     AND    fds.asset_id            = p_asset_id_in
576     AND    fdh.code_combination_id = p_ccid_in
577     AND    fdh.location_id         = p_location_id_in
578     AND    fb.asset_id             = fdd.asset_id
579     AND    fb.book_type_code       = fdd.book_type_code
580     AND    fb.date_ineffective IS NULL
581     AND    fb.period_counter_life_complete IS NOT NULL
582     AND    fds.period_counter      = (
583                SELECT MAX(fds1.period_counter)
584                FROM   fa_deprn_summary fds1
585                      ,fa_deprn_detail  fdd1
586                      ,fa_distribution_history fdh1
587                WHERE  fds1.book_type_code      = fdd1.book_type_code
588                AND    fds1.asset_id            = fdd1.asset_id
589                AND    fds1.period_counter      = fdd1.period_counter
590                AND    fdd1.distribution_id     = fdh1.distribution_id
591                AND    fdh1.book_type_code      = P_DIST_SOURCE_BOOK
592                AND    fdd1.asset_id            = fdh1.asset_id
593                AND    fds1.book_type_code      = fds.book_type_code
594                AND    fds1.asset_id            = fds.asset_id
595                AND    fdh1.code_combination_id = fdh.code_combination_id
596                AND    fdh1.location_id         = p_location_id_in
597                AND    fds1.period_counter      < = gn_lex_begin_period_counter);
598      EXCEPTION
599       WHEN NO_DATA_FOUND THEN
600       ln_amount := 0;
601       WHEN OTHERS THEN
602        FND_FILE.PUT_LINE(FND_FILE.LOG,'In ACCM_DEPRN_AMT (Inner)');
603      END;
604       WHEN TOO_MANY_ROWS THEN
605         SELECT NVL(MAX(fdd.deprn_reserve),0)
606         INTO   ln_amount
607         FROM   fa_deprn_summary fds
608               ,fa_deprn_detail  fdd
609               ,fa_distribution_history fdh
610         WHERE  fds.book_type_code      = fdd.book_type_code
611         AND    fds.asset_id            = fdd.asset_id
612         AND    fds.period_counter      = fdd.period_counter
613         AND    fdd.distribution_id     = fdh.distribution_id
614         AND    fdh.transaction_header_id_in  = p_transaction_header_id
615         AND    fdh.book_type_code      = P_DIST_SOURCE_BOOK
616         AND    fdd.asset_id            = fdh.asset_id
617         AND    fds.book_type_code      = P_BOOK_NAME
618         AND    fds.asset_id            = p_asset_id_in
619         AND    fdh.code_combination_id = p_ccid_in
620         AND    fdh.location_id               = p_location_id_in
621         AND    fds.period_counter = (
622                   SELECT MAX(fds1.period_counter)
623                    FROM   fa_deprn_summary fds1
624                          ,fa_deprn_detail  fdd1
625                          ,fa_distribution_history fdh1
626                    WHERE fds1.book_type_code      = fdd1.book_type_code
627                    AND   fds1.asset_id            = fdd1.asset_id
628                    AND   fds1.period_counter      = fdd1.period_counter
629                    AND   fdd1.distribution_id     = fdh1.distribution_id
630                        AND    fdh.transaction_header_id_in  = p_transaction_header_id
631                    AND   fdh1.book_type_code      = P_DIST_SOURCE_BOOK
632                    AND   fdd1.asset_id            = fdh1.asset_id
633                    AND   fds1.book_type_code      = fds.book_type_code
634                    AND   fds1.asset_id            = fds.asset_id
635                    AND   fdh1.code_combination_id = fdh.code_combination_id
636                    AND   fdh1.location_id               = p_location_id_in
637                    AND   fds1.period_counter      BETWEEN gn_lex_begin_period_counter AND gn_lex_end_period_counter
638                                    );
639     WHEN OTHERS THEN
640       FND_FILE.PUT_LINE(FND_FILE.LOG,'In ACCM_DEPRN_AMT');
641 	  --RAISE;
642   END;
643 /*  IF ln_amount IS NULL THEN
644     ln_amount := 0;
645   END IF;*/
646   RETURN ln_amount;
647 END ACCM_DEPRN_AMT;
648 
649 --=====================================================================
650 --=====================================================================
651 
652 FUNCTION CATEGORY_ACCM_DEPRN_AMT(p_transaction_header_id IN NUMBER
653                                 ,p_asset_id_in IN NUMBER
654                                 ,p_ccid_in IN NUMBER
655                                 ,p_location_id_in IN NUMBER)
656 RETURN NUMBER
657 IS
658   ln_amount        NUMBER;
659 BEGIN
660   BEGIN
661     SELECT NVL(SUM(DECODE(fdd.deprn_source_code,'B',fdd.deprn_reserve,fdd.deprn_amount)),0)
662     INTO   ln_amount
663     FROM   fa_deprn_summary fds
664           ,fa_deprn_detail  fdd
665           ,fa_distribution_history fdh
666     WHERE  fds.book_type_code      = fdd.book_type_code
667     AND    fds.asset_id            = fdd.asset_id
668     AND    fds.period_counter      = fdd.period_counter
669     AND    fdd.distribution_id     = fdh.distribution_id
670     AND    fdh.transaction_header_id_in  = p_transaction_header_id
671     AND    fdh.book_type_code      =  P_DIST_SOURCE_BOOK
672     AND    fdd.asset_id            = fdh.asset_id
673     AND    fds.book_type_code      = P_BOOK_NAME
674     AND    fds.asset_id            = p_asset_id_in
675     AND    fdh.code_combination_id = p_ccid_in
676     AND    fdh.location_id         = p_location_id_in
677     AND    fds.period_counter      <= gn_lex_end_period_counter;
678     EXCEPTION
679       WHEN NO_DATA_FOUND THEN
680        ln_amount := 0;
684     END;
681       WHEN OTHERS THEN
682         FND_FILE.PUT_LINE(FND_FILE.LOG,'In ACCM_DEPRN_AMT');
683 		--RAISE;
685 /*  IF ln_amount IS NULL THEN
686     ln_amount := 0;
687   END IF;*/
688   RETURN ln_amount;
689 END CATEGORY_ACCM_DEPRN_AMT;
690 
691 --=====================================================================
692 --=====================================================================
693 
694 FUNCTION ACCM_DEPRN_AMT_PR_YEAR(p_transaction_header_id IN NUMBER
695                          ,p_asset_id_in IN NUMBER
696                   ,p_ccid_in IN NUMBER
697                   ,p_location_id_in IN NUMBER)
698 RETURN NUMBER
699 IS
700   ln_amount NUMBER;
701 BEGIN
702   BEGIN
703     SELECT NVL(fdd.deprn_reserve,0)
704     INTO   ln_amount
705     FROM   fa_books fb
706           ,fa_deprn_summary fds
707           ,fa_deprn_detail  fdd
708           ,fa_distribution_history fdh
709     WHERE  fb.book_type_code    = P_BOOK_NAME
710     AND fb.date_ineffective     IS NULL
711     AND fb.book_type_code       = fds.book_type_code
712     AND fb.asset_id             = fds.asset_id
713     AND fds.period_counter      = gn_lex_begin_period_counter - 1
714     AND fdh.transaction_header_id_in  = p_transaction_header_id
715     AND fb.asset_id             = p_asset_id_in
716     AND fds.book_type_code      = fdd.book_type_code
717     AND fds.asset_id            = fdd.asset_id
718     AND fds.period_counter      = fdd.period_counter
719     AND fdd.distribution_id     = fdh.distribution_id
720     AND fdh.book_type_code      = P_DIST_SOURCE_BOOK
721     AND fdd.asset_id            = fdh.asset_id
722     AND fdh.code_combination_id = p_ccid_in
723     AND fdh.location_id         = p_location_id_in;
724   EXCEPTION
725     WHEN NO_DATA_FOUND THEN
726       ln_amount := 0;
727     WHEN OTHERS THEN
728       FND_FILE.PUT_LINE(FND_FILE.LOG,'In NBV_VALUE');
729 	  --RAISE;
730   END;
731   RETURN ln_amount;
732 END ACCM_DEPRN_AMT_PR_YEAR;
733 
734 --=====================================================================
735 --=====================================================================
736 
737 FUNCTION DEPRN_EXPENSE(p_transaction_header_id IN NUMBER
738                          ,p_asset_id_in IN NUMBER
739                       ,p_ccid_in IN NUMBER
740                       ,p_location_id_in IN NUMBER)
741 RETURN NUMBER
742 IS
743   ln_amount        NUMBER;
744 BEGIN
745   BEGIN
746     SELECT NVL(SUM(fdd.deprn_amount - fdd.deprn_adjustment_amount + NVL(fx.adjustment_amount,0)),0)
747         INTO   ln_amount
748         FROM   fa_deprn_detail          fdd
749               ,fa_distribution_history  fdh
750                     ,(SELECT fadj.distribution_id
751                            ,fadj.period_counter_created
752                                  ,SUM(DECODE(fth.transaction_subtype,'APPREC',0,
753                                 DECODE(fadj.debit_credit_flag,'CR',-1*fadj.adjustment_amount
754                                                   ,fadj.adjustment_amount))) adjustment_amount
755                FROM fa_adjustments           fadj
756                    ,fa_transaction_headers   fth
757               WHERE fadj.transaction_header_id = fth.transaction_header_id(+)
758               and fth.transaction_type_code IN ('ADJUSTMENT','ADDITION')
759               and fadj.adjustment_type(+) = 'EXPENSE'
760                     and fadj.book_type_code  = P_BOOK_NAME
761               AND fadj.asset_id        = p_asset_id_in
762                     and fadj.asset_id = fth.asset_id
763                     and fadj.book_type_code = fth.book_type_code
764                     group by  fadj.distribution_id
765                            ,fadj.period_counter_created) fx
766         WHERE fdd.distribution_id = fx.distribution_id(+)
767           and fdd.period_counter = fx.period_counter_created(+)
768           and fdd.distribution_id = fdh.distribution_id
769           and fdd.period_counter BETWEEN gn_lex_begin_period_counter AND gn_lex_end_period_counter
770           AND    fdd.book_type_code           = P_BOOK_NAME
771           AND    fdd.asset_id                 = p_asset_id_in
772           AND    fdh.code_combination_id      = p_ccid_in
773           AND    fdh.transaction_header_id_in = p_transaction_header_id
774       AND    fdh.location_id                = p_location_id_in;
775   EXCEPTION
776     WHEN NO_DATA_FOUND THEN
777       ln_amount := 0;
778     WHEN OTHERS THEN
779       FND_FILE.PUT_LINE(FND_FILE.LOG,'In DEPRN_EXPENSE');
780 	  --RAISE;
781   END;
782  /* IF ln_amount IS NULL THEN
783     ln_amount := 0;
784   END IF;*/
785   RETURN ln_amount;
786 END DEPRN_EXPENSE;
787 
788 --=====================================================================
789 --=====================================================================
790 
791 FUNCTION GAIN_LOSS_AMOUNT(p_transaction_header_id IN NUMBER
792                           ,p_asset_id_in IN NUMBER
793                           ,p_category_id_in IN NUMBER
794                           ,p_asset_type_in IN VARCHAR2
795                           ,p_ccid_in IN NUMBER
796                           ,p_location_id_in IN NUMBER)
797 RETURN NUMBER
798 IS
799   ln_amount       NUMBER := 0;
800 BEGIN
801   BEGIN
802     SELECT NVL(SUM(NVL(DECODE(fadj.debit_credit_flag, 'DR',(-1)*fadj.adjustment_amount,fadj.adjustment_amount), 0)),0) retirements
803     INTO   ln_amount
804     FROM   fa_books                fb
805           ,fa_transaction_headers  fth
806           ,fa_adjustments          fadj
807           ,fa_asset_history        fah
808           ,fa_distribution_history fdh
809     WHERE  fth.asset_id                 = fah.asset_id
810     AND    fth.asset_id                 = fdh.asset_id
811     AND    fah.asset_type               = p_asset_type_in
815     AND    fth.book_type_code           = P_BOOK_NAME
812     AND    fdh.distribution_id          = fadj.distribution_id
813     AND    fah.category_id              = p_category_id_in
814     AND    fdh.transaction_header_id_in  = p_transaction_header_id
816     AND    fb.asset_id                  = p_asset_id_in
817     AND    fdh.code_combination_id      = p_ccid_in
818     AND    fadj.transaction_header_id   = fth.transaction_header_id
819     AND    fth.transaction_type_code    IN ('FULL RETIREMENT', 'PARTIAL RETIREMENT', 'REINSTATEMENT')
820     AND    fadj.adjustment_type         IN ('RESERVE')
821     AND    fadj.source_type_code        IN ('RETIREMENT', 'CIP RETIREMENT')
822     AND    fadj.period_counter_adjusted <= gn_lex_end_period_counter
823     AND    fth.transaction_date_entered <= NVL(gd_period_close_date,fth.transaction_date_entered)
824     AND    fth.transaction_header_id    >= fah.transaction_header_id_in
825     AND    fth.transaction_header_id    < NVL(fah.transaction_header_id_out, fth.transaction_header_id + 1)
826     AND    fb.transaction_header_id_in  = fth.transaction_header_id
827     AND    fb.book_type_code            = P_BOOK_NAME
828     AND    fdh.location_id               = p_location_id_in;
829   EXCEPTION
830     WHEN NO_DATA_FOUND THEN
831       ln_amount := 0;
832     WHEN OTHERS THEN
833       FND_FILE.PUT_LINE(FND_FILE.LOG,'In RETIREMENT_AMOUNT');
834 	  --RAISE;
835   END;
836  /* IF ln_amount IS NULL THEN
837     ln_amount := 0;
838   END IF;*/
839   RETURN ln_amount;
840 END GAIN_LOSS_AMOUNT;
841 
842 --=====================================================================
843 --=====================================================================
844 
845 FUNCTION beforeReport
846 RETURN BOOLEAN
847 IS
848   lc_ledger_id NUMBER;
849   lc_maj_seg   VARCHAR2(30);
850   lc_min_seg   VARCHAR2(30);
851   lc_separator VARCHAR2(10);
852   lc_maj_segnum number(10);--bug13861637
853   lc_min_segnum number(10);--bug13861637
854 BEGIN
855 
856 --*************************************************
857 --Used to obtain the Book Controls data
858 --*************************************************
859   SELECT FSC.category_flex_structure
860   INTO   gc_cat_flex_struc
861   FROM   fa_system_controls FSC;
862 fnd_file.put_line(fnd_file.log,'gc_cat_flex_struc::'||gc_cat_flex_struc);
863 
864 --*************************************************
865 --Used to obtain the Category Flexfield Columns
866 --dynamically
867 --*************************************************
868 SELECT fsav.application_column_name
869 INTO   lc_maj_seg
870 FROM   fnd_segment_attribute_values fsav
871 WHERE  fsav.id_flex_code           = 'CAT#'
872 AND    fsav.id_flex_num            = gc_cat_flex_struc
873 AND    fsav.attribute_value        = 'Y'
874 AND    fsav.segment_attribute_type = 'BASED_CATEGORY';
875 
876 SELECT fsav.application_column_name
877 INTO   lc_min_seg
878 FROM   fnd_segment_attribute_values fsav
879 WHERE  fsav.id_flex_code           = 'CAT#'
880 AND    fsav.id_flex_num            = gc_cat_flex_struc
881 AND    fsav.attribute_value        = 'Y'
882 AND    fsav.segment_attribute_type = 'MINOR_CATEGORY';
883 
884 SELECT fifs.concatenated_segment_delimiter
885 INTO   lc_separator
886 FROM   fnd_id_flex_structures fifs
887 WHERE  fifs.id_flex_num  = gc_cat_flex_struc
888 AND    fifs.id_flex_code = 'CAT#';
889 
890 /*Added for bug13861637*/
891 select substr(lc_maj_seg,8) into lc_maj_segnum from dual;
892 select substr(lc_min_seg,8) into lc_min_segnum from dual;
893 
894 --*************************************************
895 --Based on P_FROM_CATEGORY and P_TO_CATEGORY the
896 -- dynamic filter is created
897 --*************************************************
898 
899 /*Start: Code added to get segment value based on segment number for bug13861637*/
900 IF P_FROM_CATEGORY IS NOT NULL AND TRIM(P_FROM_CATEGORY) <> lc_separator THEN
901    if lc_maj_segnum > 1 then
902       gc_from_maj_seg := LTRIM(SUBSTR(P_FROM_CATEGORY,INSTR(P_FROM_CATEGORY,lc_separator,1,lc_maj_segnum-1)),lc_separator);
903       if instr(gc_from_maj_seg,'.') > 0 then
904          gc_from_maj_seg := rtrim(substr(gc_from_maj_seg,1,INSTR(gc_from_maj_seg,lc_separator)),lc_separator);
905       end if;
906    else
907       gc_from_maj_seg := RTRIM(SUBSTR(P_FROM_CATEGORY,1,INSTR(P_FROM_CATEGORY,lc_separator)),lc_separator);
908    end if;
909 
910    gc_from_min_seg := LTRIM(SUBSTR(P_FROM_CATEGORY,INSTR(P_FROM_CATEGORY,lc_separator,1,lc_min_segnum-1)),lc_separator);
911    if instr(gc_from_min_seg,'.') > 0 then
912       gc_from_min_seg := rtrim(substr(gc_from_min_seg,1,INSTR(gc_from_min_seg,lc_separator)),lc_separator);
913    end if;
914 ELSE
915   gc_from_maj_seg := 'A';
916   gc_from_min_seg := 'A';
917 END IF;
918   fnd_file.put_line(fnd_file.log, 'gc_from_maj_seg::'||gc_from_maj_seg);
919   fnd_file.put_line(fnd_file.log, 'gc_from_min_seg::'||gc_from_min_seg);
920 
921 IF P_TO_CATEGORY IS NOT NULL AND TRIM(P_TO_CATEGORY) <> lc_separator THEN
922  if lc_maj_segnum > 1 then
923       gc_to_maj_seg := LTRIM(SUBSTR(P_TO_CATEGORY,INSTR(P_TO_CATEGORY,lc_separator,1,lc_maj_segnum-1)),lc_separator);
924       if instr(gc_to_maj_seg,'.') > 0 then
925          gc_to_maj_seg := rtrim(substr(gc_to_maj_seg,1,INSTR(gc_to_maj_seg,lc_separator)),lc_separator);
926       end if;
927   else
928       gc_to_maj_seg := RTRIM(SUBSTR(P_TO_CATEGORY,1,INSTR(P_TO_CATEGORY,lc_separator)),lc_separator);
929   end if;
930   if lc_min_segnum > 1 then
931    gc_to_min_seg := LTRIM(SUBSTR(P_TO_CATEGORY,INSTR(P_TO_CATEGORY,lc_separator,1,lc_min_segnum-1)),lc_separator);
932     if instr(gc_to_min_seg,'.') > 0 then
933       gc_to_min_seg := rtrim(substr(gc_to_min_seg,1,INSTR(gc_to_min_seg,lc_separator)),lc_separator);
934     end if;
935   else
936      gc_to_min_seg := RTRIM(SUBSTR(P_TO_CATEGORY,1,INSTR(P_TO_CATEGORY,lc_separator)),lc_separator);
940   gc_to_min_seg := 'Z';
937   end if;
938 ELSE
939   gc_to_maj_seg := 'Z';
941 END IF;
942 /*End: Code added to get segment value based on segment number for bug13861637*/
943   fnd_file.put_line(fnd_file.log, 'gc_to_maj_seg::'||gc_to_maj_seg);
944   fnd_file.put_line(fnd_file.log, 'gc_to_min_seg::'||gc_to_min_seg);
945 
946 IF P_ASSET_DETAILS IS NULL THEN
947   gc_asset_details := 'N';
948 ELSE
949   gc_asset_details := P_ASSET_DETAILS;
950 END IF;
951 
952 IF P_FROM_CATEGORY IS NOT NULL AND P_TO_CATEGORY IS NOT NULL THEN
953 IF gc_from_maj_seg <> gc_to_maj_seg THEN
954 gc_category_where := '((fc.'||lc_maj_seg||' = '''||gc_from_maj_seg||''' AND  fc.'||lc_min_seg||' >= '''||gc_from_min_seg||''')
955                    OR (fc.'||lc_maj_seg||' = '''||gc_to_maj_seg||''' AND  fc.'||lc_min_seg||' <= '''||gc_to_min_seg||''')
956                    OR (fc.'||lc_maj_seg||' > '''||gc_from_maj_seg||''' AND fc.'||lc_maj_seg||' < '''||gc_to_maj_seg||'''))';
957 ELSE
958 gc_category_where := ' ((fc.'||lc_maj_seg||' = '''||gc_from_maj_seg||''' AND  fc.'||lc_min_seg||' BETWEEN '''||gc_from_min_seg||''' AND '''||gc_to_min_seg||'''))';
959 END IF;
960 END IF;
961 
962 IF P_FROM_CATEGORY IS NULL AND P_TO_CATEGORY IS NULL THEN
963   gc_category_where := ' 1=1';
964 END IF;
965 
966 IF P_FROM_CATEGORY IS NULL AND P_TO_CATEGORY IS NOT NULL THEN
967 IF gc_from_maj_seg <> gc_to_maj_seg THEN
968 gc_category_where := '((fc.'||lc_maj_seg||' = '''||gc_from_maj_seg||''' AND  fc.'||lc_min_seg||' >= '''||gc_from_min_seg||''')
969                    OR (fc.'||lc_maj_seg||' = '''||gc_to_maj_seg||''' AND  fc.'||lc_min_seg||' <= '''||gc_to_min_seg||''')
970                    OR (fc.'||lc_maj_seg||' > '''||gc_from_maj_seg||''' AND fc.'||lc_maj_seg||' < '''||gc_to_maj_seg||'''))';
971 ELSE
972 gc_category_where := ' ((fc.'||lc_maj_seg||' = '''||gc_from_maj_seg||''' AND  fc.'||lc_min_seg||' BETWEEN '''||gc_from_min_seg||''' AND '''||gc_to_min_seg||'''))';
973 END IF;
974 END IF;
975 
976 IF P_FROM_CATEGORY IS NOT NULL AND P_TO_CATEGORY IS NULL THEN
977 IF gc_from_maj_seg <> gc_to_maj_seg THEN
978 gc_category_where := '((fc.'||lc_maj_seg||' = '''||gc_from_maj_seg||''' AND  fc.'||lc_min_seg||' >= '''||gc_from_min_seg||''')
979                    OR (fc.'||lc_maj_seg||' = '''||gc_to_maj_seg||''' AND  fc.'||lc_min_seg||' <= '''||gc_to_min_seg||''')
980                    OR (fc.'||lc_maj_seg||' > '''||gc_from_maj_seg||''' AND fc.'||lc_maj_seg||' < '''||gc_to_maj_seg||'''))';
981 ELSE
982 gc_category_where := ' ((fc.'||lc_maj_seg||' = '''||gc_from_maj_seg||''' AND  fc.'||lc_min_seg||' BETWEEN '''||gc_from_min_seg||''' AND '''||gc_to_min_seg||'''))';
983 END IF;
984 END IF;
985 
986 fnd_file.put_line(fnd_file.log,'gc_asset_details::'||gc_asset_details);
987 fnd_file.put_line(fnd_file.log,'gc_category_where::'||gc_category_where);
988 
989 --*************************************************
990 --Used to obtain the Begin period data
991 --*************************************************
992   SELECT FDP.period_counter
993         ,FDP.calendar_period_open_date
994         ,fdp.period_open_date
995   INTO   gn_lex_begin_period_counter
996         ,gd_period_open_date
997         ,gd_per_open_date
998   FROM   fa_deprn_periods  FDP
999   WHERE  FDP.book_type_code = P_BOOK_NAME
1000   AND    FDP.period_name    = P_BEGIN_PERIOD;
1001 
1002 fnd_file.put_line(fnd_file.log,'gn_lex_begin_period_counter::'||gn_lex_begin_period_counter);
1003 fnd_file.put_line(fnd_file.log,'gd_period_open_date::'||gd_period_open_date);
1004 fnd_file.put_line(fnd_file.log,'P_BEGIN_PERIOD::'||P_BEGIN_PERIOD);
1005 
1006 --*************************************************
1007 --Used to obtain the End period data
1008 --*************************************************
1009   SELECT FDP.period_counter
1010         ,NVL(FDP.calendar_period_close_date,SYSDATE)
1011         ,NVL(fdp.period_close_date,SYSDATE)
1012   INTO   gn_lex_end_period_counter
1013         ,gd_period_close_date
1014         ,gd_per_close_date
1015   FROM   fa_deprn_periods FDP
1016   WHERE  FDP.book_type_code = P_BOOK_NAME
1017   AND    FDP.period_name    = P_END_PERIOD;
1018 
1019 fnd_file.put_line(fnd_file.log,'gn_lex_end_period_counter::'||gn_lex_end_period_counter);
1020 fnd_file.put_line(fnd_file.log,'gd_period_close_date::'||gd_period_close_date);
1021 fnd_file.put_line(fnd_file.log,'gd_per_close_date::'||to_char(gd_per_close_date,'dd/mm/yyyy hh24:mi:ss'));
1022 fnd_file.put_line(fnd_file.log,'P_END_PERIOD::'||P_END_PERIOD);
1023 
1024 --*************************************************
1025 --Used to obtain the Book Controls data
1026 --*************************************************
1027   SELECT FBC.book_class
1028         ,FBC.accounting_flex_structure
1029         ,FBC.set_of_books_id
1030 	,FBC.distribution_source_book
1031   INTO   gc_book_class
1032         ,gc_acct_flex_struc
1033         ,lc_ledger_id
1034 	,P_DIST_SOURCE_BOOK
1035   FROM   fa_book_controls FBC
1036   WHERE  FBC.book_type_code = P_BOOK_NAME;
1037 fnd_file.put_line(fnd_file.log,'gc_book_class::'||gc_book_class);
1038 
1039 --*************************************************
1040 --Used to obtain the Ledger Name AND Currency
1041 --*************************************************
1042   SELECT GLED.name
1043         ,GLED.currency_code
1044   INTO   gc_ledger_name
1045         ,gc_currency_code
1046   FROM   gl_ledgers GLED
1047   WHERE  GLED.ledger_id = lc_ledger_id;
1048 fnd_file.put_line(fnd_file.log,'gc_ledger_name::'||gc_ledger_name);
1049 
1050   RETURN (TRUE);
1051 END beforeReport;
1052 
1053 END FA_ASSET_SUMM_RPT_PKG;