DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_ACTIVATE_ASSET_PVT

Source


1 PACKAGE BODY OKL_ACTIVATE_ASSET_PVT as
2 /* $Header: OKLRACAB.pls 120.53.12020000.2 2013/03/07 05:09:57 racheruv ship $ */
3 G_PKG_NAME                 VARCHAR2(100) := 'OKL_ACTIVATE_ASSET_PVT';
4 G_CHR_CURRENCY_CODE        OKL_K_HEADERS_FULL_V.currency_code%TYPE;
5 G_FUNC_CURRENCY_CODE        OKL_K_HEADERS_FULL_V.currency_code%TYPE;
6 G_CHR_AUTHORING_ORG_ID     OKL_K_HEADERS_FULL_V.authoring_org_id%TYPE;
7 G_CHR_START_DATE           DATE;
8 G_CHR_REPORT_PDT_ID        OKL_PRODUCTS_V.reporting_pdt_id%TYPE;
9 
10 --------------------------------------------------------------------------------
11 --Global Constants used in the program
12 --------------------------------------------------------------------------------
13 G_TRX_LINE_TYPE_BOOK       CONSTANT Varchar2(30)  := 'CFA';
14 G_TRX_HDR_TYPE_BOOK        CONSTANT Varchar2(30)  := 'CFA';
15 G_TRX_LINE_TYPE_REBOOK     CONSTANT Varchar2(30)  := 'CRB';
16 G_TRX_HDR_TYPE_REBOOK      CONSTANT Varchar2(30)  := 'CRB';
17 G_TRX_HDR_TYPE_RELEASE     CONSTANT Varchar2(30)  := 'CRL';
18 G_TRX_LINE_TYPE_RELEASE    CONSTANT Varchar2(30)  := 'CRL';
19 G_FA_LINE_LTY_CODE         CONSTANT VARCHAR2(30)  := 'FIXED_ASSET';
20 G_FA_LINE_LTY_ID	   CONSTANT NUMBER        := 42;
21 G_FIN_AST_LINE_LTY_CODE    CONSTANT VARCHAR2(30)  := 'FREE_FORM1';
22 --G_ADJ_TRX_SUBTYPE          CONSTANT VARCHAR2(100) := 'AMORTIZE'; --while adjusting costs to zero whether to amortize or expense
23 G_ADJ_TRX_SUBTYPE          CONSTANT VARCHAR2(100) := 'AMORTIZED'; --while adjusting costs to zero whether to amortize or expense
24 G_AMORT_START_DATE         CONSTANT DATE          := sysdate; -- adjustment amortization start date
25 G_ADJ_TRX_TYPE_CODE        CONSTANT VARCHAR2(100) := 'ADJUSTMENT';
26 G_ADD_TRX_TYPE_CODE        CONSTANT VARCHAR2(100) := 'ADDITION';
27 G_ADD_ASSET_TYPE           CONSTANT VARCHAR2(100) := 'CAPITALIZED'; --Lease assets will always be capitalized
28 G_ADD_RATE_ADJ_FACTOR      CONSTANT NUMBER        := 1;
29 G_TAX_OWNER_RGP_CODE       CONSTANT VARCHAR2(30)  := 'LATOWN';
30 G_TAX_OWNER_RUL_CODE       CONSTANT VARCHAR2(30)  := 'LATOWN';
31 G_TAX_OWNER_RUL_PROMPT     CONSTANT VARCHAR2(80)  := 'Tax Owner';
32 --Bug# 2525946 start
33 G_TAX_OWNER_RUL_SEG_NUMBER CONSTANT NUMBER        := 1;
34 --Bug# 2525946 end
35 G_APPROVED_STS_CODE        CONSTANT VARCHAR2(100) := 'APPROVED';
36 G_LEASE_SCS_CODE           CONSTANT VARCHAR2(100) := 'LEASE';
37 G_DF_LEASE_BK_CLASS        CONSTANT VARCHAR2(30)  := 'LEASEDF';
38 G_ST_LEASE_BK_CLASS        CONSTANT VARCHAR2(30)  := 'LEASEST';
39 G_OP_LEASE_BK_CLASS        CONSTANT VARCHAR2(30)  := 'LEASEOP';
40 G_LOAN_BK_CLASS            CONSTANT VARCHAR2(30)  := 'LOAN';
41 G_REVOLVING_LOAN_BK_CLASS  CONSTANT VARCHAR2(30)  := 'LOAN-REVOLVING';
42 G_FA_CORP_BOOK_CLASS_CODE  CONSTANT VARCHAR2(15)  := 'CORPORATE';
43 G_FA_TAX_BOOK_CLASS_CODE   CONSTANT VARCHAR2(15)  := 'TAX';
44 G_TSU_CODE_PROCESSED       CONSTANT VARCHAR2(30)   := 'PROCESSED';
45 G_TSU_CODE_ENTERED         CONSTANT Varchar2(30)  := 'ENTERED';
46 --bug# 3143522 : 11.5.10 Subsidies
47 G_FORMULA_LINE_DISCOUNT    CONSTANT Varchar2(150) := 'LINE_DISCOUNT';
48 --Bug# 2981308 :
49 G_FORMULA_LINE_TRADEIN      CONSTANT Varchar2(150) := 'LINE_TRADEIN';
50 G_FORMULA_LINE_CAPREDUCTION CONSTANT Varchar2(150) := 'LINE_CAPREDUCTION';
51 G_FORMULA_LINE_CAPINTEREST  CONSTANT Varchar2(150) := 'LINE_CAPITALIZED_INTEREST';
52 -------------------------------------------------------------------------------
53 --Global Messages
54 -------------------------------------------------------------------------------
55 G_SOB_FETCH_FAILED         CONSTANT VARCHAR2(200) := 'OKL_LLA_BK_SOB_NOT_FOUND';
56 G_FA_BOOK_TOKEN            CONSTANT VARCHAR2(200) := 'FA_BOOK';
57 G_FA_BOOK_NOT_ENTERED      CONSTANT VARCHAR2(200) := 'OKL_LLA_FA_BK_NOT_ENTERED';
58 G_ASSET_NUMBER_TOKEN       CONSTANT VARCHAR2(200) := 'ASSET_NUMBER';
59 G_AST_CAT_NOT_ENTERED      CONSTANT VARCHAR2(200) := 'OKL_LLA_AST_CAT_NOT_ENTERED';
60 G_AST_LOC_NOT_ENTERED      CONSTANT VARCHAR2(200) := 'OKL_LLA_AST_LOC_NOT_ENTERED';
61 G_EXP_ACCT_NOT_ENTERED     CONSTANT VARCHAR2(200) := 'OKL_LLA_EXP_ACCT_NOT_ENTERED';
62 G_CONTRACT_NOT_FOUND       CONSTANT VARCHAR2(200) := 'OKL_LLA_CONTRACT_NOT_FOUND';
63 G_CONTRACT_ID              CONSTANT VARCHAR2(200) := 'CONTRACT_ID';
64 G_CONTRACT_NOT_APPROVED    CONSTANT VARCHAR2(200) := 'OKL_LLA_CONTRACT_NOT_APPROVED';
65 G_CONTRACT_NOT_LEASE       CONSTANT VARCHAR2(200) := 'OKL_LLA_CONTRACT_NOT_LEASE';
66 G_FA_ITEM_REC_NOT_FOUND    CONSTANT VARCHAR2(200) := 'OKL_LLA_FA_ITM_REC_NOT_FOUND';
67 G_FA_LINE_ID               CONSTANT VARCHAR2(200) := 'FA_LINE_ID';
68 G_FA_TRX_REC_NOT_FOUND     CONSTANT VARCHAR2(200) := 'OKL_LLA_FA_TRX_REC_NOT_FOUND';
69 G_FA_INVALID_BK_CAT        CONSTANT VARCHAR2(200) := 'OKL_LLA_FA_INVALID_BOOK_CAT';
70 G_FA_BOOK                  CONSTANT VARCHAR2(200) := 'FA_BOOK';
71 G_ASSET_CATEGORY           CONSTANT VARCHAR2(200) := 'FA_CATEGORY';
72 G_FA_TAX_CPY_NOT_ALLOWED   CONSTANT VARCHAR2(200) := 'OKL_LLA_FA_TAX_CPY_NOT_ALLOWED';
73 G_JTF_UNDEF_LINE_SOURCE    CONSTANT VARCHAR2(200) := 'OKL_LLA_JTF_LINE_SRC_NOT_FOUND';
74 G_LTY_CODE                 CONSTANT VARCHAR2(200) := 'G_LTY_CODE';
75 G_STS_UPDATE_TRX_MISSING   CONSTANT VARCHAR2(200) := 'OKL_LLA_STS_UPDATE_TRX_MISSING';
76 G_TAS_ID_TOKEN             CONSTANT VARCHAR2(100) := 'TAS_ID';
77 G_TRX_ALREADY_PROCESSED    CONSTANT VARCHAR2(200) := 'OKL_LLA_TRX_ALREADY_PROCESSED';
78 G_FUTURE_IN_SERVICE_DATE   CONSTANT VARCHAR2(200) := 'OKL_LLA_FUTURE_IN_SERVICE_DATE';
79 G_CURRENT_OPEN_PERIOD      CONSTANT VARCHAR2(30)  := 'OPEN_PERIOD';
80 G_REQUIRED_VALUE           CONSTANT VARCHAR2(200) := OKL_API.G_REQUIRED_VALUE;
81 G_COL_NAME_TOKEN           CONSTANT VARCHAR2(200) := OKL_API.G_COL_NAME_TOKEN;
82 G_CONV_RATE_NOT_FOUND      CONSTANT VARCHAR2(200)  := 'OKL_LLA_CONV_RATE_NOT_FOUND';
83 G_FROM_CURRENCY_TOKEN      CONSTANT VARCHAR2(200)  := 'FROM_CURRENCY';
84 G_TO_CURRENCY_TOKEN        CONSTANT VARCHAR2(200)  := 'TO_CURRENCY';
85 G_CONV_TYPE_TOKEN          CONSTANT VARCHAR2(200)  := 'CONVERSION_TYPE';
86 G_CONV_DATE_TOKEN          CONSTANT VARCHAR2(200)  := 'CONVERSION_DATE';
87 G_SALVAGE_VALUE            CONSTANT VARCHAR2(200)  := 'OKL_LLA_SALVAGE_VALUE';
88 --Bug# 3143522 : 11.5.10 Subsidies
89 G_SUBSIDY_ADJ_COST_ERROR   CONSTANT VARCHAR2(200)  := 'OKL_SUBSIDY_ADJ_COST_ERROR';
90 G_BOOK_TYPE_TOKEN          CONSTANT VARCHAR2(30)   := 'BOOK_TYPE_CODE';
91 G_BULK_BATCH_SIZE          CONSTANT NUMBER         := 10000;
92 
93 ------------------------------------------------------------------------------
94   --Bug# 5946411
95   --Start of comments
96   --
97   --Procedure Name        : get_deprn_reserve
98   --Purpose               : get_deprn_reserve - used internally
99   --Modification History  :
100   --02-May-2007    avsingh   Created
101   --                         To get accumulated depreciation of an asset
102   --                         As per Bug# 6027547 raised on FA, the suggestion
103   --                         from FA is to back out depreciation reserve
104   --                         if cost is being adjusted in the period of
105   --                         of addition.
106   ------------------------------------------------------------------------------
107   PROCEDURE get_deprn_reserve
108                    (p_api_version     IN  NUMBER,
109                     p_init_msg_list   IN  VARCHAR2,
110                     x_return_status   OUT NOCOPY VARCHAR2,
111                     x_msg_count       OUT NOCOPY NUMBER,
112                     x_msg_data        OUT NOCOPY VARCHAR2,
113                     p_asset_id        IN  NUMBER,
114                     p_book_type_code  IN  VARCHAR2,
115                     x_asset_deprn_rec   OUT NOCOPY FA_API_TYPES.asset_deprn_rec_type) IS
116 
117     l_return_status   VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
118     l_api_name        CONSTANT VARCHAR2(30) := 'GET_DEPRN_RESERVE';
119     l_api_version	CONSTANT NUMBER	:= 1.0;
120 
121     l_asset_hdr_rec            FA_API_TYPES.asset_hdr_rec_type;
122     l_asset_fin_rec            FA_API_TYPES.asset_fin_rec_type;
123     l_asset_deprn_rec          FA_API_TYPES.asset_deprn_rec_type;
124 
125     l_deprn_reserve            NUMBER;
126 
127   BEGIN
128      --call start activity to set savepoint
129      l_return_status := OKL_API.START_ACTIVITY( substr(l_api_name,1,26),
130                                                 p_init_msg_list,
131                                                 '_PVT',
132                                                 x_return_status);
133      IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
134        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
135      ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
136        RAISE OKL_API.G_EXCEPTION_ERROR;
137      END IF;
138 
139      l_asset_hdr_rec.asset_id          := p_asset_id;
140      l_asset_hdr_rec.book_type_code    := p_book_type_code;
141 
142      if NOT fa_cache_pkg.fazcbc(x_book => l_asset_hdr_rec.book_type_code) then
143        OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
144                            p_msg_name     => 'OKL_LLA_FA_CACHE_ERROR'
145                           );
146        Raise OKL_API.G_EXCEPTION_ERROR;
147      end if;
148 
149      -- To fetch Depreciation Reserve
150      if not FA_UTIL_PVT.get_asset_deprn_rec
151                 (p_asset_hdr_rec         => l_asset_hdr_rec ,
152                  px_asset_deprn_rec      => l_asset_deprn_rec,
153                  p_period_counter        => NULL,
154                  p_mrc_sob_type_code     => 'P'
155                  ) then
156        OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
157                            p_msg_name     => 'OKL_LLA_FA_DEPRN_REC_ERROR'
158                           );
159        Raise OKL_API.G_EXCEPTION_ERROR;
160      end if;
161 
162      x_asset_deprn_rec := l_asset_deprn_rec;
163 
164      --Call end Activity
165      OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
166   EXCEPTION
167     WHEN OKL_API.G_EXCEPTION_ERROR Then
168       x_return_status :=OKL_API.HANDLE_EXCEPTIONS
169       (
170       l_api_name,
171       G_PKG_NAME,
172       'OKL_API.G_RET_STS_ERROR',
173       x_msg_count,
174       x_msg_data,
175       '_PVT'
176       );
177     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
178       x_return_status :=OKL_API.HANDLE_EXCEPTIONS
179       (
180       l_api_name,
181       G_PKG_NAME,
182       'OKL_API.G_RET_STS_UNEXP_ERROR',
183       x_msg_count,
184       x_msg_data,
185       '_PVT'
186       );
187     WHEN OTHERS THEN
188       x_return_status :=OKL_API.HANDLE_EXCEPTIONS
189       (
190       l_api_name,
191       G_PKG_NAME,
192       'OTHERS',
193       x_msg_count,
194       x_msg_data,
195       '_PVT'
196       );
197   END get_deprn_reserve;
198 --------------------------------------------------------------------------------------------------------
199 --Bug# 5946411 End
200 ------------------------------------------------------------------------------------------------------
201 ---------------------------------------------------------------------------
202 -- FUNCTION get_rec for: OKC_K_ITEMS_V
203 ---------------------------------------------------------------------------
204 FUNCTION get_cimv_rec (p_cle_id                       IN NUMBER,
205          x_no_data_found                OUT NOCOPY BOOLEAN
206   ) RETURN cimv_rec_type IS
207 CURSOR okc_cimv_csr (p_cle_id  IN NUMBER) IS
208        SELECT
209             cim.ID,
210             cim.OBJECT_VERSION_NUMBER,
211             cim.CLE_ID,
212             cim.CHR_ID,
213             cim.CLE_ID_FOR,
214             cim.DNZ_CHR_ID,
215             cim.OBJECT1_ID1,
216             cim.OBJECT1_ID2,
217             cim.JTOT_OBJECT1_CODE,
218             cim.UOM_CODE,
219             cim.EXCEPTION_YN,
220             cim.NUMBER_OF_ITEMS,
221             cim.UPG_ORIG_SYSTEM_REF,
222             cim.UPG_ORIG_SYSTEM_REF_ID,
223             cim.PRICED_ITEM_YN,
224             cim.CREATED_BY,
225             cim.CREATION_DATE,
226             cim.LAST_UPDATED_BY,
227             cim.LAST_UPDATE_DATE,
228             cim.LAST_UPDATE_LOGIN
229       FROM  Okc_K_Items_V cim
230       where cle_id = p_cle_id;
231 
232       l_cimv_rec     cimv_rec_type;
233   BEGIN
234     x_no_data_found := TRUE;
235     -- Get current database values
236     OPEN okc_cimv_csr (p_cle_id);
237     FETCH okc_cimv_csr INTO
238               l_cimv_rec.ID,
239               l_cimv_rec.OBJECT_VERSION_NUMBER,
240               l_cimv_rec.CLE_ID,
241               l_cimv_rec.CHR_ID,
242               l_cimv_rec.CLE_ID_FOR,
243               l_cimv_rec.DNZ_CHR_ID,
244               l_cimv_rec.OBJECT1_ID1,
245               l_cimv_rec.OBJECT1_ID2,
246               l_cimv_rec.JTOT_OBJECT1_CODE,
247               l_cimv_rec.UOM_CODE,
248               l_cimv_rec.EXCEPTION_YN,
249               l_cimv_rec.NUMBER_OF_ITEMS,
250               l_cimv_rec.UPG_ORIG_SYSTEM_REF,
251               l_cimv_rec.UPG_ORIG_SYSTEM_REF_ID,
252               l_cimv_rec.PRICED_ITEM_YN,
253               l_cimv_rec.CREATED_BY,
254               l_cimv_rec.CREATION_DATE,
255               l_cimv_rec.LAST_UPDATED_BY,
256               l_cimv_rec.LAST_UPDATE_DATE,
257               l_cimv_rec.LAST_UPDATE_LOGIN;
258     x_no_data_found := okc_cimv_csr%NOTFOUND;
259     CLOSE okc_cimv_csr;
260     RETURN(l_cimv_rec);
261   END get_cimv_rec;
262 ---------------------------------------------------------------------------
263 -- FUNCTION get_rec for: OKL_TXL_ASSETS_V
264 ---------------------------------------------------------------------------
265 FUNCTION get_talv_rec (
266     p_kle_id                       IN NUMBER,
267     p_trx_type                     IN VARCHAR2,
268     x_no_data_found                OUT NOCOPY BOOLEAN
269   ) RETURN talv_rec_type IS
270 
271 CURSOR okl_talv_csr (p_kle_id      IN NUMBER) IS
272       SELECT ID,
273            OBJECT_VERSION_NUMBER,
274            SFWT_FLAG,
275            TAS_ID,
276            ILO_ID,
277            ILO_ID_OLD,
278            IAY_ID,
279            IAY_ID_NEW,
280            KLE_ID,
281            DNZ_KHR_ID,
282            LINE_NUMBER,
283            ORG_ID,
284            TAL_TYPE,
285            ASSET_NUMBER,
286            DESCRIPTION,
287            FA_LOCATION_ID,
288            ORIGINAL_COST,
289            CURRENT_UNITS,
290            MANUFACTURER_NAME,
291            YEAR_MANUFACTURED,
292            SUPPLIER_ID,
293            USED_ASSET_YN,
294            TAG_NUMBER,
295            MODEL_NUMBER,
296            CORPORATE_BOOK,
297            DATE_PURCHASED,
298            DATE_DELIVERY,
299            IN_SERVICE_DATE,
300            LIFE_IN_MONTHS,
301            DEPRECIATION_ID,
302            DEPRECIATION_COST,
303            DEPRN_METHOD,
304            DEPRN_RATE,
305            SALVAGE_VALUE,
306            PERCENT_SALVAGE_VALUE,
307 --Bug# 2981308
308            ASSET_KEY_ID,
309            ATTRIBUTE_CATEGORY,
310            ATTRIBUTE1,
311            ATTRIBUTE2,
312            ATTRIBUTE3,
313            ATTRIBUTE4,
314            ATTRIBUTE5,
315            ATTRIBUTE6,
316            ATTRIBUTE7,
317            ATTRIBUTE8,
318            ATTRIBUTE9,
319            ATTRIBUTE10,
320            ATTRIBUTE11,
321            ATTRIBUTE12,
322            ATTRIBUTE13,
323            ATTRIBUTE14,
324            ATTRIBUTE15,
325            CREATED_BY,
326            CREATION_DATE,
327            LAST_UPDATED_BY,
328            LAST_UPDATE_DATE,
329            LAST_UPDATE_LOGIN,
330            DEPRECIATE_YN,
331            HOLD_PERIOD_DAYS,
332            OLD_SALVAGE_VALUE,
333            NEW_RESIDUAL_VALUE,
334            OLD_RESIDUAL_VALUE,
335            UNITS_RETIRED,
336            COST_RETIRED,
337            SALE_PROCEEDS,
338            REMOVAL_COST,
339            DNZ_ASSET_ID,
340            DATE_DUE,
341            CURRENCY_CODE,
342            CURRENCY_CONVERSION_TYPE,
343            CURRENCY_CONVERSION_RATE,
344            CURRENCY_CONVERSION_DATE
345      FROM  Okl_Txl_Assets_V
346      WHERE okl_txl_assets_v.kle_id  = p_kle_id
347      and   okl_txl_assets_v.tal_type = p_trx_type
348      and   exists (select '1' from  OKL_TRX_ASSETS
349                    where  OKL_TRX_ASSETS.TAS_TYPE = p_trx_type
350                    and    OKL_TRX_ASSETS.TSU_CODE = G_TSU_CODE_ENTERED
351                    and    OKL_TRX_ASSETS.ID       = Okl_txl_assets_v.tas_id);
352     l_talv_rec     talv_rec_type;
353   BEGIN
354     x_no_data_found := TRUE;
355     -- Get current database values
356     OPEN okl_talv_csr (p_kle_id);
357     FETCH okl_talv_csr INTO
358               l_talv_rec.ID,
359               l_talv_rec.OBJECT_VERSION_NUMBER,
360               l_talv_rec.SFWT_FLAG,
361               l_talv_rec.TAS_ID,
362               l_talv_rec.ILO_ID,
363               l_talv_rec.ILO_ID_OLD,
364               l_talv_rec.IAY_ID,
365               l_talv_rec.IAY_ID_NEW,
366               l_talv_rec.KLE_ID,
367               l_talv_rec.DNZ_KHR_ID,
368               l_talv_rec.LINE_NUMBER,
369               l_talv_rec.ORG_ID,
370               l_talv_rec.TAL_TYPE,
371               l_talv_rec.ASSET_NUMBER,
372               l_talv_rec.DESCRIPTION,
373               l_talv_rec.FA_LOCATION_ID,
374               l_talv_rec.ORIGINAL_COST,
375               l_talv_rec.CURRENT_UNITS,
376               l_talv_rec.MANUFACTURER_NAME,
377               l_talv_rec.YEAR_MANUFACTURED,
378               l_talv_rec.SUPPLIER_ID,
379               l_talv_rec.USED_ASSET_YN,
380               l_talv_rec.TAG_NUMBER,
381               l_talv_rec.MODEL_NUMBER,
382               l_talv_rec.CORPORATE_BOOK,
383               l_talv_rec.DATE_PURCHASED,
384               l_talv_rec.DATE_DELIVERY,
385               l_talv_rec.IN_SERVICE_DATE,
386               l_talv_rec.LIFE_IN_MONTHS,
387               l_talv_rec.DEPRECIATION_ID,
388               l_talv_rec.DEPRECIATION_COST,
389               l_talv_rec.DEPRN_METHOD,
390               l_talv_rec.DEPRN_RATE,
391               l_talv_rec.SALVAGE_VALUE,
392               l_talv_rec.PERCENT_SALVAGE_VALUE,
393 --Bug# 2981308
394               l_talv_rec.ASSET_KEY_ID,
395               l_talv_rec.ATTRIBUTE_CATEGORY,
396               l_talv_rec.ATTRIBUTE1,
397               l_talv_rec.ATTRIBUTE2,
398               l_talv_rec.ATTRIBUTE3,
399               l_talv_rec.ATTRIBUTE4,
400               l_talv_rec.ATTRIBUTE5,
401               l_talv_rec.ATTRIBUTE6,
402               l_talv_rec.ATTRIBUTE7,
403               l_talv_rec.ATTRIBUTE8,
404               l_talv_rec.ATTRIBUTE9,
405               l_talv_rec.ATTRIBUTE10,
406               l_talv_rec.ATTRIBUTE11,
407               l_talv_rec.ATTRIBUTE12,
408               l_talv_rec.ATTRIBUTE13,
409               l_talv_rec.ATTRIBUTE14,
410               l_talv_rec.ATTRIBUTE15,
411               l_talv_rec.CREATED_BY,
412               l_talv_rec.CREATION_DATE,
413               l_talv_rec.LAST_UPDATED_BY,
414               l_talv_rec.LAST_UPDATE_DATE,
415               l_talv_rec.LAST_UPDATE_LOGIN,
416               l_talv_rec.DEPRECIATE_YN,
417               l_talv_rec.HOLD_PERIOD_DAYS,
418               l_talv_rec.OLD_SALVAGE_VALUE,
419               l_talv_rec.NEW_RESIDUAL_VALUE,
420               l_talv_rec.OLD_RESIDUAL_VALUE,
421               l_talv_rec.UNITS_RETIRED,
422               l_talv_rec.COST_RETIRED,
423               l_talv_rec.SALE_PROCEEDS,
424               l_talv_rec.REMOVAL_COST,
425               l_talv_rec.DNZ_ASSET_ID,
426               l_talv_rec.DATE_DUE,
427               l_talv_rec.CURRENCY_CODE,
428               l_talv_rec.CURRENCY_CONVERSION_TYPE,
429               l_talv_rec.CURRENCY_CONVERSION_RATE,
430               l_talv_rec.CURRENCY_CONVERSION_DATE;
431     x_no_data_found := okl_talv_csr%NOTFOUND;
432     CLOSE okl_talv_csr;
433     RETURN(l_talv_rec);
434   END get_talv_rec;
435 
436 ------------------------------------------------------------------------------
437   --Start of comments
438   --
439   --Procedure Name        : convert_2functional_currency
440   --Purpose               : check to see if the contract currency is same as
441   --                        functional currency and convert -- used internally
442   --Modification History  :
443   --10-DEC-2002    ssiruvol   Created
444 ------------------------------------------------------------------------------
445   PROCEDURE convert_2functional_currency(
446                             p_api_version   IN  NUMBER,
447                             p_init_msg_list IN  VARCHAR2,
448 	                        x_return_status OUT NOCOPY VARCHAR2,
449                             x_msg_count     OUT NOCOPY NUMBER,
450                             x_msg_data      OUT NOCOPY VARCHAR2,
451                             p_chr_id        IN  NUMBER,
452 			                p_amount        IN  NUMBER,
453 			                x_amount        OUT NOCOPY NUMBER
454                             ) IS
455 
456   l_return_status     VARCHAR2(1)           := OKL_API.G_RET_STS_SUCCESS;
457   l_api_name          CONSTANT VARCHAR2(30) := 'CONVERT_2FUNCT_CURRENCY';
458   l_api_version	      CONSTANT NUMBER	    := 1.0;
459 
460 
461   l_func_curr_code OKL_K_HEADERS_FULL_V.CURRENCY_CODE%TYPE;
462   l_chr_curr_code  OKL_K_HEADERS_FULL_V.CURRENCY_CODE%TYPE;
463 
464   x_contract_currency		    okl_k_headers_full_v.currency_code%TYPE;
465   x_currency_conversion_type	okl_k_headers_full_v.currency_conversion_type%TYPE;
466   x_currency_conversion_rate	okl_k_headers_full_v.currency_conversion_rate%TYPE;
467   x_currency_conversion_date	okl_k_headers_full_v.currency_conversion_date%TYPE;
468 
469 BEGIN
470    x_return_status := OKL_API.G_RET_STS_SUCCESS;
471    --call start activity to set savepoint
472    x_return_status := OKL_API.START_ACTIVITY( substr(l_api_name,1,26),
473 	                                               p_init_msg_list,
474                                                    '_PVT',
475                                          	       x_return_status);
476    IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
477        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
478    ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
479        RAISE OKL_API.G_EXCEPTION_ERROR;
480    END IF;
481 
482    x_amount := p_amount;
483 
484 
485    l_chr_curr_code  := G_CHR_CURRENCY_CODE;
486    --l_func_curr_code := OKC_CURRENCY_API.GET_OU_CURRENCY(G_CHR_authoring_org_id);
487    l_func_curr_code := G_FUNC_CURRENCY_CODE;
488 
489    If ( ( l_func_curr_code IS NOT NULL) AND ( l_chr_curr_code <> l_func_curr_code )) Then
490 
491        okl_accounting_util.convert_to_functional_currency(
492                           p_khr_id                    => p_chr_id,
493                           p_to_currency               => l_func_curr_code,
494                           p_transaction_date          => G_CHR_START_DATE,
495                           p_amount 	                  => p_amount,
496                           x_contract_currency	      => x_contract_currency,
497                           x_currency_conversion_type  => x_currency_conversion_type,
498                           x_currency_conversion_rate  => x_currency_conversion_rate,
499                           x_currency_conversion_date  => x_currency_conversion_date,
500                           x_converted_amount          => x_amount);
501 
502       --trap the conversion exception
503       --if conv rate is not found GL API returns negative
504       If (p_amount > 0) and (x_amount < 0) Then
505           --currency conversion rate was not found in Oracle GL
506            OKC_API.set_message(p_app_name     => G_APP_NAME,
507                                p_msg_name     => G_CONV_RATE_NOT_FOUND,
508                                p_token1       => G_FROM_CURRENCY_TOKEN,
509                                p_token1_value => x_contract_currency,
510                                p_token2       => G_TO_CURRENCY_TOKEN,
511                                p_token2_value => l_func_curr_code,
512                                p_token3       => G_CONV_TYPE_TOKEN,
513                                p_token3_value => x_currency_conversion_type,
514                                p_token4       => G_CONV_DATE_TOKEN,
515                                p_token4_value => to_char(x_currency_conversion_date,'DD-MON-YYYY'));
516            x_return_status := OKC_API.G_RET_STS_ERROR;
517       End If;
518 
519 
520   End If;
521 
522   --Call end Activity
523   OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
524 
525   Exception
526     When OKL_API.G_EXCEPTION_ERROR Then
527 
528       x_return_status :=OKL_API.HANDLE_EXCEPTIONS
529       (
530         l_api_name,
531         G_PKG_NAME,
532         'OKL_API.G_RET_STS_ERROR',
533         x_msg_count,
534         x_msg_data,
535         '_PVT'
536       );
537     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
538 
539       x_return_status :=OKL_API.HANDLE_EXCEPTIONS
540       (
541         l_api_name,
542         G_PKG_NAME,
543         'OKL_API.G_RET_STS_UNEXP_ERROR',
544         x_msg_count,
545         x_msg_data,
546         '_PVT'
547       );
548     WHEN OTHERS THEN
549 
550       x_return_status :=OKL_API.HANDLE_EXCEPTIONS
551       (
552         l_api_name,
553         G_PKG_NAME,
554         'OTHERS',
555         x_msg_count,
556         x_msg_data,
557         '_PVT'
558       );
559 
560 END convert_2functional_currency;
561 
562 
563 ------------------------------------------------------------------------------
564   --Start of comments
565   --
566   --Procedure Name        : update_trx_status
567   --Purpose               : Update transaction status - used internally
568   --Modification History  :
569   --20-Feb-2001    avsingh   Created
570 ------------------------------------------------------------------------------
571   PROCEDURE update_trx_status(p_api_version       IN  NUMBER,
572                               p_init_msg_list     IN  VARCHAR2,
573 	                          x_return_status     OUT NOCOPY VARCHAR2,
574                               x_msg_count         OUT NOCOPY NUMBER,
575                               x_msg_data          OUT NOCOPY VARCHAR2,
576                               p_tas_id            IN  NUMBER,
577                               p_tsu_code          IN  VARCHAR2) IS
578   l_return_status     VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
579   l_api_name          CONSTANT VARCHAR2(30) := 'update_trx_status';
580   l_api_version	      CONSTANT NUMBER	:= 1.0;
581 
582   l_thpv_rec          OKL_TRX_ASSETS_PUB.thpv_rec_type;
583   l_thpv_rec_out      OKL_TRX_ASSETS_PUB.thpv_rec_type;
584   --cursor to check existing tsu code
585   CURSOR tsu_code_csr (p_tas_id IN NUMBER) is
586   SELECT tsu_code
587   FROM   OKL_TRX_ASSETS
588   WHERE  id = p_tas_id;
589 
590   l_tsu_code OKL_TRX_ASSETS.TSU_CODE%TYPE;
591 BEGIN
592      --call start activity to set savepoint
593      l_return_status := OKL_API.START_ACTIVITY( substr(l_api_name,1,26),
594 	                                               p_init_msg_list,
595                                                    '_PVT',
596                                          	       x_return_status);
597      IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
598       		RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
599      ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
600       		RAISE OKL_API.G_EXCEPTION_ERROR;
601      END IF;
602      --check if tsu code has already been updated to processed
603      OPEN tsu_code_csr(p_tas_id => p_tas_id);
604           FETCH tsu_code_csr into l_tsu_code;
605           If tsu_code_csr%NOTFOUND Then
606              --internal error unable to find trransaction record while trying to update status
607              OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
608 				                 p_msg_name     => G_STS_UPDATE_TRX_MISSING,
609 				                 p_token1       => G_TAS_ID_TOKEN,
610 				                 p_token1_value => p_tas_id
611 				                );
612              Raise OKL_API.G_EXCEPTION_ERROR;
613           Else
614              If l_tsu_code = p_tsu_code Then
615                 --transaction already processed by another user
616                 OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
617 				                    p_msg_name     => G_TRX_ALREADY_PROCESSED
618 				                   );
619                  Raise OKL_API.G_EXCEPTION_ERROR;
620              Else
621                  l_thpv_rec.id := p_tas_id;
622                  l_thpv_rec.tsu_code := p_tsu_code;
623                  OKL_TRX_ASSETS_PUB.update_trx_ass_h_def(
624                                     p_api_version    => p_api_version,
625                                     p_init_msg_list  => p_init_msg_list,
626                                     x_return_status  => x_return_status,
627                                     x_msg_count      => x_msg_count,
628                                     x_msg_data       => x_msg_data,
629                                     p_thpv_rec       => l_thpv_rec,
630                                     x_thpv_rec       => l_thpv_rec_out);
631                     --dbms_output.put_line('after updating trx status '||x_return_status);
632                  IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
633                         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
634                  ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
635                         RAISE OKL_API.G_EXCEPTION_ERROR;
636                  END IF;
637              End If;
638           End If;
639         CLOSE tsu_code_csr;
640     --Call end Activity
641     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
642     Exception
643     When OKL_API.G_EXCEPTION_ERROR Then
644       x_return_status :=OKL_API.HANDLE_EXCEPTIONS
645       (
646         l_api_name,
647         G_PKG_NAME,
648         'OKL_API.G_RET_STS_ERROR',
649         x_msg_count,
650         x_msg_data,
651         '_PVT'
652       );
653     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
654       x_return_status :=OKL_API.HANDLE_EXCEPTIONS
655       (
656         l_api_name,
657         G_PKG_NAME,
658         'OKL_API.G_RET_STS_UNEXP_ERROR',
659         x_msg_count,
660         x_msg_data,
661         '_PVT'
662       );
663     WHEN OTHERS THEN
664       x_return_status :=OKL_API.HANDLE_EXCEPTIONS
665       (
666         l_api_name,
667         G_PKG_NAME,
668         'OTHERS',
669         x_msg_count,
670         x_msg_data,
671         '_PVT'
672       );
673 END update_trx_status;
674 --------------------------------------------------------------------------------
675 --Function to calculate Net Book Value of an asset
676 --This function is not being used anywhere for time being
677 --------------------------------------------------------------------------------
678 Procedure Calc_NBV (p_api_version   IN  NUMBER,
679                     p_init_msg_list IN  VARCHAR2,
680                     x_return_status OUT NOCOPY VARCHAR2,
681                     x_msg_count     OUT NOCOPY NUMBER,
682                     x_msg_data      OUT NOCOPY VARCHAR2,
683                     p_asset_id      IN VARCHAR2,
684                     x_nbv           OUT NOCOPY Number,
685                     x_current_units OUT NOCOPY Number,
686                     x_asset_number  OUT NOCOPY Varchar2,
687                     x_asset_description OUT NOCOPY Varchar2)  IS
688 
689 l_return_status        VARCHAR2(1)  default OKL_API.G_RET_STS_SUCCESS;
690 l_api_name             CONSTANT varchar2(30) := 'CALC_NBV';
691 l_api_version          CONSTANT NUMBER := 1.0;
692 
693 l_book_type_code       okx_assets_v.Corporate_Book%TYPE;
694 
695 
696 Cursor asset_cost_csr (p_asset_id     IN VARCHAR2) IS
697 Select cost,
698        corporate_book,
699        current_units,
700        name,
701        description
702 from   OKX_ASSETS_V
703 where  ID1 = p_asset_id
704 and    status = 'A'
705 and    nvl(start_date_active,sysdate) <= sysdate
706 and    nvl(end_date_active,sysdate + 1) > sysdate;
707 
708 Cursor Deprn_csr (p_asset_id     IN VARCHAR2,
709                   p_Book_Type_Code IN VARCHAR2) IS
710 select sum(deprn_amount)
711 from   OKX_AST_DPRTNS_V
712 where  Asset_id = to_number(p_asset_id)
713 and    book_type_code = p_book_type_code
714 and    status = 'A'
715 and    nvl(start_date_active,sysdate) <= sysdate
716 and    nvl(end_date_active,sysdate + 1) > sysdate;
717 
718 l_current_asset_cost  Number;
719 l_current_units       Number;
720 l_corporate_book      OKX_ASSETS_V.Corporate_Book%Type;
721 l_total_deprn         Number;
722 l_Nbv                 Number;
723 l_asset_number        OKX_ASSETS_V.Name%Type;
724 l_asset_description   OKX_ASSETS_V.Description%Type;
725 Begin
726 -----
727      Open asset_cost_csr (p_asset_id);
728      Fetch asset_cost_csr into l_current_asset_cost,
729                                l_corporate_book,
730                                l_current_units,
731                                l_asset_number,
732                                l_asset_description;
733      If asset_cost_csr%NOTFOUND Then
734         --dbms_output.put_line('current Cost Not Found');
735         RAISE OKL_API.G_EXCEPTION_ERROR;
736         --error handling
737      End If;
738      Close asset_cost_csr;
739 
740      Open Deprn_csr  (p_asset_id, l_book_type_code);
741      Fetch Deprn_csr into l_total_deprn;
742      If Deprn_csr%NOTFOUND Then
743         l_total_Deprn := 0;
744      End If;
745      Close Deprn_csr;
746      l_Nbv := l_current_asset_cost - l_total_deprn;
747      x_Nbv := l_Nbv;
748      x_current_units     := l_Current_Units;
749      x_asset_number      := l_asset_number;
750      x_asset_description := l_asset_description;
751 
752      Exception
753      When OKL_API.G_EXCEPTION_ERROR Then
754           Null;
755           --set message and stop
756           -- for testing
757 End Calc_Nbv;
758 
759 --Bug# 3783518: start
760 ------------------------------------------------------------------------------
761   --Start of comments
762   --
763   --Procedure Name        : validate_release_date
764   --Purpose               : Check if Release Contract Start Date
765   --                        falls within the current open FA period
766   --                        - used internally
767   --Modification History  :
768   --08-Jul-2004    rpillay   Created
769 ------------------------------------------------------------------------------
770 PROCEDURE  validate_release_date
771                  (p_api_version     IN  NUMBER,
772                   p_init_msg_list   IN  VARCHAR2,
773                   x_return_status   OUT NOCOPY VARCHAR2,
774                   x_msg_count       OUT NOCOPY NUMBER,
775                   x_msg_data        OUT NOCOPY VARCHAR2,
776                   p_book_type_code  IN  VARCHAR2,
777                   p_release_date    IN  DATE) IS
778 
779   l_return_status     VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
780   l_api_name          CONSTANT VARCHAR2(30) := 'validate_release_date';
781   l_api_version	    CONSTANT NUMBER	:= 1.0;
782 
783   CURSOR open_period_cur(p_book_type_code IN VARCHAR2) IS
784   select period_name,
785          calendar_period_open_date,
786          calendar_period_close_date
787   from fa_deprn_periods
788   where book_type_code = p_book_type_code
789   and period_close_date is null;
790 
791   open_period_rec          open_period_cur%rowtype;
792   l_current_open_period    varchar2(240) default null;
793 
794   l_icx_date_format        varchar2(240);
795 BEGIN
796 
797    open open_period_cur(p_book_type_code);
798    fetch open_period_cur into open_period_rec;
799    close open_period_cur;
800 
801    IF NOT ( p_release_date BETWEEN open_period_rec.calendar_period_open_date AND
802             open_period_rec.calendar_period_close_date ) THEN
803 
804      l_icx_date_format := nvl(fnd_profile.value('ICX_DATE_FORMAT_MASK'),'DD-MON-RRRR');
805 
806      l_current_open_period := open_period_rec.period_name||' ('||
807                   to_char(open_period_rec.calendar_period_open_date,l_icx_date_format)
808                   ||' - '||to_char(open_period_rec.calendar_period_close_date,l_icx_date_format)||')';
809      OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
810                          p_msg_name     => 'OKL_LLA_RELEASE_DATE_INVALID',
811                          p_token1       => 'BOOK_TYPE_CODE',
812                          p_token1_value => p_book_type_code,
813                          p_token2       => 'OPEN_PERIOD',
814                          p_token2_value => l_current_open_period
815 				 );
816      RAISE OKL_API.G_EXCEPTION_ERROR;
817    END IF;
818 
819 EXCEPTION
820   WHEN OKL_API.G_EXCEPTION_ERROR Then
821     x_return_status := OKL_API.G_RET_STS_ERROR;
822 
823   WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
824     x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
825 
826   WHEN OTHERS THEN
827     x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
828 
829 END validate_release_date;
830 
831 ------------------------------------------------------------------------------
832   --Start of comments
833   --
834   --Procedure Name        : validate_rebook_date
835   --Purpose               : Check to ensure that Revision Date does not fall
836   --                        after the current open FA period
837   --                        - used internally
838   --Modification History  :
839   --08-Jul-2004    rpillay   Created
840 ------------------------------------------------------------------------------
841 PROCEDURE  validate_rebook_date
842                  (p_api_version     IN  NUMBER,
843                   p_init_msg_list   IN  VARCHAR2,
844                   x_return_status   OUT NOCOPY VARCHAR2,
845                   x_msg_count       OUT NOCOPY NUMBER,
846                   x_msg_data        OUT NOCOPY VARCHAR2,
847                   p_book_type_code  IN  VARCHAR2,
848                   p_rebook_date     IN  DATE,
849                   p_cost_adjustment IN  NUMBER,
850                   p_contract_start_date IN DATE) IS
851 
852   l_return_status     VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
853   l_api_name          CONSTANT VARCHAR2(30) := 'validate_rebook_date';
854   l_api_version	    CONSTANT NUMBER	:= 1.0;
855 
856   CURSOR open_period_cur(p_book_type_code IN VARCHAR2) IS
857   select period_name,
858          calendar_period_open_date,
859          calendar_period_close_date
860   from fa_deprn_periods
861   where book_type_code = p_book_type_code
862   and period_close_date is null;
863 
864   open_period_rec          open_period_cur%rowtype;
865   l_current_open_period    varchar2(240) default null;
866 
867   l_icx_date_format        varchar2(240);
868 BEGIN
869 
870    open open_period_cur(p_book_type_code);
871    fetch open_period_cur into open_period_rec;
872    close open_period_cur;
873 
874    -- Revision Date should be in the current or a prior FA period
875    IF (p_rebook_date > open_period_rec.calendar_period_close_date) THEN
876 
877      l_icx_date_format := nvl(fnd_profile.value('ICX_DATE_FORMAT_MASK'),'DD-MON-RRRR');
878 
879      l_current_open_period := open_period_rec.period_name||' ('||
880                   to_char(open_period_rec.calendar_period_open_date,l_icx_date_format)
881                   ||' - '||to_char(open_period_rec.calendar_period_close_date,l_icx_date_format)||')';
882      OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
883                          p_msg_name     => 'OKL_LLA_REBOOK_DATE_INVALID',
884                          p_token1       => 'BOOK_TYPE_CODE',
885                          p_token1_value => p_book_type_code,
886                          p_token2       => 'OPEN_PERIOD',
887                          p_token2_value => l_current_open_period
888 				 );
889      RAISE OKL_API.G_EXCEPTION_ERROR;
890    END IF;
891 
892    -- sechawla : Bug# 8370324 Removed validation that Revision Date should be the
893    -- same as Contract Start Date in order to make an asset cost change
894 
895    /*
896    -- Revision Date should be the same as Contract Start Date inorder to make an
897    -- asset cost change
898    IF (p_cost_adjustment IS NOT NULL AND
899        p_contract_start_date <> p_rebook_date) THEN
900 
901      OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
902                          p_msg_name     => 'OKL_LLA_VALIDATE_DEPR_COST_CHG'
903 				 );
904      RAISE OKL_API.G_EXCEPTION_ERROR;
905    END IF;
906    */
907 EXCEPTION
908   WHEN OKL_API.G_EXCEPTION_ERROR Then
909     x_return_status := OKL_API.G_RET_STS_ERROR;
910 
911   WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
912     x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
913 
914   WHEN OTHERS THEN
915     x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
916 
917 END validate_rebook_date;
918 --Bug# 3783518: end
919 --------------------------------------------------------------------------------
920 --Start of Comments
921 --Procedure Name : FIXED_ASSET_ADJUST
922 --Description    : Calls FA adJUSTMENTS api to adjust the book costs
923 --History        :
924 --                 28-Nov-2001  ashish.singh Created
925 -- Notes        :
926 -- IN Parameters
927 --               p_asset_id  - asset for which cost is to be adjusted
928 --               p_book_type_code - Book in whic cost cost is to be adjusted
929 --               p_adjust_cost    - cost to be adjusted
930 --               Bug# 2657558
931 --               p_adj_salvage_value - salvage value to be adjusted
932 --
933 --               Bug# 6373605 (OKL.R12.B SLA CRs
934 --               p_sla_source_header_id    IN Number,
935 --                  ID of source OKL_TRX_ASSETS record
936 --               p_sla_source_header_table IN Varchar2,
937 --                  'OKL_TRX_ASSETS'
938 --               p_sla_source_try_id       IN Number,
939 --                   OKL_TRX_ASSETS.try_id (transaction type id)
940 --               p_sla_source_line_id      IN Number,
941 --                   ID of line table (OKL_TXL_ASSETS_B or
942 --                                     OKL_TXD_ASSETS_B
943 --               p_sla_source_line_table   IN Varchar2,
944 --                    OKL_TXL_ASSETS_B or OKL_TXD_ASSETS_B
945 --               p_sla_source_chr_id       IN Number,
946 --                    Contract id of the contract on which
947 --                    source transaction happened
948 --               p_sla_source_kle_id       IN Number,
949 --                    Financial asset line id (lse_id = 33)
950 --               p_sla_asset_chr_id        IN Number,
951 --                    Contract on which asset is present
952 --                    at the time of transaction (in case of
953 --                    online rebook transaction is against the rebook
954 --                    copy contract whereas the asset is on
955 --                    original contract
956 --
957 -- OUT Parameters
958 --               x_asset_fin_rec - asset financial info record with adjusted
959 --                                 costs
960 --End of Comments
961 --------------------------------------------------------------------------------
962 PROCEDURE FIXED_ASSET_ADJUST_COST(p_api_version    IN  NUMBER,
963                                   p_init_msg_list  IN  VARCHAR2,
964                                   x_return_status  OUT NOCOPY VARCHAR2,
965                                   x_msg_count      OUT NOCOPY NUMBER,
966                                   x_msg_data       OUT NOCOPY VARCHAR2,
967 		                  p_chr_id         IN  NUMBER,
968                                   p_asset_id       IN  NUMBER,
969                                   p_book_type_code IN  OKX_AST_BKS_V.BOOK_TYPE_CODE%TYPE,
970                                   p_adjust_cost    IN  NUMBER,
971                                   --Bug# 2657558
972                                   p_adj_salvage_value IN NUMBER,
973                                   --Bug# 2981308
974                                   p_adj_percent_sv    IN NUMBER,
975                                   --Bug# 3156924
976                                   p_trans_number      IN VARCHAR2,
977                                   p_calling_interface IN VARCHAR2,
978                                   --Bug Fix# 2925461
979                                   p_adj_date       IN  DATE,
980                                   --Bug# 6373605--SLA populate source
981                                   p_sla_source_header_id    IN Number,
982                                   p_sla_source_header_table IN Varchar2,
983                                   p_sla_source_try_id       IN Number,
984                                   p_sla_source_line_id      IN Number,
985                                   p_sla_source_line_table   IN Varchar2,
986                                   --source transaction contract id
987                                   p_sla_source_chr_id       IN Number,
988                                   p_sla_source_kle_id       IN Number,
989                                   --contract id to which the asset belongs
990                                   p_sla_asset_chr_id        IN Number,
991                                  --Bug# 6373605--SLA populate source
992                                   --Bug# 4028371
993                                   x_fa_trx_date    OUT NOCOPY DATE,
994                                   x_asset_fin_rec  OUT NOCOPY FA_API_TYPES.asset_fin_rec_type) is
995 
996 l_return_status        VARCHAR2(1)  default OKL_API.G_RET_STS_SUCCESS;
997 l_api_name             CONSTANT varchar2(30) := 'FIXED_ASSET_ADJ_CST';
998 l_api_version          CONSTANT NUMBER := 1.0;
999 
1000 l_trans_rec               FA_API_TYPES.trans_rec_type;
1001 l_asset_hdr_rec           FA_API_TYPES.asset_hdr_rec_type;
1002 l_asset_fin_rec_adj       FA_API_TYPES.asset_fin_rec_type;
1003 l_asset_fin_rec_new       FA_API_TYPES.asset_fin_rec_type;
1004 l_asset_fin_mrc_tbl_new   FA_API_TYPES.asset_fin_tbl_type;
1005 l_inv_trans_rec           FA_API_TYPES.inv_trans_rec_type;
1006 l_inv_tbl                 FA_API_TYPES.inv_tbl_type;
1007 l_asset_deprn_rec_adj     FA_API_TYPES.asset_deprn_rec_type;
1008 l_asset_deprn_rec_new     FA_API_TYPES.asset_deprn_rec_type;
1009 l_asset_deprn_mrc_tbl_new FA_API_TYPES.asset_deprn_tbl_type;
1010 l_inv_rec                 FA_API_TYPES.inv_rec_type;
1011 l_asset_deprn_rec         FA_API_TYPES.asset_deprn_rec_type;
1012 l_group_recalss_option_rec FA_API_TYPES.group_reclass_options_rec_type;
1013 
1014 l_asset_id               NUMBER;
1015 l_book_type_code         OKX_AST_BKS_V.BOOK_TYPE_CODE%TYPE;
1016 l_adjust_cost            NUMBER;
1017 --Bug # 2657558
1018 l_adj_salvage_value      NUMBER;
1019 --Bug# 2981308
1020 l_adj_percent_sv         NUMBER;
1021 
1022 --Bug# 5946411: parameters for getting depreciation reserve
1023 l_fa_asset_hdr_rec   FA_API_TYPES.asset_hdr_rec_type;
1024 l_fa_asset_deprn_rec FA_API_TYPES.asset_deprn_rec_type;
1025 
1026 --Bug# 6373605 begin
1027 l_fxhv_rec okl_sla_acc_sources_pvt.fxhv_rec_type;
1028 l_fxlv_rec okl_sla_acc_sources_pvt.fxlv_rec_type;
1029 --Bug# 6373605 end
1030 
1031 Begin
1032 
1033     x_return_status := OKL_API.G_RET_STS_SUCCESS;
1034     l_asset_id := p_asset_id;
1035     l_book_type_code := p_book_type_code;
1036     l_adjust_cost := p_adjust_cost;
1037     --Bug # 2657558
1038     l_adj_salvage_value := p_adj_salvage_value;
1039 
1040     --Bug# 2981308 :
1041     l_adj_percent_sv := p_adj_percent_sv;
1042 
1043     -- Call start_activity to create savepoint, check compatibility
1044     -- and initialize message list
1045     x_return_status := OKL_API.START_ACTIVITY (
1046                                l_api_name
1047                                ,p_init_msg_list
1048                                ,'_PVT'
1049                                ,x_return_status);
1050     -- Check if activity started successfully
1051     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1052        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1053     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
1054        RAISE OKL_API.G_EXCEPTION_ERROR;
1055     END IF;
1056 
1057    --dbms_output.enable(1000000);
1058 
1059    --Bug# 2726366
1060    --FA_SRVR_MSG.Init_Server_Message;
1061    --FA_DEBUG_PKG.Initialize;
1062 
1063     -- asset header info
1064    l_asset_hdr_rec.asset_id       := l_asset_id ;
1065    l_asset_hdr_rec.book_type_code := l_book_type_code;
1066 
1067    -- Bug# 3783518 - This api will be called only to adjust the
1068    -- the cost and salvage value to zero for assets on
1069    -- DF/ST Lease, immediately after creation of the asset, so
1070    -- the cost adjustment is to be Expensed in the current open period.
1071 
1072    --Bug# 3156924 :
1073    l_trans_rec.transaction_name  := substr(p_trans_number,1,20); --optional
1074    l_trans_rec.calling_interface := p_calling_interface; --optional
1075 
1076 /*
1077    -- fin info
1078    convert_2functional_currency( p_chr_id,
1079                                  l_adjust_cost,
1080 				 l_asset_fin_rec_adj.cost);
1081 
1082    --l_asset_fin_rec_adj.cost := l_adjust_cost;
1083    convert_2functional_currency( p_chr_id,
1084                                  l_adj_salvage_value,
1085 				 l_asset_fin_rec_adj.salvage_value);
1086 
1087 */
1088 
1089    --Bug # 2657558
1090    l_asset_fin_rec_adj.salvage_value         := l_adj_salvage_value;
1091    l_asset_fin_rec_adj.cost                  := l_adjust_cost;
1092    --Bug# 2981308
1093    l_asset_fin_rec_adj.percent_salvage_value := l_adj_percent_sv;
1094    --Bug# 6373605
1095    l_asset_fin_rec_adj.contract_id           := p_sla_asset_chr_id;
1096 
1097    --Bug# 6804043: In R12 codeline, do not back out depreciation reserve
1098    --              when cost adjustment is done in period of addition
1099    /*
1100 
1101     ---------------------------------------------------------------------------------------------
1102     --Bug# 5946411 :
1103     -- If adjustment being done in period of addition depreciation reserve needs to be backed out
1104     ---------------------------------------------------------------------------------------------
1105     --1. Check if adjustment is being made in the period of addition of the asset
1106     ---------------------------------------------------------------------------------------------
1107     l_fa_asset_hdr_rec.asset_id       := l_asset_id;
1108     l_fa_asset_hdr_rec.book_type_code := l_book_type_code;
1109 
1110     If NOT fa_cache_pkg.fazcbc(x_book => l_fa_asset_hdr_rec.book_type_code) then
1111         OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
1112                             p_msg_name     => 'OKL_LLA_FA_CACHE_ERROR'
1113                            );
1114         Raise OKL_API.G_EXCEPTION_ERROR;
1115     end if;
1116 
1117     If not FA_ASSET_VAL_PVT.validate_period_of_addition
1118              (p_asset_id            => l_fa_asset_hdr_rec.asset_id,
1119               p_book                => l_fa_asset_hdr_rec.book_type_code,
1120               p_mode                => 'ABSOLUTE',
1121               px_period_of_addition => l_fa_asset_hdr_rec.period_of_addition
1122              ) then
1123         OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
1124                             p_msg_name     => 'OKL_LLA_FA_POA_ERROR'
1125                            );
1126         Raise OKL_API.G_EXCEPTION_ERROR;
1127     end if;
1128 
1129 
1130     If nvl(l_fa_asset_hdr_rec.period_of_addition,'N') = 'Y' Then
1131         --------------------------------------
1132         --2. Get the depreciation reserve
1133         --------------------------------------
1134         get_deprn_reserve
1135                    (p_api_version      =>  p_api_version,
1136                     p_init_msg_list    =>  p_init_msg_list,
1137                     x_return_status    =>  x_return_status,
1138                     x_msg_count        =>  x_msg_count,
1139                     x_msg_data         =>  x_msg_data,
1140                     p_asset_id         =>  l_asset_id,
1141                     p_book_type_code   =>  l_book_type_code,
1142                     x_asset_deprn_rec  =>  l_fa_asset_deprn_rec);
1143 
1144         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1145             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1146         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
1147             RAISE OKL_API.G_EXCEPTION_ERROR;
1148         END IF;
1149 
1150         If l_fa_asset_deprn_rec.deprn_reserve > 0 then
1151             l_asset_deprn_rec_adj.deprn_reserve := (-1) * l_fa_asset_deprn_rec.deprn_reserve;
1152         End If;
1153         If l_fa_asset_deprn_rec.ytd_deprn > 0 then
1154             l_asset_deprn_rec_adj.ytd_deprn     := (-1) * l_fa_asset_deprn_rec.ytd_deprn;
1155         End If;
1156         If l_fa_asset_deprn_rec.prior_fy_expense > 0 then
1157             l_asset_deprn_rec_adj.prior_fy_expense := (-1) * l_fa_asset_deprn_rec.prior_fy_expense;
1158         End If;
1159         If l_fa_asset_deprn_rec.bonus_ytd_deprn > 0 then
1160             l_asset_deprn_rec_adj.bonus_ytd_deprn  := (-1) * l_fa_asset_deprn_rec.bonus_ytd_deprn;
1161         End If;
1162         If l_fa_asset_deprn_rec.bonus_deprn_reserve > 0 then
1163             l_asset_deprn_rec_adj.bonus_deprn_reserve := (-1) * l_fa_asset_deprn_rec.bonus_deprn_reserve;
1164         End If;
1165 
1166     End If;
1167     --End Bug# 5946411
1168     */
1169     --End Bug# 6804043
1170 
1171     FA_ADJUSTMENT_PUB.do_adjustment
1172       (p_api_version             => p_api_version,
1173        p_init_msg_list           => p_init_msg_list,
1174        p_commit                  => FND_API.G_FALSE,
1175        p_validation_level        => FND_API.G_VALID_LEVEL_FULL,
1176        x_return_status           => x_return_status,
1177        x_msg_count               => x_msg_count,
1178        x_msg_data                => x_msg_data,
1179        --Bug# 3156924
1180        --p_calling_fn              => l_api_name,
1181        p_calling_fn              => p_calling_interface,
1182        px_trans_rec              => l_trans_rec,
1183        px_asset_hdr_rec          => l_asset_hdr_rec,
1184        p_asset_fin_rec_adj       => l_asset_fin_rec_adj,
1185        x_asset_fin_rec_new       => l_asset_fin_rec_new,
1186        x_asset_fin_mrc_tbl_new   => l_asset_fin_mrc_tbl_new,
1187        px_inv_trans_rec          => l_inv_trans_rec,
1188        px_inv_tbl                => l_inv_tbl,
1189        p_asset_deprn_rec_adj     => l_asset_deprn_rec_adj,
1190        x_asset_deprn_rec_new     => l_asset_deprn_rec_new,
1191        x_asset_deprn_mrc_tbl_new => l_asset_deprn_mrc_tbl_new,
1192        p_group_reclass_options_rec => l_group_recalss_option_rec
1193       );
1194 
1195      --dbms_output.put_line('After Call to FA ADJUST API "'||l_return_status||'"');
1196      IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1197          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1198      ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
1199          RAISE OKL_API.G_EXCEPTION_ERROR;
1200      END IF;
1201      --Bug# 4028371
1202      x_fa_trx_date       :=  l_trans_rec.transaction_date_entered;
1203      --bug# 6373605 -- call populate sla sources
1204       l_fxhv_rec.source_id := p_sla_source_header_id;
1205       l_fxhv_rec.source_table := p_sla_source_header_table;
1206       l_fxhv_rec.khr_id := p_sla_source_chr_id;
1207       l_fxhv_rec.try_id := p_sla_source_try_id;
1208 
1209       l_fxlv_rec.source_id := p_sla_source_line_id;
1210       l_fxlv_rec.source_table := p_sla_source_line_table;
1211       l_fxlv_rec.kle_id := p_sla_source_kle_id;
1212 
1213       l_fxlv_rec.asset_id := l_asset_hdr_rec.asset_id;
1214       l_fxlv_rec.fa_transaction_id := l_trans_rec.transaction_header_id;
1215       l_fxlv_rec.asset_book_type_name := l_asset_hdr_rec.book_type_code;
1216 
1217 
1218 
1219       OKL_SLA_ACC_SOURCES_PVT.populate_sources(
1220       p_api_version  => p_api_version
1221      ,p_init_msg_list => p_init_msg_list
1222      ,p_fxhv_rec => l_fxhv_rec
1223      ,p_fxlv_rec => l_fxlv_rec
1224      ,x_return_status => x_return_status
1225      ,x_msg_count    => x_msg_count
1226      ,x_msg_data    => x_msg_data
1227       );
1228      IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1229          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1230      ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
1231          RAISE OKL_API.G_EXCEPTION_ERROR;
1232      END IF;
1233 
1234      --bug# 6373605 -- call populate SLA sources
1235 
1236      OKL_API.END_ACTIVITY (x_msg_count,
1237                           x_msg_data );
1238     EXCEPTION
1239     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1240     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1241                                l_api_name,
1242                                G_PKG_NAME,
1243                                'OKL_API.G_RET_STS_ERROR',
1244                                x_msg_count,
1245                                x_msg_data,
1246                                '_PVT');
1247     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1248     --dbms_output.put_line('Raising unexpected here...');
1249     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
1250                               l_api_name,
1251                               G_PKG_NAME,
1252                               'OKL_API.G_RET_STS_UNEXP_ERROR',
1253                               x_msg_count,
1254                               x_msg_data,
1255                               '_PVT');
1256     WHEN OTHERS THEN
1257     --dbms_output.put_line('Raising when others here...'||SQLERRM);
1258     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
1259                               l_api_name,
1260                               G_PKG_NAME,
1261                               'OTHERS',
1262                               x_msg_count,
1263                               x_msg_data,
1264                               '_PVT');
1265 END FIXED_ASSET_ADJUST_COST;
1266 --------------------------------------------------------------------------------
1267 --Start of Comments
1268 --Procedure Name : FIXED_ASSET_ADJUST
1269 --Description    : Calls FA adJUSTMENTS api to adjust the book deprn parameters
1270 --History        :
1271 --                 28-Nov-2001  ashish.singh Created
1272 -- Notes        :
1273 -- IN Parameters
1274 --               p_asset_id  - asset for which cost is to be adjusted
1275 --               p_book_type_code - Book in whic cost cost is to be adjusted
1276 --               p_asset_fin_rec_adj - asset fin rec to adjust
1277 --
1278 --               Bug# 6373605 -R12.B SAL CRs
1279 --               New IN parameters as descriped earlier in
1280 --               FIXED_ASSET_ADJUST_COST
1281 --
1282 -- OUT Parameters
1283 --               x_asset_fin_rec_new - asset financial info record with adjusted
1284 --
1285 --End of Comments
1286 --------------------------------------------------------------------------------
1287 PROCEDURE FIXED_ASSET_ADJUST   (p_api_version          IN  NUMBER,
1288                                 p_init_msg_list        IN  VARCHAR2,
1289                                 x_return_status        OUT NOCOPY VARCHAR2,
1290                                 x_msg_count            OUT NOCOPY NUMBER,
1291                                 x_msg_data             OUT NOCOPY VARCHAR2,
1292 				p_chr_id               IN  NUMBER,
1293                                 p_asset_id             IN  NUMBER,
1294                                 p_book_type_code       IN  OKX_AST_BKS_V.BOOK_TYPE_CODE%TYPE,
1295                                 p_asset_fin_rec_adj    IN  FA_API_TYPES.asset_fin_rec_type,
1296                                 --Bug Fix# 2925461
1297                                 p_adj_date             IN  DATE,
1298                                 --Bug# 3156924
1299                                 p_trans_number         IN  VARCHAR2,
1300                                 p_calling_interface    IN  VARCHAR2,
1301                                 --Bug# 3156924
1302                                 --Bug# 6373605--SLA populate source
1303                                 p_sla_source_header_id    IN Number,
1304                                 p_sla_source_header_table IN Varchar2,
1305                                 p_sla_source_try_id       IN Number,
1306                                 p_sla_source_line_id      IN Number,
1307                                 p_sla_source_line_table   IN Varchar2,
1308                                 p_sla_source_chr_id       IN Number,
1309                                 p_sla_source_kle_id       IN Number,
1310                                 --Bug# 6373605--SLA populate source
1311                                 --Bug# 4028371
1312                                 x_fa_trx_date          OUT NOCOPY DATE,
1313                                 x_asset_fin_rec_new    OUT NOCOPY FA_API_TYPES.asset_fin_rec_type) is
1314 
1315 l_return_status        VARCHAR2(1)  default OKL_API.G_RET_STS_SUCCESS;
1316 l_api_name             CONSTANT varchar2(30) := 'FIXED_ASSET_ADJUST';
1317 l_api_version          CONSTANT NUMBER := 1.0;
1318 
1319 l_trans_rec               FA_API_TYPES.trans_rec_type;
1320 l_asset_hdr_rec           FA_API_TYPES.asset_hdr_rec_type;
1321 l_asset_fin_rec_adj       FA_API_TYPES.asset_fin_rec_type;
1322 l_asset_fin_rec_new       FA_API_TYPES.asset_fin_rec_type;
1323 l_asset_fin_mrc_tbl_new   FA_API_TYPES.asset_fin_tbl_type;
1324 l_inv_trans_rec           FA_API_TYPES.inv_trans_rec_type;
1325 l_inv_tbl                 FA_API_TYPES.inv_tbl_type;
1326 l_asset_deprn_rec_adj     FA_API_TYPES.asset_deprn_rec_type;
1327 l_asset_deprn_rec_new     FA_API_TYPES.asset_deprn_rec_type;
1328 l_asset_deprn_mrc_tbl_new FA_API_TYPES.asset_deprn_tbl_type;
1329 l_inv_rec                 FA_API_TYPES.inv_rec_type;
1330 l_asset_deprn_rec         FA_API_TYPES.asset_deprn_rec_type;
1331 l_group_recalss_option_rec FA_API_TYPES.group_reclass_options_rec_type;
1332 
1333 l_asset_id               NUMBER;
1334 l_book_type_code         OKX_AST_BKS_V.BOOK_TYPE_CODE%TYPE;
1335 
1336 l_mesg_len NUMBER;
1337 l_mesg     Varchar2(2000);
1338 
1339 --Bug# 5946411: parameters for getting depreciation reserve
1340 l_fa_asset_hdr_rec   FA_API_TYPES.asset_hdr_rec_type;
1341 l_fa_asset_deprn_rec FA_API_TYPES.asset_deprn_rec_type;
1342 
1343 --Bug# 6373605 begin
1344 l_fxhv_rec okl_sla_acc_sources_pvt.fxhv_rec_type;
1345 l_fxlv_rec okl_sla_acc_sources_pvt.fxlv_rec_type;
1346 --Bug# 6373605 end
1347 
1348 Begin
1349 
1350     x_return_status := OKL_API.G_RET_STS_SUCCESS;
1351     l_asset_id := p_asset_id;
1352     l_book_type_code := p_book_type_code;
1353 
1354     -- Call start_activity to create savepoint, check compatibility
1355     -- and initialize message list
1356     x_return_status := OKL_API.START_ACTIVITY (
1357                                l_api_name
1358                                ,p_init_msg_list
1359                                ,'_PVT'
1360                                ,x_return_status);
1361     -- Check if activity started successfully
1362     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1363        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1364     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
1365        RAISE OKL_API.G_EXCEPTION_ERROR;
1366     END IF;
1367 
1368    --dbms_output.enable(1000000);
1369 
1370    --bug# 2726366
1371    --FA_SRVR_MSG.Init_Server_Message;
1372    --FA_DEBUG_PKG.Initialize;
1373 
1374     -- asset header info
1375    l_asset_hdr_rec.asset_id       := l_asset_id ;
1376    l_asset_hdr_rec.book_type_code := l_book_type_code;
1377 
1378    --------------
1379    --Bug# 3156924
1380    --------------
1381    l_trans_rec.transaction_name := substr(p_trans_number,1,20);
1382    l_trans_rec.calling_interface := p_calling_interface;
1383 
1384    --------------
1385    --Bug# 3783518
1386    --------------
1387    l_trans_rec.transaction_subtype     := 'AMORTIZED';
1388    l_trans_rec.amortization_start_date := p_adj_date;
1389 
1390    l_asset_fin_rec_adj := p_asset_fin_rec_adj;
1391 
1392     /*
1393     -- convert to functional currency if need be.
1394     convert_2functional_currency( p_chr_id,
1395                                   p_asset_fin_rec_adj.cost,
1396                                   l_asset_fin_rec_adj.cost);
1397 
1398     convert_2functional_currency( p_chr_id,
1399                                   p_asset_fin_rec_adj.salvage_value,
1400                                   l_asset_fin_rec_adj.salvage_value);
1401 
1402     */
1403 
1404    --Bug# 6804043: In R12 codeline, do not back out depreciation reserve
1405    --              when cost adjustment is done in period of addition
1406    /*
1407        ---------------------------------------------------------------------------------------------
1408        --Bug# 5946411 :
1409        -- If adjustment being done in period of addition depreciation reserve needs to be backed out
1410        ---------------------------------------------------------------------------------------------
1411        --1. Check if adjustment is being made in the period of addition of the asset
1412        ---------------------------------------------------------------------------------------------
1413        l_fa_asset_hdr_rec.asset_id       := l_asset_id;
1414        l_fa_asset_hdr_rec.book_type_code := l_book_type_code;
1415 
1416        If NOT fa_cache_pkg.fazcbc(x_book => l_fa_asset_hdr_rec.book_type_code) then
1417            OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
1418                                p_msg_name     => 'OKL_LLA_FA_CACHE_ERROR'
1419                               );
1420            Raise OKL_API.G_EXCEPTION_ERROR;
1421        end if;
1422 
1423        If not FA_ASSET_VAL_PVT.validate_period_of_addition
1424              (p_asset_id            => l_fa_asset_hdr_rec.asset_id,
1425               p_book                => l_fa_asset_hdr_rec.book_type_code,
1426               p_mode                => 'ABSOLUTE',
1427               px_period_of_addition => l_fa_asset_hdr_rec.period_of_addition
1428              ) then
1429            OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
1430                                p_msg_name     => 'OKL_LLA_FA_POA_ERROR'
1431                               );
1432            Raise OKL_API.G_EXCEPTION_ERROR;
1433        end if;
1434 
1435 
1436        If nvl(l_fa_asset_hdr_rec.period_of_addition,'N') = 'Y' Then
1437            --------------------------------------
1438            --2. Get the depreciation reserve
1439            --------------------------------------
1440            get_deprn_reserve
1441                    (p_api_version      =>  p_api_version,
1442                     p_init_msg_list    =>  p_init_msg_list,
1443                     x_return_status    =>  x_return_status,
1444                     x_msg_count        =>  x_msg_count,
1445                     x_msg_data         =>  x_msg_data,
1446                     p_asset_id         =>  l_asset_id,
1447                     p_book_type_code   =>  l_book_type_code,
1448                     x_asset_deprn_rec  =>  l_fa_asset_deprn_rec);
1449 
1450            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1451                RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1452            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
1453                RAISE OKL_API.G_EXCEPTION_ERROR;
1454            END IF;
1455 
1456            If l_fa_asset_deprn_rec.deprn_reserve > 0 then
1457                l_asset_deprn_rec_adj.deprn_reserve := (-1) * l_fa_asset_deprn_rec.deprn_reserve;
1458            End If;
1459            If l_fa_asset_deprn_rec.ytd_deprn > 0 then
1460                l_asset_deprn_rec_adj.ytd_deprn     := (-1) * l_fa_asset_deprn_rec.ytd_deprn;
1461            End If;
1462            If l_fa_asset_deprn_rec.prior_fy_expense > 0 then
1463                l_asset_deprn_rec_adj.prior_fy_expense := (-1) * l_fa_asset_deprn_rec.prior_fy_expense;
1464            End If;
1465            If l_fa_asset_deprn_rec.bonus_ytd_deprn > 0 then
1466                l_asset_deprn_rec_adj.bonus_ytd_deprn  := (-1) * l_fa_asset_deprn_rec.bonus_ytd_deprn;
1467            End If;
1468            If l_fa_asset_deprn_rec.bonus_deprn_reserve > 0 then
1469                l_asset_deprn_rec_adj.bonus_deprn_reserve := (-1) * l_fa_asset_deprn_rec.bonus_deprn_reserve;
1470            End If;
1471        End If;
1472        --End Bug# 5946411
1473     */
1474     --End Bug# 6804043
1475 
1476     FA_ADJUSTMENT_PUB.do_adjustment
1477       (p_api_version             => p_api_version,
1478        p_init_msg_list           => p_init_msg_list,
1479        p_commit                  => FND_API.G_FALSE,
1480        p_validation_level        => FND_API.G_VALID_LEVEL_FULL,
1481        x_return_status           => x_return_status,
1482        x_msg_count               => x_msg_count,
1483        x_msg_data                => x_msg_data,
1484        --Bug# 3156924
1485        --p_calling_fn              => l_api_name,
1486        p_calling_fn              => p_calling_interface,
1487        px_trans_rec              => l_trans_rec,
1488        px_asset_hdr_rec          => l_asset_hdr_rec,
1489        p_asset_fin_rec_adj       => l_asset_fin_rec_adj,
1490        x_asset_fin_rec_new       => x_asset_fin_rec_new,
1491        x_asset_fin_mrc_tbl_new   => l_asset_fin_mrc_tbl_new,
1492        px_inv_trans_rec          => l_inv_trans_rec,
1493        px_inv_tbl                => l_inv_tbl,
1494        p_asset_deprn_rec_adj     => l_asset_deprn_rec_adj,
1495        x_asset_deprn_rec_new     => l_asset_deprn_rec_new,
1496        x_asset_deprn_mrc_tbl_new => l_asset_deprn_mrc_tbl_new,
1497        p_group_reclass_options_rec => l_group_recalss_option_rec
1498       );
1499 
1500      --dbms_output.put_line('After Call to FA ADJUST API "'||x_return_status||'"');
1501 --      if (x_return_status <> FND_API.G_RET_STS_SUCCESS) then
1502 
1503 --      x_msg_count := fnd_msg_pub.count_msg;
1504 
1505 --      if x_msg_count > 0 then
1506 
1507 --         l_mesg := chr(10) || substr(fnd_msg_pub.get
1508 --                                     (fnd_msg_pub.G_FIRST, fnd_api.G_FALSE),
1509 --                                      1, 512);
1510 
1511 --         for i in 1..2 loop -- (l_mesg_count - 1) loop
1512 --            l_mesg := l_mesg || chr(10) ||
1513 --                        substr(fnd_msg_pub.get
1514 --                               (fnd_msg_pub.G_NEXT,
1515 --                                fnd_api.G_FALSE), 1, 512);
1516 --         end loop;
1517 
1518 --         fnd_msg_pub.delete_msg();
1519 
1520 --         l_mesg_len := length(l_mesg);
1521 --         for i in 1..ceil(l_mesg_len/255) loop
1522 --                dbms_output.put_line(substr(l_mesg, ((i*255)-254), 255));
1523 --         end loop;
1524 --      end if;
1525 
1526 --   else
1527 
1528       --dbms_output.put_line('SUCCESS');
1529       --dbms_output.put_line('THID' ||
1530                             --to_char(l_trans_rec.transaction_header_id));
1531 
1532 --   end if;
1533 
1534      IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1535          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1536      ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
1537          RAISE OKL_API.G_EXCEPTION_ERROR;
1538      END IF;
1539      --Bug# 4028371
1540      x_fa_trx_date := l_trans_rec.transaction_date_entered;
1541    --bug# 6373605 -- call populate sla sources
1542       l_fxhv_rec.source_id := p_sla_source_header_id;
1543       l_fxhv_rec.source_table := p_sla_source_header_table;
1544       l_fxhv_rec.khr_id := p_sla_source_chr_id;
1545       l_fxhv_rec.try_id := p_sla_source_try_id;
1546 
1547       l_fxlv_rec.source_id := p_sla_source_line_id;
1548       l_fxlv_rec.source_table := p_sla_source_line_table;
1549       l_fxlv_rec.kle_id := p_sla_source_kle_id;
1550 
1551       l_fxlv_rec.asset_id := l_asset_hdr_rec.asset_id;
1552       l_fxlv_rec.fa_transaction_id := l_trans_rec.transaction_header_id;
1553       l_fxlv_rec.asset_book_type_name := l_asset_hdr_rec.book_type_code;
1554 
1555       OKL_SLA_ACC_SOURCES_PVT.populate_sources(
1556       p_api_version  => p_api_version
1557      ,p_init_msg_list => p_init_msg_list
1558      ,p_fxhv_rec => l_fxhv_rec
1559      ,p_fxlv_rec => l_fxlv_rec
1560      ,x_return_status => x_return_status
1561      ,x_msg_count    => x_msg_count
1562      ,x_msg_data    => x_msg_data
1563       );
1564      IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1565          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1566      ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
1567          RAISE OKL_API.G_EXCEPTION_ERROR;
1568      END IF;
1569      --bug# 6373605 -- call populate SLA sources
1570 
1571      OKL_API.END_ACTIVITY (x_msg_count,
1572                           x_msg_data );
1573     EXCEPTION
1574     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1575     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1576                                l_api_name,
1577                                G_PKG_NAME,
1578                                'OKL_API.G_RET_STS_ERROR',
1579                                x_msg_count,
1580                                x_msg_data,
1581                                '_PVT');
1582     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1583     --dbms_output.put_line('Raising unexpected here...');
1584     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
1585                               l_api_name,
1586                               G_PKG_NAME,
1587                               'OKL_API.G_RET_STS_UNEXP_ERROR',
1588                               x_msg_count,
1589                               x_msg_data,
1590                               '_PVT');
1591     WHEN OTHERS THEN
1592     --dbms_output.put_line('Raising when others here...'||SQLERRM);
1593     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
1594                               l_api_name,
1595                               G_PKG_NAME,
1596                               'OTHERS',
1597                               x_msg_count,
1598                               x_msg_data,
1599                               '_PVT');
1600 END FIXED_ASSET_ADJUST;
1601 --------------------------------------------------------------------------------
1602 --Start of Comments
1603 --Function Name   : CALC_DEPRN_COST (Local) Bug fix# 2788745
1604 --Description     : Local function to calculate effective depreciation cost
1605 --                  for an asset
1606 --History         :
1607 --                 05-Feb-2003  ashish.singh Created
1608 --                 11-Sep-2003  avsingh      Bug# 3143522 : Converted into procedure for
1609 --                                           subsidies enhancement
1610 --                 09-Jun-2005  avsingh      Bug# 4414408
1611 --                                           Performance fix-avoid evaluation of formulae
1612 --End of Comments
1613 --------------------------------------------------------------------------------
1614 Procedure Calc_Deprn_Cost ( p_api_version   IN  NUMBER,
1615                            p_init_msg_list IN  VARCHAR2,
1616                            x_return_status OUT NOCOPY VARCHAR2,
1617                            x_msg_count     OUT NOCOPY NUMBER,
1618                            x_msg_data      OUT NOCOPY VARCHAR2,
1619                            p_entered_deprn IN  NUMBER,
1620                            p_fa_cle_id     IN  NUMBER,
1621                            x_calculated_deprn  OUT NOCOPY NUMBER) IS
1622 
1623 l_return_status        VARCHAR2(1)  default OKL_API.G_RET_STS_SUCCESS;
1624 l_api_name             CONSTANT varchar2(30) := 'CALC_DEPRN_COST';
1625 l_api_version          CONSTANT NUMBER := 1.0;
1626 
1627 l_entered_deprn    Number;
1628 l_cap_interest     Number;
1629 l_cle_id           Number;
1630 l_chr_id           Number;
1631 l_calculated_deprn Number;
1632 
1633 l_capital_amount   Number;
1634 l_oec              Number;
1635 
1636 --Bug# 4899328: Start
1637 --cursor to check if the contract is undergoing on-line rebook
1638 cursor l_chk_rbk_csr(p_chr_id IN NUMBER) is
1639 SELECT '!'
1640 FROM   okl_trx_contracts ktrx
1641 WHERE  ktrx.khr_id_old = p_chr_id
1642 AND    ktrx.tsu_code = 'ENTERED'
1643 AND    ktrx.rbr_code is NOT NULL
1644 AND    ktrx.tcn_type = 'TRBK'
1645 --rkuttiya added for 12.1.1 Multi GAAP Project
1646 AND    ktrx.representation_type = 'PRIMARY';
1647 --
1648 
1649 l_rbk_khr      VARCHAR2(1) DEFAULT '?';
1650 --Bug# 4899328: End
1651 
1652 Begin
1653     x_return_status := OKL_API.G_RET_STS_SUCCESS;
1654     l_entered_deprn := p_entered_deprn;
1655 
1656     Select cleb_fin.id,
1657            kle_fin.oec,
1658            kle_fin.capital_amount,
1659            cleb_fin.dnz_chr_id
1660     into   l_cle_id,
1661            l_oec,
1662            l_capital_amount,
1663            l_chr_id
1664     From
1665            okc_k_lines_b cleb_fa,
1666            okc_k_lines_b cleb_fin,
1667            okl_k_lines   kle_fin
1668     where
1669            cleb_fa.id          = p_fa_cle_id
1670     and    cleb_fin.id         = cleb_fa.cle_id
1671     and    cleb_fin.dnz_chr_id = cleb_fa.dnz_chr_id
1672     and    kle_fin.id          = cleb_fin.id;
1673 
1674     -- Bug# 4899328: For On-line Rebook, the Depreciation cost
1675     -- will be updated automatically to reflect changes to
1676     -- Capital amount
1677 
1678     --check for rebook contract
1679     -- l_chr_id is the original contract
1680     l_rbk_khr := '?';
1681     OPEN l_chk_rbk_csr (p_chr_id => l_chr_id);
1682     FETCH l_chk_rbk_csr INTO l_rbk_khr;
1683     CLOSE l_chk_rbk_csr;
1684 
1685     If l_rbk_khr = '!' Then
1686       l_calculated_deprn := l_entered_deprn;
1687     Else
1688 
1689       --Bug# 4899328: Capitalized Interest will be added to Line Capital
1690       --              amount at the time it is calculated
1691       /*
1692       OKL_EXECUTE_FORMULA_PUB.execute(p_api_version   => p_api_version,
1693                                       p_init_msg_list => p_init_msg_list,
1694                                       x_return_status => x_return_status,
1695                                       x_msg_count     => x_msg_count,
1696                                       x_msg_data      => x_msg_data,
1697                                       p_formula_name  => G_FORMULA_LINE_CAPINTEREST,
1698                                       p_contract_id   => l_chr_id,
1699                                       p_line_id       => l_cle_id,
1700                                       x_value         => l_cap_interest);
1701 
1702       IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1703               RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1704       ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1705               RAISE Okl_Api.G_EXCEPTION_ERROR;
1706       END IF;
1707 
1708       l_calculated_deprn := (l_capital_amount) - (l_oec) + (l_entered_deprn) + nvl(l_cap_interest,0);
1709       */
1710 
1711       l_calculated_deprn := (l_capital_amount) - (l_oec) + (l_entered_deprn);
1712       --Bug# 4899328: End
1713       --------------------------------------------------------------
1714     End If;
1715     -- Bug# 4899328: End
1716 
1717     x_calculated_deprn := l_calculated_deprn;
1718 
1719     Exception
1720     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1721     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1722                                l_api_name,
1723                                G_PKG_NAME,
1724                                'OKL_API.G_RET_STS_ERROR',
1725                                x_msg_count,
1726                                x_msg_data,
1727                                '_PVT');
1728     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1729     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
1730                               l_api_name,
1731                               G_PKG_NAME,
1732                               'OKL_API.G_RET_STS_UNEXP_ERROR',
1733                               x_msg_count,
1734                               x_msg_data,
1735                               '_PVT');
1736     WHEN OTHERS THEN
1737     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
1738                               l_api_name,
1739                               G_PKG_NAME,
1740                               'OTHERS',
1741                               x_msg_count,
1742                               x_msg_data,
1743                               '_PVT');
1744 End  Calc_Deprn_Cost;
1745 --Bug fix# 2788745:End
1746 
1747 --------------------------------------------------------------------------------
1748 --Start of Comments
1749 --Function Name   : CALC_CAP_FEE_ADJUSTMENT (Local) Bug fix# 3548044
1750 --Description     : Local function to calculate capitalized fee adjustment on
1751 --                  Re-book
1752 --
1753 --History         :
1754 --                 05-May-2004  rpillay Created
1755 --
1756 --End of Comments
1757 --------------------------------------------------------------------------------
1758 Procedure Calc_Cap_Fee_Adjustment(p_api_version  IN  NUMBER,
1759                            p_init_msg_list       IN  VARCHAR2,
1760                            x_return_status       OUT NOCOPY VARCHAR2,
1761                            x_msg_count           OUT NOCOPY NUMBER,
1762                            x_msg_data            OUT NOCOPY VARCHAR2,
1763                            p_rbk_fa_cle_id       IN  NUMBER,
1764                            p_rbk_chr_id          IN  NUMBER,
1765                            x_cap_fee_adjustment  OUT NOCOPY NUMBER) IS
1766 
1767 l_return_status        VARCHAR2(1)  default OKL_API.G_RET_STS_SUCCESS;
1768 l_api_name             CONSTANT varchar2(30) := 'CALC_CAP_FEE_ADJUSTMENT';
1769 l_api_version          CONSTANT NUMBER := 1.0;
1770 
1771 --Cursor to get FA line id of original contract
1772 Cursor orig_fa_cle_csr(fa_cle_id IN NUMBER) is
1773 Select orig_system_id1
1774 From   okc_k_lines_b
1775 where  id = fa_cle_id;
1776 
1777 --cursor to get Cap fees added during Re-book for the asset
1778 Cursor cap_fee_csr(fa_cle_id   in number
1779                   ,rbk_chr_id  in number) IS
1780 Select nvl(sum(cov_ast_kle.capital_amount),0) capitalized_fee
1781 From
1782        OKL_K_LINES       fee_kle,
1783        OKC_K_LINES_B     fee_cle,
1784        OKC_STATUSES_B    fee_sts,
1785        OKL_K_LINES       cov_ast_kle,
1786        OKC_K_LINES_B     cov_ast_cle,
1787        OKC_LINE_STYLES_B cov_ast_lse,
1788        OKC_STATUSES_B    cov_ast_sts,
1789        OKC_K_ITEMS       cov_ast_cim,
1790        OKC_K_LINES_B     fa_cle,
1791        OKC_K_LINES_B     src_cle
1792 Where  fee_kle.id                    = fee_cle.id
1793 and    fee_kle.fee_type              = 'CAPITALIZED'
1794 and    fee_cle.id                    = cov_ast_cle.cle_id
1795 and    fee_cle.dnz_chr_id            = cov_ast_cle.dnz_chr_id
1796 and    fee_cle.sts_code              = fee_sts.code
1797 and    fee_sts.ste_code not in         ('HOLD', 'EXPIRED', 'TERMINATED', 'CANCELLED')
1798 and    cov_ast_kle.id                = cov_ast_cle.id
1799 and    cov_ast_cle.id                = cov_ast_cim.cle_id
1800 and    cov_ast_cle.lse_id            = cov_ast_lse.id
1801 and    cov_ast_lse.lty_code          = 'LINK_FEE_ASSET'
1802 and    cov_ast_cle.sts_code          = cov_ast_sts.code
1803 and    cov_ast_sts.ste_code not in    ('HOLD', 'EXPIRED', 'TERMINATED', 'CANCELLED')
1804 and    cov_ast_cle.dnz_chr_id        = cov_ast_cim.dnz_chr_id
1805 and    cov_ast_cim.object1_id1       = to_char(fa_cle.cle_id)
1806 and    cov_ast_cim.object1_id2       = '#'
1807 and    cov_ast_cim.jtot_object1_code = 'OKX_COVASST'
1808 and    fa_cle.id                     = fa_cle_id
1809 and    fee_cle.orig_system_id1       = src_cle.id
1810 and    src_cle.dnz_chr_id            = rbk_chr_id;
1811 
1812 l_orig_fa_cle_id       Number;
1813 l_new_cap_fee          Number;
1814 
1815 Begin
1816     x_return_status := OKL_API.G_RET_STS_SUCCESS;
1817 
1818     open orig_fa_cle_csr(fa_cle_id   => p_rbk_fa_cle_id);
1819     fetch orig_fa_cle_csr into l_orig_fa_cle_id;
1820     close orig_fa_cle_csr;
1821 
1822     open cap_fee_csr(fa_cle_id   => l_orig_fa_cle_id
1823                     ,rbk_chr_id  => p_rbk_chr_id);
1824     fetch cap_fee_csr into l_new_cap_fee;
1825     close cap_fee_csr;
1826 
1827     x_cap_fee_adjustment := NVL(l_new_cap_fee,0);
1828 
1829 Exception
1830     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1831     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1832                                l_api_name,
1833                                G_PKG_NAME,
1834                                'OKL_API.G_RET_STS_ERROR',
1835                                x_msg_count,
1836                                x_msg_data,
1837                                '_PVT');
1838     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1839     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
1840                               l_api_name,
1841                               G_PKG_NAME,
1842                               'OKL_API.G_RET_STS_UNEXP_ERROR',
1843                               x_msg_count,
1844                               x_msg_data,
1845                               '_PVT');
1846     WHEN OTHERS THEN
1847     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
1848                               l_api_name,
1849                               G_PKG_NAME,
1850                               'OTHERS',
1851                               x_msg_count,
1852                               x_msg_data,
1853                               '_PVT');
1854 End  Calc_Cap_Fee_Adjustment;
1855 --Bug fix# 3548044:End
1856 
1857 --------------------------------------------------------------------------------
1858 --Start of Comments
1859 --Procedure Name : FIXED_ASSET_ADD
1860 --Description    : Calls FA additions api to create new assets for
1861 --                 and split children
1862 --History        :
1863 --                 28-Nov-2001  ashish.singh Created
1864 --
1865 --               Bug# 6373605 -R12.B SAL CRs
1866 --               New IN parameters as descriped earlier in
1867 --               FIXED_ASSET_ADJUST_COST
1868 --
1869 --End of Comments
1870 --------------------------------------------------------------------------------
1871 PROCEDURE FIXED_ASSET_ADD   (p_api_version   IN  NUMBER,
1872                              p_init_msg_list IN  VARCHAR2,
1873                              x_return_status OUT NOCOPY VARCHAR2,
1874                              x_msg_count     OUT NOCOPY NUMBER,
1875                              x_msg_data      OUT NOCOPY VARCHAR2,
1876                              p_talv_rec      IN  talv_rec_type,
1877 		             p_no_curr_conv  IN  VARCHAR2,
1878                              --Bug# 3156924
1879                              p_trans_number  IN  VARCHAR2,
1880                              p_calling_interface IN VARCHAR2,
1881                              --Bug# 5261704
1882                              p_depreciate_flag   IN VARCHAR2,
1883                             --Bug# 6373605--SLA populate source
1884                              p_sla_source_header_id    IN Number,
1885                              p_sla_source_header_table IN Varchar2,
1886                              p_sla_source_try_id       IN Number,
1887                              p_sla_source_line_id      IN Number,
1888                              p_sla_source_line_table   IN Varchar2,
1889                              p_sla_source_chr_id       IN Number,
1890                              p_sla_source_kle_id       IN Number,
1891                              p_sla_asset_chr_id        IN Number,
1892                              --Bug# 6373605--SLA populate source
1893                              --Bug# 4028371
1894                              x_fa_trx_date       OUT NOCOPY DATE,
1895                              x_asset_hdr_rec OUT NOCOPY FA_API_TYPES.asset_hdr_rec_type) is
1896 
1897 l_return_status        VARCHAR2(1)  default OKL_API.G_RET_STS_SUCCESS;
1898 l_api_name             CONSTANT varchar2(30) := 'FIXED_ASSET_ADD';
1899 l_api_version          CONSTANT NUMBER := 1.0;
1900 
1901 l_trans_rec                FA_API_TYPES.trans_rec_type;
1902 l_dist_trans_rec           FA_API_TYPES.trans_rec_type;
1903 l_asset_hdr_rec            FA_API_TYPES.asset_hdr_rec_type;
1904 l_asset_desc_rec           FA_API_TYPES.asset_desc_rec_type;
1905 l_asset_cat_rec            FA_API_TYPES.asset_cat_rec_type;
1906 l_asset_type_rec           FA_API_TYPES.asset_type_rec_type;
1907 l_asset_hierarchy_rec      fa_api_types.asset_hierarchy_rec_type;
1908 l_asset_fin_rec            FA_API_TYPES.asset_fin_rec_type;
1909 l_asset_deprn_rec          FA_API_TYPES.asset_deprn_rec_type;
1910 l_asset_dist_rec           FA_API_TYPES.asset_dist_rec_type;
1911 l_asset_dist_tbl           FA_API_TYPES.asset_dist_tbl_type;
1912 l_inv_tbl                  FA_API_TYPES.inv_tbl_type;
1913 
1914 --Bug Fix # 2887948
1915 --CURSOR to fetch expense account id
1916 CURSOR exp_act_csr (p_kle_id IN NUMBER) IS
1917 SELECT msi.expense_account
1918 FROM   MTL_SYSTEM_ITEMS msi,
1919        OKC_K_ITEMS      cim,
1920        OKC_K_LINES_B    mdl,
1921        OKC_K_LINES_B    fal
1922 WHERE  cim.object1_id1       = msi.inventory_item_id
1923 AND    cim.object1_id2       = to_char(msi.organization_id)
1924 AND    cim.jtot_object1_code = 'OKX_SYSITEM'
1925 AND    cim.dnz_chr_id        = mdl.dnz_chr_id
1926 AND    cim.cle_id            = mdl.id
1927 AND    mdl.dnz_chr_id        = fal.dnz_chr_id
1928 AND    mdl.cle_id            = fal.cle_id
1929 AND    fal.id                = p_kle_id;
1930 
1931 l_expense_account    NUMBER;
1932 
1933 --CURSOR to get SET OF BOOKS
1934 CURSOR sob_csr(p_book_type_code IN VARCHAR2) IS
1935 select set_of_books_id
1936 from   OKX_ASST_BK_CONTROLS_V
1937 where  book_type_code = p_book_type_code
1938 and    status = 'A';
1939 
1940 l_sob_id   NUMBER;
1941 
1942 --Bug#2476805
1943 CURSOR open_period_cur(p_book_type_code IN VARCHAR2) IS
1944 SELECT fcp.start_date,
1945        fcp.end_date,
1946        fbc.book_type_code,
1947        fbc.deprn_calendar,
1948        fbc.prorate_calendar,
1949        fbc.last_period_counter,
1950        fdp.period_name
1951 FROM   fa_book_controls fbc,
1952        fa_deprn_periods fdp,
1953        fa_calendar_periods fcp
1954 WHERE  fcp.period_name    = fdp.period_name
1955 AND    fdp.period_counter = (fbc.last_period_counter + 1)
1956 AND    fdp.book_type_code = fbc.book_type_code
1957 AND    fcp.calendar_type  = fbc.deprn_calendar
1958 AND    fbc.date_ineffective is null
1959 AND    fbc.book_type_code = p_book_type_code;
1960 
1961 open_period_rec     open_period_cur%rowtype;
1962 l_current_open_period    varchar2(100) default null;
1963 --Bug#2476805
1964 
1965 l_deprn_cost Number;
1966 
1967 --Bug# 6373605 begin
1968 l_fxhv_rec okl_sla_acc_sources_pvt.fxhv_rec_type;
1969 l_fxlv_rec okl_sla_acc_sources_pvt.fxlv_rec_type;
1970 
1971 --Bug# 6373605 end
1972 
1973 Begin
1974     x_return_status := OKL_API.G_RET_STS_SUCCESS;
1975     -- Call start_activity to create savepoint, check compatibility
1976     -- and initialize message list
1977     x_return_status := OKL_API.START_ACTIVITY (
1978                                l_api_name
1979                                ,p_init_msg_list
1980                                ,'_PVT'
1981                                ,x_return_status);
1982     -- Check if activity started successfully
1983     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1984        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1985     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
1986        RAISE OKL_API.G_EXCEPTION_ERROR;
1987     END IF;
1988 
1989    --Bug#2476805
1990    --validate in_service_date
1991    OPEN open_period_cur(p_book_type_code => p_talv_rec.corporate_book);
1992    Fetch open_period_cur into open_period_rec;
1993    If open_period_cur%NotFound Then
1994        Null; --unexpected error
1995    Else
1996        If p_talv_rec.in_service_date > open_period_rec.end_date then
1997           l_current_open_period := open_period_rec.period_name||' ('||to_char(open_period_rec.start_date,'DD-MON-YYYY')||' to '||to_char(open_period_rec.end_date,'DD-MON-YYYY')||')';
1998           OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
1999 				              p_msg_name     => G_FUTURE_IN_SERVICE_DATE,
2000 				              p_token1       => G_ASSET_NUMBER_TOKEN,
2001 				              p_token1_value => p_talv_rec.asset_number,
2002                               p_token2       => G_CURRENT_OPEN_PERIOD,
2003                               p_token2_value => l_current_open_period
2004 				              );
2005            RAISE OKL_API.G_EXCEPTION_ERROR;
2006        elsIf p_talv_rec.in_service_date <= open_period_rec.end_date then
2007            null;
2008        End If;
2009    End If;
2010    --Bug#2476805
2011 
2012    --dbms_output.enable(1000000);
2013 
2014    --Bug# 2726366
2015    --FA_SRVR_MSG.Init_Server_Message;
2016    --FA_DEBUG_PKG.Initialize;
2017 
2018    ----------------
2019    --trans_rec_info
2020    ----------------
2021    l_trans_rec.transaction_type_code    := G_ADD_TRX_TYPE_CODE; --optional
2022    --Big# 3156924
2023    --l_trans_rec.transaction_date_entered := p_talv_rec.in_service_date; --optional defaults to in_service_date
2024    l_trans_rec.who_info.last_updated_by := FND_GLOBAL.USER_ID;
2025    --Bug# 3156924 :
2026    --l_trans_rec.calling_interface        := l_api_name;
2027    l_trans_rec.calling_interface        := p_calling_interface; --optional
2028    l_trans_rec.transaction_name         := substr(p_trans_number,1,20);--optional
2029 
2030    --------------
2031    --hdr_rec info
2032    --------------
2033    If p_talv_rec.dnz_asset_id is not null Then
2034       l_asset_hdr_rec.asset_id := p_talv_rec.dnz_asset_id;
2035    End If;
2036    l_asset_hdr_rec.book_type_code := p_talv_rec.corporate_book;
2037    If p_talv_rec.corporate_book is Null Then
2038       --dbms_output.put_line('No FA Book Type entered for Transaction..');
2039       --raise error
2040       OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
2041 				          p_msg_name     => G_FA_BOOK_NOT_ENTERED,
2042 				          p_token1       => G_ASSET_NUMBER_TOKEN,
2043 				          p_token1_value => p_talv_rec.asset_number
2044 				         );
2045       RAISE OKL_API.G_EXCEPTION_ERROR;
2046       --l_asset_hdr_rec.book_type_code := 'OPS CORP';
2047    End If;
2048 
2049    OPEN sob_csr(p_book_type_code => l_asset_hdr_rec.book_type_code);
2050    FETCH sob_csr into l_sob_id;
2051    If sob_csr%NOTFOUND Then
2052       --dbms_output.put_line('Set of books attached to book not found..');
2053       --raise appropriate error
2054       OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
2055 				          p_msg_name     => G_SOB_FETCH_FAILED,
2056 				          p_token1       => G_FA_BOOK_TOKEN,
2057 				          p_token1_value => l_asset_hdr_rec.book_type_code
2058 				         );
2059       RAISE OKL_API.G_EXCEPTION_ERROR;
2060    Else
2061       l_asset_hdr_rec.set_of_books_id := l_sob_id; --optional
2062    End If;
2063    CLOSE sob_csr;
2064 
2065    -------------
2066    -- desc info
2067    -------------
2068    l_asset_desc_rec.asset_number := p_talv_rec.asset_number;
2069    l_asset_desc_rec.description  := p_talv_rec.description;
2070 
2071    l_asset_desc_rec.model_number     := p_talv_rec.model_number;
2072    --l_asset_desc_rec.manufacturer_name := p_talv_rec.tag_number;
2073    --Bug # 2397777 : Manufacturer Name now getting populated in correct field
2074    l_asset_desc_rec.manufacturer_name := p_talv_rec.manufacturer_name;
2075 
2076    If p_talv_rec.used_asset_yn is not null Then
2077        If p_talv_rec.used_asset_yn = 'Y' or upper(p_talv_rec.used_asset_yn) = 'YES' Then
2078            l_asset_desc_rec.new_used := 'USED';
2079        Elsif p_talv_rec.used_asset_yn = 'N' or upper(p_talv_rec.used_asset_yn) = 'NO' Then
2080            l_asset_desc_rec.new_used := 'NEW';
2081        End If;
2082    End If;
2083 
2084    -- how to get the asset key ccid??
2085    -- asset key ccid is not mandatory
2086    --l_asset_desc_rec.asset_key_ccid := 2;
2087 
2088    /*
2089    select asset_key_ccid
2090    into   l_asset_desc_rec.asset_key_ccid
2091    from   fa_additions
2092    where  asset_id = p_ast_line_rec.asset_id;
2093    */
2094    l_asset_desc_rec.current_units  := p_talv_rec.current_units;
2095 
2096    ----------------
2097    --Bug#  2981308
2098    ---------------
2099    l_asset_desc_rec.asset_key_ccid := p_talv_rec.asset_key_id;
2100 
2101    -----------------------
2102    --asset_type_rec info ??
2103    -----------------------
2104    --assuming okl assets will always be 'CAPITALIZED'
2105    l_asset_type_rec.asset_type := G_ADD_ASSET_TYPE;
2106 
2107    ---------------------
2108    --asset_cat_rec_info
2109    --------------------
2110    l_asset_cat_rec.category_id  := p_talv_rec.depreciation_id;
2111 
2112    ----------------
2113    --asset_fin_rec
2114    ----------------
2115    l_asset_fin_rec.set_of_books_id        := l_asset_hdr_rec.set_of_books_id;
2116    l_asset_fin_rec.date_placed_in_service := p_talv_rec.in_service_date;
2117    l_asset_fin_rec.deprn_method_code      := p_talv_rec.deprn_method;
2118    l_asset_fin_rec.life_in_months         := p_talv_rec.life_in_months;
2119    --Bug# 6373605 start
2120    l_asset_fin_rec.contract_id            := p_sla_asset_chr_id;
2121    --Bug# 6373605 end
2122 
2123    --Bug fix# 2788745: depreciation cost should be = (deprn cost - tradein - cap reduction + cap fee + cap interest)
2124    --call function to calculate the final depeciation cost to go into FA
2125    --Bug#314352 : Subsidies - local function call changed to local procedure
2126    Calc_Deprn_Cost ( p_api_version      => p_api_version,
2127                      p_init_msg_list    => p_init_msg_list,
2128                      x_msg_count        => x_msg_count,
2129                      x_msg_data         => x_msg_data,
2130                      x_return_status    => x_return_status,
2131                      p_entered_deprn    => p_talv_rec.depreciation_cost,
2132                      p_fa_cle_id        => p_talv_rec.kle_id,
2133                      x_calculated_deprn => l_deprn_cost);
2134    IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2135        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2136    ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2137        RAISE OKL_API.G_EXCEPTION_ERROR;
2138    END IF;
2139    --Bug fix# 2788745: End
2140 
2141    --Bug# 2823405 : Raise error if depreciation cost is lesser than salvage value
2142    IF (l_deprn_cost < p_talv_rec.salvage_value) Then
2143       OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
2144 		          p_msg_name     => G_SALVAGE_VALUE
2145 		         );
2146       RAISE OKL_API.G_EXCEPTION_ERROR;
2147    End If;
2148    --End Bug# 2823405
2149 
2150 -- Check and convert to functional currency.
2151    If ( p_no_curr_conv = OKL_API.G_FALSE ) Then -- amounts not converted to functional curr need to convert
2152 
2153        convert_2functional_currency(p_api_version   => p_api_version,
2154                                     p_init_msg_list => p_init_msg_list,
2155 	                                x_return_status => x_return_status,
2156                                     x_msg_count     => x_msg_count,
2157                                     x_msg_data      => x_msg_data,
2158                                     p_chr_id        => p_talv_rec.dnz_khr_id,
2159                                     --Bug fix# 2788745
2160 			                        --p_amount        => p_talv_rec.depreciation_cost,
2161                                     p_amount        => l_deprn_cost,
2162 			                        x_amount        => l_asset_fin_rec.cost);
2163 
2164        --dbms_output.put_line('After Calling Fixed Asset ADD api "'||x_return_status||'"');
2165        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2166           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2167        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2168           RAISE OKL_API.G_EXCEPTION_ERROR;
2169        END IF;
2170 
2171        l_asset_fin_rec.original_cost := l_asset_fin_rec.cost;
2172 
2173        convert_2functional_currency(p_api_version   => p_api_version,
2174                                     p_init_msg_list => p_init_msg_list,
2175 	                                x_return_status => x_return_status,
2176                                     x_msg_count     => x_msg_count,
2177                                     x_msg_data      => x_msg_data,
2178                                     p_chr_id        => p_talv_rec.dnz_khr_id,
2179 			                        p_amount        => p_talv_rec.salvage_value,
2180 			                        x_amount        => l_asset_fin_rec.salvage_value);
2181 
2182        --dbms_output.put_line('After Calling Fixed Asset ADD api "'||x_return_status||'"');
2183        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2184           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2185        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2186           RAISE OKL_API.G_EXCEPTION_ERROR;
2187        END IF;
2188 
2189   ELSE --amounts already in funtional currency no need to convert
2190          --Bug fix# 2788745
2191          --l_asset_fin_rec.cost                   := p_talv_rec.depreciation_cost;
2192          --l_asset_fin_rec.original_cost          := p_talv_rec.depreciation_cost;
2193          l_asset_fin_rec.cost                   := l_deprn_cost;
2194          l_asset_fin_rec.original_cost          := l_deprn_cost;
2195          l_asset_fin_rec.salvage_value          := p_talv_rec.salvage_value;
2196   End If;
2197 
2198    --l_asset_fin_rec.cost                   := p_talv_rec.depreciation_cost;
2199    --l_asset_fin_rec.original_cost          := p_talv_rec.depreciation_cost;
2200    --l_asset_fin_rec.salvage_value          := p_talv_rec.salvage_value;
2201    --CONFIRM ABOUT RATES
2202    --confirmation : for flat rate methods these rates will be taken
2203    --else default rates for depreciation methods will be taken
2204    l_asset_fin_rec.basic_rate        := p_talv_rec.deprn_rate;
2205    l_asset_fin_rec.adjusted_rate     := p_talv_rec.deprn_rate;
2206    --confirm about this
2207    --Bug# 3143522 - FA API expects salvage value percent in decimals(divided by 100)
2208    --l_asset_fin_rec.percent_salvage_value        := p_talv_rec.percent_salvage_value;
2209    l_asset_fin_rec.percent_salvage_value        := (p_talv_rec.percent_salvage_value/100);
2210    l_asset_fin_rec.rate_adjustment_factor       := G_ADD_RATE_ADJ_FACTOR; --optional
2211 
2212    --Bug# 3156924 :
2213    --l_asset_fin_rec.depreciate_flag              := 'YES'; --gets pulled from
2214                                                             --asset book defaults
2215 
2216    --Bug# 5261704
2217    If NVL(p_depreciate_flag,OKL_API.G_MISS_CHAR) = 'NO' then
2218        l_asset_fin_rec.depreciate_flag := 'NO';
2219    End If;
2220    --End Bug # 5261704
2221 
2222    --asset_deprn_rec
2223    --no  need to populate asset depreciation rec as asset has not depreciated
2224 
2225    -----------------
2226    --asset_dist_rec
2227    ----------------
2228    l_asset_dist_rec.units_assigned := p_talv_rec.current_units;
2229    l_asset_dist_rec.location_ccid  := p_talv_rec.fa_location_id;
2230 
2231    -- CONFIRM ABOUT EXPENSE CCID
2232    --how to get the expense ccid ??
2233    --l_asset_dist_rec.code_combination_id := ??
2234    --expence ccid will come from mtl_system_items expense ccid
2235    OPEN exp_act_csr (p_kle_id => p_talv_rec.kle_id);
2236    Fetch exp_act_csr into
2237                      l_expense_account;
2238    If exp_act_csr%NOTFOUND Then
2239       --raise appropriate error
2240       --dbms_output.put_line('expense account not found...');
2241       OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
2242 				          p_msg_name     => G_EXP_ACCT_NOT_ENTERED,
2243 				          p_token1       => G_ASSET_NUMBER_TOKEN,
2244 				          p_token1_value => p_talv_rec.asset_number
2245 				          );
2246       RAISE OKL_API.G_EXCEPTION_ERROR;
2247       --select code_combination_id
2248       --into   l_asset_dist_rec.expense_ccid
2249       --from   okx_ast_dst_hst_v
2250       --where  book_type_code = 'OPS CORP'
2251       --where  book_type_code = l_asset_hdr_rec.book_type_code
2252       --and    rownum < 2;
2253    Else
2254        --dbms_output.put_line('Expense ccid found in msi:-)'||to_char(l_expense_account));
2255        l_asset_dist_rec.expense_ccid := l_expense_account;
2256    End If;
2257    Close exp_act_csr;
2258 
2259    l_asset_dist_tbl(1) := l_asset_dist_rec;
2260 
2261 
2262    ---------------
2263    -- call the api
2264    ---------------
2265    fa_addition_pub.do_addition
2266       (p_api_version             => p_api_version,
2267        p_init_msg_list           => p_init_msg_list,
2268        p_commit                  => OKL_API.G_FALSE,
2269        p_validation_level        => FND_API.G_VALID_LEVEL_FULL,
2270        x_return_status           => x_return_status,
2271        x_msg_count               => x_msg_count,
2272        x_msg_data                => x_msg_data,
2273        --Bug# 3156924
2274        --p_calling_fn              => l_api_name,
2275        p_calling_fn              => p_calling_interface,
2276        px_trans_rec              => l_trans_rec,
2277        px_dist_trans_rec         => l_dist_trans_rec,
2278        px_asset_hdr_rec          => l_asset_hdr_rec,
2279        px_asset_desc_rec         => l_asset_desc_rec,
2280        px_asset_type_rec         => l_asset_type_rec,
2281        px_asset_cat_rec          => l_asset_cat_rec,
2282        px_asset_hierarchy_rec    => l_asset_hierarchy_rec,
2283        px_asset_fin_rec          => l_asset_fin_rec,
2284        px_asset_deprn_rec        => l_asset_deprn_rec,
2285        px_asset_dist_tbl         => l_asset_dist_tbl,
2286        px_inv_tbl                => l_inv_tbl
2287       );
2288      --dbms_output.put_line('After Calling Fixed Asset ADD api "'||x_return_status||'"');
2289      IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2290          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2291      ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2292          RAISE OKL_API.G_EXCEPTION_ERROR;
2293      END IF;
2294      x_asset_hdr_rec := l_asset_hdr_rec;
2295      --Bug# 4028371:
2296      x_fa_trx_date   := l_trans_rec.transaction_date_entered;
2297 
2298      --bug# 6373605 -- call populate sla sources
2299       l_fxhv_rec.source_id := p_sla_source_header_id;
2300       l_fxhv_rec.source_table := p_sla_source_header_table;
2301       l_fxhv_rec.khr_id := p_sla_source_chr_id;
2302       l_fxhv_rec.try_id := p_sla_source_try_id;
2303 
2304       l_fxlv_rec.source_id := p_sla_source_line_id;
2305       l_fxlv_rec.source_table := p_sla_source_line_table;
2306       l_fxlv_rec.kle_id := p_sla_source_kle_id;
2307 
2308       l_fxlv_rec.asset_id := l_asset_hdr_rec.asset_id;
2309       l_fxlv_rec.fa_transaction_id := l_trans_rec.transaction_header_id;
2310       l_fxlv_rec.asset_book_type_name := l_asset_hdr_rec.book_type_code;
2311 
2312       OKL_SLA_ACC_SOURCES_PVT.populate_sources(
2313       p_api_version  => p_api_version
2314      ,p_init_msg_list => p_init_msg_list
2315      ,p_fxhv_rec => l_fxhv_rec
2316      ,p_fxlv_rec => l_fxlv_rec
2317      ,x_return_status => x_return_status
2318      ,x_msg_count    => x_msg_count
2319      ,x_msg_data    => x_msg_data
2320       );
2321      IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2322          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2323      ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2324          RAISE OKL_API.G_EXCEPTION_ERROR;
2325      END IF;
2326 
2327      --bug# 6373605 -- call populate SLA sources
2328      OKL_API.END_ACTIVITY (x_msg_count,
2329                           x_msg_data );
2330     EXCEPTION
2331     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2332     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2333                                l_api_name,
2334                                G_PKG_NAME,
2335                                'OKL_API.G_RET_STS_ERROR',
2336                                x_msg_count,
2337                                x_msg_data,
2338                                '_PVT');
2339     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2340     --dbms_output.put_line('Raising unexpected here...');
2341     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
2342                               l_api_name,
2343                               G_PKG_NAME,
2344                               'OKL_API.G_RET_STS_UNEXP_ERROR',
2345                               x_msg_count,
2346                               x_msg_data,
2347                               '_PVT');
2348     WHEN OTHERS THEN
2349     --dbms_output.put_line('Raising when others here...'||SQLERRM);
2350     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
2351                               l_api_name,
2352                               G_PKG_NAME,
2353                               'OTHERS',
2354                               x_msg_count,
2355                               x_msg_data,
2356                               '_PVT');
2357 END FIXED_ASSET_ADD;
2358 
2359 --------------------------------------------------------------------------------
2360 --Start of Comments
2361 --Procedure Name : FIXED_ASSET_ADD
2362 --Description    : Calls FA additions api to create new assets for
2363 --                 and split children
2364 --History        :
2365 --                 28-Nov-2001  ashish.singh Created
2366 --
2367 --               Bug# 6373605 -R12.B SAL CRs
2368 --               New IN parameters as descriped earlier in
2369 --               FIXED_ASSET_ADJUST_COST
2370 --
2371 --End of Comments
2372 --------------------------------------------------------------------------------
2373 PROCEDURE FIXED_ASSET_ADD   (p_api_version   IN  NUMBER,
2374                              p_init_msg_list IN  VARCHAR2,
2375                              x_return_status OUT NOCOPY VARCHAR2,
2376                              x_msg_count     OUT NOCOPY NUMBER,
2377                              x_msg_data      OUT NOCOPY VARCHAR2,
2378                              p_talv_rec      IN  talv_rec_type,
2379                              --bug# 3156924
2380                              p_trans_number      IN VARCHAR2,
2381                              p_calling_interface IN VARCHAR2,
2382                              --Bug# 5261704
2383                              p_depreciate_flag   IN VARCHAR2,
2384                              --Bug# 6373605--SLA populate source
2385                              p_sla_source_header_id    IN Number,
2386                              p_sla_source_header_table IN Varchar2,
2387                              p_sla_source_try_id       IN Number,
2388                              p_sla_source_line_id      IN Number,
2389                              p_sla_source_line_table   IN Varchar2,
2390                              p_sla_source_chr_id       IN Number,
2391                              p_sla_source_kle_id       IN Number,
2392                              p_sla_asset_chr_id        IN Number,
2393                            --Bug# 6373605--SLA populate source
2394                              --Bug# 4028371
2395                              x_fa_trx_date       OUT NOCOPY DATE,
2396                              x_asset_hdr_rec OUT NOCOPY FA_API_TYPES.asset_hdr_rec_type) is
2397 
2398 Begin
2399 
2400      FIXED_ASSET_ADD(p_api_version   => p_api_version,
2401                      p_init_msg_list => p_init_msg_list,
2402                      x_return_status => x_return_status,
2403                      x_msg_count     => x_msg_count,
2404                      x_msg_data      => x_msg_data,
2405                      p_talv_rec      => p_talv_rec,
2406 	             p_no_curr_conv  => OKL_API.G_FALSE,
2407                      --bug# 3156924
2408                      p_trans_number      => p_trans_number,
2409                      p_calling_interface => p_calling_interface,
2410                      --Bug# 5261704
2411                      p_depreciate_flag   => p_depreciate_flag,
2412                      --Bug# 6373605--SLA populate source
2413                       p_sla_source_header_id    => p_sla_source_header_id,
2414                       p_sla_source_header_table => p_sla_source_header_table,
2415                       p_sla_source_try_id       => p_sla_source_try_id,
2416                       p_sla_source_line_id      => p_sla_source_line_id,
2417                       p_sla_source_line_table   => p_sla_source_line_table,
2418                       p_sla_source_chr_id       => p_sla_source_chr_id,
2419                       p_sla_source_kle_id       => p_sla_source_kle_id ,
2420                       p_sla_asset_chr_id        => p_sla_asset_chr_id,
2421                     --Bug# 6373605--SLA populate source
2422                      --Bug# 4028371
2423                      x_fa_trx_date       => x_fa_trx_date,
2424                      x_asset_hdr_rec => x_asset_hdr_rec);
2425 
2426      IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2427          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2428      ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2429          RAISE OKL_API.G_EXCEPTION_ERROR;
2430      END IF;
2431 
2432 End FIXED_ASSET_ADD;
2433 
2434 --Bug# 3533936
2435 --------------------------------------------------------------------------------
2436 --Start of Comments
2437 --Procedure Name : FIXED_ASSET_TRANSFER
2438 --Description    : Does location change on a re-lease asset in FA
2439 --History        :
2440 --                 25-Mar-2004  rekha.pillay Created
2441 --End of Comments
2442 --------------------------------------------------------------------------------
2443   PROCEDURE FIXED_ASSET_TRANSFER
2444                              (p_api_version    IN  NUMBER,
2445                               p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
2446                               x_return_status  OUT NOCOPY VARCHAR2,
2447                               x_msg_count      OUT NOCOPY NUMBER,
2448                               x_msg_data       OUT NOCOPY VARCHAR2,
2449                               p_asset_id       IN  NUMBER,
2450                               p_book_type_code IN  VARCHAR2,
2451                               p_location_id    IN  NUMBER,
2452                               p_trx_date       IN  DATE,
2453                               p_trx_number     IN  VARCHAR2,
2454                               --Bug# 6373605--SLA populate source
2455                               p_sla_source_header_id    IN Number,
2456                               p_sla_source_header_table IN Varchar2,
2457                               p_sla_source_try_id       IN Number,
2458                               p_sla_source_line_id      IN Number,
2459                               p_sla_source_line_table   IN Varchar2,
2460                               p_sla_source_chr_id       IN Number,
2461                               p_sla_source_kle_id       IN Number,
2462                               --Bug# 6373605 End
2463                               --Bug# 4028371
2464                               x_fa_trx_date       OUT NOCOPY DATE,
2465                               p_calling_interface IN VARCHAR2) is
2466 
2467   l_return_status        VARCHAR2(1)  default OKL_API.G_RET_STS_SUCCESS;
2468   l_api_name             CONSTANT varchar2(30) := 'FIXED_ASSET_TRANSFER';
2469   l_api_version          CONSTANT NUMBER := 1.0;
2470 
2471 
2472   l_trans_rec          fa_api_types.trans_rec_type;
2473   l_asset_hdr_rec      fa_api_types.asset_hdr_rec_type;
2474   l_asset_dist_tbl     fa_api_types.asset_dist_tbl_type;
2475 
2476    --cursor to get the distributions
2477    cursor    l_dist_curs(p_asset_id       IN NUMBER,
2478                          p_corporate_book IN VARCHAR2) is
2479    select  units_assigned,
2480            location_id,
2481            distribution_id,
2482            code_combination_id
2483    from    fa_distribution_history
2484    where   asset_id = p_asset_id
2485    and     book_type_code = p_corporate_book
2486    and     transaction_header_id_out is null
2487    and     retirement_id is null;
2488 
2489    l_units_assigned      NUMBER;
2490    l_location_id         NUMBER;
2491    l_distribution_id     NUMBER;
2492    l_code_combination_id NUMBER;
2493 
2494    --Bug# 6373605 begin
2495    l_fxhv_rec okl_sla_acc_sources_pvt.fxhv_rec_type;
2496    l_fxlv_rec okl_sla_acc_sources_pvt.fxlv_rec_type;
2497    --Bug# 6373605 end
2498 
2499 
2500   begin
2501       x_return_status := OKL_API.G_RET_STS_SUCCESS;
2502       -- Call start_activity to create savepoint, check compatibility
2503       -- and initialize message list
2504       x_return_status := OKL_API.START_ACTIVITY (
2505                                l_api_name
2506                                ,p_init_msg_list
2507                                ,'_PVT'
2508                                ,x_return_status);
2509       -- Check if activity started successfully
2510       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2511          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2512       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2513          RAISE OKL_API.G_EXCEPTION_ERROR;
2514       END IF;
2515 
2516       l_asset_hdr_rec.asset_id := p_asset_id;
2517       l_asset_hdr_rec.book_type_code := p_book_type_code;
2518 
2519       -- transaction date must be filled in if performing
2520       -- prior period transfer
2521       l_trans_rec.transaction_date_entered   := NULL;
2522       l_trans_rec.transaction_name           := substr(p_trx_number,1,20);
2523       l_trans_rec.calling_interface          := p_calling_interface;
2524       l_trans_rec.who_info.last_updated_by   := FND_GLOBAL.USER_ID;
2525       l_trans_rec.who_info.last_update_login := FND_GLOBAL.LOGIN_ID;
2526 
2527       open l_dist_curs(p_asset_id, p_book_type_code);
2528       Loop
2529            Fetch l_dist_curs into l_units_assigned, l_location_id, l_distribution_id, l_code_combination_id;
2530            Exit When l_dist_curs%NOTFOUND;
2531            If l_location_id <> p_location_id Then
2532 
2533              l_asset_dist_tbl.delete;
2534 
2535              l_asset_dist_tbl(1).distribution_id := l_distribution_id;
2536              l_asset_dist_tbl(1).transaction_units := (-1)*l_units_assigned;
2537 
2538              l_asset_dist_tbl(2).transaction_units := l_units_assigned;
2539              l_asset_dist_tbl(2).expense_ccid := l_code_combination_id;
2540              l_asset_dist_tbl(2).location_ccid := p_location_id;
2541 
2542              FA_TRANSFER_PUB.do_transfer(
2543                 p_api_version      => p_api_version,
2544                 p_init_msg_list    => FND_API.G_FALSE,
2545                 p_commit           => FND_API.G_FALSE,
2546                 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
2547                 p_calling_fn       => p_calling_interface,
2548                 x_return_status    => x_return_status,
2549                 x_msg_count        => x_msg_count,
2550                 x_msg_data         => x_msg_data,
2551                 px_trans_rec       => l_trans_rec,
2552                 px_asset_hdr_rec   => l_asset_hdr_rec,
2553                 px_asset_dist_tbl  => l_asset_dist_tbl);
2554 
2555              --dbms_output.put_line('After calling FA Transfer Api '||x_return_status);
2556              IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2557                 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2558              ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2559                 RAISE OKL_API.G_EXCEPTION_ERROR;
2560              END IF;
2561 
2562              --Bug# 6504515 -- moved inside the loop and if clause as
2563              --                SLA sources need to be populated only is
2564              ---               FA_TRANSFER_PUB is called i.e. on actual
2565              --                asset location change. If there is no
2566              --                asset location change FA_TRANSFER_PUB will
2567              --                not be called because of the if clause
2568              --                 If l_location_id <> p_location_id Then
2569              --bug# 6373605 -- call populate sla sources
2570              l_fxhv_rec.source_id := p_sla_source_header_id;
2571              l_fxhv_rec.source_table := p_sla_source_header_table;
2572              l_fxhv_rec.khr_id := p_sla_source_chr_id;
2573              l_fxhv_rec.try_id := p_sla_source_try_id;
2574 
2575              l_fxlv_rec.source_id := p_sla_source_line_id;
2576              l_fxlv_rec.source_table := p_sla_source_line_table;
2577              l_fxlv_rec.kle_id := p_sla_source_kle_id;
2578 
2579              l_fxlv_rec.asset_id := l_asset_hdr_rec.asset_id;
2580              l_fxlv_rec.fa_transaction_id := l_trans_rec.transaction_header_id;
2581              l_fxlv_rec.asset_book_type_name := l_asset_hdr_rec.book_type_code;
2582 
2583              OKL_SLA_ACC_SOURCES_PVT.populate_sources(
2584                p_api_version  => p_api_version
2585               ,p_init_msg_list => p_init_msg_list
2586               ,p_fxhv_rec => l_fxhv_rec
2587               ,p_fxlv_rec => l_fxlv_rec
2588               ,x_return_status => x_return_status
2589               ,x_msg_count    => x_msg_count
2590               ,x_msg_data    => x_msg_data
2591               );
2592 
2593             IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2594                 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2595             ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2596                 RAISE OKL_API.G_EXCEPTION_ERROR;
2597             END IF;
2598             --bug# 6373605 -- call populate SLA sources
2599             --Bug# 6504515 -- end
2600 
2601            End If;
2602       End Loop;
2603       close l_dist_curs;
2604 
2605      --Bug# 4028371
2606       x_fa_trx_date := l_trans_rec.transaction_date_entered;
2607 
2608 
2609       OKL_API.END_ACTIVITY (x_msg_count,
2610                           x_msg_data );
2611   EXCEPTION
2612      WHEN OKL_API.G_EXCEPTION_ERROR THEN
2613      x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2614                                 l_api_name,
2615                                G_PKG_NAME,
2616                                'OKL_API.G_RET_STS_ERROR',
2617                                x_msg_count,
2618                                x_msg_data,
2619                                '_PVT');
2620      WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2621      x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
2622                               l_api_name,
2623                               G_PKG_NAME,
2624                               'OKL_API.G_RET_STS_UNEXP_ERROR',
2625                               x_msg_count,
2626                               x_msg_data,
2627                               '_PVT');
2628      WHEN OTHERS THEN
2629     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
2630                               l_api_name,
2631                               G_PKG_NAME,
2632                               'OTHERS',
2633                               x_msg_count,
2634                               x_msg_data,
2635                               '_PVT');
2636   END FIXED_ASSET_TRANSFER;
2637 --Bug# 3533936
2638 
2639 --Bug#5207066
2640 --------------------------------------------------------------------------------
2641 --Start of Comments
2642 --Procedure Name : FIXED_ASSET_ADJUST_UNIT
2643 --Description    :
2644 --History        :
2645 --
2646 --               Bug# 6373605 -R12.B SAL CRs
2647 --               New IN parameters as descriped earlier in
2648 --               FIXED_ASSET_ADJUST_COST
2649 --
2650 --
2651 --End of Comments
2652 --------------------------------------------------------------------------------
2653   PROCEDURE FIXED_ASSET_ADJUST_UNIT
2654                              (p_api_version    IN  NUMBER,
2655                               p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
2656                               x_return_status  OUT NOCOPY VARCHAR2,
2657                               x_msg_count      OUT NOCOPY NUMBER,
2658                               x_msg_data       OUT NOCOPY VARCHAR2,
2659                               p_asset_id       IN  NUMBER,
2660                               p_book_type_code IN  VARCHAR2,
2661                               p_diff_in_units  IN  NUMBER,
2662                               p_trx_date       IN  DATE,
2663                               p_trx_number     IN  VARCHAR2,
2664                               --Bug# 6373605--SLA populate source
2665                               p_sla_source_header_id    IN Number,
2666                               p_sla_source_header_table IN Varchar2,
2667                               p_sla_source_try_id       IN Number,
2668                               p_sla_source_line_id      IN Number,
2669                               p_sla_source_line_table   IN Varchar2,
2670                               p_sla_source_chr_id       IN Number,
2671                               p_sla_source_kle_id       IN Number,
2672                              --Bug# 6373605--SLA populate source
2673                               --Bug# 4028371
2674                               x_fa_trx_date       OUT NOCOPY DATE,
2675                               p_calling_interface IN VARCHAR2) is
2676 
2677   l_return_status        VARCHAR2(1)  default OKL_API.G_RET_STS_SUCCESS;
2678   l_api_name             CONSTANT varchar2(30) := 'FIXED_ASSET_ADJUST_UNIT';
2679   l_api_version          CONSTANT NUMBER := 1.0;
2680 
2681 
2682   l_trans_rec          fa_api_types.trans_rec_type;
2683   l_asset_hdr_rec      fa_api_types.asset_hdr_rec_type;
2684   l_asset_dist_tbl     fa_api_types.asset_dist_tbl_type;
2685 
2686     l_units_to_adjust    NUMBER;
2687     i    number;
2688 
2689    --cursor to get the distributions
2690    cursor    l_dist_curs(p_asset_id       IN NUMBER,
2691                          p_corporate_book IN VARCHAR2) is
2692    select  units_assigned,
2693            distribution_id
2694    from    fa_distribution_history
2695    where   asset_id = p_asset_id
2696    and     book_type_code = p_corporate_book
2697    and     transaction_header_id_out is null
2698    and     retirement_id is null;
2699 
2700 
2701    l_units_assigned      NUMBER;
2702    l_location_id         NUMBER;
2703    l_distribution_id     NUMBER;
2704    l_code_combination_id NUMBER;
2705 
2706    --Bug# 6373605 begin
2707    l_fxhv_rec okl_sla_acc_sources_pvt.fxhv_rec_type;
2708    l_fxlv_rec okl_sla_acc_sources_pvt.fxlv_rec_type;
2709    --Bug# 6373605 end
2710 
2711   begin
2712       x_return_status := OKL_API.G_RET_STS_SUCCESS;
2713       -- Call start_activity to create savepoint, check compatibility
2714       -- and initialize message list
2715       x_return_status := OKL_API.START_ACTIVITY (
2716                                l_api_name
2717                                ,p_init_msg_list
2718                                ,'_PVT'
2719                                ,x_return_status);
2720       -- Check if activity started successfully
2721       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2722          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2723       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2724          RAISE OKL_API.G_EXCEPTION_ERROR;
2725       END IF;
2726 
2727       l_asset_hdr_rec.asset_id := p_asset_id;
2728       l_asset_hdr_rec.book_type_code := p_book_type_code;
2729 
2730       -- transaction date must be filled in if performing
2731       -- prior period transfer
2732       l_trans_rec.transaction_date_entered   := NULL;
2733       l_trans_rec.transaction_name           := substr(p_trx_number,1,20);
2734       l_trans_rec.calling_interface          := p_calling_interface;
2735       l_trans_rec.who_info.last_updated_by   := FND_GLOBAL.USER_ID;
2736       l_trans_rec.who_info.last_update_login := FND_GLOBAL.LOGIN_ID;
2737 
2738       l_units_to_adjust := p_diff_in_units;
2739       i := 1;
2740        if (p_diff_in_units > 0) then
2741          OPEN l_dist_curs(p_asset_id, p_book_type_code);
2742          --Loop
2743          FETCH l_dist_curs INTO l_units_assigned, l_distribution_id;
2744           l_asset_dist_tbl(i).distribution_id := l_distribution_id;
2745           l_asset_dist_tbl(i).transaction_units := p_diff_in_units;
2746           l_asset_dist_tbl(i).units_assigned := NULL;
2747           l_asset_dist_tbl(i).assigned_to := NULL;
2748           l_asset_dist_tbl(i).expense_ccid := NULL;
2749           l_asset_dist_tbl(i).location_ccid := NULL;
2750           --EXIT;
2751           --END LOOP;
2752           CLOSE l_dist_curs;
2753        Elsif (p_diff_in_units < 0) then
2754            l_units_to_adjust := (-1) * p_diff_in_units;
2755        OPEN l_dist_curs(p_asset_id, p_book_type_code);
2756        LOOP
2757            FETCH l_dist_curs INTO l_units_assigned, l_distribution_id;
2758            EXIT WHEN l_dist_curs%NOTFOUND;
2759            IF l_units_to_adjust = 0 THEN --input param
2760               EXIT;
2761            ELSIF l_units_to_adjust >= l_units_assigned THEN
2762               l_asset_dist_tbl(i).distribution_id := l_distribution_id;
2763               l_asset_dist_tbl(i).transaction_units := (-1)*l_units_assigned;
2764               --dbms_output.put_line('Units to adjust '||to_char(l_asset_dist_tbl(i).transaction_units));
2765               l_asset_dist_tbl(i).units_assigned := NULL;
2766               l_asset_dist_tbl(i).assigned_to := NULL;
2767               l_asset_dist_tbl(i).expense_ccid := NULL;
2768               l_asset_dist_tbl(i).location_ccid := NULL;
2769               l_units_to_adjust := l_units_to_adjust - l_units_assigned;
2770               i := i + 1;
2771            ELSIF l_units_to_adjust < l_units_assigned THEN
2772               l_asset_dist_tbl(i).distribution_id := l_distribution_id;
2773               l_asset_dist_tbl(i).transaction_units := (-1)*l_units_to_adjust;
2774               --dbms_output.put_line('Units to adjust '||to_char(l_asset_dist_tbl(i).transaction_units));
2775               l_asset_dist_tbl(i).units_assigned := NULL;
2776               l_asset_dist_tbl(i).assigned_to := NULL;
2777               l_asset_dist_tbl(i).expense_ccid := NULL;
2778               l_asset_dist_tbl(i).location_ccid := NULL;
2779               l_units_to_adjust := l_units_to_adjust - l_units_to_adjust;
2780               i := i + 1;
2781            END IF;
2782        END LOOP;
2783        CLOSE l_dist_curs;
2784        end if;
2785       FA_UNIT_ADJ_PUB.do_unit_adjustment(
2786            p_api_version       => p_api_version,
2787            p_init_msg_list      => FND_API.G_FALSE,
2788            p_commit            => FND_API.G_FALSE,
2789            p_validation_level  => FND_API.G_VALID_LEVEL_FULL,
2790            --bug# 3156924 :
2791            p_calling_fn        => p_calling_interface,
2792            --p_calling_fn        => NULL,
2793            x_return_status     => x_return_status,
2794            x_msg_count         => x_msg_count,
2795            x_msg_data          => x_msg_data,
2796            px_trans_rec        => l_trans_rec,
2797            px_asset_hdr_rec    => l_asset_hdr_rec,
2798            px_asset_dist_tbl   => l_asset_dist_tbl);
2799 
2800          --dbms_output.put_line('After calling FA unit adjust Api '||x_return_status);
2801      IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2802          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2803      ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2804          RAISE OKL_API.G_EXCEPTION_ERROR;
2805      END IF;
2806       x_fa_trx_date := l_trans_rec.transaction_date_entered;
2807       --bug# 6373605 -- call populate sla sources
2808       l_fxhv_rec.source_id := p_sla_source_header_id;
2809       l_fxhv_rec.source_table := p_sla_source_header_table;
2810       l_fxhv_rec.khr_id := p_sla_source_chr_id;
2811       l_fxhv_rec.try_id := p_sla_source_try_id;
2812 
2813       l_fxlv_rec.source_id := p_sla_source_line_id;
2814       l_fxlv_rec.source_table := p_sla_source_line_table;
2815       l_fxlv_rec.kle_id := p_sla_source_kle_id;
2816 
2817       l_fxlv_rec.asset_id := l_asset_hdr_rec.asset_id;
2818       l_fxlv_rec.fa_transaction_id := l_trans_rec.transaction_header_id;
2819       l_fxlv_rec.asset_book_type_name := l_asset_hdr_rec.book_type_code;
2820 
2821       OKL_SLA_ACC_SOURCES_PVT.populate_sources(
2822       p_api_version  => p_api_version
2823      ,p_init_msg_list => p_init_msg_list
2824      ,p_fxhv_rec => l_fxhv_rec
2825      ,p_fxlv_rec => l_fxlv_rec
2826      ,x_return_status => x_return_status
2827      ,x_msg_count    => x_msg_count
2828      ,x_msg_data    => x_msg_data
2829       );
2830 
2831      IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2832          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2833      ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2834          RAISE OKL_API.G_EXCEPTION_ERROR;
2835      END IF;
2836      --bug# 6373605 -- call populate SLA sources
2837 
2838       OKL_API.END_ACTIVITY (x_msg_count,
2839                           x_msg_data );
2840   EXCEPTION
2841      WHEN OKL_API.G_EXCEPTION_ERROR THEN
2842      x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2843                                 l_api_name,
2844                                G_PKG_NAME,
2845                                'OKL_API.G_RET_STS_ERROR',
2846                                x_msg_count,
2847                                x_msg_data,
2848                                '_PVT');
2849      WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2850      x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
2851                               l_api_name,
2852                               G_PKG_NAME,
2853                               'OKL_API.G_RET_STS_UNEXP_ERROR',
2854                               x_msg_count,
2855                               x_msg_data,
2856                               '_PVT');
2857      WHEN OTHERS THEN
2858     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
2859                               l_api_name,
2860                               G_PKG_NAME,
2861                               'OTHERS',
2862                               x_msg_count,
2863                               x_msg_data,
2864                               '_PVT');
2865   END FIXED_ASSET_ADJUST_UNIT;
2866 --akrangan Bug# 5362977 start
2867    --------------------------------------------------------------------------------
2868    --Start of Comments
2869    --Procedure Name : FIXED_ASSET_UPDATE_DESC
2870    --Description    : Change Asset Description, Model and Manufacturer in FA
2871    --History        :
2872    --                 26-May-2006  rekha.pillay Created
2873    --
2874    --               Bug# 6373605 -R12.B SAL CRs
2875    --               New IN parameters as descriped earlier in
2876    --               FIXED_ASSET_ADJUST_COST
2877    --
2878    --End of Comments
2879    --------------------------------------------------------------------------------
2880      PROCEDURE FIXED_ASSET_UPDATE_DESC
2881                                 (p_api_version       IN  NUMBER,
2882                                  p_init_msg_list     IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
2883                                  x_return_status     OUT NOCOPY VARCHAR2,
2884                                  x_msg_count         OUT NOCOPY NUMBER,
2885                                  x_msg_data          OUT NOCOPY VARCHAR2,
2886                                  p_asset_id          IN  NUMBER,
2887                                  p_model_number      IN  VARCHAR2,
2888                                  p_manufacturer      IN  VARCHAR2,
2889                                  p_description       IN  VARCHAR2,
2890                                  p_trx_date          IN  DATE,
2891                                  p_trx_number        IN  VARCHAR2,
2892                                  x_fa_trx_date       OUT NOCOPY DATE,
2893                                  p_calling_interface IN VARCHAR2,
2894                                  --Bug# 8652738
2895                                  p_asset_key_id      IN  NUMBER) is
2896 
2897      l_return_status        VARCHAR2(1)  default OKL_API.G_RET_STS_SUCCESS;
2898      l_api_name             CONSTANT varchar2(30) := 'FIXED_ASSET_UPDATE_DESC';
2899      l_api_version          CONSTANT NUMBER := 1.0;
2900 
2901      l_trans_rec          fa_api_types.trans_rec_type;
2902      l_asset_hdr_rec      fa_api_types.asset_hdr_rec_type;
2903      l_asset_desc_rec     fa_api_types.asset_desc_rec_type;
2904      l_asset_type_rec     fa_api_types.asset_type_rec_type;
2905      l_asset_cat_rec      fa_api_types.asset_cat_rec_type;
2906 
2907      begin
2908          x_return_status := OKL_API.G_RET_STS_SUCCESS;
2909          -- Call start_activity to create savepoint, check compatibility
2910          -- and initialize message list
2911          x_return_status := OKL_API.START_ACTIVITY (
2912                                   l_api_name
2913                                   ,p_init_msg_list
2914                                   ,'_PVT'
2915                                   ,x_return_status);
2916          -- Check if activity started successfully
2917          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2918             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2919          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2920             RAISE OKL_API.G_EXCEPTION_ERROR;
2921          END IF;
2922 
2923          l_asset_hdr_rec.asset_id := p_asset_id;
2924 
2925          -- transaction date must be filled in if performing
2926          -- prior period transfer
2927          l_trans_rec.transaction_date_entered   := NULL;
2928          l_trans_rec.transaction_name           := substr(p_trx_number,1,20);
2929          l_trans_rec.calling_interface          := p_calling_interface;
2930          l_trans_rec.who_info.last_updated_by   := FND_GLOBAL.USER_ID;
2931          l_trans_rec.who_info.last_update_login := FND_GLOBAL.LOGIN_ID;
2932 
2933          l_asset_desc_rec.model_number       := p_model_number;
2934          l_asset_desc_rec.manufacturer_name  := p_manufacturer;
2935 
2936          If p_description is not null AND p_description <> OKL_API.G_MISS_CHAR THEN
2937            l_asset_desc_rec.description    := p_description;
2938          end if;
2939 
2940          --Bug# 8652738
2941          l_asset_desc_rec.asset_key_ccid   := p_asset_key_id;
2942 
2943          FA_ASSET_DESC_PUB.update_desc(
2944            p_api_version         => p_api_version,
2945            p_init_msg_list       => p_init_msg_list,
2946            p_commit              => FND_API.G_FALSE,
2947            p_validation_level    => FND_API.G_VALID_LEVEL_FULL,
2948            x_return_status       => x_return_status,
2949            x_msg_count           => x_msg_count,
2950            x_msg_data            => x_msg_data,
2951            p_calling_fn          => p_calling_interface,
2952            px_trans_rec          => l_trans_rec,
2953            px_asset_hdr_rec      => l_asset_hdr_rec,
2954            px_asset_desc_rec_new => l_asset_desc_rec,
2955            px_asset_cat_rec_new  => l_asset_cat_rec);
2956 
2957          IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2958            RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2959          ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2960            RAISE OKC_API.G_EXCEPTION_ERROR;
2961          END IF;
2962 
2963          x_fa_trx_date := l_trans_rec.transaction_date_entered;
2964 
2965          OKL_API.END_ACTIVITY (x_msg_count,
2966                                x_msg_data );
2967      EXCEPTION
2968         WHEN OKL_API.G_EXCEPTION_ERROR THEN
2969         x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2970                                    l_api_name,
2971                                   G_PKG_NAME,
2972                                   'OKL_API.G_RET_STS_ERROR',
2973                                   x_msg_count,
2974                                   x_msg_data,
2975                                   '_PVT');
2976         WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2977         x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
2978                                  l_api_name,
2979                                  G_PKG_NAME,
2980                                  'OKL_API.G_RET_STS_UNEXP_ERROR',
2981                                  x_msg_count,
2982                                  x_msg_data,
2983                                  '_PVT');
2984         WHEN OTHERS THEN
2985        x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
2986                                  l_api_name,
2987                                  G_PKG_NAME,
2988                                  'OTHERS',
2989                                  x_msg_count,
2990                                  x_msg_data,
2991                                  '_PVT');
2992      END FIXED_ASSET_UPDATE_DESC;
2993 --akrangan Bug# 5362977 end
2994 
2995 -- bug#5207066
2996 
2997 --------------------------------------------------------------------------------
2998 --Start of Comments
2999 --Procedure Name : Process_FA_Line
3000 --Description    : Processes FA Line and its transactions to create new asset
3001 --History        :
3002 --                 28-April-2002  ashish.singh Created
3003 --                 27-Nov-2002    ashish.singh 11.5.9 enhacements
3004 --End of Comments
3005 --------------------------------------------------------------------------------
3006 Procedure Process_FA_Line (p_api_version       IN  NUMBER,
3007                            p_init_msg_list     IN  VARCHAR2,
3008                            x_return_status     OUT NOCOPY VARCHAR2,
3009                            x_msg_count         OUT NOCOPY NUMBER,
3010                            x_msg_data          OUT NOCOPY VARCHAR2,
3011                            p_chrv_id           IN  Number,
3012                            p_fa_line_id        IN  Number,
3013                            p_fin_ast_line_id   IN  Number,
3014                            p_deal_type         IN  Varchar2,
3015                            p_trx_type          IN  Varchar2,
3016                            P_Multi_GAAP_YN     IN  Varchar2,
3017                            P_rep_pdt_book      IN  Varchar2,
3018                            --Bug# 3574232
3019                            p_adjust_asset_to_zero IN Varchar2,
3020                            --Bug# 3156924
3021                            p_trans_number      IN  Varchar2,
3022                            p_calling_interface IN  Varchar2,
3023                            --Bug# 6373605--SLA populate source
3024                            p_sla_asset_chr_id  IN  Number,
3025                            --Bug# 6373605 end
3026                            x_cimv_rec          OUT NOCOPY cimv_rec_type) is
3027 
3028 l_return_status        VARCHAR2(1)  default OKL_API.G_RET_STS_SUCCESS;
3029 l_api_name             CONSTANT varchar2(30) := 'PROCESS_FA_LINE';
3030 l_api_version          CONSTANT NUMBER := 1.0;
3031 l_fa_lty_code          Varchar2(30) := G_FA_LINE_LTY_CODE;
3032 
3033 --cursor definitions------------------------------------------------------------
3034 --Cursor to fetch residual value from top line for operating leas
3035 CURSOR residual_val_csr(p_fin_ast_line_id IN NUMBER) is
3036 SELECT residual_value
3037 FROM   OKL_K_LINES
3038 WHERE  id = p_fin_ast_line_id;
3039 
3040 l_residual_value    NUMBER default 0;
3041 
3042 --Cursor to chk book validity for an asset category
3043 CURSOR chk_cat_bk_csr(p_book_type_code IN VARCHAR2,
3044                       p_category_id    IN NUMBER) is
3045 SELECT '!'
3046 FROM   OKX_AST_CAT_BKS_V
3047 WHERE  CATEGORY_ID = p_category_id
3048 AND    BOOK_TYPE_CODE = p_book_type_code
3049 AND    STATUS = 'A';
3050 
3051 l_cat_bk_exists    Varchar2(1) default '?';
3052 
3053 
3054 --Cursor to fetch tax book information for transaction
3055 CURSOR okl_tadv_csr (p_tal_id                 IN NUMBER) IS
3056 SELECT asset_number,
3057         description,
3058         quantity,
3059         cost,
3060         tax_book,
3061         life_in_months_tax,
3062         deprn_method_tax,
3063         deprn_rate_tax,
3064         salvage_value,
3065         --bug# 6373605 start
3066         id asd_id
3067         --bug# 6373605 end
3068 FROM   okl_txd_Assets_v
3069 where  tal_id = p_tal_id;
3070 
3071 okl_tadv_rec    okl_tadv_csr%ROWTYPE;
3072 
3073 
3074 --Cursor to check if asset_id already exists in tax_book
3075 CURSOR chk_ast_bk_csr(p_book_type_code IN Varchar2,
3076                       p_asset_id       IN Number) is
3077 SELECT '!'
3078 FROM   OKX_AST_BKS_V
3079 WHERE  asset_id = p_asset_id
3080 AND    book_type_code = p_book_type_code
3081 AND    status = 'A';
3082 
3083 l_ast_bk_exists     Varchar2(1) default '?';
3084 
3085 --Cursor to fetch line style source
3086 Cursor lse_source_csr(p_lty_code IN VARCHAR2) is
3087 select src.jtot_object_code
3088 from   OKC_LINE_STYLE_SOURCES src,
3089        OKC_LINE_STYLES_B      lse
3090 where  src.lse_id = lse.id
3091 and    lse.lty_code = p_lty_code;
3092 
3093 --Cursor to fetch book records for an asset
3094 --Bug# 2657558 : select of salvage value added
3095 Cursor ast_bks_csr(p_asset_id    IN NUMBER,
3096                    p_book_class  IN VARCHAR2) is
3097 select book_type_code,
3098        cost,
3099        --Bug# 2657558
3100        salvage_value,
3101        --Bug# 2981308
3102        percent_salvage_value
3103 from   okx_ast_bks_v
3104 where  asset_id = p_Asset_id
3105 and    book_class = p_book_class;
3106 
3107 l_book_type_code     OKX_AST_BKS_V.BOOK_TYPE_CODE%TYPE;
3108 l_asset_cost         NUMBER;
3109 l_adjust_cost        NUMBER;
3110 --Bug# 2657558
3111 l_salvage_value      NUMBER;
3112 l_adj_salvage_value  NUMBER;
3113 --Bug# 2981308
3114 l_percent_sv         NUMBER;
3115 l_adj_percent_sv     NUMBER;
3116 
3117 --Cursor chk if corp book is the mass copy source book
3118 CURSOR chk_mass_cpy_book(p_corp_book IN Varchar2,
3119                          p_tax_book  IN Varchar2) is
3120 SELECT '!'
3121 FROM   OKX_ASST_BK_CONTROLS_V
3122 WHERE  book_type_code = p_tax_book
3123 AND    book_class = 'TAX'
3124 AND    mass_copy_source_book = p_corp_book
3125 AND    allow_mass_copy = 'YES'
3126 AND    copy_additions_flag = 'YES';
3127 
3128 l_mass_cpy_book   Varchar2(1) default '?';
3129 
3130 -- Bug# : 11.5.9 - Multi-GAAP
3131 -- cursor to get values from Corporate Book for rep Prod Book
3132 -- cursor to get the actual values from FA for the contract
3133   CURSOR okx_ast_csr (p_asset_id         IN VARCHAR2,
3134                       p_book_type_code   IN VARCHAR2) is
3135   SELECT  okx.acquisition_date       in_service_date,
3136           okx.life_in_months         life_in_months,
3137           okx.cost                   cost,
3138           okx.depreciation_category  depreciation_category,
3139           okx.deprn_method_code      deprn_method_code,
3140           okx.adjusted_rate          adjusted_rate,
3141           okx.basic_rate             basic_rate,
3142           okx.salvage_value          salvage_value,
3143           okx.percent_salvage_value  percent_salvage_value,
3144           okx.book_type_code         book_type_code,
3145           okx.book_class             book_class,
3146           okx.asset_number           asset_number,
3147           okx.asset_id               asset_id
3148    FROM   okx_ast_bks_v okx
3149    WHERE  okx.asset_id          = p_asset_id
3150    AND    okx.book_type_code    = p_book_type_code;
3151 
3152   okx_ast_rec okx_ast_csr%RowType;
3153 -- Bug# : 11.5.9 - Multi-GAAP
3154 
3155 
3156 --end-----------cursor definitions----------------------------------------------
3157 
3158 l_deal_type         OKL_K_HEADERS.DEAL_TYPE%TYPE;
3159 l_talv_rec_in       talv_rec_type;
3160 l_cimv_rec_in       cimv_rec_type;
3161 l_cimv_rec_out      cimv_rec_type;
3162 l_talv_rec          talv_rec_type;
3163 l_cimv_rec          cimv_rec_type;
3164 l_no_data_found     BOOLEAN DEFAULT TRUE;
3165 l_current_units     Number;
3166 l_asset_number      OKX_ASSETS_V.NAME%Type;
3167 l_asset_description OKX_ASSETS_V.Description%Type;
3168 l_fa_line_id        Number;
3169 l_fin_ast_line_id   Number;
3170 l_asset_hdr_rec     FA_API_TYPES.asset_hdr_rec_type;
3171 l_asset_fin_rec     FA_API_TYPES.asset_fin_rec_type;
3172 l_asst_count        Number default 0;
3173 
3174 --parameters for rule apis
3175 l_rgd_code         OKC_RULE_GROUPS_B.RGD_CODE%TYPE default    G_TAX_OWNER_RGP_CODE;
3176 l_rdf_code         OKC_RG_DEF_RULES.RDF_CODE%TYPE default     G_TAX_OWNER_RUL_CODE;
3177 l_rdf_name         OKC_RULES_B.RULE_INFORMATION1%TYPE default G_TAX_OWNER_RUL_PROMPT;
3178 --Bug #2525946
3179 l_segment_number   NUMBER default G_TAX_OWNER_RUL_SEG_NUMBER;
3180 l_id1              OKC_RULES_B.OBJECT1_ID1%TYPE;
3181 l_id2              OKC_RULES_B.OBJECT1_ID2%TYPE;
3182 l_tax_owner        Varchar2(200);
3183 l_description      Varchar2(1995);
3184 l_status           Varchar2(3);
3185 l_start_date       date;
3186 l_end_date         date;
3187 l_org_id           Number;
3188 l_inv_org_id       Number;
3189 --l_book_type_code   OKX_ASSETS_V.CORPORATE_BOOK%TYPE;
3190 l_select           Varchar2(2000);
3191 --bug #2675391 : to store corporate book code for future
3192 l_corp_book        OKX_ASSETS_V.CORPORATE_BOOK%TYPE;
3193 l_orig_cost        OKX_ASSETS_V.ORIGINAL_COST%TYPE;
3194 l_corp_salvage_value    NUMBER;
3195 --Bug# 3156924 : corporate book salvage value should also be preserved for future use
3196 l_corp_percent_sv  NUMBER;
3197 --bug # : 11.5.9 enhancements
3198 l_rep_pdt_book    OKX_AST_BKS_V.book_type_code%TYPE;
3199 l_Multi_GAAP_YN   Varchar2(1);
3200 l_rep_pdt_bk_done Varchar2(1) default 'N';
3201 
3202 l_chrv_rec   okl_okc_migration_pvt.chrv_rec_type;
3203 l_khrv_rec   okl_contract_pub.khrv_rec_type;
3204 x_chrv_rec   okl_okc_migration_pvt.chrv_rec_type;
3205 x_khrv_rec   okl_contract_pub.khrv_rec_type;
3206 
3207   l_bk_dfs_rec bk_dfs_csr%ROWTYPE;
3208 
3209   l_func_curr_code OKL_K_HEADERS_FULL_V.CURRENCY_CODE%TYPE;
3210   l_chr_curr_code  OKL_K_HEADERS_FULL_V.CURRENCY_CODE%TYPE;
3211 
3212   x_contract_currency		okl_k_headers_full_v.currency_code%TYPE;
3213   x_currency_conversion_type	okl_k_headers_full_v.currency_conversion_type%TYPE;
3214   x_currency_conversion_rate	okl_k_headers_full_v.currency_conversion_rate%TYPE;
3215   x_currency_conversion_date	okl_k_headers_full_v.currency_conversion_date%TYPE;
3216 
3217   --Bug# 3156924 :
3218   --cursor to fetch transaction number from okl_trx_assets
3219   cursor l_tas_csr(p_tas_id in number) is
3220   select to_char(trans_number),
3221          DATE_TRANS_OCCURRED,
3222          --Bug# 6373605 start
3223          id tas_id,
3224          try_id
3225          --Bug# 6373605 end
3226   from   okl_trx_assets
3227   where  id = p_tas_id;
3228 
3229   l_trans_number             okl_trx_contracts.trx_number%TYPE := p_trans_number;
3230   l_trans_date               okl_trx_assets.date_trans_occurred%TYPE;
3231   l_calling_interface        varchar2(30) := p_calling_interface;
3232   --Bug# 3156924
3233   --Bug# 6373605 start
3234   l_tas_id                   okl_trx_assets.id%TYPE;
3235   l_try_id                   okl_trx_assets.try_id%TYPE;
3236   --Bug# 6373605 end
3237 
3238   --Bug# 4028371
3239   l_fa_add_date_corp         date;
3240   l_fa_add_date_tax          date;
3241   l_fa_add_date_mg           date;
3242   l_fa_adj_date_corp         date;
3243   l_fa_adj_date_tax          date;
3244   l_fa_adj_date_mg           date;
3245   l_talv_date_rec            okl_tal_pvt.talv_rec_type;
3246   lx_talv_date_rec           okl_tal_pvt.talv_rec_type;
3247   --Bug# 4028371
3248 
3249   --Bug# 3548044
3250   l_corp_cost                NUMBER;
3251 
3252   --Bug# 3838703
3253   --cursor to get tax owner rule
3254   Cursor town_rul_csr (pchrid number) is
3255   Select rule_information1 tax_owner,
3256          id
3257   From   okc_rules_b rul
3258   where  rul.dnz_chr_id = pchrid
3259   and    rul.rule_information_category = 'LATOWN'
3260   and    nvl(rul.STD_TEMPLATE_YN,'N')  = 'N';
3261 
3262   l_town_rul      okc_rules_b.rule_information1%TYPE;
3263   l_town_rul_id   okc_rules_b.id%TYPE;
3264 
3265   --Bug# 5261704
3266   l_depreciate_flag VARCHAR2(3);
3267   --Bug# 6373605
3268   -- Cursor to fetch txd transaction for a tax book
3269   Cursor l_txd_for_book_csr (p_book_type_code in varchar2,
3270                              p_tal_id         in number) is
3271   select id
3272   from   okl_txd_assets_b txdb
3273   where  tal_id = p_tal_id
3274   and    tax_book = p_book_type_code;
3275 
3276   l_txd_for_book_rec l_txd_for_book_csr%ROWTYPE;
3277 
3278   l_sla_source_line_id   NUMBER;
3279   l_sla_source_line_table OKL_EXT_FA_LINE_SOURCES_V.SOURCE_TABLE%TYPE;
3280   --Bug# 6373605 end
3281 
3282 Begin
3283 
3284 
3285     x_return_status      := OKL_API.G_RET_STS_SUCCESS;
3286     -- Call start_activity to create savepoint, check compatibility
3287     -- and initialize message list
3288     x_return_status := OKL_API.START_ACTIVITY (
3289                                l_api_name
3290                                ,p_init_msg_list
3291                                ,'_PVT'
3292                                ,x_return_status);
3293     -- Check if activity started successfully
3294     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3295        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3296     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
3297        RAISE OKL_API.G_EXCEPTION_ERROR;
3298     END IF;
3299 
3300     --Bug# 5261704 : opened this cursor earlier as tax owner value is required
3301     --               for asset addition for setting depreciation flag to 'NO'
3302     -- with cursor town_rul_csr
3303     Open town_rul_csr(pchrid => p_chrv_id);
3304     Fetch town_rul_csr into l_town_rul, l_town_rul_id;
3305     Close town_rul_csr;
3306 
3307     l_tax_owner := rtrim(ltrim(l_town_rul,' '),' ');
3308 
3309     l_fa_line_id        := p_fa_line_id;
3310     l_fin_ast_line_id   := p_fin_ast_line_id;
3311     l_deal_type         := p_deal_type;
3312     --Bug # : 11.5.9 - Multi-GAAP
3313     l_rep_pdt_book      := p_rep_pdt_book;
3314     l_Multi_GAAP_YN     := p_Multi_GAAP_YN;
3315 
3316     l_cimv_rec := get_cimv_rec(l_fa_line_id, l_no_data_found);
3317     If l_no_data_found = TRUE Then
3318         --dbms_output.put_line('no fa item (line source) records ...!');
3319         OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
3320 	                    p_msg_name     => G_FA_ITEM_REC_NOT_FOUND,
3321                             p_token1       => G_FA_LINE_ID,
3322                             p_token1_value => to_char(l_fa_line_id)
3323 				           );
3324         RAISE OKL_API.G_EXCEPTION_ERROR;
3325      Else
3326         If (l_cimv_rec.jtot_object1_code is not null) and (l_cimv_rec.object1_id1) is not null Then
3327             Null; --asset is already linked
3328             x_cimv_rec := l_cimv_rec;
3329             l_asst_count := l_asst_count+1;
3330         Elsif (l_cimv_rec.jtot_object1_code is null) OR (l_cimv_rec.object1_id1 is null) Then
3331             --go to txlv to fetch the transaction record
3332             l_talv_rec := get_talv_rec(l_fa_line_id, p_trx_type, l_no_data_found);
3333         If l_no_data_found = TRUE Then
3334             --dbms_output.put_line('no asset creation transaction records ...!');
3335             OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
3336 		                        p_msg_name     => G_FA_TRX_REC_NOT_FOUND,
3337                                 p_token1       => G_FA_LINE_ID,
3338                                 p_token1_value => to_char(l_fa_line_id)
3339 				                );
3340             RAISE OKL_API.G_EXCEPTION_ERROR;
3341         Else
3342             --bug#2675391 set corp book name for future use
3343             l_corp_book     := l_talv_rec.corporate_book;
3344             --check if depreciation category has been entered
3345             if l_talv_rec.depreciation_id is null then
3346                 --dbms_output.put_line('Asset category not entered for Asset transaction..');
3347                 OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
3348 				                    p_msg_name     => G_AST_CAT_NOT_ENTERED,
3349 				                    p_token1       => G_ASSET_NUMBER_TOKEN,
3350 				                    p_token1_value => l_talv_rec.asset_number
3351 				                    );
3352                 RAISE OKL_API.G_EXCEPTION_ERROR;
3353              end if;
3354 
3355              --check if asset category has been entered
3356              If l_talv_rec.fa_location_id is null then
3357                  --dbms_output.put_line('FA location not entered for Asset transaction..');
3358                  OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
3359 				                     p_msg_name     => G_AST_LOC_NOT_ENTERED,
3360 				                     p_token1       => G_ASSET_NUMBER_TOKEN,
3361 				                     p_token1_value => l_talv_rec.asset_number
3362 				                     );
3363                  RAISE OKL_API.G_EXCEPTION_ERROR;
3364              End If;
3365 
3366              --Bug# 3156924 : Fetch transaction details for calling FA interfaces
3367              -----------------
3368              --Bug# 6791359 : Commented the If clause
3369              ----------------
3370              --If nvl(l_trans_number,okl_api.G_MISS_CHAR) = OKL_API.G_MISS_CHAR then
3371               Open l_tas_csr(p_tas_id => l_talv_rec.tas_id);
3372               Fetch l_tas_csr into l_trans_number,
3373                                    l_trans_date,
3374                                    --bug# 6373605 start
3375                                    l_tas_id,
3376                                    l_try_id;
3377                                    --Bug# 6373605 end
3378               if l_tas_csr%NOTFOUND then
3379                   Null;
3380               end if;
3381               Close l_tas_csr;
3382              --End If;
3383              -----------------
3384              --END Bug# 6791359 : Commented the If clause
3385              ----------------
3386              --Bug# 3156924
3387 
3388              --check salvage value for operating Lease
3389 
3390              -- Bug# 3103387 - Changed NVL check from 0 to okl_api.G_MISS_NUM
3391              If (nvl(l_talv_rec.salvage_value,okl_api.G_MISS_NUM) = okl_api.G_MISS_NUM and nvl(l_talv_rec.percent_salvage_value,okl_api.G_MISS_NUM) = okl_api.G_MISS_NUM
3392                  and l_Deal_Type = G_OP_LEASE_BK_CLASS) Then
3393 
3394                  --get the residual value from top line
3395                  OPEN residual_val_csr(p_fin_ast_line_id => l_fin_ast_line_id);
3396                  FETCH residual_val_csr into
3397                                         l_residual_value;
3398                  IF residual_val_csr%NOTFOUND Then
3399                      Null;
3400                  Else
3401                      l_talv_rec.salvage_value :=l_residual_value;
3402                  End If;
3403                  CLOSE residual_val_csr;
3404              End If;
3405 
3406              --Bug# 2967286: store corp book salvage value for future use
3407              l_corp_salvage_value := l_talv_rec.salvage_value;
3408              --Bug# 2967286 end
3409              --Bug# 3156924 : percent sv should also be saved for future use
3410              l_corp_percent_sv    := l_talv_rec.percent_salvage_value;
3411              --Bug# 3548044
3412              l_corp_cost          := l_talv_rec.depreciation_cost;
3413 
3414              --check for category-id book type code validity
3415              l_cat_bk_exists := '?';
3416              open chk_cat_bk_csr(p_book_type_code => l_talv_rec.corporate_book,
3417                                  p_category_id    => l_talv_rec.depreciation_id);
3418              Fetch chk_cat_bk_csr into l_cat_bk_exists;
3419              If chk_cat_bk_csr%NOTFOUND Then
3420                  null;
3421              End If;
3422              Close chk_cat_bk_csr;
3423              If l_cat_bk_exists = '?' Then
3424                  --dbms_output.put_line('Not a valid corporate book for category..');
3425                  OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
3426                                      p_msg_name     => G_FA_INVALID_BK_CAT,
3427                                      p_token1       => G_FA_BOOK,
3428                                      p_token1_value => l_talv_rec.corporate_book,
3429                                      p_token2       => G_ASSET_CATEGORY,
3430                                      p_token2_value => to_char(l_talv_rec.depreciation_id)
3431 				                     );
3432                  RAISE OKL_API.G_EXCEPTION_ERROR;
3433              Else
3434                  --Bug# 5261704 : Set depreciate flag to 'NO' for
3435                  --               deal types where cost will be subsequently adjusted to zero
3436                  l_depreciate_flag := 'YES';
3437                  If (l_deal_type = 'LOAN') OR
3438                     (l_deal_type in (G_ST_LEASE_BK_CLASS,G_DF_LEASE_BK_CLASS)) Then
3439                     l_depreciate_flag := 'NO';
3440                  End If;
3441                  --End Bug# 5261704
3442                  FIXED_ASSET_ADD(p_api_version       => p_api_version,
3443                                  p_init_msg_list     => p_init_msg_list,
3444                                  x_return_status     => x_return_status,
3445                                  x_msg_count         => x_msg_count,
3446                                  x_msg_data          => x_msg_data,
3447                                  p_talv_rec          => l_talv_rec,
3448                                  --bug# 3156924
3449                                  p_trans_number      => l_trans_number,
3450                                  p_calling_interface => l_calling_interface,
3451                                  --Bug# 5261704
3452                                  p_depreciate_flag   => l_depreciate_flag,
3453           --Bug# 6373605--SLA populate source
3454           p_sla_source_header_id    => l_tas_id,
3455           p_sla_source_header_table => 'OKL_TRX_ASSETS',
3456           p_sla_source_try_id       => l_try_id,
3457           p_sla_source_line_id      => l_talv_rec.id,
3458           p_sla_source_line_table   => 'OKL_TXL_ASSETS_B',
3459           p_sla_source_chr_id       => p_chrv_id,
3460           p_sla_source_kle_id       => p_fin_ast_line_id,
3461           p_sla_asset_chr_id        => p_sla_asset_chr_id,
3462           --Bug# 6373605--SLA populate sources
3463                                  --Bug# 4028371
3464                                  x_fa_trx_date       => l_fa_add_date_corp,
3465                                  x_asset_hdr_rec     => l_asset_hdr_rec);
3466                  --dbms_output.put_line('After fixed_asset_add corp book'||x_return_status);
3467                  IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3468                      RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3469                  ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
3470                      RAISE OKL_API.G_EXCEPTION_ERROR;
3471                  END IF;
3472               End If;
3473 
3474               --Bug# : 11.5.9 Multi GAAP
3475               l_rep_pdt_bk_done := 'N';
3476               --get the tax book records
3477               open  okl_tadv_csr(p_tal_id => l_talv_rec.id);
3478               Loop
3479                   Fetch okl_tadv_csr
3480                         into okl_tadv_rec;
3481                   --check whether correct tax book for asset category
3482                   Exit When okl_tadv_csr%NOTFOUND;
3483                   l_cat_bk_exists := '?';
3484                   open chk_cat_bk_csr(p_book_type_code => okl_tadv_rec.tax_book,
3485                                       p_category_id    => l_talv_rec.depreciation_id);
3486                   Fetch chk_cat_bk_csr into l_cat_bk_exists;
3487                   If chk_cat_bk_csr%NOTFOUND Then
3488                       null;
3489                   End If;
3490                   Close chk_cat_bk_csr;
3491 
3492                   If l_cat_bk_exists = '?' Then
3493                       --dbms_output.put_line('Not a valid tax book for category..');
3494                       --raise appropriate error
3495                       OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
3496          	                          p_msg_name     => G_FA_INVALID_BK_CAT,
3497                                           p_token1       => G_FA_BOOK,
3498                                           p_token1_value => okl_tadv_rec.tax_book,
3499                                           p_token2       => G_ASSET_CATEGORY,
3500                                           p_token2_value => to_char(l_talv_rec.depreciation_id)
3501                                          );
3502                        RAISE OKL_API.G_EXCEPTION_ERROR;
3503                   Else
3504                        --check if asset already exists in tax book
3505                        l_ast_bk_exists := '?';
3506                        Open chk_ast_bk_csr(p_book_type_code => okl_tadv_rec.tax_book,
3507                                            p_asset_id       => l_asset_hdr_rec.asset_id);
3508                        Fetch chk_ast_bk_csr into l_ast_bk_exists;
3509                        If chk_ast_bk_csr%NOTFOUND Then
3510                            Null;
3511                        End If;
3512                        Close chk_ast_bk_csr;
3513 
3514                        If l_ast_bk_exists = '!' Then --asset already exists in tax book
3515                            null; --do not have to add again
3516                        Else
3517                            --chk if corp book is the mass copy book for the tax book
3518                            l_mass_cpy_book := '?';
3519                            OPEN chk_mass_cpy_book(
3520                                                   --bug#2675391 : use previously stored corp book code
3521                                                   --p_corp_book => l_talv_rec.corporate_book,
3522                                                   p_corp_book => l_corp_book,
3523                                                   p_tax_book  => okl_tadv_rec.tax_book);
3524                            Fetch chk_mass_cpy_book into l_mass_cpy_book;
3525                            If chk_mass_cpy_book%NOTFOUND Then
3526                                Null;
3527                            End If;
3528                            Close chk_mass_cpy_book;
3529 
3530                            If l_mass_cpy_book = '?' Then
3531                                --can not mass copy into tax book
3532                                --dbms_output.put_line('Can not copy into tax book ...');
3533                                OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
3534 				                                   p_msg_name     => G_FA_TAX_CPY_NOT_ALLOWED,
3535                                                    p_token1       => G_FA_BOOK,
3536                                                    p_token1_value => okl_tadv_rec.tax_book
3537 				                                  );
3538                                 RAISE OKL_API.G_EXCEPTION_ERROR;
3539                                       --raise appropriate error message;
3540                            Else
3541                                 --can masscopy
3542                                 --intialize talv record for tax book
3543                                 l_talv_rec.corporate_book    := okl_tadv_rec.tax_book;
3544                                 l_talv_rec.dnz_asset_id      := l_asset_hdr_rec.asset_id;
3545                                 --l_talv_rec.asset_number      := okl_tadv_rec.asset_number;
3546                                 --l_talv_rec.description       := okl_tadv_rec.description;
3547                                 If okl_tadv_rec.cost is not null Then
3548                                     l_talv_rec.depreciation_cost := okl_tadv_rec.cost;
3549                                 End If;
3550                                     l_talv_rec.life_in_months    := okl_tadv_rec.life_in_months_tax;
3551                                     l_talv_rec.deprn_method      := okl_tadv_rec.deprn_method_tax;
3552                                     l_talv_rec.deprn_rate        := okl_tadv_rec.deprn_rate_tax;
3553                                 --Bug#-2397777 : residual value should be salvage value for operating lease if no sal. value given explicitly:
3554                                 --Bug#2967286 : salvage value should be equal to
3555                                 --corp book salvage value only for Multi-Gapp tax books.
3556                                 --For others it should be eqaul to zero
3557 
3558                                 --check salvage value for operating Lease
3559                                 If  l_rep_pdt_book = okl_tadv_rec.tax_book Then
3560 
3561                                 -- Bug# 3103387 - Changed NVL check from 0
3562                                 -- to okl_api.G_MISS_NUM
3563                                     If (nvl(l_talv_rec.salvage_value,okl_api.G_MISS_NUM) = okl_api.G_MISS_NUM and nvl(l_talv_rec.percent_salvage_value,okl_api.G_MISS_NUM) = okl_api.G_MISS_NUM
3564                                         and l_Deal_Type = G_OP_LEASE_BK_CLASS) Then
3565                                         --null; --salvage value shouldbe residual value as for corp book
3566                                         --salvage value should be equal to corp book salvage value
3567                                         l_talv_rec.salvage_value := l_corp_salvage_value;
3568                                         --Bug# 3156924 :
3569                                         l_talv_rec.percent_salvage_value := l_corp_percent_sv;
3570                                     else
3571                                         --tadv salvage value not getting populated now so
3572                                         --l_talv_rec.salvage_value     := okl_tadv_rec.salvage_value;
3573                                         l_talv_rec.salvage_value     := l_corp_salvage_value;
3574                                         --Bug# 3156924 :
3575                                         l_talv_rec.percent_salvage_value := l_corp_percent_sv;
3576                                     end if;
3577                                 Else
3578                                     --bug# 2967286
3579                                     --l_talv_rec.salvage_value := 0;
3580                                     --Bug# 3156924
3581                                     l_talv_rec.salvage_value := null;
3582                                     --bug# 3156924 :
3583                                     l_talv_rec.percent_salvage_value := null;
3584                                 End If;
3585 
3586                                 --Bug# 5261704 : Set depreciate flag to 'NO' for
3587                                 --               deal types where cost will be subsequently adjusted to zero
3588                                 -- If LOAN  or
3589                                 -- If DF ST with LESSEE AND
3590                                 -- Book <> Multi-GAAP Book
3591                                 l_depreciate_flag := 'YES';
3592                                 If ((l_deal_type = 'LOAN') OR
3593                                     (l_deal_type  in (G_ST_LEASE_BK_CLASS,G_DF_LEASE_BK_CLASS) AND l_tax_owner = 'LESSEE')
3594                                    ) AND
3595                                    l_talv_rec.corporate_book <> nvl(l_rep_pdt_book,okl_api.g_miss_char) Then
3596                                     l_depreciate_flag := 'NO';
3597                                 End If;
3598                                 If (l_Multi_GAAP_YN = 'Y') AND
3599                                     (l_talv_rec.corporate_book = nvl(l_rep_pdt_book,OKL_API.G_MISS_CHAR)) AND
3600                                     (p_adjust_asset_to_zero = 'Y') Then
3601                                     l_depreciate_flag := 'NO';
3602                                 End If;
3603                                 --End Bug# 5261704
3604                                 --call mass additions add for tax book
3605                                 FIXED_ASSET_ADD(p_api_version   => p_api_version,
3606                                                 p_init_msg_list => p_init_msg_list,
3607                                                 x_return_status => x_return_status,
3608                                                 x_msg_count     => x_msg_count,
3609                                                 x_msg_data      => x_msg_data,
3610                                                 p_talv_rec      => l_talv_rec,
3611                                                 --Bug# 3156924
3612                                                 p_trans_number      => l_trans_number,
3613                                                 p_calling_interface => l_calling_interface,
3614                                                 --Bug# 5261704
3615                                                 p_depreciate_flag   => l_depreciate_flag,
3616               --Bug# 6373605--SLA populate source
3617               p_sla_source_header_id    => l_tas_id,
3618               p_sla_source_header_table => 'OKL_TRX_ASSETS',
3619               p_sla_source_try_id       => l_try_id,
3620               p_sla_source_line_id      => okl_tadv_rec.asd_id,
3621               p_sla_source_line_table   => 'OKL_TXD_ASSETS_B',
3622               p_sla_source_chr_id       => p_chrv_id,
3623               p_sla_source_kle_id       => p_fin_ast_line_id,
3624               p_sla_asset_chr_id        => p_sla_asset_chr_id,
3625               --Bug# 6373605--SLA populate sources
3626                                                 --Bug# 4028371
3627                                                 x_fa_trx_date => l_fa_add_date_tax,
3628                                                 x_asset_hdr_rec     => l_asset_hdr_rec);
3629                                 --dbms_output.put_line('After tax book "'||okl_tadv_rec.tax_book||'" :'||x_return_status);
3630                                     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3631                                          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3632                                     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
3633                                          RAISE OKL_API.G_EXCEPTION_ERROR;
3634                                     END IF;
3635                                 End If; --can mass copy into tax book
3636                            End If; --asset does not exist in tax book
3637                        End If; -- valid tax book for category
3638 
3639                        --Bug# : 11.5.9 Multi GAAP Begin
3640 
3641                        If l_rep_pdt_book = okl_tadv_rec.tax_book Then
3642                           l_rep_pdt_bk_done := 'Y';
3643                        End If;
3644 
3645                   End Loop; -- get tax book records
3646 
3647                   --Bug# : 11.5.9 Multi GAAP End
3648                   Close okl_tadv_csr;
3649 
3650                   --Bug# : 11.5.9 Multi GAAP
3651                   If (l_Multi_GAAP_YN = 'Y') and (l_rep_pdt_book is not null) Then
3652                       If l_rep_pdt_bk_done = 'Y' Then
3653                           Null;
3654                       Elsif l_rep_pdt_bk_done = 'N' Then
3655                           --add asset to reporting product book
3656                           Open okx_ast_csr(p_asset_id => l_asset_hdr_rec.asset_id,
3657                                            p_book_type_code => l_corp_book);
3658                           Fetch okx_ast_csr into okx_ast_rec;
3659                           If okx_ast_csr%NotFound Then
3660                              null;
3661                              --asset should be already in corp book to reach this stage;
3662                              --so not raising an error
3663                           End if;
3664                           Close okx_ast_csr;
3665 
3666                           l_cat_bk_exists := '?';
3667                           open chk_cat_bk_csr(p_book_type_code => l_rep_pdt_book,
3668                                               p_category_id    => okx_ast_rec.depreciation_category);
3669                           Fetch chk_cat_bk_csr into l_cat_bk_exists;
3670                           If chk_cat_bk_csr%NOTFOUND Then
3671                               null;
3672                           End If;
3673                           Close chk_cat_bk_csr;
3674 
3675                           If l_cat_bk_exists = '?' Then
3676                           --dbms_output.put_line('Not a valid tax book for category..');
3677                           --raise appropriate error
3678                               OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
3679 		                                  p_msg_name     => G_FA_INVALID_BK_CAT,
3680                                                   p_token1       => G_FA_BOOK,
3681                                                   p_token1_value => l_rep_pdt_book,
3682                                                   p_token2       => G_ASSET_CATEGORY,
3683                                                   p_token2_value => to_char(okx_ast_rec.depreciation_category)
3684                                                  );
3685                                RAISE OKL_API.G_EXCEPTION_ERROR;
3686                           Else
3687                               --check if asset already exists in tax book
3688                               l_ast_bk_exists := '?';
3689                               Open chk_ast_bk_csr(p_book_type_code => l_rep_pdt_book,
3690                                                   p_asset_id       => okx_ast_rec.asset_id);
3691                               Fetch chk_ast_bk_csr into l_ast_bk_exists;
3692                               If chk_ast_bk_csr%NOTFOUND Then
3693                                   Null;
3694                               End If;
3695                               Close chk_ast_bk_csr;
3696 
3697                               If l_ast_bk_exists = '!' Then --asset already exists in tax book
3698                                   null; --do not have to add again
3699                               Else
3700                                   --chk if corp book is the mass copy book for the tax book
3701                                   l_mass_cpy_book := '?';
3702                                   OPEN chk_mass_cpy_book(
3703                                                       --bug#2675391 : use previously stored corp book code
3704                                                       --p_corp_book => l_talv_rec.corporate_book,
3705                                                       p_corp_book => l_corp_book,
3706                                                       p_tax_book  => l_rep_pdt_book);
3707                                   Fetch chk_mass_cpy_book into l_mass_cpy_book;
3708                                   If chk_mass_cpy_book%NOTFOUND Then
3709                                       Null;
3710                                   End If;
3711                                   Close chk_mass_cpy_book;
3712 
3713                                   If l_mass_cpy_book = '?' Then
3714                                       --can not mass copy into tax book
3715                                       --dbms_output.put_line('Can not copy into tax book ...');
3716                                       OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
3717 		                                          p_msg_name     => G_FA_TAX_CPY_NOT_ALLOWED,
3718                                                           p_token1       => G_FA_BOOK,
3719                                                           p_token1_value => l_rep_pdt_book
3720 				                                         );
3721                                       RAISE OKL_API.G_EXCEPTION_ERROR;
3722                                       --raise appropriate error message;
3723                                   Else
3724 
3725                                       open bk_dfs_csr(ctId   => okx_ast_rec.depreciation_category,
3726                                                       effDat => okx_ast_rec.in_service_date,
3727 			                              bk     => l_rep_pdt_book);
3728                                       Fetch bk_dfs_csr into l_bk_dfs_rec;
3729                                       If bk_dfs_csr%NOTFOUND Then
3730                                           Close bk_dfs_csr;
3731                                           OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
3732 				                              p_msg_name     => G_FA_INVALID_BK_CAT,
3733                                                               p_token1       => G_FA_BOOK,
3734                                                               p_token1_value => l_rep_pdt_book,
3735                                                               p_token2       => G_ASSET_CATEGORY,
3736                                                               p_token2_value => to_char(okx_ast_rec.depreciation_category));
3737                                           RAISE OKL_API.G_EXCEPTION_ERROR;
3738                                       End If;
3739                                       Close bk_dfs_csr;
3740 
3741                                       --can masscopy
3742                                       --intialize talv record for tax book
3743                                       l_talv_rec.corporate_book    := l_rep_pdt_book;
3744 
3745                                       l_talv_rec.dnz_asset_id      := l_asset_hdr_rec.asset_id;
3746                                       --l_talv_rec.asset_number      := okl_tadv_rec.asset_number;
3747                                       --l_talv_rec.description       := okl_tadv_rec.description;
3748 
3749                                       --l_chr_curr_code  := l_hdr_rec.CURRENCY_CODE;
3750                                       --l_func_curr_code := OKC_CURRENCY_API.GET_OU_CURRENCY(l_hdr_rec.authoring_org_id);
3751 
3752 
3753                                       --Bug# 3548044 :
3754                                       l_talv_rec.depreciation_cost       := l_corp_cost;
3755                                       l_talv_rec.salvage_value           := l_corp_salvage_value;
3756                                       l_talv_rec.percent_salvage_value   := l_corp_percent_sv;
3757                                       --l_talv_rec.depreciation_cost     := okx_ast_rec.cost;
3758                                       --l_talv_rec.salvage_value         := okx_ast_rec.salvage_value;
3759                                       --l_talv_rec.percent_salvage_value := okx_ast_rec.percent_salvage_value;
3760 
3761                                       /* --As already adding in Functional currency Following conversion is not required
3762                                       If ( ( l_func_curr_code IS NOT NULL) AND ( l_chr_curr_code <> l_func_curr_code )) Then
3763 
3764                                           okl_accounting_util.convert_to_contract_currency(
3765                                                           p_khr_id                    => p_chrv_id,
3766                                                           p_from_currency             => l_func_curr_code,
3767                                                           p_transaction_date          => l_hdr_rec.start_date,
3768                                                           p_amount 	              => okx_ast_rec.cost,
3769                                                           x_contract_currency	      => x_contract_currency,
3770                                                           x_currency_conversion_type  => x_currency_conversion_type,
3771                                                           x_currency_conversion_rate  => x_currency_conversion_rate,
3772                                                           x_currency_conversion_date  => x_currency_conversion_date,
3773                                                           x_converted_amount          => l_talv_rec.depreciation_cost);
3774 
3775                                           okl_accounting_util.convert_to_contract_currency(
3776                                                           p_khr_id                    => p_chrv_id,
3777                                                           p_from_currency             => l_func_curr_code,
3778                                                           p_transaction_date          => G_CHR_START_DATE,
3779                                                           p_amount 	              => okx_ast_rec.salvage_value,
3780                                                           x_contract_currency	      => x_contract_currency,
3781                                                           x_currency_conversion_type  => x_currency_conversion_type,
3782                                                           x_currency_conversion_rate  => x_currency_conversion_rate,
3783                                                           x_currency_conversion_date  => x_currency_conversion_date,
3784                                                           x_converted_amount          => l_talv_rec.salvage_value);
3785 
3786                                       End If;
3787                                       --As already adding in Functional currency Following conversion is not required */
3788 
3789                                       -----------------------------------------------------------------
3790                                       --Bug# 2981308 : Multi-Gaap Book should be identical to CORP Book
3791                                       --Bug# 3548044 : Re-fix on above: Multi-Gaap Book should read from category defaults
3792                                       -----------------------------------------------------------------
3793                                       l_talv_rec.life_in_months    := l_bk_dfs_rec.life_in_months;
3794                                       l_talv_rec.deprn_method      := l_bk_dfs_rec.deprn_method;
3795                                       l_talv_rec.deprn_rate        := l_bk_dfs_rec.adjusted_rate;
3796                                       --l_talv_rec.life_in_months    := okx_ast_rec.life_in_months;
3797                                       --l_talv_rec.deprn_method      := okx_ast_rec.deprn_method_code;
3798                                       --l_talv_rec.deprn_rate        := okx_ast_rec.adjusted_rate;
3799 
3800                                       --call mass additions add for reporting product tax book
3801                                       --Bug# 5261704 :
3802                                       l_depreciate_flag := 'YES';
3803                                       If p_adjust_asset_to_zero = 'Y' Then
3804                                           l_depreciate_flag := 'NO';
3805                                       End If;
3806                                       FIXED_ASSET_ADD(p_api_version   => p_api_version,
3807                                                       p_init_msg_list => p_init_msg_list,
3808                                                       x_return_status => x_return_status,
3809                                                       x_msg_count     => x_msg_count,
3810                                                       x_msg_data      => x_msg_data,
3811                                                       p_talv_rec      => l_talv_rec,
3812                                                       --Bug# 3621663
3813         		                              --p_no_curr_conv  => OKL_API.G_TRUE,
3814                                                       --Bug# 3156924
3815                                                       p_trans_number  => l_trans_number,
3816                                                       p_calling_interface => l_calling_interface,
3817                                                       --Bug# :5261704
3818                                                       p_depreciate_flag   => l_depreciate_flag,
3819               --Bug# 6373605--SLA populate source
3820               p_sla_source_header_id    => l_tas_id,
3821               p_sla_source_header_table => 'OKL_TRX_ASSETS',
3822               p_sla_source_try_id       => l_try_id,
3823               --as no transaction exists for Multi-Gaap book using the parent
3824               --corporate book transaction as source
3825               p_sla_source_line_id      => l_talv_rec.id,
3826               p_sla_source_line_table   => 'OKL_TXL_ASSETS_B',
3827               p_sla_source_chr_id       => p_chrv_id,
3828               p_sla_source_kle_id       => p_fin_ast_line_id,
3829               p_sla_asset_chr_id        => p_sla_asset_chr_id,
3830               --Bug# 6373605--SLA populate sources
3831 
3832                                                       --Bug# 4028371
3833                                                       x_fa_trx_date       => l_fa_add_date_mg,
3834                                                       x_asset_hdr_rec => l_asset_hdr_rec);
3835                                       --dbms_output.put_line('After tax book "'||okl_tadv_rec.tax_book||'" :'||x_return_status);
3836                                       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3837                                           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3838                                       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
3839                                           RAISE OKL_API.G_EXCEPTION_ERROR;
3840                                       END IF;
3841                                   End If; --can mass copy into tax book
3842                               End If; --asset does not exist in tax book
3843                           End If; -- valid tax book for category
3844                       End If; --l_rep_pdt_book_done = 'N'
3845                   End If; --l_Multi_GAAP_YN = 'Y'
3846                   --Bug# : 11.5.9 Multi GAAP Book creation End
3847 
3848                   --tie back asset id into fa item record
3849                   l_cimv_rec.object1_id1 := to_char(l_asset_hdr_rec.asset_id);
3850                   l_cimv_rec.object1_id2 := '#';
3851                   Open lse_source_csr(l_fa_lty_code);
3852                   Fetch lse_source_csr into l_cimv_rec.jtot_object1_code;
3853                   If lse_source_csr%NOTFOUND Then
3854                       --dbms_output.put_line('Fatal error due to setup - lse source undefined');
3855                       OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
3856 				          p_msg_name     => G_JTF_UNDEF_LINE_SOURCE,
3857                                           p_token1       => G_LTY_CODE,
3858                                           p_token1_value => l_fa_lty_code
3859                                           );
3860                       RAISE OKL_API.G_EXCEPTION_ERROR;
3861                   End If;
3862                   Close lse_source_csr;
3863 
3864                   OKL_OKC_MIGRATION_PVT.update_contract_item
3865                                      (p_api_version   => p_api_version,
3866                                       p_init_msg_list => p_init_msg_list,
3867                                       x_return_status => x_return_status,
3868                                       x_msg_count     => x_msg_count,
3869                                       x_msg_data      => x_msg_data,
3870                                       p_cimv_rec      => l_cimv_rec,
3871                                       x_cimv_rec      => l_cimv_rec_out);
3872                   --dbms_output.put_line('After calling update item :'||x_return_status);
3873                   IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3874                       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3875                   ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
3876                       RAISE OKL_API.G_EXCEPTION_ERROR;
3877                   END IF;
3878                   x_cimv_rec := l_cimv_rec_out;
3879                   l_asst_count := l_asst_count+1;
3880 
3881                   -- if sales type lease then adjust the costs to zero
3882                   --dbms_output.put_line('Deal Type :'||l_deal_type);
3883                   --Bug: 11.5.9 - Now will check for 'LOAN' Book Class
3884                   --IF l_Deal_Type = G_ST_LEASE_BK_CLASS Then
3885                   IF l_Deal_Type = 'LOAN' Then
3886                       --call adjustment API to set the costs to zero in
3887                       --both types of books
3888                       -- 1. for corporate cook
3889                       Open  ast_bks_csr(p_asset_id    => l_asset_hdr_rec.asset_id,
3890                                         p_book_class  => G_FA_CORP_BOOK_CLASS_CODE);
3891                       --Bug#2657558 : selecting salvage_value
3892                       Fetch ast_bks_csr into
3893                                              l_book_type_code,
3894                                              l_asset_cost,
3895                                              l_salvage_value,
3896                                              --Bug# 2981308
3897                                              l_percent_sv;
3898                       If ast_bks_csr%NOTFOUND Then
3899                           --dbms_output.put_line('Book information not found for asset..');
3900                           --no need to raise error here
3901                           null;
3902                       Else
3903                           l_adjust_cost := (-1)* l_asset_cost;
3904                           --Bug # 2657558
3905                           l_adj_salvage_value := (-1)*l_salvage_value;
3906                           --Bug #2774529:
3907                           --Bug# 2981308 :
3908                           l_adj_percent_sv := (-1)*l_percent_sv;
3909                           IF nvl(l_adjust_cost,0) = 0 and nvl(l_adj_salvage_value,0) = 0 and nvl(l_adj_percent_sv,0) = 0 Then
3910                              Null;
3911                           Else
3912                               -- to_make asset cost zero
3913                               FIXED_ASSET_ADJUST_COST
3914                                      (p_api_version    => p_api_version,
3915                                       p_init_msg_list  => p_init_msg_list,
3916                                       x_return_status  => x_return_status,
3917                                       x_msg_count      => x_msg_count,
3918                                       x_msg_data       => x_msg_data,
3919 		                      p_chr_id         => p_chrv_id,
3920                                       p_asset_id       => l_asset_hdr_rec.asset_id,
3921                                       p_book_type_code => l_book_type_code,
3922                                       p_adjust_cost    => l_adjust_cost,
3923                                       --Bug # 2657558
3924                                       p_adj_salvage_value => l_adj_salvage_value,
3925                                       -- Bug Fix# 2925461
3926                                       --Bug# 2981308
3927                                       p_adj_percent_sv    => l_adj_percent_sv,
3928                                       p_trans_number      => l_trans_number,
3929                                       p_calling_interface => l_calling_interface,
3930                                       --Bug# 4028371:
3931                                       x_fa_trx_date       => l_fa_adj_date_corp,
3932                                       --Bug# 3156924
3933                                       p_adj_date          => l_talv_rec.in_service_date,
3934               --Bug# 6373605--SLA populate source
3935               p_sla_source_header_id    => l_tas_id,
3936               p_sla_source_header_table => 'OKL_TRX_ASSETS',
3937               p_sla_source_try_id       => l_try_id,
3938               p_sla_source_line_id      => l_talv_rec.id,
3939               p_sla_source_line_table   => 'OKL_TXL_ASSETS_B',
3940               p_sla_source_chr_id       => p_chrv_id,
3941               p_sla_source_kle_id       => p_fin_ast_line_id,
3942               p_sla_asset_chr_id        => p_sla_asset_chr_id,
3943               --Bug# 6373605--SLA populate sources
3944                                       x_asset_fin_rec  => l_asset_fin_rec);
3945                                --dbms_output.put_line('After fixed asset adjust Corp Bk for ST Lease :'||x_return_status);
3946                                IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3947                                    RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3948                                ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
3949                                    RAISE OKL_API.G_EXCEPTION_ERROR;
3950                                END IF;
3951                            End If;
3952                            --Bug #2774529:  End
3953                       End If;
3954                       Close ast_bks_csr;
3955 
3956                       --2. for tax books
3957                       Open  ast_bks_csr(p_asset_id    => l_asset_hdr_rec.asset_id,
3958                                         p_book_class  => G_FA_TAX_BOOK_CLASS_CODE);
3959                       Loop
3960                           --Bug# 2657558 : selecting salvage_value
3961                           Fetch ast_bks_csr into
3962                                                  l_book_type_code,
3963                                                  l_asset_cost,
3964                                                  l_salvage_value,
3965                                                  --Bug# 2981308
3966                                                  l_percent_sv;
3967                           Exit When ast_bks_csr%NOTFOUND;
3968 
3969                           --Bug# 11.5.9: Multi-GAAP Check for reporting book added
3970                           --cost has to be preserved in Tax Book
3971                           If l_book_type_code = nvl(l_rep_pdt_book,'NO_BOOK')  Then
3972                               Null;
3973                           Else
3974                               l_adjust_cost := (-1)* l_asset_cost;
3975                               --Bug # 2657558
3976                               l_adj_salvage_value := (-1)*l_salvage_value;
3977                               --Bug# 2774529:
3978                               --Bug# 3156924:
3979                               l_adj_percent_sv    := (-1)*l_percent_sv;
3980                               --Bug# 3156924
3981                               IF nvl(l_adjust_cost,0) = 0 and nvl(l_adj_salvage_value,0) = 0 and nvl(l_adj_percent_sv,0) = 0 Then
3982                                   Null;
3983                               Else
3984 
3985                                   --Bug# 6373605
3986                                   Open l_txd_for_book_csr (p_book_type_code =>
3987 l_book_type_code,
3988                                                            p_tal_id         =>
3989 l_talv_rec.id);
3990                                   Fetch l_txd_for_book_csr into
3991 l_txd_for_book_rec;
3992                                   If l_txd_for_book_csr%NOTFOUND then
3993                                      l_sla_source_line_table :=
3994 'OKL_TXL_ASSETS_B';
3995                                      l_sla_source_line_id := l_talv_rec.id;
3996                                   Else
3997                                      l_sla_source_line_table :=
3998 'OKL_TXD_ASSETS_B';
3999                                      l_sla_source_line_id :=
4000 l_txd_for_book_rec.id;
4001                                   End If;
4002                                   Close l_txd_for_book_csr;
4003                                   --Bug # 6373605 end;
4004                                   -- to_make asset cost zero
4005                                   FIXED_ASSET_ADJUST_COST
4006                                      (p_api_version    => p_api_version,
4007                                       p_init_msg_list  => p_init_msg_list,
4008                                       x_return_status  => x_return_status,
4009                                       x_msg_count      => x_msg_count,
4010                                       x_msg_data       => x_msg_data,
4011 				                      p_chr_id         => p_chrv_id,
4012                                       p_asset_id       => l_asset_hdr_rec.asset_id,
4013                                       p_book_type_code => l_book_type_code,
4014                                       p_adjust_cost    => l_adjust_cost,
4015                                       --Bug # 2657558
4016                                       p_adj_salvage_value => l_adj_salvage_value,
4017                                      --Bug# 2981308
4018                                       p_adj_percent_sv    => l_adj_percent_sv,
4019                                       --Bug# 3156924
4020                                       p_trans_number      => l_trans_number,
4021                                       p_calling_interface => l_calling_interface,
4022                                       --Bug# 4028371:
4023                                       x_fa_trx_date       => l_fa_adj_date_tax,
4024                                       -- Bug Fix# 2925461
4025                                       p_adj_date          => l_talv_rec.in_service_date,
4026               --Bug# 6373605--SLA populate source
4027               p_sla_source_header_id    => l_tas_id,
4028               p_sla_source_header_table => 'OKL_TRX_ASSETS',
4029               p_sla_source_try_id       => l_try_id,
4030               p_sla_source_line_id      => l_sla_source_line_id,
4031               p_sla_source_line_table   => l_sla_source_line_table,
4032               p_sla_source_chr_id       => p_chrv_id,
4033               p_sla_source_kle_id       => p_fin_ast_line_id,
4034               p_sla_asset_chr_id        => p_sla_asset_chr_id,
4035               --Bug# 6373605--SLA populate sources
4036                                       x_asset_fin_rec     => l_asset_fin_rec);
4037                                   --dbms_output.put_line('After fixed asset adjust for Tax bk ST Lease :'||x_return_status);
4038                                   IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4039                                       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4040                                   ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4041                                       RAISE OKL_API.G_EXCEPTION_ERROR;
4042                                   END IF;
4043                                End If;
4044                                --Bug# 2774529: End
4045                           End If;
4046                       End Loop; -- for tax books
4047                       Close ast_bks_csr;
4048                       --dbms_output.put_line('Deal Type Leasest :'||l_deal_type);
4049 
4050                   --Bug # : 11.i.9 enhancements - DF an ST lease treatment as to be same
4051                   --Elsif l_Deal_Type = G_DF_LEASE_BK_CLASS Then
4052                   ElsIf l_Deal_Type in  (G_DF_LEASE_BK_CLASS, G_ST_LEASE_BK_CLASS) Then
4053                       --Get Tax Owner
4054                       --dbms_output.put_line('Deal Type Leasedf :'||l_deal_type);
4055 
4056                       -- Bug# 3838403
4057                       -- Replaced call to OKL_RULE_APIS_PUB.Get_rule_Segment_Value
4058                       -- with cursor town_rul_csr
4059                       --Bug# 5261704: Moved to the top of this procedure
4060                       /*--------------------------------------------
4061                       Open town_rul_csr(pchrid => p_chrv_id);
4062                       Fetch town_rul_csr into l_town_rul, l_town_rul_id;
4063                       Close town_rul_csr;
4064 
4065                       l_name := rtrim(ltrim(l_town_rul,' '),' ');
4066                       ---------------------------------------------*/
4067 
4068                       /*OKL_RULE_APIS_PUB.Get_rule_Segment_Value
4069                                (p_api_version => p_api_version,
4070                                 p_init_msg_list   => p_init_msg_list,
4071                                 x_return_status   => x_return_status,
4072                                 x_msg_count       => x_msg_count,
4073                                 x_msg_data        => x_msg_data,
4074                                 p_chr_id          => p_chrv_id,
4075                                 p_cle_id          => null,
4076                                 p_rgd_code        => l_rgd_code,
4077                                 p_rdf_code        => l_rdf_code,
4078                                 --Bug#2525946
4079                                 --p_rdf_name        => l_rdf_name,
4080                                 p_segment_number  => l_segment_number,
4081                                 x_id1             => l_id1,
4082                                 x_id2             => l_id2,
4083                                 x_name            => l_name,
4084                                 x_description     => l_description,
4085                                 x_status          => l_status,
4086                                 x_start_date      => l_start_date,
4087                                 x_end_date        => l_end_date,
4088                                 x_org_id          => l_org_id,
4089                                 x_inv_org_id      => l_inv_org_id,
4090                                 x_book_type_code  => l_book_type_code,
4091                                 x_select          => l_select);
4092                          --dbms_output.put_line('TAX Owner :'||l_name);
4093                          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4094                              RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4095                          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4096                              RAISE OKL_API.G_EXCEPTION_ERROR;
4097                          END IF;*/
4098 
4099                          If upper(l_tax_owner) = 'LESSOR' Then
4100                              --call the adjustment api to set the cost to zero in corp book only
4101                              Open  ast_bks_csr(p_asset_id    => l_asset_hdr_rec.asset_id,
4102                                                p_book_class  => G_FA_CORP_BOOK_CLASS_CODE);
4103                              --Bug# 2657558 : selecting salvage_value
4104                              Fetch ast_bks_csr into
4105                                                l_book_type_code,
4106                                                l_asset_cost,
4107                                                l_salvage_value,
4108                                                --Bug# 3156924
4109                                                l_percent_sv;
4110                              If ast_bks_csr%NOTFOUND Then
4111                                  --dbms_output.put_line('Book information not found for asset..');
4112                                  -- no need to raise error
4113                                  null;
4114                              Else
4115                                  l_adjust_cost := (-1)* l_asset_cost;
4116                                  --Bug # 2657558
4117                                  l_adj_salvage_value := (-1)*l_salvage_value;
4118                                  --Bug# 2981308
4119                                  l_adj_percent_sv := (-1)*l_percent_sv;
4120                                  IF nvl(l_adjust_cost,0) = 0 and nvl(l_adj_salvage_value,0) = 0 and nvl(l_adj_percent_sv,0) = 0 Then
4121                                      Null;
4122                                  Else
4123                                      -- to_make asset cost zero
4124                                      FIXED_ASSET_ADJUST_COST
4125                                              (p_api_version    => p_api_version,
4126                                               p_init_msg_list  => p_init_msg_list,
4127                                               x_return_status  => x_return_status,
4128                                               x_msg_count      => x_msg_count,
4129                                               x_msg_data       => x_msg_data,
4130                                               p_chr_id         => p_chrv_id,
4131                                               p_asset_id       => l_asset_hdr_rec.asset_id,
4132                                               p_book_type_code => l_book_type_code,
4133                                               p_adjust_cost    => l_adjust_cost,
4134                                               --Bug 2657558
4135                                               p_adj_salvage_value => l_adj_salvage_value,
4136                                               --Bug# 2981308
4137                                               p_adj_percent_sv    => l_adj_percent_sv,
4138                                               --Bug# 3156924
4139                                               p_trans_number      => l_trans_number,
4140                                               p_calling_interface => l_calling_interface,
4141                                               --Bug# 4028371:
4142                                               x_fa_trx_date       => l_fa_adj_date_corp,
4143                                               -- Bug Fix# 2925461
4144                                               p_adj_date       => l_talv_rec.in_service_date,
4145               --Bug# 6373605--SLA populate source
4146               p_sla_source_header_id    => l_tas_id,
4147               p_sla_source_header_table => 'OKL_TRX_ASSETS',
4148               p_sla_source_try_id       => l_try_id,
4149               p_sla_source_line_id      => l_talv_rec.id,
4150               p_sla_source_line_table   => 'OKL_TXL_ASSETS_B',
4151               p_sla_source_chr_id       => p_chrv_id,
4152               p_sla_source_kle_id       => p_fin_ast_line_id,
4153               p_sla_asset_chr_id        => p_sla_asset_chr_id,
4154               --Bug# 6373605--SLA populate sources
4155                                               x_asset_fin_rec  => l_asset_fin_rec);
4156                                        --dbms_output.put_line('After fixed asset adjust for Direct Fin Lease :'||x_return_status);
4157                                       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4158                                          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4159                                       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4160                                          RAISE OKL_API.G_EXCEPTION_ERROR;
4161                                       END IF;
4162                                   End If;
4163                                   --Bug# End
4164                              End If;
4165                              Close ast_bks_csr;
4166                          Elsif upper(l_tax_owner) = 'LESSEE' Then
4167                              --call the adjustment api to set the cost to zero in corp and tax book
4168                              -- 1. for corporate cook
4169                              Open  ast_bks_csr(p_asset_id    => l_asset_hdr_rec.asset_id,
4170                                                p_book_class  => G_FA_CORP_BOOK_CLASS_CODE);
4171                              --Bug# 2657558 : selecting salvage_value
4172                              Fetch ast_bks_csr into
4173                                                  l_book_type_code,
4174                                                  l_asset_cost,
4175                                                  l_salvage_value,
4176                                                  --Bug# 2981308
4177                                                  l_percent_sv;
4178                              If ast_bks_csr%NOTFOUND Then
4179                                  --dbms_output.put_line('Book information not found for asset..');
4180                                  --no need to raise  error
4181                                  null;
4182                              Else
4183                                  l_adjust_cost := (-1)* l_asset_cost;
4184                                  --Bug # 2657558
4185                                  l_adj_salvage_value := (-1)*l_salvage_value;
4186                                  --Bug# 2981308
4187                                  l_adj_percent_sv := (-1)*l_percent_sv;
4188                                  --Bug 2774529#
4189                                  IF nvl(l_adjust_cost,0) = 0 and nvl(l_adj_salvage_value,0) = 0 and nvl(l_adj_percent_sv,0) = 0 Then
4190                                      Null;
4191                                  Else
4192                                  -- to_make asset cost zero
4193                                      FIXED_ASSET_ADJUST_COST
4194                                              (p_api_version    => p_api_version,
4195                                               p_init_msg_list  => p_init_msg_list,
4196                                               x_return_status  => x_return_status,
4197                                               x_msg_count      => x_msg_count,
4198                                               x_msg_data       => x_msg_data,
4199                	                              p_chr_id         => p_chrv_id,
4200                                               p_asset_id       => l_asset_hdr_rec.asset_id,
4201                                               p_book_type_code => l_book_type_code,
4202                                               p_adjust_cost    => l_adjust_cost,
4203                                               --Bug # 2657558
4204                                               p_adj_salvage_value => l_adj_salvage_value,
4205                                               --Bug# 2981308
4206                                               p_adj_percent_sv    => l_adj_percent_sv,
4207                                               --Bug# 3156924
4208                                               p_trans_number      => l_trans_number,
4209                                               p_calling_interface => l_calling_interface,
4210                                               --Bug# 4028371
4211                                               x_fa_trx_date       => l_fa_adj_date_corp,
4212                                               -- Bug Fix# 2925461
4213                                               p_adj_date       => l_talv_rec.in_service_date,
4214              --Bug# 6373605--SLA populate source
4215               p_sla_source_header_id    => l_tas_id,
4216               p_sla_source_header_table => 'OKL_TRX_ASSETS',
4217               p_sla_source_try_id       => l_try_id,
4218               p_sla_source_line_id      => l_talv_rec.id,
4219               p_sla_source_line_table   => 'OKL_TXL_ASSETS_B',
4220               p_sla_source_chr_id       => p_chrv_id,
4221               p_sla_source_kle_id       => p_fin_ast_line_id,
4222               p_sla_asset_chr_id        => p_sla_asset_chr_id,
4223               --Bug# 6373605--SLA populate sources
4224                                               x_asset_fin_rec  => l_asset_fin_rec);
4225                                      --dbms_output.put_line('After fixed asset adjust Corp Bk for DF Lease :'||x_return_status);
4226                                      IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4227                                          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4228                                      ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4229                                          RAISE OKL_API.G_EXCEPTION_ERROR;
4230                                      END IF;
4231                                  End If;
4232                                  --Bug#2774529 End
4233                              End If;
4234                              Close ast_bks_csr;
4235 
4236                              --2. for tax books
4237                              Open  ast_bks_csr(p_asset_id    => l_asset_hdr_rec.asset_id,
4238                                                p_book_class  => G_FA_TAX_BOOK_CLASS_CODE);
4239                              Loop
4240                                  --Bug# 2657558 : selecting salvage_value
4241                                  Fetch ast_bks_csr into
4242                                                      l_book_type_code,
4243                                                      l_asset_cost,
4244                                                      l_salvage_value,
4245                                                      --Bug 3156924
4246                                                      l_percent_sv;
4247                                  Exit When ast_bks_csr%NOTFOUND;
4248                                  --Bug : 11.i.9 enhanceent
4249                                  --check if tax book is a reporting product book
4250                                  -- if t is do not update te cost to zero
4251                                  If nvl(l_rep_pdt_book,'NO_BOOK') = l_book_type_code Then
4252                                      Null;
4253                                  Else
4254                                      l_adjust_cost := (-1)* l_asset_cost;
4255                                      --Bug # 2657558
4256                                      l_adj_salvage_value := (-1)*l_salvage_value;
4257                                      --Bug# 2774529
4258                                      --Bug# 2981308
4259                                      l_adj_percent_sv := (-1) * l_percent_sv;
4260                                      IF nvl(l_adjust_cost,0) = 0 and nvl(l_adj_salvage_value,0) = 0 and nvl(l_adj_percent_sv,0) = 0 Then
4261                                          Null;
4262                                      Else
4263                                          --Bug# 6373605
4264                                          Open l_txd_for_book_csr (p_book_type_code =>
4265 l_book_type_code,
4266                                                                   p_tal_id         =>
4267 l_talv_rec.id);
4268                                          Fetch l_txd_for_book_csr into
4269 l_txd_for_book_rec;
4270                                          If l_txd_for_book_csr%NOTFOUND then
4271                                             l_sla_source_line_table :=
4272 'OKL_TXL_ASSETS_B';
4273                                             l_sla_source_line_id := l_talv_rec.id;
4274                                          Else
4275                                             l_sla_source_line_table :=
4276 'OKL_TXD_ASSETS_B';
4277                                             l_sla_source_line_id :=
4278 l_txd_for_book_rec.id;
4279                                          End If;
4280                                          Close l_txd_for_book_csr;
4281                                          --Bug # 6373605 end;
4282 
4283                                          FIXED_ASSET_ADJUST_COST
4284                                              (p_api_version    => p_api_version,
4285                                               p_init_msg_list  => p_init_msg_list,
4286                                               x_return_status  => x_return_status,
4287                                               x_msg_count      => x_msg_count,
4288                                               x_msg_data       => x_msg_data,
4289             	                              p_chr_id         => p_chrv_id,
4290                                               p_asset_id       => l_asset_hdr_rec.asset_id,
4291                                               p_book_type_code => l_book_type_code,
4292                                               p_adjust_cost    => l_adjust_cost,
4293                                               --Bug # 2657558
4294                                               p_adj_salvage_value => l_adj_salvage_value,
4295                                               --Bug# 2981308
4296                                               p_adj_percent_sv    => l_adj_percent_sv,
4297                                               --Bug# 3156924
4298                                               p_trans_number      => l_trans_number,
4299                                               p_calling_interface => l_calling_interface,
4300                                               --Bug# 4028371:
4301                                               x_fa_trx_date       => l_fa_adj_date_tax,
4302                                               -- Bug Fix# 2925461
4303                                               p_adj_date       => l_talv_rec.in_service_date,
4304                   --Bug# 6373605--SLA populate source
4305                   p_sla_source_header_id    => l_tas_id,
4306                   p_sla_source_header_table => 'OKL_TRX_ASSETS',
4307                   p_sla_source_try_id       => l_try_id,
4308                   p_sla_source_line_id      => l_sla_source_line_id,
4309                   p_sla_source_line_table   => l_sla_source_line_table,
4310                   p_sla_source_chr_id       => p_chrv_id,
4311                   p_sla_source_kle_id       => p_fin_ast_line_id,
4312                   p_sla_asset_chr_id        => p_sla_asset_chr_id,
4313                   --Bug# 6373605--SLA populate sources
4314                                               x_asset_fin_rec  => l_asset_fin_rec);
4315                                          --dbms_output.put_line('After fixed asset adjust for Tax bk DF Lease :'||x_return_status);
4316                                          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4317                                              RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4318                                          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4319                                              RAISE OKL_API.G_EXCEPTION_ERROR;
4320                                          END IF;
4321                                       End If;
4322                                       --Bug# 2774529 End
4323                                  End If;
4324                              End Loop; -- for tax books
4325                              Close ast_bks_csr;
4326                          End if; -- if LESSEE
4327                      Else
4328                          --dbms_output.put_line('in else for operating lease');
4329                          null;
4330                      End If; --if deal_type
4331 
4332                      --Bug# 3574232 start
4333                      -- If the reporting product is DF/ST lease, the asset
4334                      -- should be created and written to zero in the reporting
4335                      -- book.
4336                      If (l_Multi_GAAP_YN = 'Y' and p_adjust_asset_to_zero = 'Y') Then
4337 
4338                        Open okx_ast_csr(p_asset_id  => l_asset_hdr_rec.asset_id,
4339                                         p_book_type_code => l_rep_pdt_book);
4340                        Fetch okx_ast_csr into okx_ast_rec;
4341                        If okx_ast_csr%NotFound Then
4342                          Close okx_ast_csr;
4343                        Else
4344                          Close okx_ast_csr;
4345                          l_adjust_cost := (-1)* okx_ast_rec.cost;
4346                          l_adj_salvage_value := (-1)*okx_ast_rec.salvage_value;
4347                          l_adj_percent_sv := (-1)*okx_ast_rec.percent_salvage_value;
4348 
4349                          IF nvl(l_adjust_cost,0) = 0 and nvl(l_adj_salvage_value,0) = 0
4350                             and nvl(l_adj_percent_sv,0) = 0 Then
4351                             Null;
4352                          ELSE
4353                             --Bug# 6373605
4354                             Open l_txd_for_book_csr (p_book_type_code =>
4355 l_rep_pdt_book,
4356                                                      p_tal_id         =>
4357 l_talv_rec.id);
4358                             Fetch l_txd_for_book_csr into
4359 l_txd_for_book_rec;
4360                             If l_txd_for_book_csr%NOTFOUND then
4361                                l_sla_source_line_table :=
4362 'OKL_TXL_ASSETS_B';
4363                                l_sla_source_line_id := l_talv_rec.id;
4364                             Else
4365                                l_sla_source_line_table :=
4366 'OKL_TXD_ASSETS_B';
4367                                l_sla_source_line_id :=
4368 l_txd_for_book_rec.id;
4369                             End If;
4370                             Close l_txd_for_book_csr;
4371                             --Bug # 6373605 end;
4372 
4373                             FIXED_ASSET_ADJUST_COST
4374                             (p_api_version       => p_api_version,
4375                              p_init_msg_list     => p_init_msg_list,
4376                              x_return_status     => x_return_status,
4377                              x_msg_count         => x_msg_count,
4378                              x_msg_data          => x_msg_data,
4379                              p_chr_id            => p_chrv_id,
4380                              p_asset_id          => l_asset_hdr_rec.asset_id,
4381                              p_book_type_code    => l_rep_pdt_book,
4382                              p_adjust_cost       => l_adjust_cost,
4383                              p_adj_salvage_value => l_adj_salvage_value,
4384                              p_adj_percent_sv    => l_adj_percent_sv,
4385                              p_trans_number      => l_trans_number,
4386                              p_calling_interface => l_calling_interface,
4387                              --Bug# 4028371 :
4388                              x_fa_trx_date       => l_fa_adj_date_mg,
4389                              p_adj_date          => okx_ast_rec.in_service_date,
4390               --Bug# 6373605--SLA populate source
4391               p_sla_source_header_id    => l_tas_id,
4392               p_sla_source_header_table => 'OKL_TRX_ASSETS',
4393               p_sla_source_try_id       => l_try_id,
4394               p_sla_source_line_id      => l_sla_source_line_id,
4395               p_sla_source_line_table   => l_sla_source_line_table,
4396               p_sla_source_chr_id       => p_chrv_id,
4397               p_sla_source_kle_id       => p_fin_ast_line_id,
4398               p_sla_asset_chr_id        => p_sla_asset_chr_id,
4399               --Bug# 6373605--SLA populate sources
4400                              x_asset_fin_rec     => l_asset_fin_rec);
4401 
4402                              IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4403                                RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4404                              ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4405                                RAISE OKL_API.G_EXCEPTION_ERROR;
4406                              END IF;
4407                          END IF;
4408                        End if;
4409                      End if;
4410                      --Bug# 3574232 end
4411 
4412                      If ( (l_Multi_GAAP_YN = 'Y') OR
4413 		          (G_CHR_REPORT_PDT_ID <> -1 ) ) Then
4414 
4415                          l_chrv_rec.id := p_chrv_id;
4416                          l_khrv_rec.id := p_chrv_id;
4417                          l_khrv_rec.multi_gaap_yn := 'Y';
4418 
4419                          okl_contract_pub.update_contract_header(
4420                                              p_api_version   => p_api_version,
4421                                              p_init_msg_list => p_init_msg_list,
4422                                              x_return_status => x_return_status,
4423                                              x_msg_count     => x_msg_count,
4424                                              x_msg_data      => x_msg_data,
4425                                              p_chrv_rec      => l_chrv_rec,
4426                                              p_khrv_rec      => l_khrv_rec,
4427 				             p_edit_mode     => 'N',
4428                                              x_chrv_rec      => x_chrv_rec,
4429                                              x_khrv_rec      => x_khrv_rec);
4430 
4431                          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4432                              RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4433                          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4434                              RAISE OKL_API.G_EXCEPTION_ERROR;
4435                          END IF;
4436 
4437                      End If;
4438 
4439 
4440                      --update the trx type for this record to processed
4441                      --dbms_output.put_line('transaction id to update '||l_talv_rec.tas_id);
4442                      update_trx_status(p_api_version   => p_api_version,
4443                                        p_init_msg_list => p_init_msg_list,
4444 	                                   x_return_status => x_return_status,
4445                                        x_msg_count     => x_msg_count,
4446                                        x_msg_data      => x_msg_data,
4447                                        p_tas_id        => l_talv_rec.tas_id,
4448                                        p_tsu_code      => G_TSU_CODE_PROCESSED);
4449 
4450                       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4451                           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4452                       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4453                           RAISE OKL_API.G_EXCEPTION_ERROR;
4454                       END IF;
4455 
4456                       --Bug# 4028371
4457                       --update the fa trx date on transaction line
4458                       l_talv_date_rec.id     := l_talv_rec.id;
4459                       l_talv_date_rec.fa_trx_date := l_fa_add_date_corp;
4460 
4461                       okl_tal_pvt.update_row
4462                                         (p_api_version   => p_api_version,
4463                                          p_init_msg_list => p_init_msg_list,
4464                                          x_return_status => x_return_status,
4465                                          x_msg_count     => x_msg_count,
4466                                          x_msg_data      => x_msg_data,
4467                                          p_talv_rec      => l_talv_date_rec,
4468                                          x_talv_rec      => lx_talv_date_rec);
4469                       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4470                           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4471                       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4472                           RAISE OKL_API.G_EXCEPTION_ERROR;
4473                       END IF;
4474                       --End Bug# 4028371
4475                   End If;--if asset transaction records found
4476                End If; --if unplugged okc_k_items records for fa line
4477     End If; --fa line is found
4478     OKL_API.END_ACTIVITY (x_msg_count,x_msg_data );
4479     EXCEPTION
4480     WHEN OKL_API.G_EXCEPTION_ERROR THEN
4481     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4482                                l_api_name,
4483                                G_PKG_NAME,
4484                                'OKL_API.G_RET_STS_ERROR',
4485                                x_msg_count,
4486                                x_msg_data,
4487                                '_PVT');
4488     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4489     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4490                               l_api_name,
4491                               G_PKG_NAME,
4492                               'OKL_API.G_RET_STS_UNEXP_ERROR',
4493                               x_msg_count,
4494                               x_msg_data,
4495                               '_PVT');
4496     WHEN OTHERS THEN
4497     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4498                               l_api_name,
4499                               G_PKG_NAME,
4500                               'OTHERS',
4501                               x_msg_count,
4502                               x_msg_data,
4503                               '_PVT');
4504 End Process_FA_Line;
4505 --------------------------------------------------------------------------------
4506 --Start of comments
4507 --Procedure Name : Get_Pdt_Params (local)
4508 --Description    : 11.5.9 Enhancement Multi-GAAP - Calls product api to fetch
4509 --                 product specific parameters
4510 --History        : 27-Nov-2002  ashish.singh Created
4511 --Notes          : local procedure
4512 --                 IN Parameters-
4513 --                               p_pdt_id - product id
4514 --                               p_pdt_date - product effective date
4515 --                 OUT Parameters -
4516 --                               x_rep_pdt_id    - Reporting product id
4517 --                               x_tax_owner     - tax owner
4518 --                               x_rep_deal_type - Reporting product deal type
4519 --End of comments
4520 --------------------------------------------------------------------------------
4521 Procedure Get_Pdt_Params (p_api_version   IN  NUMBER,
4522                           p_init_msg_list IN  VARCHAR2,
4523                           x_return_status OUT NOCOPY VARCHAR2,
4524                           x_msg_count     OUT NOCOPY NUMBER,
4525                           x_msg_data      OUT NOCOPY VARCHAR2,
4526                           p_pdt_id        IN  NUMBER,
4527                           p_pdt_date      IN  DATE,
4528                           x_rep_pdt_id    OUT NOCOPY NUMBER,
4529                           x_tax_owner     OUT NOCOPY VARCHAR2,
4530                           x_rep_deal_type OUT NOCOPY VARCHAR2) is
4531 
4532 l_pdtv_rec                okl_setupproducts_pub.pdtv_rec_type;
4533 l_pdt_parameter_rec       okl_setupproducts_pub.pdt_parameters_rec_type;
4534 l_rep_pdt_parameter_rec   okl_setupproducts_pub.pdt_parameters_rec_type;
4535 l_pdt_date                DATE;
4536 l_no_data_found           BOOLEAN;
4537 l_error_condition         Exception;
4538 l_return_status           VARCHAR2(1) default OKL_API.G_RET_STS_SUCCESS;
4539 Begin
4540      l_pdtv_rec.id    := p_pdt_id;
4541      l_pdt_date       := p_pdt_date;
4542      l_no_data_found  := TRUE;
4543      x_return_status  := OKL_API.G_RET_STS_SUCCESS;
4544 
4545      okl_setupproducts_pub.Getpdt_parameters(p_api_version      => p_api_version,
4546                                              p_init_msg_list     => p_init_msg_list,
4547                       			             x_return_status     => l_return_status,
4548             			                     x_no_data_found     => l_no_data_found,
4549                               		         x_msg_count         => x_msg_count,
4550                               		         x_msg_data          => x_msg_data,
4551 					                         p_pdtv_rec          => l_pdtv_rec,
4552 					                         p_product_date      => l_pdt_date,
4553 					                         p_pdt_parameter_rec => l_pdt_parameter_rec);
4554 
4555      IF l_return_status <> OKL_API.G_RET_STS_SUCCESS Then
4556          x_rep_pdt_id    := Null;
4557          x_tax_owner     := Null;
4558      --Bug# 4775166
4559      Elsif l_pdt_parameter_rec.reporting_pdt_id IS NULL Then
4560          x_rep_pdt_id    := Null;
4561          x_tax_owner     := l_pdt_parameter_rec.tax_owner;
4562          x_rep_deal_type := Null;
4563      Else
4564          x_rep_pdt_id    := l_pdt_parameter_rec.reporting_pdt_id;
4565          x_tax_owner     := l_pdt_parameter_rec.tax_owner;
4566          --get reporting product param values
4567          l_no_data_found := TRUE;
4568          l_pdtv_rec.id := x_rep_pdt_id;
4569          okl_setupproducts_pub.Getpdt_parameters(p_api_version      => p_api_version,
4570                                                  p_init_msg_list     => p_init_msg_list,
4571                                                  x_return_status     => l_return_status,
4572                                                  x_no_data_found     => l_no_data_found,
4573                                  		         x_msg_count         => x_msg_count,
4574                                  		         x_msg_data          => x_msg_data,
4575     					                         p_pdtv_rec          => l_pdtv_rec,
4576     					                         p_product_date      => l_pdt_date,
4577     					                         p_pdt_parameter_rec => l_rep_pdt_parameter_rec);
4578 
4579           IF l_return_status <> OKL_API.G_RET_STS_SUCCESS Then
4580              x_rep_deal_type := NULL;
4581           Else
4582              x_rep_deal_type :=  l_rep_pdt_parameter_rec.deal_type;
4583           End If;
4584      End If;
4585 
4586      Exception
4587      When l_error_condition Then
4588           Null;
4589      When Others Then
4590           x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
4591 End Get_Pdt_Params;
4592 --------------------------------------------------------------------------------
4593 --Start of Comments
4594 --Procedure Name : ACTIVATE_ASSET
4595 --Description    : Selects the 'CFA' - Create Asset Transaction from a ready to be
4596 --                 Booked Contract which has passed Approval
4597 --                 and created assets in FA
4598 --
4599 --History        :
4600 --                 03-Nov-2001  ashish.singh Created
4601 --                 27-Nov-2002  ashish.singh 11.5.9 enhacements
4602 -- Notes         :
4603 --      IN Parameters -
4604 --                     p_chr_id    - contract id to be activated
4605 --                     p_call_mode - 'BOOK' for booking
4606 --                                   'REBOOK' for rebooking
4607 --                                   'RELEASE' for release
4608 --                    x_cimv_tbl   - OKC line source table showing
4609 --                                   fa links in ID1 , ID2 columns
4610 --End of Comments
4611 --------------------------------------------------------------------------------
4612 PROCEDURE ACTIVATE_ASSET(p_api_version   IN  NUMBER,
4613                          p_init_msg_list IN  VARCHAR2,
4614                          x_return_status OUT NOCOPY VARCHAR2,
4615                          x_msg_count     OUT NOCOPY NUMBER,
4616                          x_msg_data      OUT NOCOPY VARCHAR2,
4617                          p_chrv_id       IN  NUMBER,
4618                          p_call_mode     IN  VARCHAR2,
4619                          x_cimv_tbl      OUT NOCOPY cimv_tbl_type) IS
4620 
4621 l_return_status        VARCHAR2(1)  default OKL_API.G_RET_STS_SUCCESS;
4622 l_api_name             CONSTANT varchar2(30) := 'ACTIVATE_ASSET';
4623 l_api_version          CONSTANT NUMBER := 1.0;
4624 l_fa_lty_code          Varchar2(30) := G_FA_LINE_LTY_CODE;
4625 l_trx_type             Varchar2(30) := G_TRX_LINE_TYPE_BOOK;
4626 
4627 l_hdr_rec              l_hdr_csr%ROWTYPE;
4628 
4629 --cursor to verify the subclass code
4630 --contract has to be a 'LEASE' subclass contract to qualify for FA_ADDITION
4631 Cursor chk_subclass_csr(p_chrv_id IN NUMBER) is
4632 SELECT chr.SCS_CODE,
4633        chr.STS_CODE,
4634        khr.DEAL_TYPE,
4635 --11.5.9(Multi GAAP)
4636        khr.PDT_ID,
4637        chr.START_DATE
4638 From   OKC_K_HEADERS_B chr,
4639        OKL_K_HEADERS   khr
4640 WHERE  khr.id = chr.id
4641 AND    chr.ID = P_CHRV_ID;
4642 
4643 --cursor for fetching passed fixed asset lines
4644 --within the contract
4645 --Bug# 4899328
4646 Cursor fa_line_csr(p_chrv_id IN Number) is
4647 SELECT cle.id,
4648        cle.cle_id
4649 from   okc_k_lines_b cle,
4650        okc_statuses_b sts
4651 where  cle.lse_id = G_FA_LINE_LTY_ID
4652 and    cle.dnz_chr_id = p_chrv_id
4653 and    cle.sts_code = sts.code
4654 and    sts.ste_code not in ('HOLD','EXPIRED','TERMINATED','CANCELLED');
4655 
4656 l_scs_code          Varchar2(30);
4657 l_sts_code          Varchar2(30);
4658 l_deal_type         Varchar2(30);
4659 l_cimv_rec          cimv_rec_type;
4660 l_fa_line_id        Number;
4661 l_fin_ast_line_id   Number;
4662 l_asst_count        Number default 0;
4663 --11.5.9 (Multi GAAP)
4664 l_pdt_id            Number;
4665 l_start_date        Date;
4666 l_rep_pdt_id        Number;
4667 l_tax_owner         Varchar2(150);
4668 l_rep_deal_type     Varchar2(150);
4669 l_Multi_GAAP_YN     Varchar2(1);
4670 l_rep_pdt_book      OKX_AST_BKS_V.Book_Type_Code%Type;
4671 --cursor to get tax owner rule
4672 Cursor town_rul_csr (pchrid number) is
4673 Select rule_information1 tax_owner,
4674        id
4675 From   okc_rules_b rul
4676 where  rul.dnz_chr_id = pchrid
4677 and    rul.rule_information_category = 'LATOWN'
4678 and    nvl(rul.STD_TEMPLATE_YN,'N')  = 'N';
4679 
4680 l_town_rul      okc_rules_b.rule_information1%TYPE;
4681 l_town_rul_id   okc_rules_b.id%TYPE;
4682 
4683 --Bug# 3156924
4684 l_trans_number       okl_trx_assets.trans_number%TYPE := Null;
4685 l_calling_interface  varchar2(30) :=  'OKLRACAB:Booking';
4686 
4687 --Bug# 3574232
4688 l_adjust_asset_to_zero varchar2(30);
4689 
4690 TYPE fa_line_id_tbl is table of okc_k_lines_b.id%TYPE INDEX BY BINARY_INTEGER;
4691 l_fa_line_id_tbl    fa_line_id_tbl;
4692 
4693 TYPE fin_ast_line_id_tbl is table of okc_k_lines_b.cle_id%TYPE INDEX BY BINARY_INTEGER;
4694 l_fin_ast_line_id_tbl fin_ast_line_id_tbl;
4695 
4696 TYPE fin_asst_rec_type IS RECORD (
4697      fa_line_id          OKC_K_LINES_B.id%TYPE    ,
4698      fin_ast_line_id     OKC_K_LINES_B.cle_id %TYPE);
4699 
4700 TYPE fin_asst_tbl_type IS TABLE OF fin_asst_rec_type  INDEX BY BINARY_INTEGER;
4701 l_fin_asst_tbl      fin_asst_tbl_type;
4702 l_counter NUMBER;
4703 l_loop_index NUMBER;
4704 
4705 
4706 
4707 BEGIN
4708 
4709     x_return_status := OKL_API.G_RET_STS_SUCCESS;
4710     -- Call start_activity to create savepoint, check compatibility
4711     -- and initialize message list
4712     x_return_status := OKL_API.START_ACTIVITY (
4713                                l_api_name
4714                                ,p_init_msg_list
4715                                ,'_PVT'
4716                                ,x_return_status);
4717     -- Check if activity started successfully
4718     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4719        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4720     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4721        RAISE OKL_API.G_EXCEPTION_ERROR;
4722     END IF;
4723 
4724     Open chk_subclass_csr(p_chrv_id);
4725         Fetch chk_subclass_csr into l_scs_code, l_sts_code, l_deal_type, l_pdt_id, l_start_date;
4726         If chk_subclass_csr%NOTFOUND Then
4727            --dbms_output.put_line('Contract Not Found ....!');
4728            OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
4729 				               p_msg_name     => G_CONTRACT_NOT_FOUND,
4730 				               p_token1       => G_CONTRACT_ID,
4731 				               p_token1_value => to_char(p_chrv_id)
4732 				               );
4733            RAISE OKL_API.G_EXCEPTION_ERROR;
4734            --Handle error appropriately
4735         ElsIf upper(l_sts_code) <> G_APPROVED_STS_CODE Then
4736            --dbms_output.put_line('Contract has not been approved...!');
4737            OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
4738 				               p_msg_name     => G_CONTRACT_NOT_APPROVED
4739 				               );
4740            RAISE OKL_API.G_EXCEPTION_ERROR;
4741            --Raise appropraite error message
4742         ElsIf l_scs_code <> G_LEASE_SCS_CODE and upper(l_sts_code) = G_APPROVED_STS_CODE Then
4743              --dbms_output.put_line('Contract is not a lease contract...!');
4744              OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
4745 				                 p_msg_name     => G_CONTRACT_NOT_LEASE
4746 				                 );
4747            RAISE OKL_API.G_EXCEPTION_ERROR;
4748             --Raise appropriate error message or do nothing
4749         ElsIf l_scs_code = G_LEASE_SCS_CODE  and upper(l_sts_code) = G_APPROVED_STS_CODE Then
4750             --Bug# : 11.5.9 enhancement Multi-Gaap :to create FA for reporting book
4751             --If l_deal_type in (G_LOAN_BK_CLASS,G_REVOLVING_LOAN_BK_CLASS) Then
4752             If l_deal_type in (G_REVOLVING_LOAN_BK_CLASS) Then
4753                 --nothing to be done for these deal types
4754                 Null;
4755             Else
4756             --Bug# :11.5.9 : Multi-GAAP Begin
4757             Get_Pdt_Params (p_api_version   => p_api_version,
4758                             p_init_msg_list => p_init_msg_list,
4759                             x_return_status => x_return_status,
4760                             x_msg_count     => x_msg_count,
4761                             x_msg_data      => x_msg_data,
4762                             p_pdt_id        => l_pdt_id,
4763                             p_pdt_date      => l_start_date,
4764                             x_rep_pdt_id    => l_rep_pdt_id,
4765                             x_tax_owner     => l_tax_owner,
4766                             x_rep_deal_type => l_rep_deal_type);
4767 
4768             IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4769                 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4770             ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4771                 RAISE OKL_API.G_EXCEPTION_ERROR;
4772             END IF;
4773 
4774             If l_tax_owner is null then
4775                Open town_rul_csr(pchrid => p_chrv_id);
4776                Fetch town_rul_csr into l_town_rul,
4777                                        l_town_rul_id;
4778                If town_rul_csr%NOTFOUND Then
4779                   OKC_API.set_message(
4780                                   p_app_name     => G_APP_NAME,
4781                                   p_msg_name     => G_REQUIRED_VALUE,
4782                                   p_token1       => G_COL_NAME_TOKEN,
4783                                   p_token1_value => 'Tax Owner');
4784                    x_return_status := OKC_API.G_RET_STS_ERROR;
4785                    RAISE OKL_API.G_EXCEPTION_ERROR;
4786                Else
4787                    l_tax_owner := rtrim(ltrim(l_town_rul,' '),' ');
4788                End If;
4789                Close town_rul_csr;
4790             End If;
4791 
4792             OPEN l_hdr_csr( p_chrv_id );
4793             FETCH l_hdr_csr INTO l_hdr_rec;
4794             CLOSE l_hdr_csr;
4795 
4796 	    G_CHR_CURRENCY_CODE := l_hdr_rec.currency_code;
4797 	    G_FUNC_CURRENCY_CODE := okl_accounting_util.get_func_curr_code;
4798 	    G_CHR_AUTHORING_ORG_ID  := l_hdr_rec.authoring_org_id;
4799 	    G_CHR_START_DATE    := l_hdr_rec.start_date;
4800 	    G_CHR_REPORT_PDT_ID := l_hdr_rec.report_pdt_id;
4801 
4802             l_Multi_GAAP_YN := 'N';
4803             -- Bug# 3574232
4804             l_adjust_asset_to_zero := 'N';
4805             --checks wheter Multi-GAAP processing needs tobe done
4806             If l_rep_pdt_id is not NULL Then
4807 
4808       --Bug 7708944. SMEREDDY 01/15/2009.
4809       -- Implemented MG changes based on PM recommendation.
4810                    l_Multi_GAAP_YN := 'Y';
4811 /*
4812                If l_deal_type = 'LEASEOP' and
4813                nvl(l_rep_deal_type,'X') = 'LEASEOP' and
4814                nvl(l_tax_owner,'X') = 'LESSOR' Then
4815                    l_Multi_GAAP_YN := 'Y';
4816                End If;
4817 
4818                If l_deal_type in ('LEASEDF','LEASEST') and
4819                nvl(l_rep_deal_type,'X') = 'LEASEOP' and
4820                nvl(l_tax_owner,'X') = 'LESSOR' Then
4821                    l_Multi_GAAP_YN := 'Y';
4822                End If;
4823 
4824                If l_deal_type in ('LEASEDF','LEASEST') and
4825                nvl(l_rep_deal_type,'X') = 'LEASEOP' and
4826                nvl(l_tax_owner,'X') = 'LESSEE' Then
4827                    l_Multi_GAAP_YN := 'Y';
4828                End If;
4829 
4830                If l_deal_type = 'LOAN' and
4831                nvl(l_rep_deal_type,'X') = 'LEASEOP' and
4832                nvl(l_tax_owner,'X') = 'LESSEE' Then
4833                    l_Multi_GAAP_YN := 'Y';
4834                End If;
4835 */
4836                -- Bug# 3574232 start
4837                -- If the reporting product is DF/ST lease, the asset should
4838                -- be created and written to zero in the reporting book.
4839 
4840       --Bug 7708944. SMEREDDY 01/15/2009.
4841       -- Implemented MG changes based on PM recommendation.
4842 
4843 
4844                If l_deal_type = 'LEASEOP' and
4845                nvl(l_rep_deal_type,'X') in ('LEASEDF','LEASEST') and
4846                nvl(l_tax_owner,'X') = 'LESSOR' Then
4847                    --l_Multi_GAAP_YN := 'Y';
4848                    l_adjust_asset_to_zero := 'Y';
4849                End If;
4850 
4851                If l_deal_type in ('LEASEDF','LEASEST') and
4852                nvl(l_rep_deal_type,'X') in ('LEASEDF','LEASEST') and
4853                nvl(l_tax_owner,'X') = 'LESSOR' Then
4854                    --l_Multi_GAAP_YN := 'Y';
4855                    l_adjust_asset_to_zero := 'Y';
4856                End If;
4857 
4858                If l_deal_type in ('LEASEDF','LEASEST') and
4859                nvl(l_rep_deal_type,'X') in ('LEASEDF','LEASEST') and
4860                nvl(l_tax_owner,'X') = 'LESSEE' Then
4861                    --l_Multi_GAAP_YN := 'Y';
4862                    l_adjust_asset_to_zero := 'Y';
4863                End If;
4864                -- Bug# 3574232 end
4865             End If;
4866 
4867             If l_Multi_GAAP_YN = 'Y' Then
4868                 --get reporting product book type
4869                 l_rep_pdt_book := OKL_SYSTEM_PARAMS_ALL_PUB.get_system_param_value(OKL_SYSTEM_PARAMS_ALL_PUB.G_RPT_PROD_BOOK_TYPE_CODE);
4870             End If;
4871 
4872       --Bug 7708944. SMEREDDY 01/15/2009.
4873       -- Implemented MG changes based on PM recommendation.
4874 
4875 
4876             If ((l_deal_type = 'LOAN') --and nvl(l_Multi_GAAP_YN,'N') = 'N')
4877               OR (l_deal_type = 'LOAN_REVOLVING'))  Then
4878                 Null;
4879                 --Assets will not be activatted for LOANS which are not Multi-GAAP
4880             Else
4881             --Bug# :11.5.9 : Multi-GAAP End
4882                 -- get the transaction records
4883 
4884                 l_asst_count := 1;
4885 		l_counter := 1;
4886 
4887 		Open fa_line_csr(p_chrv_id);
4888 
4889                 Loop
4890 		    l_fa_line_id_tbl.delete;
4891 		    l_fin_ast_line_id_tbl.delete;
4892 
4893                     Fetch fa_line_csr BULK COLLECT
4894 		    into l_fa_line_id_tbl, l_fin_ast_line_id_tbl
4895 		    LIMIT G_BULK_BATCH_SIZE;
4896 
4897 		    if (l_fa_line_id_tbl.COUNT > 0) then
4898 		       for i in l_fa_line_id_tbl.FIRST .. l_fa_line_id_tbl.LAST LOOP
4899                          l_fin_asst_tbl(l_counter).fa_line_id := l_fa_line_id_tbl(i);
4900                          l_fin_asst_tbl(l_counter).fin_ast_line_id := l_fin_ast_line_id_tbl(i);
4901 			 l_counter := l_counter + 1;
4902 		       End Loop;
4903 		    end if;
4904 
4905                     Exit When fa_line_csr%NotFound;
4906                 End Loop;
4907 		CLOSE fa_line_csr;
4908 
4909 		IF (l_fin_asst_tbl.COUNT > 0) THEN
4910 
4911 		  l_loop_index := l_fin_asst_tbl.FIRST;
4912 		  LOOP
4913 		    l_fa_line_id := l_fin_asst_tbl(l_loop_index).fa_line_id;
4914 		    l_fin_ast_line_id := l_fin_asst_tbl(l_loop_index).fin_ast_line_id;
4915 
4916 
4917                     Process_FA_Line (p_api_version       => p_api_version,
4918                                      p_init_msg_list     => p_init_msg_list,
4919                                      x_return_status     => x_return_status,
4920                                      x_msg_count         => x_msg_count,
4921                                      x_msg_data          => x_msg_data,
4922                                      p_chrv_id           => p_chrv_id,
4923                                      p_fa_line_id        => l_fa_line_id,
4924                                      p_fin_ast_line_id   => l_fin_ast_line_id,
4925                                      p_deal_type         => l_deal_type,
4926                                      p_trx_type          => l_trx_type,
4927                                      --Bug : 11.5.9 Multi GAAP Begin
4928                                      p_multi_GAAP_YN     => l_Multi_GAAP_YN,
4929                                      p_rep_pdt_book      => l_rep_pdt_book,
4930                                      --Bug : 11.5.9 Multi GAAP end
4931                                      --Bug# 3574232
4932                                      p_adjust_asset_to_zero => l_adjust_asset_to_zero,
4933                                      --Bug# 3156924
4934                                      p_trans_number      => to_char(l_trans_number),
4935                                      p_calling_interface => l_calling_interface,
4936                                      --Bug# 6373605 startd
4937                                      p_sla_asset_chr_id  => p_chrv_id,
4938                                      --Bug# 6373605 end
4939                                      x_cimv_rec          => l_cimv_rec);
4940 
4941 
4942                     --dbms_output.put_line('after process fa line '||x_return_status);
4943                     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4944                         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4945                     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4946                         RAISE OKL_API.G_EXCEPTION_ERROR;
4947                     END IF;
4948                     x_cimv_tbl(l_asst_count) := l_cimv_rec;
4949                     l_asst_count := l_asst_count+1;
4950 
4951 		    EXIT WHEN l_loop_index = l_fin_asst_tbl.LAST;
4952 		    l_loop_index := l_fin_asst_tbl.NEXT(l_loop_index);
4953 
4954                 End Loop; -- fa line csr
4955                End IF;
4956 
4957             End if; --for deal type = 'LOAN' and no Multi-GAAP
4958 
4959         End If; -- for deal types
4960     Close chk_subclass_csr;
4961     End If;
4962     OKL_API.END_ACTIVITY (x_msg_count,x_msg_data );
4963     EXCEPTION
4964     WHEN OKL_API.G_EXCEPTION_ERROR THEN
4965     If ( l_hdr_csr%ISOPEN ) Then
4966       CLOSE l_hdr_csr;
4967     End If;
4968     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4969                                l_api_name,
4970                                G_PKG_NAME,
4971                                'OKL_API.G_RET_STS_ERROR',
4972                                x_msg_count,
4973                                x_msg_data,
4974                                '_PVT');
4975     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4976     If ( l_hdr_csr%ISOPEN ) Then
4977       CLOSE l_hdr_csr;
4978     End If;
4979     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4980                               l_api_name,
4981                               G_PKG_NAME,
4982                               'OKL_API.G_RET_STS_UNEXP_ERROR',
4983                               x_msg_count,
4984                               x_msg_data,
4985                               '_PVT');
4986     WHEN OTHERS THEN
4987     If ( l_hdr_csr%ISOPEN ) Then
4988       CLOSE l_hdr_csr;
4989     End If;
4990     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4991                               l_api_name,
4992                               G_PKG_NAME,
4993                               'OTHERS',
4994                               x_msg_count,
4995                               x_msg_data,
4996                               '_PVT');
4997 
4998 END ACTIVATE_ASSET;
4999 --------------------------------------------------------------------------------
5000 --Start of Comments
5001 --Procedure Name :  REBOOK_ASSET (Activate code branch for rebook)
5002 --Description    :  Will be called from activate asset and make rebook adjustments
5003 --                  in FA
5004 --History        :
5005 --                 21-Mar-2002  ashish.singh Created
5006 --                 27-Nov-2002  ashish.singh Bug# : 11.5.9 enhancements
5007 --                                                1. Multi-GAAP
5008 -- Notes         :
5009 --      IN Parameters -
5010 --                     p_rbk_chr_id    - contract id of rebook copied contract
5011 --
5012 --                     This APi should be called after syncronization of copied k
5013 --                     to the original (being re-booked ) K
5014 --End of Comments
5015 --------------------------------------------------------------------------------
5016 PROCEDURE REBOOK_ASSET  (p_api_version   IN  NUMBER,
5017                          p_init_msg_list IN  VARCHAR2,
5018                          x_return_status OUT NOCOPY VARCHAR2,
5019                          x_msg_count     OUT NOCOPY NUMBER,
5020                          x_msg_data      OUT NOCOPY VARCHAR2,
5021                          p_rbk_chr_id    IN  NUMBER
5022                         ) IS
5023 
5024    l_return_status        VARCHAR2(1)  default OKL_API.G_RET_STS_SUCCESS;
5025    l_api_name             CONSTANT varchar2(30) := 'REBOOK_ASSET';
5026    l_api_version          CONSTANT NUMBER := 1.0;
5027    l_trx_type             Varchar2(30) := G_TRX_LINE_TYPE_REBOOK;
5028 
5029    --Cursor to get the rebook transaction reason codes
5030    CURSOR rbr_code_csr (p_rbk_chr_id IN NUMBER) IS
5031    SELECT ktrx.rbr_code,
5032           ktrx.date_transaction_occurred,
5033           khr.deal_type,
5034           chr.id,
5035           chr.sts_code,
5036           rul.rule_information1,
5037 --Bug# : 11.5.9 Multi-GAAP
5038           khr.pdt_id,
5039           chr.start_date,
5040 --Bug# 3156924
5041           ktrx.trx_number
5042    FROM   OKC_RULES_B       rul,
5043           OKL_K_HEADERS     khr,
5044           OKC_K_HEADERS_B   chr,
5045           OKL_TRX_CONTRACTS ktrx,
5046           OKC_K_HEADERS_B   rbk_chr
5047    WHERE  rul.dnz_chr_id                  = chr.id
5048    AND    rul.rule_information_category   = 'LATOWN'
5049    AND    khr.id                          = chr.id
5050    AND    chr.id                          = rbk_chr.orig_system_id1
5051    AND    exists (select null
5052                   from   okl_trx_types_tl tl
5053                   where  tl.language = 'US'
5054                   and    tl.name = 'Rebook'
5055                   and    tl.id   = ktrx.try_id)
5056    AND    ktrx.KHR_ID                      = chr.id
5057    AND    ktrx.KHR_ID_NEW                 = rbk_chr.id
5058    AND    ktrx.tsu_code                   = G_TSU_CODE_ENTERED
5059 --rkuttiya added for 12.1.1 Multi GAAP Project
5060    AND    ktrx.representation_type = 'PRIMARY'
5061 --
5062    AND    rbk_chr.orig_system_source_code = 'OKL_REBOOK'
5063    AND    rbk_chr.id                      = p_rbk_chr_id;
5064 
5065    l_rbr_code          OKL_TRX_CONTRACTS.rbr_code%TYPE;
5066    l_deal_type         OKL_K_HEADERS.deal_type%TYPE;
5067    l_chr_id            OKC_K_HEADERS_B.ID%TYPE;
5068    l_sts_code          OKC_K_HEADERS_B.STS_CODE%TYPE;
5069    l_date_trx_occured  OKL_TRX_CONTRACTS.date_transaction_occurred%TYPE;
5070    l_tax_owner         OKC_RULES_B.RULE_INFORMATION1%TYPE;
5071    --Bug# : 11.5.9 enhancement Multi GAAP
5072    l_pdt_id            OKL_K_HEADERS.pdt_id%TYPE;
5073    l_start_date        Date;
5074    l_rep_pdt_id        Number;
5075    l_pdt_tax_owner         Varchar2(150);
5076    l_rep_deal_type     Varchar2(150);
5077    l_Multi_GAAP_YN     Varchar2(1) := 'N';
5078    l_rep_pdt_book      OKX_AST_BKS_V.Book_Type_Code%Type;
5079    --Bug# 3156924 :
5080    l_trx_number        okl_trx_contracts.trx_number%TYPE;
5081    l_calling_interface varchar2(30) := 'OKL: Rebook';
5082 
5083    --cursor to get the modified transaction values against the rebook contract
5084    CURSOR adj_txl_csr (p_rbk_chr_id IN NUMBER, p_effective_date IN DATE ) IS
5085    SELECT txl.in_service_date   in_service_date,
5086           txl.life_in_months    life_in_months,
5087           txl.depreciation_cost depreciation_cost,
5088           txl.depreciation_id   asset_category_id,
5089           txl.deprn_method      deprn_method,
5090           txl.deprn_rate        deprn_rate,
5091           txl.salvage_value     salvage_value,
5092           txl.corporate_book    book_type_code,
5093           txl.asset_number      asset_number,
5094           txl.kle_id            kle_id,
5095           --bug# 3548044
5096           txl.tas_id            tas_id,
5097           txl.salvage_value     corp_salvage_value,
5098           --Bug# 4028371
5099           txl.id                tal_id,
5100           --Bug# 3950089
5101           txl.percent_salvage_value pct_salvage_value,
5102           txl.percent_salvage_value corp_pct_salvage_value,
5103           --Bug# 5207066
5104           txl.current_units   rbk_current_units,
5105 	  --akrangan bug# 5362977 start
5106 	  cle.cle_id          rbk_fin_ast_cle_id,
5107 	  txl.model_number      model_number,
5108 	  txl.manufacturer_name manufacturer_name,
5109 	  txl.description       description,
5110           --Bug# 6373605 start
5111           txl.id  sla_source_line_id,
5112           txl.tas_id sla_source_header_id,
5113           'OKL_TXL_ASSETS_B' sla_source_line_table,
5114           tas.try_id sla_source_try_id,
5115           --Bug# 6373605 end
5116 
5117           --sechawla : Bug# 8370324
5118           cle.start_date      line_start_date,
5119           --Bug# 8652738
5120           txl.asset_key_id    asset_key_id
5121       FROM   OKL_TXL_ASSETS_V  txl,
5122       --akrangan bug# 5362977 end
5123           --Bug# 6373605 start
5124           OKL_TRX_ASSETS    tas,
5125           --Bug# 6373605 end
5126           OKC_K_LINES_B     cle,
5127           OKC_LINE_STYLES_B lse
5128    WHERE  txl.kle_id     = cle.id
5129    --Bug# 6373605 start
5130    AND tas.id = txl.tas_id
5131    --Bug# 6373605 end
5132    AND    cle.dnz_chr_id = p_rbk_chr_id
5133    AND    cle.lse_id     = lse.id
5134    AND    not exists (select '1'
5135                       from   OKC_STATUSES_B sts
5136                       Where  sts.code = cle.sts_code
5137                       And    sts.ste_code in ('HOLD','EXPIRED','TERMINATED','CANCELLED')
5138                       )
5139    AND    lse.lty_code   = G_FA_LINE_LTY_CODE
5140    UNION
5141    SELECT txl.in_service_date    in_service_date,
5142           txd.life_in_months_tax life_in_months,
5143           txd.cost               depreciation_cost,
5144           txl.depreciation_id    asset_category_id,
5145           txd.deprn_method_tax   deprn_method,
5146           txd.deprn_rate_tax     deprn_rate,
5147           txd.salvage_value      salvage_value,
5148           txd.tax_book           book_type_code,
5149           txd.asset_number       asset_number,
5150           txl.kle_id             kle_id,
5151           --BUG# 3548044
5152           null                   tas_id,
5153           txl.salvage_value      corp_salvage_value,
5154           --Bug# 4028371
5155           null                   tal_id,
5156           --Bug# 3950089
5157           txl.percent_salvage_value pct_salvage_value,
5158           txl.percent_salvage_value corp_pct_salvage_value,
5159           --Bug# 5207066
5160           null,
5161           cle.cle_id             rbk_fin_ast_cle_id,
5162 	  -- akrangan Bug# 5362977 start
5163              null      model_number,
5164              null      manufacturer_name,
5165              null      description,
5166 	  -- akrangan Bug# 5362977 end
5167           --Bug# 6373605 start
5168           txd.id  sla_source_line_id,
5169           txl.tas_id sla_source_header_id,
5170           'OKL_TXD_ASSETS_B' sla_source_line_table,
5171           tas.try_id        sla_source_try_id,
5172           --Bug# 6373605 end
5173 
5174            --sechawla bug 8370324
5175           cle.start_date         line_start_date,
5176           --Bug# 8652738
5177           NULL    asset_key_id
5178     FROM  OKL_TXD_ASSETS_B  txd,
5179           OKL_TXL_ASSETS_B  txl,
5180           --Bug# 6373605 start
5181           OKL_TRX_ASSETS    tas,
5182           --Bug# 6373605 end
5183           OKC_K_LINES_B     cle,
5184           OKC_LINE_STYLES_B lse
5185     WHERE  txd.tal_id = txl.id
5186     --Bug# 6373605 start
5187     AND    tas.id     = txl.tas_id
5188     --Bug# 6373605
5189     AND    txl.kle_id     = cle.id
5190     AND    cle.dnz_chr_id = p_rbk_chr_id
5191     AND    cle.lse_id     = lse.id
5192     AND    not exists (select '1'
5193                       from   OKC_STATUSES_B sts
5194                       Where  sts.code = cle.sts_code
5195                       And    sts.ste_code in ('HOLD','EXPIRED','TERMINATED','CANCELLED')
5196                       )
5197    AND    lse.lty_code   = G_FA_LINE_LTY_CODE;
5198 
5199    adj_txl_rec  adj_txl_csr%ROWTYPE;
5200    l_corp_bk VARCHAR2(256);
5201 
5202    --cursor to get the actual values from FA for the contract
5203    CURSOR okx_ast_csr (p_asset_number     IN VARCHAR2,
5204                        p_book_type_code   IN VARCHAR2) is
5205   SELECT  okx.acquisition_date       in_service_date,
5206           okx.life_in_months         life_in_months,
5207           okx.cost                   cost,
5208           okx.depreciation_category  depreciation_category,
5209           okx.deprn_method_code      deprn_method_code,
5210           okx.adjusted_rate          adjusted_rate,
5211           okx.basic_rate             basic_rate,
5212           okx.salvage_value          salvage_value,
5213           okx.book_type_code         book_type_code,
5214           okx.book_class             book_class,
5215           okx.asset_number           asset_number,
5216           okx.asset_id               asset_id,
5217           --Bug# 3950089
5218           okx.percent_salvage_value  percent_salvage_value,
5219           --Bug# 5207066
5220           okx.current_units  fa_current_units
5221    FROM   okx_ast_bks_v okx
5222    WHERE  okx.asset_number       = p_asset_number
5223    AND    okx.book_type_code    =  nvl(p_book_type_code,okx.book_type_code);
5224 
5225    okx_ast_rec   okx_ast_csr%ROWTYPE;
5226 
5227    --Cursor to check if the asset has no been deactivated/canceled on the original contract
5228    Cursor chk_line_csr (p_chr_id         IN NUMBER,
5229                         p_asset_id1      IN VARCHAR2,
5230                         p_asset_id2      IN VARCHAR2,
5231                         p_effective_date IN DATE) IS
5232    Select '!'
5233    from   OKC_K_LINES_B  cle,
5234           OKC_STATUSES_B sts,
5235           OKC_K_ITEMS    cim
5236    Where  cle.sts_code = sts.CODE
5237    And    cle.id = cim.cle_id
5238    And    cle.dnz_chr_id  = p_chr_id
5239    And    cim.dnz_chr_id  = p_chr_id
5240    And    cim.object1_id1 = p_asset_id1
5241    And    cim.object1_id2 = p_asset_id2
5242    And    cim.jtot_object1_code = 'OKX_ASSET'
5243    And    sts.ste_code not in ('HOLD','EXPIRED','TERMINATED','CANCELLED');
5244 
5245   l_chk_cle_effective    Varchar2(1) default '?';
5246 
5247   l_cost_delta              Number;
5248   l_salvage_delta           Number;
5249   l_asset_fin_rec_adj       FA_API_TYPES.asset_fin_rec_type;
5250   l_asset_fin_rec_new       FA_API_TYPES.asset_fin_rec_type;
5251   l_adjust_yn               Varchar2(1);
5252 
5253   --check if a new line exists on rbk copy contract
5254   --select the fin asset and fixed asset line id
5255   --of the original contract
5256   CURSOR new_ast_csr  (p_rbk_chr_id IN NUMBER) is
5257   Select clev.id              new_fin_cle_id,
5258          fa_cle.id            new_fa_cle_id,
5259          clev.chr_id          orig_chr_id
5260   From   okc_k_lines_v        clev,
5261          okc_line_styles_b    lse,
5262          okc_k_lines_b        fa_cle,
5263          okc_line_styles_b    fa_lse,
5264          okc_k_headers_b      chr
5265   where  clev.chr_id                 = chr.orig_system_id1
5266   and    clev.dnz_chr_id             = chr.orig_system_id1
5267   and    chr.id                      = p_rbk_chr_id
5268   and    chr.orig_system_source_code = 'OKL_REBOOK'
5269   and    exists (select null
5270                  from   okc_k_lines_v rbk_line
5271                  where  rbk_line.chr_id      = chr.id
5272                  and    rbk_line.dnz_chr_id  = chr.id
5273                  and    rbk_line.lse_id      = clev.lse_id
5274                  and    rbk_line.name        = clev.name
5275                  and    rbk_line.id          = clev.orig_system_id1)
5276   and   clev.lse_id        = lse.id
5277   and   lse.lty_code       = G_FIN_AST_LINE_LTY_CODE
5278   and   fa_cle.cle_id      = clev.id
5279   and   fa_cle.dnz_chr_id  = chr.orig_system_id1
5280   and   fa_cle.lse_id      = fa_lse.id
5281   and   fa_lse.lty_code    = G_FA_LINE_LTY_CODE;
5282 
5283   l_new_fin_cle_id      OKC_K_LINES_B.ID%TYPE;
5284   l_new_fa_cle_id       OKC_K_LINES_B.ID%TYPE;
5285   l_orig_chr_id         OKC_K_HEADERS_B.ID%TYPE;
5286   lx_cimv_rec           cimv_rec_type;
5287   lx_cimv_ib_tbl        cimv_tbl_type;
5288 
5289   l_dummy_amount NUMBER;
5290 
5291   --cursor to get tax owner rule
5292   Cursor town_rul_csr (pchrid number) is
5293   Select rule_information1 tax_owner,
5294          id
5295   From   okc_rules_b rul
5296   where  rul.dnz_chr_id = pchrid
5297   and    rul.rule_information_category = 'LATOWN'
5298   and    nvl(rul.STD_TEMPLATE_YN,'N')  = 'N';
5299 
5300   l_town_rul      okc_rules_b.rule_information1%TYPE;
5301   l_town_rul_id   okc_rules_b.id%TYPE;
5302 
5303   --bug# 2942543 :
5304   l_new_salvage_value Number;
5305   l_new_cost          Number;
5306 
5307 
5308   --Bug# 3574232
5309   l_adjust_asset_to_zero varchar2(30);
5310 
5311   --Bug# 3548044
5312   l_cap_fee_delta number;
5313   l_cap_fee_delta_converted_amt number;
5314 
5315   l_rebook_allowed_on_mg_book  varchar2(1);
5316 
5317   --Bug# 3783518
5318   l_subsidy_asset_fin_rec_adj       FA_API_TYPES.asset_fin_rec_type;
5319 
5320   --Bug# 4028371
5321   l_fa_adj_date date;
5322   l_fa_sub_adj_date date;
5323   l_talv_date_rec okl_tal_pvt.talv_rec_type;
5324   lx_talv_date_rec okl_tal_pvt.talv_rec_type;
5325 
5326   l_hdr_rec              l_hdr_csr%ROWTYPE;
5327 
5328   -- Bug# 5174778
5329   l_func_curr_code OKL_K_HEADERS_FULL_V.CURRENCY_CODE%TYPE;
5330 
5331   -- Bug# 5207066
5332   l_unit_difference number;
5333 
5334  /* --sechawla bug 8370324
5335   CURSOR chk_release_chr_csr(p_chr_id IN NUMBER) IS
5336   SELECT 'Y'
5337   FROM   okc_rules_b rul_rel_ast
5338   WHERE  rul_rel_ast.dnz_chr_id = p_chr_id
5339   AND    rul_rel_ast.rule_information_category = 'LARLES'
5340   AND    nvl(rule_information1,'N') = 'Y';
5341 */
5342   -- Bug# 15992711 Start of Modifications
5343   CURSOR chk_release_chr_csr(p_cle_id IN NUMBER) IS
5344   SELECT NVL(kle.RE_LEASE_YN,'N')
5345   FROM   okc_k_lines_b cleb
5346         ,okl_k_lines kle
5347   WHERE  cleb.cle_id = p_cle_id
5348   AND    cleb.id = kle.id;
5349   --Bug# 15992711 End of Modifications
5350   l_release_chr_yn     VARCHAR2(1);
5351   l_rebook_fa_trx_date DATE;
5352   --sechawla bug 8370324
5353 
5354 
5355 BEGIN
5356 
5357      x_return_status := OKL_API.G_RET_STS_SUCCESS;
5358     -- Call start_activity to create savepoint, check compatibility
5359     -- and initialize message list
5360     x_return_status := OKL_API.START_ACTIVITY (
5361                                l_api_name
5362                                ,p_init_msg_list
5363                                ,'_PVT'
5364                                ,x_return_status);
5365     -- Check if activity started successfully
5366     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5367        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5368     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5369        RAISE OKL_API.G_EXCEPTION_ERROR;
5370     END IF;
5371 
5372 
5373     --get rebook reason code
5374     --dbms_output.put_line('before rebook reason code cursor :');
5375     OPEN rbr_code_csr (p_rbk_chr_id => p_rbk_chr_id);
5376     Fetch rbr_code_csr into l_rbr_code,
5377                             l_date_trx_occured,
5378                             l_deal_type,
5379                             l_chr_id,
5380                             l_sts_code,
5381                             l_tax_owner,
5382                             --Bug# : 11.5.9 enhamcement Multigaap
5383                             l_pdt_id,
5384                             l_start_date,
5385                             --Bug# 3156924
5386                             l_trx_number;
5387 
5388     If rbr_code_csr%NOTFOUND Then
5389        --rebook transacton not found
5390        --does this call for raising error
5391        Null;
5392     Else
5393         --Bug# :11.5.9 : Multi-GAAP Begin
5394         Get_Pdt_Params (p_api_version   => p_api_version,
5395                         p_init_msg_list => p_init_msg_list,
5396                         x_return_status => x_return_status,
5397                         x_msg_count     => x_msg_count,
5398                         x_msg_data      => x_msg_data,
5399                         p_pdt_id        => l_pdt_id,
5400                         p_pdt_date      => l_start_date,
5401                         x_rep_pdt_id    => l_rep_pdt_id,
5402                         x_tax_owner     => l_tax_owner,
5403                         x_rep_deal_type => l_rep_deal_type);
5404 
5405         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5406             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5407         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5408             RAISE OKL_API.G_EXCEPTION_ERROR;
5409         END IF;
5410 
5411     	If l_tax_owner is null then
5412         Open town_rul_csr(pchrid => l_chr_id);
5413             Fetch town_rul_csr into l_town_rul,
5414                                     l_town_rul_id;
5415             If town_rul_csr%NOTFOUND Then
5416                 OKC_API.set_message(
5417                                   p_app_name     => G_APP_NAME,
5418                                   p_msg_name     => G_REQUIRED_VALUE,
5419                                   p_token1       => G_COL_NAME_TOKEN,
5420                                   p_token1_value => 'Tax Owner');
5421                 x_return_status := OKC_API.G_RET_STS_ERROR;
5422                 RAISE OKL_API.G_EXCEPTION_ERROR;
5423             Else
5424                 l_tax_owner := rtrim(ltrim(l_town_rul,' '),' ');
5425             End If;
5426         Close town_rul_csr;
5427         End If;
5428 
5429         OPEN l_hdr_csr( p_rbk_chr_id );
5430         FETCH l_hdr_csr INTO l_hdr_rec;
5431         CLOSE l_hdr_csr;
5432 
5433         G_CHR_CURRENCY_CODE := l_hdr_rec.currency_code;
5434 	G_FUNC_CURRENCY_CODE := okl_accounting_util.get_func_curr_code;
5435 	G_CHR_AUTHORING_ORG_ID  := l_hdr_rec.authoring_org_id;
5436 	G_CHR_START_DATE    := l_hdr_rec.start_date;
5437 	G_CHR_REPORT_PDT_ID := l_hdr_rec.report_pdt_id;
5438 
5439         l_rebook_allowed_on_mg_book := 'Y';
5440         l_Multi_GAAP_YN := 'N';
5441         --checks wheter Multi-GAAP processing needs tobe done
5442       --Bug 7708944. SMEREDDY 01/15/2009.
5443       -- Implemented MG changes based on PM recommendation.
5444 
5445 
5446         If l_rep_pdt_id is not NULL Then
5447                 l_Multi_GAAP_YN := 'Y';
5448 
5449             --Bug# 3548044
5450             --Bug# 3621663
5451       --Bug 7708944. SMEREDDY 01/15/2009.
5452       -- Implemented MG changes based on PM recommendation.
5453 
5454             If l_deal_type  = 'LEASEOP' and
5455             nvl(l_rep_deal_type,'X') in ('LEASEDF','LEASEST')
5456             and nvl(l_tax_owner,'X') = 'LESSOR' then
5457                 --l_Multi_GAAP_YN := 'Y';
5458                 l_rebook_allowed_on_mg_book := 'N';
5459             End If;
5460             If l_deal_type in ('LEASEDF','LEASEST') and
5461             nvl(l_rep_deal_type,'X') in ('LEASEDF','LEASEST') and
5462             nvl(l_tax_owner,'X') = 'LESSOR'  then
5463                 --l_Multi_GAAP_YN := 'Y';
5464                 l_rebook_allowed_on_mg_book := 'N';
5465             End If;
5466             If l_deal_type in ('LEASEDF','LEASEST') and
5467             nvl(l_rep_deal_type,'X') in ('LEASEDF','LEASEST') and
5468             nvl(l_tax_owner,'X') = 'LESSEE'  then
5469                 --l_Multi_GAAP_YN := 'Y';
5470                 l_rebook_allowed_on_mg_book := 'N';
5471             End If;
5472             --Bug# 3548044
5473 
5474         End If;
5475 
5476         If l_Multi_GAAP_YN = 'Y' Then
5477             --get reporting product book type
5478             l_rep_pdt_book := OKL_SYSTEM_PARAMS_ALL_PUB.get_system_param_value(OKL_SYSTEM_PARAMS_ALL_PUB.G_RPT_PROD_BOOK_TYPE_CODE);
5479         End If;
5480 
5481 
5482 
5483        Open adj_txl_csr(p_rbk_chr_id     => p_rbk_chr_id,
5484                         p_effective_date => l_date_trx_occured);
5485        Loop
5486            Fetch adj_txl_csr into adj_txl_rec;
5487 
5488            IF adj_txl_csr%NOTFOUND Then
5489 
5490       ------------------------------------------------------------------
5491       -- Bug# 3103387 : Residual value is only used to default salvage value.
5492       -- Salvage value should not be updated when there is a change in residual
5493       -- value for an Operating Lease. So the following code is not required.
5494 
5495       --Bug# 3103387 : End of commented code
5496       -------------------------------------------------------------------------
5497 
5498               Exit;-- exit from adj_txl_csr
5499            ---------------------------------------------
5500            Else --adj_txl_csr  found
5501            ---------------------------------------------
5502 
5503 
5504                ---------------------------------------------------------------
5505                -- Bug# 3548044 : A part of this bug the multi-gaap book should
5506                -- not mimic corporate book . It should adjust based on entered
5507                -- parameters. DF/ST(local) vs DF/ST(reporting) MG books are created with cost
5508                -- and SV zero to be untouched till offlease amortization process
5509                ---------------------------------------------------------------
5510                If ( adj_txl_rec.book_type_code = nvl(l_rep_pdt_book,OKL_API.G_MISS_CHAR))
5511                   and (l_rebook_allowed_on_mg_book = 'N') Then
5512                    --Exit;
5513                    Null; --do not do anything for reporting book
5514                Else
5515 
5516                    --get actual parameters from FA to get the Delta
5517                    Open okx_ast_csr (p_asset_number => adj_txl_rec.asset_number,
5518                                      p_book_type_code => adj_txl_rec.book_type_code);
5519                    Loop
5520                        Fetch okx_ast_csr into okx_ast_rec;
5521                        Exit When okx_ast_csr%NOTFOUND;
5522                        --dbms_output.put_line('book type code '||okx_ast_rec.book_type_code);
5523                        --check if the line is effective on the original contract
5524                        l_chk_cle_effective := '?';
5525                        Open chk_line_csr(p_chr_id         => l_chr_id,
5526                                          p_asset_id1      => okx_ast_rec.asset_id,
5527                                          p_asset_id2      => '#',
5528                                          p_effective_date => l_date_trx_occured);
5529                        Fetch chk_line_csr into l_chk_cle_effective;
5530                        If chk_line_csr%NOTFOUND Then
5531                            Null;
5532                        End If;
5533                        Close chk_line_csr;
5534                        If l_chk_cle_effective = '?' Then
5535                            Exit; -- this line is not effective on the original contract
5536                            --dbms_output.put_line('not an effective line.');
5537                        Else
5538                            --initialize
5539                            l_adjust_yn := 'N';
5540                            l_cost_delta := 0;
5541                            l_salvage_delta := 0;
5542 
5543                            --Bug# 3548044 : removed comments
5544                            l_asset_fin_rec_adj.cost                   := null;
5545                            l_asset_fin_rec_adj.salvage_value          := null;
5546                            l_asset_fin_rec_adj.date_placed_in_service := null;
5547                            l_asset_fin_rec_adj.life_in_months         := null;
5548                            l_asset_fin_rec_adj.deprn_method_code      := null;
5549                            l_asset_fin_rec_adj.basic_rate             := null;
5550                            l_asset_fin_rec_adj.adjusted_rate          := null;
5551                            --Bug# 3950089
5552                            l_asset_fin_rec_adj.percent_salvage_value  := null;
5553                            --Bug# 3548044
5554 
5555                            -- Bug# 5174778
5556                            l_func_curr_code := okl_accounting_util.get_func_curr_code;
5557 
5558                            l_dummy_amount := null;
5559                            convert_2functional_currency(
5560                                          p_api_version   => p_api_version,
5561                                          p_init_msg_list => p_init_msg_list,
5562 	                                 x_return_status => x_return_status,
5563                                          x_msg_count     => x_msg_count,
5564                                          x_msg_data      => x_msg_data,
5565                                          p_chr_id        => p_rbk_chr_id,
5566 			                 p_amount        => adj_txl_rec.depreciation_cost,
5567 			                 x_amount        => l_dummy_amount);
5568 
5569                            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5570                                RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5571                            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5572                                RAISE OKL_API.G_EXCEPTION_ERROR;
5573                            END IF;
5574 
5575                            -- Bug# 5174778
5576                            l_dummy_amount := okl_accounting_util.cross_currency_round_amount(
5577                                                 p_amount        => l_dummy_amount,
5578                                                 p_currency_code => l_func_curr_code
5579                                              );
5580 
5581                            --calculate deltas
5582                            l_cost_delta     := (l_dummy_amount - okx_ast_rec.cost);
5583 
5584                            -- Bug# 4899328: Cap fee changes are now included in the
5585                            -- Depreciation cost. Depreciation cost amount is automatically
5586                            -- recalculated whenever there is a change to cap fee.
5587 
5588                            --Bug# 4899328: End
5589 
5590                            --Bug# 3548044 : Added if-else clause for reporting product books
5591                            If okx_ast_rec.book_type_code <> nvl(l_rep_pdt_book,OKL_API.G_MISS_CHAR) then
5592 
5593                              --Bug# 3950089
5594                              If (okx_ast_rec.percent_salvage_value is not null) Then
5595 
5596                                If (adj_txl_rec.pct_salvage_value is null) or
5597                                   (adj_txl_rec.salvage_value is not null) Then
5598 
5599                                  OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
5600                                                      p_msg_name     => 'OKL_LA_REVISE_SALVAGE_TYPE',
5601                                                      p_token1       => G_ASSET_NUMBER_TOKEN,
5602                                                      p_token1_value => okx_ast_rec.asset_number
5603                                                     );
5604                                  x_return_status := OKL_API.G_RET_STS_ERROR;
5605                                  RAISE OKL_API.G_EXCEPTION_ERROR;
5606                                End if;
5607 
5608                              Elsif (okx_ast_rec.salvage_value is not null) Then
5609 
5610                                If (adj_txl_rec.salvage_value is null) Then
5611 
5612                                  OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
5613                                                      p_msg_name     => 'OKL_LA_REVISE_SALVAGE_TYPE',
5614                                                      p_token1       => G_ASSET_NUMBER_TOKEN,
5615                                                      p_token1_value => okx_ast_rec.asset_number
5616                                                     );
5617                                  x_return_status := OKL_API.G_RET_STS_ERROR;
5618                                  RAISE OKL_API.G_EXCEPTION_ERROR;
5619                                End if;
5620                              End If;
5621 
5622                              If (okx_ast_rec.percent_salvage_value is not null) and
5623                                 (okx_ast_rec.book_class = 'CORPORATE') Then
5624 
5625                                l_salvage_delta  := ((adj_txl_rec.pct_salvage_value/100)
5626                                                    - okx_ast_rec.percent_salvage_value);
5627 
5628                              Else
5629 
5630                                l_dummy_amount := null;
5631                                convert_2functional_currency(
5632                                          p_api_version   => p_api_version,
5633                                          p_init_msg_list => p_init_msg_list,
5634 	                                 x_return_status => x_return_status,
5635                                          x_msg_count     => x_msg_count,
5636                                          x_msg_data      => x_msg_data,
5637                                          p_chr_id        => p_rbk_chr_id,
5638 			                 p_amount        => adj_txl_rec.salvage_value,
5639 			                 x_amount        => l_dummy_amount);
5640 
5641                                IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5642                                    RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5643                                ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5644                                    RAISE OKL_API.G_EXCEPTION_ERROR;
5645                                END IF;
5646 
5647                                -- Bug# 5174778
5648                                l_dummy_amount := okl_accounting_util.cross_currency_round_amount(
5649                                                    p_amount        => l_dummy_amount,
5650                                                    p_currency_code => l_func_curr_code
5651                                                  );
5652 
5653                                l_salvage_delta  := (l_dummy_amount - okx_ast_rec.salvage_value);
5654                              End If;
5655 
5656                            ElsIf okx_ast_rec.book_type_code = nvl(l_rep_pdt_book,OKL_API.G_MISS_CHAR) then
5657 
5658                              --Bug# 3950089
5659                              If (okx_ast_rec.percent_salvage_value is not null) Then
5660 
5661                                If (adj_txl_rec.corp_pct_salvage_value is null) or
5662                                   (adj_txl_rec.corp_salvage_value is not null) Then
5663 
5664                                  OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
5665                                                      p_msg_name     => 'OKL_LA_REVISE_SALVAGE_TYPE',
5666                                                      p_token1       => G_ASSET_NUMBER_TOKEN,
5667                                                      p_token1_value => okx_ast_rec.asset_number
5668                                                     );
5669                                  x_return_status := OKL_API.G_RET_STS_ERROR;
5670                                  RAISE OKL_API.G_EXCEPTION_ERROR;
5671                                End if;
5672 
5673                              Elsif (okx_ast_rec.salvage_value is not null) Then
5674 
5675                                If (adj_txl_rec.corp_salvage_value is null) Then
5676 
5677                                  OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
5678                                                      p_msg_name     => 'OKL_LA_REVISE_SALVAGE_TYPE',
5679                                                      p_token1       => G_ASSET_NUMBER_TOKEN,
5680                                                      p_token1_value => okx_ast_rec.asset_number
5681                                                     );
5682                                  x_return_status := OKL_API.G_RET_STS_ERROR;
5683                                  RAISE OKL_API.G_EXCEPTION_ERROR;
5684                                End if;
5685                              End If;
5686 
5687                              If (okx_ast_rec.percent_salvage_value is not null) Then
5688 
5689                                l_salvage_delta  := ((adj_txl_rec.corp_pct_salvage_value/100)
5690                                                    - okx_ast_rec.percent_salvage_value);
5691 
5692                              Else
5693                                l_dummy_amount := null;
5694                                convert_2functional_currency(
5695                                          p_api_version   => p_api_version,
5696                                          p_init_msg_list => p_init_msg_list,
5697                                          x_return_status => x_return_status,
5698                                          x_msg_count     => x_msg_count,
5699                                          x_msg_data      => x_msg_data,
5700                                          p_chr_id        => p_rbk_chr_id,
5701                                          p_amount        => adj_txl_rec.corp_salvage_value,
5702                                          x_amount        => l_dummy_amount);
5703 
5704                                IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5705                                    RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5706                                ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5707                                    RAISE OKL_API.G_EXCEPTION_ERROR;
5708                                END IF;
5709 
5710                               -- Bug# 5174778
5711                                l_dummy_amount := okl_accounting_util.cross_currency_round_amount(
5712                                                    p_amount        => l_dummy_amount,
5713                                                    p_currency_code => l_func_curr_code
5714                                                  );
5715 
5716                                l_salvage_delta  := (l_dummy_amount - okx_ast_rec.salvage_value);
5717                              End If;
5718 
5719                            End If;
5720                            --Bug# 3548044 end
5721 
5722 
5723       ------------------------------------------------------------------
5724       -- Bug# 3103387 : Residual value is only used to default salvage value.
5725       -- Salvage value should not be updated when there is a change in residual
5726       -- value for an Operating Lease. So the following code is not required.
5727 
5728        --Bug# 3103387 : End of commented code
5729        ------------------------------------------------------------------------
5730 
5731                            --Bug# 2942543 : cost updates for DF lease contracts
5732                            If (l_cost_delta <> 0) Then
5733                               If l_deal_type in (G_DF_LEASE_BK_CLASS,G_ST_LEASE_BK_CLASS) And
5734                                  l_tax_owner = 'LESSEE' Then
5735                                  --no cost updates for df/st lease with tax owner 'LESSEE'
5736                                  Null;
5737                               Elsif l_deal_type in (G_DF_LEASE_BK_CLASS,G_ST_LEASE_BK_CLASS) And
5738                                  okx_ast_rec.book_class = 'CORPORATE' Then
5739                                  --No cost updates for df/st lease on corporate asset book as
5740                                  --cost is adjusted to zero there from creation time
5741                                  Null;
5742                               Else
5743                                   l_asset_fin_rec_adj.cost := l_cost_delta;
5744                                   l_adjust_yn := 'Y';
5745                               End If;
5746                            End If;
5747 
5748                            --Bug# 2942543 : salvage value updates for DF lease contracts
5749                            If (l_salvage_delta <> 0) Then
5750                               If l_deal_type in (G_DF_LEASE_BK_CLASS,G_ST_LEASE_BK_CLASS) And
5751                                  l_tax_owner = 'LESSEE' Then
5752                                   --no sv updates for df/st lease with tax owner 'LESSEE'
5753                                   Null;
5754                               Elsif l_deal_type in (G_DF_LEASE_BK_CLASS,G_ST_LEASE_BK_CLASS) And
5755                                  okx_ast_rec.book_class = 'CORPORATE' Then
5756                                   --No cost updates for df/st lease on corporate asset book as
5757                                   --sv is adjusted to zero there from creation time
5758                                   Null;
5759                               Elsif okx_ast_rec.book_class = 'TAX'
5760                                   --Bug # 3548044
5761                                   and okx_ast_rec.book_type_code <>  nvl(l_rep_pdt_book,OKL_API.G_MISS_CHAR)Then
5762                                   --Salvage value will be zero in all the tax books as per bug#2967286
5763                                   --except for Muti-GAAP reporting books --Bug# 3548044
5764                                   Null;
5765                               Else
5766 
5767                                   --Bug# 3950089
5768                                   If (okx_ast_rec.percent_salvage_value is not null) Then
5769                                     l_asset_fin_rec_adj.percent_salvage_value := l_salvage_delta;
5770                                   Else
5771                                     l_asset_fin_rec_adj.salvage_value := l_salvage_delta;
5772                                   End if;
5773                                   l_adjust_yn := 'Y';
5774                               End If;
5775                            End If;
5776 
5777                            If  trunc(nvl(adj_txl_rec.in_service_date,okx_ast_rec.in_service_date)) <> trunc(okx_ast_rec.in_service_date) Then
5778                               l_asset_fin_rec_adj.date_placed_in_service := nvl(adj_txl_rec.in_service_date,okx_ast_rec.in_service_date);
5779                               l_adjust_yn := 'Y';
5780                            End If;
5781 
5782                            If  nvl(adj_txl_rec.life_in_months,okx_ast_rec.life_in_months) <> okx_ast_rec.life_in_months Then
5783                               l_asset_fin_rec_adj.deprn_method_code := nvl(adj_txl_rec.deprn_method,okx_ast_rec.deprn_method_code);
5784                               l_asset_fin_rec_adj.life_in_months    := nvl(adj_txl_rec.life_in_months,okx_ast_rec.life_in_months);
5785                               l_asset_fin_rec_adj.basic_rate        := adj_txl_rec.deprn_rate;
5786                               l_asset_fin_rec_adj.adjusted_rate     := adj_txl_rec.deprn_rate;
5787                               l_adjust_yn := 'Y';
5788                            End If;
5789 
5790                            --category updates not supported by API
5791                            --If adj_txl_rec.depreciation_id <> okx_ast_rec.depreciation_category Then
5792                            If nvl(adj_txl_rec.deprn_method,okx_ast_rec.deprn_method_code) <> okx_ast_rec.deprn_method_code Then
5793                               l_asset_fin_rec_adj.deprn_method_code := nvl(adj_txl_rec.deprn_method,okx_ast_rec.deprn_method_code);
5794                               l_asset_fin_rec_adj.life_in_months    := adj_txl_rec.life_in_months;
5795                               l_asset_fin_rec_adj.basic_rate        := adj_txl_rec.deprn_rate;
5796                               l_asset_fin_rec_adj.adjusted_rate     := adj_txl_rec.deprn_rate;
5797                               l_adjust_yn := 'Y';
5798                            End If;
5799 
5800                            If nvl(adj_txl_rec.deprn_rate,okx_ast_rec.adjusted_rate) <> okx_ast_rec.adjusted_rate Then
5801                               l_asset_fin_rec_adj.deprn_method_code := nvl(adj_txl_rec.deprn_method,okx_ast_rec.deprn_method_code);
5802                               l_asset_fin_rec_adj.life_in_months    := adj_txl_rec.life_in_months;
5803                               l_asset_fin_rec_adj.basic_rate        := nvl(adj_txl_rec.deprn_rate,okx_ast_rec.basic_rate);
5804                               l_asset_fin_rec_adj.adjusted_rate     := nvl(adj_txl_rec.deprn_rate,okx_ast_rec.adjusted_rate);
5805                               l_adjust_yn := 'Y';
5806                            End If;
5807 
5808                            If nvl(l_adjust_yn,'N') = 'Y' AND
5809                               l_deal_type not in (G_LOAN_BK_CLASS,G_REVOLVING_LOAN_BK_CLASS) then
5810 
5811                                --bug # 2942543 :
5812                                --check if salvage value is becoming more than asset cost
5813                                --BUG# 3548044: check for all the books (not only corporate book)
5814                                --If okx_ast_rec.book_class = 'CORPORATE' then --salvage value updates only for CORP
5815 
5816                                --Bug# 3950089
5817                                l_new_cost          := okx_ast_rec.cost + l_cost_delta;
5818                                If (okx_ast_rec.percent_salvage_value is not null) Then
5819                                  l_new_salvage_value := l_new_cost * (NVL(adj_txl_rec.pct_salvage_value,0)/100);
5820                                Else
5821                                  l_new_salvage_value := okx_ast_rec.salvage_value + l_salvage_delta;
5822                                End If;
5823 
5824                                If (l_new_cost < l_new_salvage_value) Then
5825                                    OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
5826                                                        p_msg_name     => G_SALVAGE_VALUE
5827                                                       );
5828                                        RAISE OKL_API.G_EXCEPTION_ERROR;
5829                                End If;
5830                                --End If; --Bug# 3548044
5831 
5832                                --Sechawla : Bug# 8370324
5833                                l_release_chr_yn := 'N';
5834                                /*OPEN chk_release_chr_csr(p_chr_id => p_rbk_chr_id);
5835                                FETCH chk_release_chr_csr INTO l_release_chr_yn;
5836                                CLOSE chk_release_chr_csr;*/
5837 
5838                                -- Bug# 15992711 Start of Modifications
5839                                OPEN chk_release_chr_csr(p_cle_id => adj_txl_rec.rbk_fin_ast_cle_id);
5840                                FETCH chk_release_chr_csr INTO l_release_chr_yn;
5841                                CLOSE chk_release_chr_csr;
5842                                --Bug# 15992711 End of Modifications
5843 
5844                                IF (l_release_chr_yn = 'Y') THEN
5845                                  l_rebook_fa_trx_date := adj_txl_rec.line_start_date;
5846                                ELSE
5847                                  l_rebook_fa_trx_date := nvl(adj_txl_rec.in_service_date,okx_ast_rec.in_service_date);
5848                                END IF;
5849                                --Bug# 8370324
5850 
5851                                -- Bug# 3783518
5852                                -- Revision date should be in the current open period or in a
5853                                -- prior period in FA
5854 
5855                                validate_rebook_date
5856                                   (p_api_version     => p_api_version,
5857                                    p_init_msg_list   => p_init_msg_list,
5858                                    x_return_status   => x_return_status,
5859                                    x_msg_count       => x_msg_count,
5860                                    x_msg_data        => x_msg_data,
5861                                    p_book_type_code  => okx_ast_rec.book_type_code,
5862                                    --sechawla : Bug# 8370324
5863                                    p_rebook_date     => l_rebook_fa_trx_date,
5864                                    p_cost_adjustment => l_asset_fin_rec_adj.cost,
5865                                    p_contract_start_date => l_start_date);
5866 
5867                                IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5868                                   RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5869                                ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5870                                   RAISE OKL_API.G_EXCEPTION_ERROR;
5871                                END IF;
5872 
5873                                -------------------
5874                                --Bug# 6373605
5875                                l_asset_fin_rec_adj.contract_id := l_orig_chr_id;
5876                                ---------------------
5877                                --call the adjustment api to do adjustment
5878                                FIXED_ASSET_ADJUST
5879                                      (p_api_version         => p_api_version,
5880                                       p_init_msg_list       => p_init_msg_list,
5881                                       x_return_status       => x_return_status,
5882                                       x_msg_count           => x_msg_count,
5883                                       x_msg_data            => x_msg_data,
5884                     	              p_chr_id              => p_rbk_chr_id,
5885                                       p_book_type_code      => okx_ast_rec.book_type_code,
5886                                       p_asset_id            => okx_ast_rec.asset_id,
5887                                       p_asset_fin_rec_adj   => l_asset_fin_rec_adj,
5888                                       --sechawla Bug# 8370324
5889                                       p_adj_date            => l_rebook_fa_trx_date,
5890                                       --Bug# 3156924
5891                                       p_trans_number        => l_trx_number,
5892                                       p_calling_interface   => l_calling_interface,
5893             --Bug# 6373605--SLA populate source
5894             p_sla_source_header_id    => adj_txl_rec.sla_source_header_id,
5895             p_sla_source_header_table => 'OKL_TRX_ASSETS',
5896             p_sla_source_try_id       => adj_txl_rec.sla_source_try_id,
5897             p_sla_source_line_id      => adj_txl_rec.sla_source_line_id,
5898             p_sla_source_line_table   => adj_txl_rec.sla_source_line_table,
5899             p_sla_source_chr_id       => p_rbk_chr_id,
5900             p_sla_source_kle_id       => adj_txl_rec.rbk_fin_ast_cle_id,
5901             --Bug# 6373605--SLA populate sources
5902                                       --Bug# 4028371
5903                                       x_fa_trx_date         => l_fa_adj_date,
5904                                       x_asset_fin_rec_new   => l_asset_fin_rec_new);
5905 
5906                               --dbms_output.put_line('After fixed asset adjust for rebook :'||x_return_status);
5907                               IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5908                                   RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5909                               ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5910                                   RAISE OKL_API.G_EXCEPTION_ERROR;
5911                               END IF;
5912 
5913                               -- Bug# 5207066 start
5914 
5915                               -- Bug# 5207066 end
5916 
5917                               --Bug# 4028371
5918                               If adj_txl_rec.tal_id is not null Then
5919                                   --update the fa trx date on transaction line
5920                                       l_talv_date_rec.id     := adj_txl_rec.tal_id;
5921                                       l_talv_date_rec.fa_trx_date := l_fa_adj_date;
5922 
5923                                       okl_tal_pvt.update_row
5924                                         (p_api_version   => p_api_version,
5925                                          p_init_msg_list => p_init_msg_list,
5926                                          x_return_status => x_return_status,
5927                                          x_msg_count     => x_msg_count,
5928                                          x_msg_data      => x_msg_data,
5929                                          p_talv_rec      => l_talv_date_rec,
5930                                          x_talv_rec      => lx_talv_date_rec);
5931                                       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5932                                           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5933                                       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5934                                           RAISE OKL_API.G_EXCEPTION_ERROR;
5935                                       END IF;
5936                              End If;
5937                              --End Bug# 4028371
5938                             --5362977 akrangan start
5939                             End If; --l_adjust_yn = 'Y'
5940                              --Bug# 5121256/5150355
5941                               If (l_deal_type not in (G_LOAN_BK_CLASS,G_REVOLVING_LOAN_BK_CLASS) AND
5942                                   okx_ast_rec.book_class = 'CORPORATE') Then
5943 
5944                               l_unit_difference :=  adj_txl_rec.rbk_current_units - okx_ast_rec.fa_current_units;
5945 
5946                               if (l_unit_difference <> 0) then
5947                                 FIXED_ASSET_ADJUST_UNIT
5948                                       (p_api_version       => p_api_version,
5949                                        p_init_msg_list     => p_init_msg_list,
5950                                        x_return_status     => x_return_status,
5951                                        x_msg_count         => x_msg_count,
5952                                        x_msg_data          => x_msg_data,
5953                                        p_asset_id          => okx_ast_rec.asset_id,
5954                                        p_book_type_code    => okx_ast_rec.book_type_code,
5955                                        p_diff_in_units     => l_unit_difference,
5956                                        --sechawla bug# 8370324
5957                                        p_trx_date          => l_rebook_fa_trx_date,
5958                                        p_trx_number        => l_trx_number,
5959                                        p_calling_interface => l_calling_interface,
5960                 --Bug# 6373605--SLA populate source
5961                 p_sla_source_header_id    => adj_txl_rec.sla_source_header_id,
5962                 p_sla_source_header_table => 'OKL_TRX_ASSETS',
5963                 p_sla_source_try_id       => adj_txl_rec.sla_source_try_id,
5964                 p_sla_source_line_id      => adj_txl_rec.sla_source_line_id,
5965                 p_sla_source_line_table   => adj_txl_rec.sla_source_line_table,
5966                 p_sla_source_chr_id       => p_rbk_chr_id,
5967                 p_sla_source_kle_id       => adj_txl_rec.rbk_fin_ast_cle_id,
5968                 --Bug# 6373605--SLA populate sources
5969                                       --Bug# 4028371
5970                                        --Bug# 4028371
5971                                        x_fa_trx_date       => l_fa_adj_date);
5972 
5973                                 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5974                                   RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5975                                 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5976                                   RAISE OKL_API.G_EXCEPTION_ERROR;
5977                                 END IF;
5978 
5979                                  end if;
5980 				 --Bug# 5362977
5981                                 -- Update Model number, manufacturer and description
5982                                 FIXED_ASSET_UPDATE_DESC
5983                                  (p_api_version       => p_api_version,
5984                                   p_init_msg_list     => p_init_msg_list,
5985                                   x_return_status     => x_return_status,
5986                                   x_msg_count         => x_msg_count,
5987                                   x_msg_data          => x_msg_data,
5988 				  p_asset_id          => okx_ast_rec.asset_id,
5989 				  p_model_number      => adj_txl_rec.model_number,
5990 				  p_manufacturer      => adj_txl_rec.manufacturer_name,
5991 				  p_description       => adj_txl_rec.description,
5992                                   --sechawla : Bug# 8370324
5993                                   p_trx_date          => l_rebook_fa_trx_date,
5994 				  p_trx_number        => l_trx_number,
5995 				  p_calling_interface => l_calling_interface,
5996 				--Bug# 4028371
5997 				  x_fa_trx_date       => l_fa_adj_date,
5998                                   --Bug# 8652738
5999                                   p_asset_key_id      => adj_txl_rec.asset_key_id);
6000                                --akrangan bug 5362977 end
6001 
6002                                 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6003                                   RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6004                                 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6005                                   RAISE OKL_API.G_EXCEPTION_ERROR;
6006                                 END IF;
6007 
6008 
6009                                --akrangan bug 5362977 start
6010                                 -- Handle updates to serial numbers even when units are not changed
6011                                 OKL_ACTIVATE_IB_PVT.RBK_SRL_NUM_IB_INSTANCE
6012 
6013                                         (p_api_version   => p_api_version,
6014                                          p_init_msg_list => p_init_msg_list,
6015                                          x_return_status => x_return_status,
6016                                          x_msg_count     => x_msg_count,
6017                                          x_msg_data      => x_msg_data,
6018                                          p_rbk_fin_ast_cle_id => adj_txl_rec.rbk_fin_ast_cle_id,
6019                                          p_rbk_chr_id        => p_rbk_chr_id);
6020                                       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6021                                           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6022                                       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6023                                           RAISE OKL_API.G_EXCEPTION_ERROR;
6024                                       END IF;
6025                             End If;
6026                          --akrangan bug 5362977 end
6027 
6028 
6029                            ---------------------------------------------------------------
6030                            --Bug# 3548044 : MultiGaap Book to follow its own changes
6031                            --will not mimic corporate book
6032                            ---------------------------------------------------------------
6033                            --start of comments
6034                            -- end of comments
6035                            ------------------------------------------------------------------*/
6036                            --Bug# 3548044
6037 
6038                         End If; --chk_cle effective
6039                     End Loop;
6040                     Close okx_ast_csr;
6041                 End If; -- proceed for books other than reporting book  in case of local and reporting Tax leases
6042                --BUG# 3548044 : Process status for mass rebook asset transaction
6043                 If adj_txl_rec.tas_id is not NULL then
6044 
6045                     update_trx_status(p_api_version   => p_api_version,
6046                                       p_init_msg_list => p_init_msg_list,
6047                                       x_return_status => x_return_status,
6048                                       x_msg_count     => x_msg_count,
6049                                       x_msg_data      => x_msg_data,
6050                                       p_tas_id        => adj_txl_rec.tas_id,
6051                                       p_tsu_code      => G_TSU_CODE_PROCESSED);
6052 
6053                       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6054                           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6055                       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6056                           RAISE OKL_API.G_EXCEPTION_ERROR;
6057                       END IF;
6058                 End If;
6059                 --BUG# 3548044
6060                 End If; --adj_txl_rec found
6061 
6062             End Loop;
6063             Close adj_txl_csr;
6064 --          End If; --rebook reason code
6065             End If; --rbr code csr
6066         CLOSE rbr_code_csr;
6067         --to check if new asset has been added and process accordingly
6068         OPEN new_ast_csr (p_rbk_chr_id => p_rbk_chr_id);
6069         Loop
6070             FETCH new_ast_csr into l_new_fin_cle_id,
6071                                    l_new_fa_cle_id,
6072                                    l_orig_chr_id;
6073             Exit When new_ast_csr%NOTFOUND;
6074 
6075             -- Bug# 3574232 start
6076             l_adjust_asset_to_zero := 'N';
6077             If l_rep_pdt_id is not NULL Then
6078 
6079               l_Multi_GAAP_YN := 'Y';
6080               -- If the reporting product is DF/ST lease, the asset should
6081               -- be created and written to zero in the reporting book.
6082       --Bug 7708944. SMEREDDY 01/15/2009.
6083       -- Implemented MG changes based on PM recommendation.
6084 
6085 
6086               If l_deal_type = 'LEASEOP' and
6087               nvl(l_rep_deal_type,'X') in ('LEASEDF','LEASEST') and
6088               nvl(l_tax_owner,'X') = 'LESSOR' Then
6089 --                l_Multi_GAAP_YN := 'Y';
6090                 l_adjust_asset_to_zero := 'Y';
6091               End If;
6092 
6093               If l_deal_type in ('LEASEDF','LEASEST') and
6094               nvl(l_rep_deal_type,'X') in ('LEASEDF','LEASEST') and
6095               nvl(l_tax_owner,'X') = 'LESSOR' Then
6096 --                l_Multi_GAAP_YN := 'Y';
6097                 l_adjust_asset_to_zero := 'Y';
6098               End If;
6099 
6100               If l_deal_type in ('LEASEDF','LEASEST') and
6101               nvl(l_rep_deal_type,'X') in ('LEASEDF','LEASEST') and
6102               nvl(l_tax_owner,'X') = 'LESSEE' Then
6103 --                l_Multi_GAAP_YN := 'Y';
6104                 l_adjust_asset_to_zero := 'Y';
6105               End If;
6106             End If;
6107 
6108             If l_Multi_GAAP_YN = 'Y' Then
6109               --get reporting product book type
6110               l_rep_pdt_book := OKL_SYSTEM_PARAMS_ALL_PUB.get_system_param_value(OKL_SYSTEM_PARAMS_ALL_PUB.G_RPT_PROD_BOOK_TYPE_CODE);
6111             End If;
6112             -- Bug# 3574232 end
6113 
6114             --process new fa line for asset additions
6115             --dbms_output.put_line('Found new line going in to add asset now.');
6116       --Bug 7708944. SMEREDDY 01/15/2009.
6117       -- Implemented MG changes based on PM recommendation.
6118 
6119             If ((l_deal_type = 'LOAN') --and nvl(l_Multi_GAAP_YN,'N') = 'N')
6120               OR (l_deal_type = 'LOAN_REVOLVING'))  Then
6121                 Null;
6122                 --Assets will not be activatted for LOANS which are not Multi-GAAP
6123             Else
6124                 Process_FA_Line (p_api_version       => p_api_version,
6125                                  p_init_msg_list     => p_init_msg_list,
6126                                  x_return_status     => x_return_status,
6127                                  x_msg_count         => x_msg_count,
6128                                  x_msg_data          => x_msg_data,
6129                                  p_chrv_id           => l_orig_chr_id,
6130                                  p_fa_line_id        => l_new_fa_cle_id,
6131                                  p_fin_ast_line_id   => l_new_fin_cle_id,
6132                                  p_deal_type         => l_deal_type,
6133                                  p_trx_type          => l_trx_type,
6134                                  --Bug# : 11.5.9 enhance ment - Multi GAAP
6135                                  p_Multi_GAAP_YN     => l_Multi_GAAP_YN,
6136                                  p_rep_pdt_book      => l_rep_pdt_book,
6137                                  --Bug# : 11.5.9 enhance ment - Multi GAAP End
6138                                  --Bug# 3574232
6139                                  p_adjust_asset_to_zero => l_adjust_asset_to_zero,
6140                                  --Bug# 3156924
6141                                  p_trans_number      => l_trx_number,
6142                                  p_calling_interface => l_calling_interface,
6143                                  --Bug# 3156924
6144                                  --Bug# 6373605 start
6145                                  p_sla_asset_chr_id  => l_orig_chr_id,
6146                                  --Bug# 6373605
6147                                  x_cimv_rec          => lx_cimv_rec);
6148                 --dbms_output.put_line('After process FA line. '||x_return_status );
6149                 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6150                     RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6151                 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6152                     RAISE OKL_API.G_EXCEPTION_ERROR;
6153                 END IF;
6154             End IF;
6155             --Bug# :11.5.9 : Multi-GAAP End
6156 
6157             --process new fa line for IB Additions
6158             --dbms_output.put_line('going in to add IB now.');
6159             OKL_ACTIVATE_IB_PVT.ACTIVATE_RBK_IB_INST
6160                               (p_api_version         => p_api_version,
6161                                p_init_msg_list       => p_init_msg_list,
6162                                x_return_status       => x_return_status,
6163                                x_msg_count           => x_msg_count,
6164                                x_msg_data            => x_msg_data,
6165                                p_fin_ast_cle_id      => l_new_fin_cle_id,
6166                                x_cimv_tbl            => lx_cimv_ib_tbl);
6167             --dbms_output.put_line('After doing IB. '||x_return_status );
6168             IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6169                 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6170             ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6171                 RAISE OKL_API.G_EXCEPTION_ERROR;
6172             END IF;
6173 
6174         End Loop;
6175         Close new_ast_csr;
6176 
6177         -- Bug# 4899328: Subsidy changes are now included in the
6178         -- Depreciation cost. Depreciation cost amount is automatically
6179         -- recalculated whenever there is a change to subsidies.
6180         /*
6181 
6182        */
6183        -- Bug# 4899328: End
6184 
6185     OKL_API.END_ACTIVITY (x_msg_count,x_msg_data );
6186     EXCEPTION
6187     WHEN OKL_API.G_EXCEPTION_ERROR THEN
6188     If ( l_hdr_csr%ISOPEN ) Then
6189        CLOSE l_hdr_csr;
6190     End If;
6191     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6192                                l_api_name,
6193                                G_PKG_NAME,
6194                                'OKL_API.G_RET_STS_ERROR',
6195                                x_msg_count,
6196                                x_msg_data,
6197                                '_PVT');
6198     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6199     If ( l_hdr_csr%ISOPEN ) Then
6200        CLOSE l_hdr_csr;
6201     End If;
6202     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6203                               l_api_name,
6204                               G_PKG_NAME,
6205                               'OKL_API.G_RET_STS_UNEXP_ERROR',
6206                               x_msg_count,
6207                               x_msg_data,
6208                               '_PVT');
6209     WHEN OTHERS THEN
6210     If ( l_hdr_csr%ISOPEN ) Then
6211        CLOSE l_hdr_csr;
6212     End If;
6213     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6214                               l_api_name,
6215                               G_PKG_NAME,
6216                               'OTHERS',
6217                               x_msg_count,
6218                               x_msg_data,
6219                               '_PVT');
6220 END REBOOK_ASSET;
6221 --------------------------------------------------------------------------------
6222 --Start of Comments
6223 --Procedure Name :  MASS_REBOOK_ASSET (Activate code branch for mass_rebook)
6224 --Description    :  Will be called to make mass rebook adjustments in Oracle FA
6225 --History        :
6226 --                 30-APR-2002  ashish.singh Created
6227 -- Notes         :
6228 --      IN Parameters -
6229 --                     p_rbk_chr_id    - contract id of rebook  contract
6230 --                     although similar to rebook_asset processing this is kept
6231 --                     separate as there may be differences later between rebook
6232 --                     and mass Rebook
6233 --
6234 --End of Comments
6235 --------------------------------------------------------------------------------
6236 PROCEDURE MASS_REBOOK_ASSET  (p_api_version   IN  NUMBER,
6237                               p_init_msg_list IN  VARCHAR2,
6238                               x_return_status OUT NOCOPY VARCHAR2,
6239                               x_msg_count     OUT NOCOPY NUMBER,
6240                               x_msg_data      OUT NOCOPY VARCHAR2,
6241                               p_rbk_chr_id    IN  NUMBER
6242                              ) IS
6243 
6244    l_return_status        VARCHAR2(1)  default OKL_API.G_RET_STS_SUCCESS;
6245    l_api_name             CONSTANT varchar2(30) := 'MASS_REBOOK_ASSET';
6246    l_api_version          CONSTANT NUMBER := 1.0;
6247 
6248    --Cursor to get the rebook transaction reason codes
6249    CURSOR rbr_code_csr (p_rbk_chr_id IN NUMBER) IS
6250    SELECT ktrx.rbr_code,
6251           ktrx.date_transaction_occurred,
6252           khr.deal_type,
6253           chr.id,
6254           chr.sts_code,
6255           rul.rule_information1,
6256           khr.pdt_id,
6257           chr.start_date,
6258           --Bug# 3156924
6259           ktrx.trx_number
6260    FROM   OKC_RULES_B       rul,
6261           OKL_K_HEADERS     khr,
6262           OKC_K_HEADERS_B   chr,
6263           OKL_TRX_CONTRACTS ktrx
6264    WHERE  rul.dnz_chr_id                  = chr.id
6265    AND    rul.rule_information_category   = 'LATOWN'
6266    AND    khr.id                          = chr.id
6267    AND    chr.id                          = p_rbk_chr_id
6268    AND    exists (select null
6269                   from   okl_trx_types_tl tl
6270                   where  tl.language = 'US'
6271                   and    tl.name = 'Rebook'
6272                   and    tl.id   = ktrx.try_id)
6273    AND    ktrx.KHR_ID                      = chr.id
6274    AND    ktrx.KHR_ID  = rul.dnz_chr_id
6275 --rkuttiya added for 12.1.1  Multi GAAP Project
6276    AND    ktrx.representation_type = 'PRIMARY'
6277 --
6278    AND    ktrx.KHR_ID_NEW is null
6279    AND    ktrx.tsu_code                   = G_TSU_CODE_ENTERED;
6280 
6281    l_rbr_code          OKL_TRX_CONTRACTS.rbr_code%TYPE;
6282    l_deal_type         OKL_K_HEADERS.deal_type%TYPE;
6283    l_chr_id            OKC_K_HEADERS_B.ID%TYPE;
6284    l_sts_code          OKC_K_HEADERS_B.STS_CODE%TYPE;
6285    l_date_trx_occured  OKL_TRX_CONTRACTS.date_transaction_occurred%TYPE;
6286    l_tax_owner         OKC_RULES_B.RULE_INFORMATION1%TYPE;
6287    --Bug# 3156924
6288    l_trans_number      OKL_TRX_CONTRACTS.trx_number%TYPE;
6289    l_calling_interface Varchar2(30) := 'OKLRACAB:Mass Rebook';
6290 
6291    --sechawla : bug 8370324
6292    /*
6293    --cursor to get the adjusted residual value and OEC
6294    CURSOR adj_cle_csr (p_chr_id IN NUMBER, p_fa_cle_id IN NUMBER, p_effective_date IN date) IS
6295    SELECT kle.OEC,
6296           kle.RESIDUAL_VALUE,
6297           cle.id,
6298           cle.name
6299    FROM   OKC_K_LINES_V      cle,
6300           OKC_LINE_STYLES_B  lse,
6301           OKL_K_LINES        kle,
6302           OKC_K_LINES_B      fa_cle,
6303           OKC_LINE_STYLES_B  fa_cle_lse
6304    WHERE  kle.id              = cle.id
6305    AND    cle.chr_id          = p_chr_id
6306    AND    cle.dnz_chr_id      = p_chr_id
6307    AND    cle.lse_id          = lse.id
6308    AND    lse.lty_code        = G_FIN_AST_LINE_LTY_CODE
6309    AND    cle.id              = fa_cle.cle_id
6310    AND    fa_cle.id           = nvl(p_fa_cle_id,fa_cle.id)
6311    AND    fa_cle.lse_id       = fa_cle_lse.id
6312    AND    fa_cle_lse.lty_code = G_FA_LINE_LTY_CODE
6313    --Bug# 2942543 : effectivity should be checked by keeping start and end date as inclusive
6314    --AND    nvl(cle.start_date,p_effective_date) <= p_effective_date
6315    --AND    nvl(cle.end_date,p_effective_date+1) >  p_effective_date
6316    AND    p_effective_date between cle.start_date and cle.end_date
6317    AND    not exists (select '1'
6318                       from   OKC_STATUSES_B sts
6319                       Where  sts.code = cle.sts_code
6320                       --Bug# 2522268
6321                       --And    sts.ste_code in ('HOLD','EXPIRED','TERMINATED','CANCELED'));
6322                       And    sts.ste_code in ('HOLD','EXPIRED','TERMINATED','CANCELLED'));
6323 
6324    l_oec                OKL_K_LINES.OEC%TYPE;
6325    l_residual_value     OKL_K_LINES.RESIDUAL_VALUE%TYPE;
6326    l_cle_id             OKC_K_LINES_V.ID%TYPE;
6327    l_asset_number       OKC_K_LINES_V.NAME%TYPE;
6328 */
6329 
6330    --cursor to get the modified transaction values against the rebook contract
6331    CURSOR adj_txl_csr (p_rbk_chr_id IN NUMBER, p_effective_date IN DATE ) IS
6332    SELECT txl.in_service_date   in_service_date,
6333           txl.life_in_months    life_in_months,
6334           txl.depreciation_cost depreciation_cost,
6335           txl.depreciation_id   asset_category_id,
6336           txl.deprn_method      deprn_method,
6337           txl.deprn_rate        deprn_rate,
6338           txl.salvage_value     salvage_value,
6339           txl.corporate_book    book_type_code,
6340           txl.asset_number      asset_number,
6341           txl.kle_id            kle_id,
6342           --Bug# 3548044
6343           txl.tas_id            tas_id,
6344           txl.salvage_value     corp_salvage_value,
6345           --Bug# 4028371
6346           txl.id                tal_id,
6347           --Bug# 6373605 start
6348           txl.id  sla_source_line_id,
6349           txl.tas_id sla_source_header_id,
6350           'OKL_TXL_ASSETS_B' sla_source_line_table,
6351           tas.try_id sla_source_try_id,
6352           cle.cle_id sla_source_kle_id,
6353           --Bug# 6373605 end
6354           --sechawla : Bug# 8370324
6355           cle.start_date        line_start_date
6356    FROM   OKL_TXL_ASSETS_B  txl,
6357           --Bug# 6373605 start
6358           OKL_TRX_ASSETS    tas,
6359           --Bug# 6373605 end
6360           OKC_K_LINES_B     cle,
6361           OKC_LINE_STYLES_B lse
6362    WHERE  txl.kle_id     = cle.id
6363    AND    txl.tal_type   = 'CRB'
6364    --Bug# 6373605 start
6365    AND    tas.id         = txl.tas_id
6366    --Bug# 6373605 end
6367    AND    cle.dnz_chr_id = p_rbk_chr_id
6368    AND    cle.lse_id     = lse.id
6369 --sechawla : Bug# 8370324
6370 --   AND p_effective_date between cle.start_date and cle.end_date
6371    AND    not exists (select '1'
6372                       from   OKC_STATUSES_B sts
6373                       Where  sts.code = cle.sts_code
6374                       And    sts.ste_code in ('HOLD','EXPIRED','TERMINATED','CANCELLED')
6375                       )
6376    AND    lse.lty_code   = G_FA_LINE_LTY_CODE
6377    AND    exists (select '1'
6378                   from   OKL_TRX_ASSETS TRX
6379                   Where  TRX.ID = Txl.tas_id
6380                   And    TRX.tas_type = 'CRB'
6381                   And    TRX.tsu_code = 'ENTERED')
6382    UNION
6383    SELECT txl.in_service_date    in_service_date,
6384           txd.life_in_months_tax life_in_months,
6385           txd.cost               depreciation_cost,
6386           txl.depreciation_id    asset_category_id,
6387           txd.deprn_method_tax   deprn_method,
6388           txd.deprn_rate_tax     deprn_rate,
6389           txd.salvage_value      salvage_value,
6390           txd.tax_book           book_type_code,
6391           txd.asset_number       asset_number,
6392           txl.kle_id             kle_id,
6393           --bug# 3548044
6394           null                   tas_id,
6395           txl.salvage_value      corp_salvage_value,
6396           --Bgu# 4028371
6397           null                   tal_id,
6398           --Bug# 6373605 start
6399           txd.id  sla_source_line_id,
6400           txl.tas_id sla_source_header_id,
6401           'OKL_TXD_ASSETS_B' sla_source_line_table,
6402           tas.try_id        sla_source_try_id,
6403           cle.cle_id        sla_source_kle_id,
6404           --Bug# 6373605 end
6405           --sechawla : Bug# 8370324
6406           cle.start_date        line_start_date
6407     FROM  OKL_TXD_ASSETS_B  txd,
6408           OKL_TXL_ASSETS_B  txl,
6409           --Bug# 6373605 start
6410           OKL_TRX_ASSETS    tas,
6411           --Bug# 6373605 end
6412           OKC_K_LINES_B     cle,
6413           OKC_LINE_STYLES_B lse
6414     WHERE  txd.tal_id = txl.id
6415     --Bug# 6373605 start
6416     AND    tas.id     = txl.tas_id
6417     --Bug# 6373605
6418     AND    txl.kle_id     = cle.id
6419     AND    cle.dnz_chr_id = p_rbk_chr_id
6420     AND    cle.lse_id     = lse.id
6421      --sechawla : Bug# 8370324
6422     --AND      p_effective_date between cle.start_date and cle.end_date
6423     AND    not exists (select '1'
6424                       from   OKC_STATUSES_B sts
6425                       Where  sts.code = cle.sts_code
6426                       And    sts.ste_code in ('HOLD','EXPIRED','TERMINATED','CANCELLED')
6427                       )
6428    AND    lse.lty_code   = G_FA_LINE_LTY_CODE
6429    AND    exists (select '1'
6430                   from   OKL_TRX_ASSETS TRX
6431                   Where  TRX.ID = Txl.tas_id
6432                   And    TRX.tas_type = 'CRB'
6433                   And    TRX.tsu_code = 'ENTERED');
6434 
6435    adj_txl_rec  adj_txl_csr%ROWTYPE;
6436    --Bug# : 11.5.9 enhancement Multi GAAP
6437    l_pdt_id            OKL_K_HEADERS.pdt_id%TYPE;
6438    l_start_date        Date;
6439    l_rep_pdt_id        Number;
6440    l_rep_deal_type     Varchar2(150);
6441    l_Multi_GAAP_YN     Varchar2(1) := 'N';
6442    l_rep_pdt_book      OKX_AST_BKS_V.Book_Type_Code%Type;
6443 
6444    l_dummy_amount NUMBER;
6445 
6446    --cursor to get the actual values from FA for the contract
6447   CURSOR okx_ast_csr (p_asset_number     IN VARCHAR2,
6448                       p_book_type_code   IN VARCHAR2) is
6449   SELECT  okx.acquisition_date       in_service_date,
6450           okx.life_in_months         life_in_months,
6451           okx.cost                   cost,
6452           okx.depreciation_category  depreciation_category,
6453           okx.deprn_method_code      deprn_method_code,
6454           okx.adjusted_rate          adjusted_rate,
6455           okx.basic_rate             basic_rate,
6456           okx.salvage_value          salvage_value,
6457           okx.book_type_code         book_type_code,
6458           okx.book_class             book_class,
6459           okx.asset_number           asset_number,
6460           okx.asset_id               asset_id
6461    FROM   okx_ast_bks_v okx
6462    WHERE  okx.asset_number       = p_asset_number
6463    AND    okx.book_type_code     = nvl(p_book_type_code,okx.book_type_code);
6464 
6465    okx_ast_rec   okx_ast_csr%ROWTYPE;
6466 
6467    --Cursor to check if the asset has no been deactivated/canceled on the original contract
6468    Cursor chk_line_csr (p_chr_id         IN NUMBER,
6469                         p_asset_id1      IN VARCHAR2,
6470                         p_asset_id2      IN VARCHAR2,
6471                         p_effective_date IN DATE) IS
6472    Select '!'
6473    from   OKC_K_LINES_B  cle,
6474           OKC_STATUSES_B sts,
6475           OKC_K_ITEMS    cim
6476    Where  cle.sts_code = sts.CODE
6477    --sechawla : Bug# 8370324
6478    --And p_effective_date between cle.start_date and cle.end_date
6479    And    cle.id = cim.cle_id
6480    And    cle.dnz_chr_id  = p_chr_id
6481    And    cim.dnz_chr_id  = p_chr_id
6482    And    cim.object1_id1 = p_asset_id1
6483    And    cim.object1_id2 = p_asset_id2
6484    And    cim.jtot_object1_code = 'OKX_ASSET'
6485    And    sts.ste_code not in ('HOLD','EXPIRED','TERMINATED','CANCELLED');
6486 
6487   l_chk_cle_effective    Varchar2(1) default '?';
6488 
6489   l_cost_delta              Number;
6490   l_salvage_delta           Number;
6491   l_asset_fin_rec_adj       FA_API_TYPES.asset_fin_rec_type;
6492   l_asset_fin_rec_new       FA_API_TYPES.asset_fin_rec_type;
6493   l_adjust_yn               Varchar2(1);
6494 
6495   --cursor to get tax owner rule
6496   Cursor town_rul_csr (pchrid number) is
6497   Select rule_information1 tax_owner,
6498          id
6499   From   okc_rules_b rul
6500   where  rul.dnz_chr_id = pchrid
6501   and    rul.rule_information_category = 'LATOWN'
6502   and    nvl(rul.STD_TEMPLATE_YN,'N')  = 'N';
6503 
6504   l_town_rul      okc_rules_b.rule_information1%TYPE;
6505   l_town_rul_id   okc_rules_b.id%TYPE;
6506 
6507   l_mass_rebook_date date default sysdate;
6508 
6509   --Bug# 2942543 :
6510   l_new_salvage_value number;
6511   l_new_cost          number;
6512 
6513   --Bug# 3548044
6514   l_rebook_allowed_on_mg_book  varchar2(1);
6515   --Bug# 4028371
6516   l_fa_adj_date date;
6517   l_talv_date_rec okl_tal_pvt.talv_rec_type;
6518   lx_talv_date_rec okl_tal_pvt.talv_rec_type;
6519 
6520   l_hdr_rec              l_hdr_csr%ROWTYPE;
6521 
6522   --sechawla : Bug# 8370324
6523  /* CURSOR chk_release_chr_csr(p_chr_id IN NUMBER) IS
6524   SELECT 'Y'
6525   FROM   okc_rules_b rul_rel_ast
6526   WHERE  rul_rel_ast.dnz_chr_id = p_chr_id
6527   AND    rul_rel_ast.rule_information_category = 'LARLES'
6528   AND    nvl(rule_information1,'N') = 'Y';*/
6529 
6530 -- Bug# 15992711 Start of Modifications
6531   CURSOR chk_release_chr_csr(p_cle_id IN NUMBER) IS
6532   SELECT NVL(kle.RE_LEASE_YN,'N')
6533   FROM   okc_k_lines_b cleb
6534         ,okl_k_lines   kle
6535   WHERE  cleb.cle_id = p_cle_id
6536   AND    cleb.id = kle.id;
6537 --Bug# 15992711 End of Modifications
6538 
6539   l_release_chr_yn     VARCHAR2(1);
6540   l_rebook_fa_trx_date DATE;
6541   --sechawla : Bug# 8370324
6542 
6543 
6544 BEGIN
6545 
6546      x_return_status := OKL_API.G_RET_STS_SUCCESS;
6547     -- Call start_activity to create savepoint, check compatibility
6548     -- and initialize message list
6549     x_return_status := OKL_API.START_ACTIVITY (
6550                                l_api_name
6551                                ,p_init_msg_list
6552                                ,'_PVT'
6553                                ,x_return_status);
6554     -- Check if activity started successfully
6555     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6556        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6557     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6558        RAISE OKL_API.G_EXCEPTION_ERROR;
6559     END IF;
6560 
6561     --get rebook reason code
6562     --dbms_output.put_line('before rebook reason code cursor :');
6563     OPEN rbr_code_csr (p_rbk_chr_id => p_rbk_chr_id);
6564     Fetch rbr_code_csr into l_rbr_code,
6565                             l_date_trx_occured,
6566                             l_deal_type,
6567                             l_chr_id,
6568                             l_sts_code,
6569                             l_tax_owner,
6570                             l_pdt_id,
6571                             l_start_date,
6572                             --Bug# 3156924
6573                             l_trans_number;
6574 
6575 
6576     If rbr_code_csr%NOTFOUND Then
6577        --rebook transacton not found
6578        --does this call for raising error
6579        Null;
6580     Else
6581 
6582         --Bug# 3156924
6583         l_mass_rebook_date := l_date_trx_occured;
6584         --Bug# 3156924
6585 
6586         --almost redundant code here as for mass rebook no changes in scope
6587         -- for the corporate book
6588         Get_Pdt_Params (p_api_version   => p_api_version,
6589                         p_init_msg_list => p_init_msg_list,
6590                         x_return_status => x_return_status,
6591                         x_msg_count     => x_msg_count,
6592                         x_msg_data      => x_msg_data,
6593                         p_pdt_id        => l_pdt_id,
6594                         p_pdt_date      => l_start_date,
6595                         x_rep_pdt_id    => l_rep_pdt_id,
6596                         x_tax_owner     => l_tax_owner,
6597                         x_rep_deal_type => l_rep_deal_type);
6598 
6599         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6600             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6601         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6602             RAISE OKL_API.G_EXCEPTION_ERROR;
6603         END IF;
6604 
6605     	If l_tax_owner is null then
6606         Open town_rul_csr(pchrid => l_chr_id);
6607             Fetch town_rul_csr into l_town_rul,
6608                                     l_town_rul_id;
6609             If town_rul_csr%NOTFOUND Then
6610                 OKC_API.set_message(
6611                                   p_app_name     => G_APP_NAME,
6612                                   p_msg_name     => G_REQUIRED_VALUE,
6613                                   p_token1       => G_COL_NAME_TOKEN,
6614                                   p_token1_value => 'Tax Owner');
6615                 x_return_status := OKC_API.G_RET_STS_ERROR;
6616                 RAISE OKL_API.G_EXCEPTION_ERROR;
6617             Else
6618                 l_tax_owner := rtrim(ltrim(l_town_rul,' '),' ');
6619             End If;
6620         Close town_rul_csr;
6621         End If;
6622 
6623 	OPEN l_hdr_csr( p_rbk_chr_id );
6624         FETCH l_hdr_csr INTO l_hdr_rec;
6625         CLOSE l_hdr_csr;
6626 
6627 	G_CHR_CURRENCY_CODE := l_hdr_rec.currency_code;
6628 	G_FUNC_CURRENCY_CODE := okl_accounting_util.get_func_curr_code;
6629 	G_CHR_AUTHORING_ORG_ID  := l_hdr_rec.authoring_org_id;
6630 	G_CHR_START_DATE    := l_hdr_rec.start_date;
6631 	G_CHR_REPORT_PDT_ID := l_hdr_rec.report_pdt_id;
6632 
6633 
6634         --BUG# 3548044
6635         l_rebook_allowed_on_mg_book := 'Y';
6636         l_Multi_GAAP_YN := 'N';
6637         --checks wheter Multi-GAAP processing needs tobe done
6638         If l_rep_pdt_id is not NULL Then
6639 
6640       --Bug 7708944. SMEREDDY 01/15/2009.
6641       -- Implemented MG changes based on PM recommendation.
6642 
6643             l_Multi_GAAP_YN := 'Y';
6644 /*
6645             If l_deal_type = 'LEASEOP' and
6646             nvl(l_rep_deal_type,'X') = 'LEASEOP' and
6647             nvl(l_tax_owner,'X') = 'LESSOR' Then
6648                 l_Multi_GAAP_YN := 'Y';
6649             End If;
6650 
6651             If l_deal_type in ('LEASEDF','LEASEST') and
6652             nvl(l_rep_deal_type,'X') = 'LEASEOP' and
6653             nvl(l_tax_owner,'X') = 'LESSOR' Then
6654                 l_Multi_GAAP_YN := 'Y';
6655             End If;
6656 
6657             If l_deal_type in ('LEASEDF','LEASEST') and
6658             nvl(l_rep_deal_type,'X') = 'LEASEOP' and
6659             nvl(l_tax_owner,'X') = 'LESSEE' Then
6660                 l_Multi_GAAP_YN := 'Y';
6661             End If;
6662 
6663             If l_deal_type = 'LOAN' and
6664             nvl(l_rep_deal_type,'X') = 'LEASEOP' and
6665             nvl(l_tax_owner,'X') = 'LESSEE' Then
6666                 l_Multi_GAAP_YN := 'Y';
6667             End If;
6668 */
6669            --Bug# 3548044
6670            --Bug# 3621663
6671       --Bug 7708944. SMEREDDY 01/15/2009.
6672       -- Implemented MG changes based on PM recommendation.
6673 
6674            If l_deal_type  = 'LEASEOP' and
6675             nvl(l_rep_deal_type,'X') in ('LEASEDF','LEASEST')
6676             and nvl(l_tax_owner,'X') = 'LESSOR' then
6677                 --l_Multi_GAAP_YN := 'Y';
6678                 l_rebook_allowed_on_mg_book := 'N';
6679             End If;
6680             If l_deal_type in ('LEASEDF','LEASEST') and
6681             nvl(l_rep_deal_type,'X') in ('LEASEDF','LEASEST') and
6682             nvl(l_tax_owner,'X') = 'LESSOR'  then
6683                 --l_Multi_GAAP_YN := 'Y';
6684                 l_rebook_allowed_on_mg_book := 'N';
6685             End If;
6686             If l_deal_type in ('LEASEDF','LEASEST') and
6687             nvl(l_rep_deal_type,'X') in ('LEASEDF','LEASEST') and
6688             nvl(l_tax_owner,'X') = 'LESSEE'  then
6689                 --l_Multi_GAAP_YN := 'Y';
6690                 l_rebook_allowed_on_mg_book := 'N';
6691             End If;
6692             --Bug# 3548044
6693         End If;
6694 
6695         If l_Multi_GAAP_YN = 'Y' Then
6696             --get reporting product book type
6697             l_rep_pdt_book := OKL_SYSTEM_PARAMS_ALL_PUB.get_system_param_value(OKL_SYSTEM_PARAMS_ALL_PUB.G_RPT_PROD_BOOK_TYPE_CODE);
6698         End If;
6699 
6700 
6701        --dbms_output.put_line('deal type :'||l_deal_type);
6702        --get the adjusted parameters for all the lines from line transactions
6703        Open adj_txl_csr(p_rbk_chr_id     => p_rbk_chr_id,
6704                         p_effective_date => l_date_trx_occured);
6705        Loop
6706            Fetch adj_txl_csr into adj_txl_rec;
6707 
6708            IF adj_txl_csr%NOTFOUND Then
6709 
6710       ------------------------------------------------------------------
6711       -- Bug# 3103387 : Residual value is only used to default salvage value.
6712       -- Salvage value should not be updated when there is a change in residual
6713       -- value for an Operating Lease. So the following code is not required.
6714       /*---------------------------------------------------------------
6715 
6716 
6717       ------------------------------------------------------------------------*/
6718       --Bug# 3103387 : End of commented code
6719       -------------------------------------------------------------------------
6720               Exit;-- exit from adj_txl_csr
6721            ---------------------------------------------
6722            Else --adj_txl_csr  found
6723            ---------------------------------------------
6724 
6725                ----------------------------------------------------------------------
6726                --Bug# 3548044: Multi-GAAP reporting Books should not follow CORP book
6727                --changes . But Mass rebook does not support corp book changes
6728                --does not support Multi-GAAP book changes
6729                ----------------------------------------------------------------------
6730                If ( adj_txl_rec.book_type_code = nvl(l_rep_pdt_book,OKL_API.G_MISS_CHAR)) Then
6731                    --Exit;
6732                    Null;
6733                    --do not change the reporting tax book
6734                Else
6735                    --get actual parameters from FA to get the Delta
6736                    Open okx_ast_csr (p_asset_number => adj_txl_rec.asset_number,
6737                                      p_book_type_code => adj_txl_rec.book_type_code);
6738                    Loop
6739                        Fetch okx_ast_csr into okx_ast_rec;
6740                        Exit When okx_ast_csr%NOTFOUND;
6741                        --dbms_output.put_line('book type code '||okx_ast_rec.book_type_code);
6742                        --check if the line is effective on the original contract
6743                        l_chk_cle_effective := '?';
6744                        Open chk_line_csr(p_chr_id         => l_chr_id,
6745                                          p_asset_id1      => okx_ast_rec.asset_id,
6746                                          p_asset_id2      => '#',
6747                                          p_effective_date => l_date_trx_occured);
6748                        Fetch chk_line_csr into l_chk_cle_effective;
6749                        If chk_line_csr%NOTFOUND Then
6750                            Null;
6751                        End If;
6752                        Close chk_line_csr;
6753                        If l_chk_cle_effective = '?' Then
6754                            Exit; -- this line is not effective on the original contract
6755                        --dbms_output.put_line('not an effective line.');
6756                        Else
6757                            --initialize
6758                            l_adjust_yn := 'N';
6759                            l_cost_delta := 0;
6760                            l_salvage_delta := 0;
6761 
6762 
6763 
6764       ------------------------------------------------------------------
6765       -- Bug# 3103387 : Residual value is only used to default salvage value.
6766       -- Salvage value should not be updated when there is a change in residual
6767       -- value for an Operating Lease. So the following code is not required.
6768 
6769       ------------------------------------------------------------------------*/
6770       --Bug# 3103387 : End of commented code
6771       --------------------------------------------------------------------------
6772 
6773                            --Bug# 2942543 : cost updates for DF lease contracts
6774                            If (l_cost_delta <> 0) Then
6775                               If l_deal_type in (G_DF_LEASE_BK_CLASS,G_ST_LEASE_BK_CLASS) And
6776                                  l_tax_owner = 'LESSEE' Then
6777                                  --no cost updates for df/st lease with tax owner 'LESSEE'
6778                                  Null;
6779                               Elsif l_deal_type in (G_DF_LEASE_BK_CLASS,G_ST_LEASE_BK_CLASS) And
6780                                  okx_ast_rec.book_class = 'CORPORATE' Then
6781                                  --No cost updates for df/st lease on corporate asset book as
6782                                  --cost is adjusted to zero there from creation time
6783                                  Null;
6784                               --BUG# 3548044 : cost updates on corp book not supported
6785                               Elsif okx_ast_rec.Book_class = 'CORPORATE' then
6786                                   null;
6787                               Else
6788                                   l_asset_fin_rec_adj.cost := l_cost_delta;
6789                                   l_adjust_yn := 'Y';
6790                               End If;
6791                            End If;
6792 
6793                            --Bug# 2942543 : salvage value updates for DF lease contracts
6794                            If (l_salvage_delta <> 0) Then
6795                               If l_deal_type in (G_DF_LEASE_BK_CLASS,G_ST_LEASE_BK_CLASS) And
6796                                  l_tax_owner = 'LESSEE' Then
6797                                   --no sv updates for df/st lease with tax owner 'LESSEE'
6798                                   Null;
6799                               Elsif l_deal_type in (G_DF_LEASE_BK_CLASS,G_ST_LEASE_BK_CLASS) And
6800                                  okx_ast_rec.book_class = 'CORPORATE' Then
6801                                   --No cost updates for df/st lease on corporate asset book as
6802                                   --sv is adjusted to zero there from creation time
6803                                   Null;
6804                               Elsif okx_ast_rec.book_class = 'TAX' Then
6805                                   --Salvage value will be zero in all the tax books as per bug#2967286
6806                                   Null;
6807                               --BUG# 3548044 : SV updates on corp book not supported
6808                               Elsif okx_ast_rec.Book_class = 'CORPORATE' then
6809                                   null;
6810                               Else
6811                                   l_asset_fin_rec_adj.salvage_value := l_salvage_delta;
6812                                   l_adjust_yn := 'Y';
6813                               End If;
6814                            End If;
6815 
6816 
6817                            -- Mass rebook - Other than residual value change no other
6818                            --updates are allowed on the CORP Book
6819                            If okx_ast_rec.book_class = 'CORPORATE' then
6820                               Null;
6821                            Else
6822                                If  trunc(nvl(adj_txl_rec.in_service_date,okx_ast_rec.in_service_date)) <> trunc(okx_ast_rec.in_service_date) Then
6823                                    l_asset_fin_rec_adj.date_placed_in_service := nvl(adj_txl_rec.in_service_date,okx_ast_rec.in_service_date);
6824                                    l_adjust_yn := 'Y';
6825                                End If;
6826                                --dbms_output.put_line('txl life :'|| to_char(adj_txl_rec.life_in_months));
6827                                --dbms_output.put_line('okx life :'|| to_char(okx_ast_rec.life_in_months));
6828                                --Bug# 3621663
6829                                If  nvl(adj_txl_rec.life_in_months,okx_ast_rec.life_in_months) <> okx_ast_rec.life_in_months
6830                                Then
6831                                    l_asset_fin_rec_adj.life_in_months    := nvl(adj_txl_rec.life_in_months,okx_ast_rec.life_in_months);
6832                                    l_asset_fin_rec_adj.deprn_method_code := nvl(adj_txl_rec.deprn_method,okx_ast_rec.deprn_method_code);
6833                                    l_asset_fin_rec_adj.basic_rate            := Null;
6834                                    l_asset_fin_rec_adj.adjusted_rate         := Null;
6835                                    l_adjust_yn := 'Y';
6836                                End If;
6837 
6838                                --category updates not supported by API
6839                                --If adj_txl_rec.depreciation_id <> okx_ast_rec.depreciation_category Then
6840                                If nvl(adj_txl_rec.deprn_method,okx_ast_rec.deprn_method_code) <> okx_ast_rec.deprn_method_code Then
6841                                    l_asset_fin_rec_adj.deprn_method_code  := nvl(adj_txl_rec.deprn_method,okx_ast_rec.deprn_method_code);
6842                                    If adj_txl_rec.life_in_months is not null then
6843                                        l_asset_fin_rec_adj.life_in_months     := nvl(adj_txl_rec.life_in_months,okx_ast_rec.life_in_months);
6844                                        l_asset_fin_rec_adj.basic_rate         := null;
6845                                        l_asset_fin_rec_adj.adjusted_rate      := null;
6846                                    Elsif adj_txl_rec.life_in_months is null then
6847                                        If adj_txl_rec.deprn_rate is not null then
6848                                            l_asset_fin_rec_adj.basic_rate         := nvl(adj_txl_rec.deprn_rate,okx_ast_rec.basic_rate);
6849                                            l_asset_fin_rec_adj.adjusted_rate      := nvl(adj_txl_rec.deprn_rate,okx_ast_rec.adjusted_rate);
6850                                        End If;
6851                                     End If;
6852                                    l_adjust_yn := 'Y';
6853                                End If;
6854 
6855                                If nvl(adj_txl_rec.deprn_rate,okx_ast_rec.adjusted_rate) <> okx_ast_rec.adjusted_rate Then
6856                                    If adj_txl_rec.life_in_months is  NULL then
6857                                        l_asset_fin_rec_adj.deprn_method_code  := nvl(adj_txl_rec.deprn_method,okx_ast_rec.deprn_method_code);
6858                                        l_asset_fin_rec_adj.basic_rate         := nvl(adj_txl_rec.deprn_rate,okx_ast_rec.basic_rate);
6859                                        l_asset_fin_rec_adj.adjusted_rate      := nvl(adj_txl_rec.deprn_rate,okx_ast_rec.adjusted_rate);
6860                                        l_asset_fin_rec_adj.life_in_months     := NULL;
6861                                        l_adjust_yn := 'Y';
6862                                    End If;
6863                                End If;
6864                                --Bug# 3621663 (BP of Bug 3548044)
6865 
6866                            End If; --change deprn parameters only for Tax Books
6867 
6868                            If nvl(l_adjust_yn,'N') = 'Y' AND
6869                               l_deal_type not in (G_LOAN_BK_CLASS,G_REVOLVING_LOAN_BK_CLASS) then
6870                                --call the adjustment api to do adjustment
6871                               --dbms_output.put_line('Cost :'||to_char(l_asset_fin_rec_adj.cost));
6872                               --dbms_output.put_line('Sal Val :'||to_char(l_asset_fin_rec_adj.salvage_value));
6873                               --dbms_output.put_line('DPIS :'||to_char(l_asset_fin_rec_adj.date_placed_in_service,'dd-mon-yyyy'));
6874                               --dbms_output.put_line('life :'||to_char(l_asset_fin_rec_adj.life_in_months));
6875                               --dbms_output.put_line('DPRN Method :'||l_asset_fin_rec_adj.deprn_method_code);
6876                               --dbms_output.put_line('Rate B :'||to_char(l_asset_fin_rec_adj.basic_rate));
6877                               --dbms_output.put_line('Rate A :'||to_char(l_asset_fin_rec_adj.adjusted_rate));
6878 
6879                                --bug # 2942543 :
6880                                --check if salvage value is becoming more than asset cost
6881                                --BUG# 3548044: check for all the books (not only corporate book)
6882                                --If okx_ast_rec.book_class = 'CORPORATE' then --salvage value updates only for CORP
6883                                l_new_salvage_value := okx_ast_rec.salvage_value + l_salvage_delta;
6884                                l_new_cost          := okx_ast_rec.cost + l_cost_delta;
6885                                If (l_new_cost < l_new_salvage_value) Then
6886                                    OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
6887                                                        p_msg_name     => G_SALVAGE_VALUE
6888                                                       );
6889                                        RAISE OKL_API.G_EXCEPTION_ERROR;
6890                                End If;
6891                                --End If; --Bug# 3548044
6892 
6893                                --sechawla bug 8370324
6894                                l_release_chr_yn := 'N';
6895                                /*
6896                                OPEN chk_release_chr_csr(p_chr_id => p_rbk_chr_id);
6897                                FETCH chk_release_chr_csr INTO l_release_chr_yn;
6898                                CLOSE chk_release_chr_csr;*/
6899 
6900                                -- Bug# 15992711 Start of Modifications
6901                                OPEN chk_release_chr_csr(p_cle_id => adj_txl_rec.sla_source_kle_id);
6902                                FETCH chk_release_chr_csr INTO l_release_chr_yn;
6903                                CLOSE chk_release_chr_csr;
6904                               --Bug# 15992711 End of Modifications
6905 
6906                                IF (l_release_chr_yn = 'Y') THEN
6907                                  l_rebook_fa_trx_date := adj_txl_rec.line_start_date;
6908                                ELSE
6909                                  l_rebook_fa_trx_date := nvl(adj_txl_rec.in_service_date,okx_ast_rec.in_service_date);
6910                                END IF;
6911                                --sechawla bug 8370324
6912 
6913                                -- Bug# 3783518
6914                                -- Revision date should be in the current open period or in a
6915                                -- prior period in FA
6916 
6917                                validate_rebook_date
6918                                   (p_api_version     => p_api_version,
6919                                    p_init_msg_list   => p_init_msg_list,
6920                                    x_return_status   => x_return_status,
6921                                    x_msg_count       => x_msg_count,
6922                                    x_msg_data        => x_msg_data,
6923                                    p_book_type_code  => okx_ast_rec.book_type_code,
6924                                    --bug# 8370324
6925                                    p_rebook_date     => l_rebook_fa_trx_date,
6926                                    p_cost_adjustment => l_asset_fin_rec_adj.cost,
6927                                    p_contract_start_date => l_start_date);
6928 
6929                                IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6930                                   RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6931                                ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6932                                   RAISE OKL_API.G_EXCEPTION_ERROR;
6933                                END IF;
6934 
6935                                --Bug# 6373605
6936                                l_asset_fin_rec_adj.contract_id := p_rbk_chr_id;
6937                                --Bug# 6373605 end
6938                                FIXED_ASSET_ADJUST
6939                                      (p_api_version         => p_api_version,
6940                                       p_init_msg_list       => p_init_msg_list,
6941                                       x_return_status       => x_return_status,
6942                                       x_msg_count           => x_msg_count,
6943                                       x_msg_data            => x_msg_data,
6944                                       p_chr_id              => p_rbk_chr_id,
6945                                       p_asset_id            => okx_ast_rec.asset_id,
6946                                       p_book_type_code      => okx_ast_rec.book_type_code,
6947                                       p_asset_fin_rec_adj   => l_asset_fin_rec_adj,
6948                                       --Bug# 8370324
6949                                       p_adj_date            => l_rebook_fa_trx_date,
6950                                       --Bug# 3156924
6951                                       p_trans_number        => l_trans_number,
6952                                       p_calling_interface   => l_calling_interface,
6953             --Bug# 6373605--SLA populate source
6954             p_sla_source_header_id    => adj_txl_rec.sla_source_header_id,
6955             p_sla_source_header_table => 'OKL_TRX_ASSETS',
6956             p_sla_source_try_id       => adj_txl_rec.sla_source_try_id,
6957             p_sla_source_line_id      => adj_txl_rec.sla_source_line_id,
6958             p_sla_source_line_table   => adj_txl_rec.sla_source_line_table,
6959             p_sla_source_chr_id       => p_rbk_chr_id,
6960             p_sla_source_kle_id       => adj_txl_rec.sla_source_kle_id,
6961             --Bug# 6373605--SLA populate sources
6962                                       --Bug# 4028371
6963                                       x_fa_trx_date         => l_fa_adj_date,
6964                                       --Bug# 3156924
6965                                       x_asset_fin_rec_new   => l_asset_fin_rec_new);
6966 
6967                               --dbms_output.put_line('After fixed asset adjust for rebook :'||x_return_status);
6968                               IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6969                                   RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6970                               ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6971                                   RAISE OKL_API.G_EXCEPTION_ERROR;
6972                               END IF;
6973                              --Bug# 4028371
6974                               If adj_txl_rec.tal_id is not null Then
6975                                   --update the fa trx date on transaction line
6976                                       l_talv_date_rec.id     := adj_txl_rec.tal_id;
6977                                       l_talv_date_rec.fa_trx_date := l_fa_adj_date;
6978 
6979                                       okl_tal_pvt.update_row
6980                                         (p_api_version   => p_api_version,
6981                                          p_init_msg_list => p_init_msg_list,
6982                                          x_return_status => x_return_status,
6983                                          x_msg_count     => x_msg_count,
6984                                          x_msg_data      => x_msg_data,
6985                                          p_talv_rec      => l_talv_date_rec,
6986                                          x_talv_rec      => lx_talv_date_rec);
6987                                       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6988                                           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6989                                       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6990                                           RAISE OKL_API.G_EXCEPTION_ERROR;
6991                                       END IF;
6992                              End If;
6993                              --End Bug# 4028371
6994                           End If; --l_adjust_yn = 'Y'
6995 
6996 
6997 
6998                            ---------------------------------------------------------------
6999                            --Bug# 3548044 : MultiGaap Book to follow its own changes
7000                            --will not mimic corporate book.mass rebook does not support
7001                            --changes on multi-gaap and local corporate book
7002                            ---------------------------------------------------------------
7003                            --start of comments
7004                            /*-------------------------------------------------------------
7005 
7006                         --end of comments
7007                         ------------------------------------------------------------------*/
7008                         --Bug# 3548044
7009 
7010 
7011                         End If; --chk_cle effective
7012                     End Loop;
7013                     Close okx_ast_csr;
7014                 End If; -- tax book is not reporting book
7015 
7016                --Bug# 3548044 : set the status of transaction to processed
7017                 If adj_txl_rec.tas_id is not NULL then
7018 
7019                     update_trx_status(p_api_version   => p_api_version,
7020                                       p_init_msg_list => p_init_msg_list,
7021                                       x_return_status => x_return_status,
7022                                       x_msg_count     => x_msg_count,
7023                                       x_msg_data      => x_msg_data,
7024                                       p_tas_id        => adj_txl_rec.tas_id,
7025                                       p_tsu_code      => G_TSU_CODE_PROCESSED);
7026 
7027                       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7028                           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7029                       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7030                           RAISE OKL_API.G_EXCEPTION_ERROR;
7031                       END IF;
7032                 End If;
7033                 --End Bug# 3548044
7034 
7035                 End If; --adj_txl_rec found
7036             End Loop;
7037             Close adj_txl_csr;
7038         End If; --rbr code csr
7039         CLOSE rbr_code_csr;
7040         OKL_API.END_ACTIVITY (x_msg_count,x_msg_data );
7041     EXCEPTION
7042     WHEN OKL_API.G_EXCEPTION_ERROR THEN
7043     If ( l_hdr_csr%ISOPEN ) Then
7044        CLOSE l_hdr_csr;
7045     End If;
7046 
7047     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7048                                l_api_name,
7049                                G_PKG_NAME,
7050                                'OKL_API.G_RET_STS_ERROR',
7051                                x_msg_count,
7052                                x_msg_data,
7053                                '_PVT');
7054     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
7055     If ( l_hdr_csr%ISOPEN ) Then
7056        CLOSE l_hdr_csr;
7057     End If;
7058 
7059     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7060                               l_api_name,
7061                               G_PKG_NAME,
7062                               'OKL_API.G_RET_STS_UNEXP_ERROR',
7063                               x_msg_count,
7064                               x_msg_data,
7065                               '_PVT');
7066     WHEN OTHERS THEN
7067     If ( l_hdr_csr%ISOPEN ) Then
7068        CLOSE l_hdr_csr;
7069     End If;
7070 
7071     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7072                               l_api_name,
7073                               G_PKG_NAME,
7074                               'OTHERS',
7075                               x_msg_count,
7076                               x_msg_data,
7077                               '_PVT');
7078 END MASS_REBOOK_ASSET;
7079 --------------------------------------------------------------------------------
7080 --Start of Comments
7081 --Procedure Name :  RELEASE_ASSET (Activate code branch for release)
7082 --Description    :  Will be called from activate asset and make re-lease adjustments
7083 --                  in FA
7084 --History        :
7085 --                 06-May-2002  ashish.singh Created
7086 -- Notes         :
7087 --      IN Parameters -
7088 --                     p_rel_chr_id    - contract id of released contract
7089 --
7090 --End of Comments
7091 --------------------------------------------------------------------------------
7092 PROCEDURE RELEASE_ASSET (p_api_version   IN  NUMBER,
7093                          p_init_msg_list IN  VARCHAR2,
7094                          x_return_status OUT NOCOPY VARCHAR2,
7095                          x_msg_count     OUT NOCOPY NUMBER,
7096                          x_msg_data      OUT NOCOPY VARCHAR2,
7097                          p_rel_chr_id    IN  NUMBER
7098                         ) IS
7099 
7100    l_return_status        VARCHAR2(1)  default OKL_API.G_RET_STS_SUCCESS;
7101    l_api_name             CONSTANT varchar2(30) := 'RELEASE_ASSET';
7102    l_api_version          CONSTANT NUMBER := 1.0;
7103    l_trx_type             Varchar2(30) := G_TRX_LINE_TYPE_RELEASE;
7104 
7105    --Cursor to get the k header infor
7106    --do you have records in trx contracts for re-lease - iguess no
7107    CURSOR k_hdr_csr (p_rel_chr_id IN NUMBER) IS
7108    SELECT khr.deal_type,
7109           chr.id,
7110           chr.sts_code,
7111           rul.rule_information1,
7112           chr.orig_system_id1,
7113           khr.pdt_id,
7114           chr.start_date,
7115           --Bug# 4631549
7116           chr.orig_system_source_code
7117    FROM   OKC_RULES_B       rul,
7118           OKL_K_HEADERS     khr,
7119           OKC_K_HEADERS_B   chr
7120    WHERE  rul.dnz_chr_id                  = chr.id
7121    AND    rul.rule_information_category   = 'LATOWN'
7122    AND    rul.dnz_chr_id                  = khr.id
7123    AND    khr.id                          = chr.id
7124    AND    chr.id                          = p_rel_chr_id
7125   /* --Bug#2522439
7126    --AND    chr.orig_system_source_code     = 'OKL_RELEASE';
7127    AND     exists (SELECT '1'
7128                FROM   OKC_RULES_B rul_rel_Ast
7129                WHERE  rul_rel_ast.dnz_chr_id = chr.id
7130                AND    rul_rel_ast.rule_information_category = 'LARLES'
7131                AND    nvl(rule_information1,'N') = 'Y');
7132    --Bug#2522439  */
7133 
7134    -- Bug# 15992711 Start of Modifications
7135   AND     exists (        SELECT '1'
7136                                FROM okl_k_lines kle
7137                               ,okc_k_lines_b cleb
7138                                WHERE cleb.dnz_chr_id = chr.id
7139                                AND cleb.chr_id = chr.id
7140                                AND cleb.id = kle.id
7141                                AND nvl(kle.re_lease_yn,'N') = 'Y');
7142    --Bug# 15992711 End of Modifications
7143    l_deal_type         OKL_K_HEADERS.deal_type%TYPE;
7144    l_rel_chr_id        OKC_K_HEADERS_B.ID%TYPE;
7145    l_sts_code          OKC_K_HEADERS_B.STS_CODE%TYPE;
7146    l_tax_owner         OKC_RULES_B.RULE_INFORMATION1%TYPE;
7147    l_orig_chr_id       OKC_K_HEADERS_B.ID%TYPE;
7148    --Bug# : 11.5.9 enhancement Multi GAAP
7149    l_pdt_id            OKL_K_HEADERS.pdt_id%TYPE;
7150    l_start_date        Date;
7151    l_rep_pdt_id        Number;
7152    l_rep_deal_type     Varchar2(150);
7153    l_Multi_GAAP_YN     Varchar2(1) := 'N';
7154    l_rep_pdt_book      OKX_AST_BKS_V.Book_Type_Code%Type;
7155    --Bug# 4631549
7156    l_orig_system_source_code okc_k_headers_b.orig_system_source_code%TYPE;
7157 
7158 ---------------- ---------------------------------------------------------------*/
7159 
7160    --cursor to get the modified transaction values against the release contract
7161    CURSOR adj_txl_csr (p_rel_chr_id IN NUMBER ) IS
7162    SELECT txl.in_service_date   in_service_date,
7163           txl.life_in_months    life_in_months,
7164           txl.depreciation_cost depreciation_cost,
7165           txl.depreciation_id   asset_category_id,
7166           txl.deprn_method      deprn_method,
7167           txl.deprn_rate        deprn_rate,
7168           txl.salvage_value     salvage_value,
7169           txl.corporate_book    book_type_code,
7170           txl.asset_number      asset_number,
7171           txl.kle_id            kle_id,
7172           --Bug# 3156924
7173           trx.trans_number,
7174           --Bug# 3533936
7175           txl.fa_location_id    fa_location_id,
7176           trx.id                tas_id,
7177           txl.salvage_value     corp_salvage_value,
7178           --Bug# 3631094
7179           txl.percent_salvage_value corp_percent_sv,
7180           txl.corporate_book    corp_book,
7181           fab.book_class        book_class,
7182           --Bug# 4028371
7183           txl.id                tal_id,
7184           --Bug# 3950089
7185           txl.percent_salvage_value pct_salvage_value,
7186           txl.percent_salvage_value corp_pct_salvage_value,
7187           --Bug# 6373605 start
7188           trx.id sla_source_header_id,
7189           txl.id sla_source_line_id,
7190           'OKL_TXL_ASSETS_B' sla_source_line_table,
7191           trx.try_id         sla_source_try_id,
7192           cle.cle_id         sla_source_kle_id
7193           --Bug# 6373605 end
7194    FROM   OKL_TRX_TYPES_TL  ttyp,
7195           OKL_TRX_ASSETS    trx,
7196           OKL_TXL_ASSETS_B  txl,
7197           OKC_K_LINES_B     cle,
7198           OKC_LINE_STYLES_B lse,
7199           -- Bug# 3631094
7200           FA_BOOK_CONTROLS  fab
7201    WHERE  txl.kle_id     = cle.id
7202    AND    cle.dnz_chr_id = p_rel_chr_id
7203    AND    cle.lse_id     = lse.id
7204 --effectivity
7205    --And    nvl(cle.start_date,p_effective_date) <= p_effective_date
7206    --And    nvl(cle.end_date,p_effective_date+1) >  p_effective_date
7207    AND    not exists (select '1'
7208                       from   OKC_STATUSES_B sts
7209                       Where  sts.code = cle.sts_code
7210                       --Bug# 2522268
7211                       --And    sts.ste_code in ('HOLD','EXPIRED','TERMINATED','CANCELED')
7212                       And    sts.ste_code in ('HOLD','EXPIRED','TERMINATED','CANCELLED')
7213                       )
7214    AND    lse.lty_code   = G_FA_LINE_LTY_CODE
7215    --Bug# 3156924:
7216    /*----------------------------------------------------
7217    --AND    exists (select  null
7218                   --from    OKL_TRX_ASSETS    trx,
7219                           --OKL_TRX_TYPES_TL  ttyp
7220                   --where   trx.id        = txl.tas_id
7221                   --and     trx.try_id    = ttyp.id
7222                   --and     ttyp.name     = 'Internal Asset Creation'
7223                   --and     ttyp.language = 'US'
7224                   --and     trx.tsu_code  <>  'PROCESSED'
7225                   --Bug#2522439
7226                   ----and     trx.tas_type   = G_TRX_HDR_TYPE_RELEASE)
7227                   --and     trx.tas_type   = G_TRX_HDR_TYPE_BOOK)
7228    -------------------------------------------------------*/
7229    AND     trx.id        = txl.tas_id
7230    and     trx.try_id    = ttyp.id
7231    and     ttyp.name     = 'Internal Asset Creation'
7232    and     ttyp.language = 'US'
7233    and     trx.tsu_code  <>  'PROCESSED'
7234    --Bug#2522439
7235    --and     trx.tas_type   = G_TRX_HDR_TYPE_RELEASE)
7236    and     trx.tas_type   = G_TRX_HDR_TYPE_RELEASE
7237    AND    txl.tal_type = G_TRX_LINE_TYPE_RELEASE
7238    --Bug# 3631094
7239    AND fab.book_type_code = txl.corporate_book
7240    UNION
7241    SELECT txl.in_service_date    in_service_date,
7242           txd.life_in_months_tax life_in_months,
7243           txd.cost               depreciation_cost,
7244           txl.depreciation_id    asset_category_id,
7245           txd.deprn_method_tax   deprn_method,
7246           txd.deprn_rate_tax     deprn_rate,
7247           txd.salvage_value      salvage_value,
7248           txd.tax_book           book_type_code,
7249           txd.asset_number       asset_number,
7250           txl.kle_id             kle_id,
7251           --Bug# 3156924
7252           trx.trans_number,
7253           --Bug# 3533936
7254           null                   fa_location_id,
7255           null                   tas_id,
7256           txl.salvage_value      corp_salvage_value,
7257           --Bug# 3631094
7258           txl.percent_salvage_value corp_percent_sv,
7259           txl.corporate_book    corp_book,
7260           fab.book_class        book_class,
7261           --Bug# 4028371
7262           null                  tal_id,
7263           --Bug# 3950089
7264           txl.percent_salvage_value pct_salvage_value,
7265           txl.percent_salvage_value corp_pct_salvage_value,
7266           --bug# 6373605 start
7267           trx.id       sla_source_header_id,
7268           txd.id       sla_source_line_id,
7269           'OKL_TXD_ASSETS_B' sla_source_line_table,
7270           trx.try_id   sla_source_try_id,
7271           cle.cle_id   sla_source_kle_id
7272           --Bug# 6373605 end
7273     FROM  OKL_TRX_TYPES_TL  ttyp,
7274           OKL_TRX_ASSETS    trx,
7275           OKL_TXD_ASSETS_B  txd,
7276           OKL_TXL_ASSETS_B  txl,
7277           OKC_K_LINES_B     cle,
7278           OKC_LINE_STYLES_B lse,
7279           -- Bug# 3631094
7280           FA_BOOK_CONTROLS  fab
7281     WHERE  txd.tal_id = txl.id
7282     AND    txl.kle_id     = cle.id
7283     AND    cle.dnz_chr_id = p_rel_chr_id
7284     AND    cle.lse_id     = lse.id
7285     --effectivity
7286     --And    nvl(cle.start_date,p_effective_date) <= p_effective_date
7287     --And    nvl(cle.end_date,p_effective_date+1) >  p_effective_date
7288     AND    not exists (select '1'
7289                       from   OKC_STATUSES_B sts
7290                       Where  sts.code = cle.sts_code
7291                       --Bug#2522268
7292                       --And    sts.ste_code in ('HOLD','EXPIRED','TERMINATED','CANCELED')
7293                       And    sts.ste_code in ('HOLD','EXPIRED','TERMINATED','CANCELLED')
7294                       )
7295    AND    lse.lty_code   = G_FA_LINE_LTY_CODE
7296    --bug# 3156924
7297   /*-------------------------------------------------------------
7298    --AND    exists (select  null
7299                   --from    OKL_TRX_ASSETS    trx,
7300                           --OKL_TRX_TYPES_TL  ttyp
7301                   --where   trx.id        = txl.tas_id
7302                   --and     trx.try_id    = ttyp.id
7303                   --and     ttyp.name     = 'Release'
7304                   --and     ttyp.language = 'US'
7305                   --and     trx.tsu_code <>  'PROCESSED'
7306                   --and     trx.tas_type  = G_TRX_HDR_TYPE_RELEASE)
7307   ---------------------------------------------------------------*/
7308   AND  trx.id        = txl.tas_id
7309   AND  trx.try_id    = ttyp.id
7310   and  ttyp.name     = 'Internal Asset Creation'
7311   and  ttyp.language = 'US'
7312   and  trx.tsu_code <>  'PROCESSED'
7313   and  trx.tas_type  = G_TRX_HDR_TYPE_RELEASE
7314   --bug# 3156924
7315   AND    txl.tal_type = G_TRX_LINE_TYPE_RELEASE
7316   --Bug# 3631094
7317   AND fab.book_type_code = txd.tax_book
7318   ORDER BY asset_number, book_class ;
7319 
7320    adj_txl_rec  adj_txl_csr%ROWTYPE;
7321 
7322   --cursor to get the actual values from FA for the contract
7323   CURSOR okx_ast_csr (p_asset_number     IN VARCHAR2,
7324                       p_book_type_code   IN VARCHAR2) is
7325   SELECT  okx.acquisition_date       in_service_date,
7326           okx.life_in_months         life_in_months,
7327           okx.cost                   cost,
7328           okx.depreciation_category  depreciation_category,
7329           okx.deprn_method_code      deprn_method_code,
7330           okx.adjusted_rate          adjusted_rate,
7331           okx.basic_rate             basic_rate,
7332           okx.salvage_value          salvage_value,
7333           --Bug# 3631094
7334           okx.percent_salvage_value  percent_salvage_value,
7335           okx.book_type_code         book_type_code,
7336           okx.book_class             book_class,
7337           okx.asset_number           asset_number,
7338           okx.asset_id               asset_id
7339    FROM   okx_ast_bks_v okx
7340    WHERE  okx.asset_number       = p_asset_number
7341    AND    okx.book_type_code    =  nvl(p_book_type_code,okx.book_type_code);
7342 
7343    okx_ast_rec   okx_ast_csr%ROWTYPE;
7344 
7345   l_cost_delta              Number;
7346   l_salvage_delta           Number;
7347   l_asset_fin_rec_adj       FA_API_TYPES.asset_fin_rec_type;
7348   l_asset_fin_rec_new       FA_API_TYPES.asset_fin_rec_type;
7349   l_adjust_yn               Varchar2(1);
7350   l_dummy_amount NUMBER;
7351 
7352   --cursor to get tax owner rule
7353   Cursor town_rul_csr (pchrid number) is
7354   Select rule_information1 tax_owner,
7355          id
7356   From   okc_rules_b rul
7357   where  rul.dnz_chr_id = pchrid
7358   and    rul.rule_information_category = 'LATOWN'
7359   and    nvl(rul.STD_TEMPLATE_YN,'N')  = 'N';
7360 
7361   l_town_rul      okc_rules_b.rule_information1%TYPE;
7362   l_town_rul_id   okc_rules_b.id%TYPE;
7363 
7364   --Bug# 2942543 :
7365   l_new_salvage_value number;
7366   l_new_cost          number;
7367 
7368   ---------------------------------------------------
7369   --Bug# 3143522 : 11.5.10 Subsidies
7370   ---------------------------------------------------
7371   cursor l_allast_csr (p_chr_id in number) is
7372   select cleb.id,
7373          --Bug# 3783518
7374          cleb.orig_system_id1
7375   from   okc_k_lines_b     cleb,
7376          okc_line_styles_b lseb,
7377          okc_statuses_b     stsb
7378   where  cleb.chr_id        = p_chr_id
7379   and    cleb.dnz_chr_id    = p_chr_id
7380   and    lseb.id            = cleb.lse_id
7381   and    lseb.lty_code      = G_FIN_AST_LINE_LTY_CODE
7382   and    stsb.code          = cleb.sts_code
7383   and    stsb.ste_code      not in ('HOLD','EXPIRED','TERMINATED','CANCELLED');
7384 
7385   l_asset_cle_id okc_k_lines_b.ID%TYPE;
7386 
7387   l_subsidy_exists      varchar2(1) default OKL_API.G_FALSE;
7388   l_total_discount      number;
7389   l_cost_adjustment     number;
7390 
7391   --cursor to get asset id
7392   cursor l_asset_csr (p_asset_cle_id in number) is
7393   select fab.asset_id          asset_id,
7394          ast_clet.name         asset_number,
7395          fab.cost              asset_cost,
7396          fab.book_type_code    book_type_code,
7397          txl.in_service_date   in_service_date,
7398          --bug# 3156924
7399          trx.trans_number,
7400          --Bug# 6373605 start
7401          trx.id sla_source_header_id,
7402          txl.id sla_source_line_id,
7403          trx.try_id sla_source_try_id,
7404          fa_cleb.cle_id sla_source_kle_id,
7405          fbc.book_class
7406          --Bug# 6373605 end
7407   from
7408          fa_books              fab,
7409          --Bug# 6373605 start
7410          fa_book_controls      fbc,
7411          --Bug# 6373605 end
7412          okc_k_items           fa_cim,
7413          okl_trx_types_tl      ttyp,
7414          okl_trx_assets        trx,
7415          okl_txl_assets_b      txl,
7416          okc_k_lines_b         fa_cleb,
7417          okc_line_styles_b     fa_lseb,
7418          okc_k_lines_tl        ast_clet
7419   where
7420          fab.asset_id               = to_number(fa_cim.object1_id1)
7421   and    fab.transaction_header_id_out is NULL
7422   --Bug# 6373605 start
7423   and    fab.book_type_code         = fbc.book_type_code
7424   --bug# 6373605 end
7425   and    fa_cim.object1_id2         = '#'
7426   and    fa_cim.jtot_object1_code   = 'OKX_ASSET'
7427   and    fa_cim.dnz_chr_id          = fa_cleb.dnz_chr_id
7428   and    fa_cim.cle_id              = fa_cleb.id
7429   and    txl.kle_id                 = fa_cleb.id
7430   and    txl.tal_type               = G_TRX_LINE_TYPE_RELEASE
7431   and    trx.id                     = txl.tas_id
7432   and    trx.try_id                 = ttyp.id
7433   --Bug# 2981308
7434   and    ttyp.name                  = 'Internal Asset Creation'
7435   --and    ttyp.name                  = 'Release'
7436   and    ttyp.language              = 'US'
7437   and    trx.tsu_code               <>  'PROCESSED'
7438   --Bug# 2981308
7439   and    trx.tas_type               = G_TRX_HDR_TYPE_RELEASE
7440   --and    trx.tas_type               = G_TRX_HDR_TYPE_RELEASE
7441   and    fa_cleb.cle_id             = p_asset_cle_id
7442   and    fa_lseb.id                 = fa_cleb.lse_id
7443   and    fa_lseb.lty_code           = G_FA_LINE_LTY_CODE
7444   and    ast_clet.id                = p_asset_cle_id
7445   and    ast_clet.language          = userenv('LANG');
7446 
7447   l_asset_rec     l_asset_csr%RowType;
7448 
7449   --Bug# 6373605 start
7450   Cursor l_txd_from_book_type_csr (p_book_type_code in varchar2,
7451                                p_tal_id         in number) is
7452   select id sla_source_line_id,
7453          tax_book
7454   from   okl_txd_Assets_b
7455   where  tal_id = p_tal_id
7456   and    tax_book = p_book_type_code;
7457 
7458   l_txd_from_book_type_rec l_txd_from_book_type_csr%ROWTYPE;
7459 
7460   l_sla_source_line_id number;
7461   l_sla_source_line_table OKL_EXT_FA_LINE_SOURCES_V.SOURCE_TABLE%TYPE;
7462   --Bug# 6373605 End
7463 
7464   --Bug# 3156924
7465   l_release_date      date;
7466   l_trans_number      okl_trx_assets.trans_number%TYPE;
7467   l_calling_interface varchar2(30) := 'OKLRACAB:Release';
7468 
7469   --BUG# 3548044
7470   l_release_allowed_on_mg_book  varchar2(1);
7471 
7472   ---------------------------------------------------
7473   --Bug# 3631094 : start
7474   ---------------------------------------------------
7475   --Cursor to set transaction status to Processed
7476   CURSOR tas_csr(p_chr_id in number) IS
7477   SELECT trx.id
7478   FROM   OKL_TRX_ASSETS    trx,
7479          OKL_TXL_ASSETS_B  txl,
7480          OKC_K_LINES_B     cle,
7481          OKC_LINE_STYLES_B lse
7482   WHERE  txl.kle_id     = cle.id
7483   AND    cle.dnz_chr_id = p_chr_id
7484   AND    cle.lse_id     = lse.id
7485   AND    not exists (select '1'
7486                      from   OKC_STATUSES_B sts
7487                      Where  sts.code = cle.sts_code
7488                      And    sts.ste_code in ('HOLD','EXPIRED','TERMINATED','CANCELLED')
7489                      )
7490   AND    lse.lty_code  =  G_FA_LINE_LTY_CODE
7491   AND    trx.id        =  txl.tas_id
7492   and    trx.tsu_code  <> 'PROCESSED'
7493   and    trx.tas_type  =  G_TRX_HDR_TYPE_RELEASE
7494   AND    txl.tal_type  =  G_TRX_LINE_TYPE_RELEASE;
7495 
7496   --Cursor to check if asset_id already exists in tax_book
7497   CURSOR chk_ast_bk_csr(p_book_type_code IN Varchar2,
7498                       p_asset_id       IN Number) is
7499   SELECT '!'
7500   FROM   OKX_AST_BKS_V
7501   WHERE  asset_id = p_asset_id
7502   AND    book_type_code = p_book_type_code
7503   AND    status = 'A';
7504 
7505   l_ast_bk_exists     Varchar2(1) default '?';
7506 
7507   --Cursor to chk book validity for an asset category
7508   CURSOR chk_cat_bk_csr(p_book_type_code IN VARCHAR2,
7509                         p_category_id    IN NUMBER) is
7510   SELECT '!'
7511   FROM   OKX_AST_CAT_BKS_V
7512   WHERE  CATEGORY_ID = p_category_id
7513   AND    BOOK_TYPE_CODE = p_book_type_code
7514   AND    STATUS = 'A';
7515 
7516   l_cat_bk_exists    Varchar2(1) default '?';
7517 
7518   --Cursor chk if corp book is the mass copy source book
7519   CURSOR chk_mass_cpy_book(p_corp_book IN Varchar2,
7520                            p_tax_book  IN Varchar2) is
7521   SELECT '!'
7522   FROM   OKX_ASST_BK_CONTROLS_V
7523   WHERE  book_type_code = p_tax_book
7524   AND    book_class = 'TAX'
7525   AND    mass_copy_source_book = p_corp_book
7526   AND    allow_mass_copy = 'YES'
7527   AND    copy_additions_flag = 'YES';
7528 
7529   l_mass_cpy_book   Varchar2(1) default '?';
7530 
7531   --Cursor to fetch book records for an asset
7532   Cursor ast_bks_csr(p_asset_id    IN NUMBER,
7533                      p_book_class  IN VARCHAR2) is
7534   select book_type_code,
7535          cost,
7536          salvage_value,
7537          percent_salvage_value
7538   from   okx_ast_bks_v
7539   where  asset_id = p_Asset_id
7540   and    book_class = p_book_class;
7541 
7542   ast_corp_book_rec    okx_ast_csr%ROWTYPE;
7543   ast_rep_book_rec     okx_ast_csr%ROWTYPE;
7544   l_bk_dfs_rec         bk_dfs_csr%ROWTYPE;
7545   l_asset_hdr_rec      FA_API_TYPES.asset_hdr_rec_type;
7546   l_talv_rec           talv_rec_type;
7547   l_no_data_found      BOOLEAN;
7548   l_asset_fin_rec      FA_API_TYPES.asset_fin_rec_type;
7549   l_adjust_cost        NUMBER;
7550   l_adj_salvage_value  NUMBER;
7551   l_adj_percent_sv     NUMBER;
7552 
7553   l_current_asset_number OKX_ASSETS_V.Name%Type;
7554   l_asset_corp_book_cost NUMBER;
7555   ---------------------------------------------------
7556   --Bug# 3631094 : end
7557   ---------------------------------------------------
7558 
7559   --Bug# 3783518
7560   CURSOR orig_pdt_csr(p_cle_id IN NUMBER) is
7561   SELECT pdt.reporting_pdt_id
7562   FROM okc_k_lines_b cle,
7563        okl_k_headers khr,
7564        okl_products pdt
7565   WHERE cle.id = p_cle_id
7566   AND   khr.id = cle.dnz_chr_id
7567   AND   pdt.id = khr.pdt_id;
7568 
7569   l_subsidy_asset_fin_rec_adj  FA_API_TYPES.asset_fin_rec_type;
7570   l_orig_system_id1    NUMBER;
7571   l_orig_reporting_pdt_id NUMBER;
7572 
7573 
7574   ------
7575   --Bug# 4028371
7576   -----
7577   l_fa_add_date_mg   date;
7578   l_fa_adj_date_mg   date;
7579   l_fa_adj_date      date;
7580   l_fa_tsfr_date     date;
7581   l_talv_date_rec    okl_tal_pvt.talv_rec_type;
7582   lx_talv_date_rec   okl_tal_pvt.talv_rec_type;
7583   ------
7584   --Bug# 4028371
7585   ------
7586   l_hdr_rec          l_hdr_csr%ROWTYPE;
7587 
7588   -- Bug# 4627009
7589   l_add_cap_fee      varchar2(1) ;
7590   l_cap_fee_delta number;
7591   l_cap_fee_delta_converted_amt number;
7592 
7593   Cursor cap_fee_csr(fa_cle_id   in number
7594                     ,rel_chr_id  in number) IS
7595   Select nvl(sum(cov_ast_kle.capital_amount),0) capitalized_fee
7596   From
7597        OKL_K_LINES       fee_kle,
7598        OKC_K_LINES_B     fee_cle,
7599        OKC_STATUSES_B    fee_sts,
7600        OKL_K_LINES       cov_ast_kle,
7601        OKC_K_LINES_B     cov_ast_cle,
7602        OKC_LINE_STYLES_B cov_ast_lse,
7603        OKC_STATUSES_B    cov_ast_sts,
7604        OKC_K_ITEMS       cov_ast_cim,
7605        OKC_K_LINES_B     fa_cle
7606   Where  fee_kle.id                    = fee_cle.id
7607   and    fee_kle.fee_type              = 'CAPITALIZED'
7608   and    fee_cle.id                    = cov_ast_cle.cle_id
7609   and    fee_cle.dnz_chr_id            = cov_ast_cle.dnz_chr_id
7610   and    fee_cle.sts_code              = fee_sts.code
7611   and    fee_sts.ste_code not in         ('HOLD', 'EXPIRED', 'TERMINATED', 'CANCELLED')
7612   and    cov_ast_kle.id                = cov_ast_cle.id
7613   and    cov_ast_cle.id                = cov_ast_cim.cle_id
7614   and    cov_ast_cle.lse_id            = cov_ast_lse.id
7615   and    cov_ast_lse.lty_code          = 'LINK_FEE_ASSET'
7616   and    cov_ast_cle.sts_code          = cov_ast_sts.code
7617   and    cov_ast_sts.ste_code not in    ('HOLD', 'EXPIRED', 'TERMINATED', 'CANCELLED')
7618   and    cov_ast_cle.dnz_chr_id        = cov_ast_cim.dnz_chr_id
7619   and    cov_ast_cim.object1_id1       = to_char(fa_cle.cle_id)
7620   and    cov_ast_cim.object1_id2       = '#'
7621   and    cov_ast_cim.jtot_object1_code = 'OKX_COVASST'
7622   and    fa_cle.id                     = fa_cle_id
7623   and    fee_cle.dnz_chr_id             = rel_chr_id ;
7624 
7625   --Bug# 4627009 end
7626 
7627   --5261704
7628   l_depreciate_flag  VARCHAR2(3);
7629 
7630   --Bug# 6373605 start
7631   l_dummy_asset_fin_rec_adj       FA_API_TYPES.asset_fin_rec_type;
7632   --Bug# 6373605 end
7633 
7634 BEGIN
7635 
7636      x_return_status := OKL_API.G_RET_STS_SUCCESS;
7637     -- Call start_activity to create savepoint, check compatibility
7638     -- and initialize message list
7639     x_return_status := OKL_API.START_ACTIVITY (
7640                                l_api_name
7641                                ,p_init_msg_list
7642                                ,'_PVT'
7643                                ,x_return_status);
7644     -- Check if activity started successfully
7645     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7646        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7647     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7648        RAISE OKL_API.G_EXCEPTION_ERROR;
7649     END IF;
7650 
7651     --get rebook reason code
7652     --dbms_output.put_line('before rebook reason code cursor :');
7653     OPEN  k_hdr_csr (p_rel_chr_id => p_rel_chr_id);
7654     Fetch k_hdr_csr into
7655                             l_deal_type,
7656                             l_rel_chr_id,
7657                             l_sts_code,
7658                             l_tax_owner,
7659                             l_orig_chr_id,
7660                             l_pdt_id,
7661                             l_start_date,
7662                             --Bug# 4631549
7663                             l_orig_system_source_code;
7664 
7665 
7666     If k_hdr_csr%NOTFOUND Then
7667        --rebook transacton not found
7668        --does this call for raising error
7669        Null;
7670     Else
7671 
7672         --Bug# :11.5.9 : Multi-GAAP Begin
7673         Get_Pdt_Params (p_api_version   => p_api_version,
7674                         p_init_msg_list => p_init_msg_list,
7675                         x_return_status => x_return_status,
7676                         x_msg_count     => x_msg_count,
7677                         x_msg_data      => x_msg_data,
7678                         p_pdt_id        => l_pdt_id,
7679                         p_pdt_date      => l_start_date,
7680                         x_rep_pdt_id    => l_rep_pdt_id,
7681                         x_tax_owner     => l_tax_owner,
7682                         x_rep_deal_type => l_rep_deal_type);
7683 
7684         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7685             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7686         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7687             RAISE OKL_API.G_EXCEPTION_ERROR;
7688         END IF;
7689 
7690     	If l_tax_owner is null then
7691         Open town_rul_csr(pchrid => p_rel_chr_id);
7692             Fetch town_rul_csr into l_town_rul,
7693                                     l_town_rul_id;
7694             If town_rul_csr%NOTFOUND Then
7695                 OKC_API.set_message(
7696                                   p_app_name     => G_APP_NAME,
7697                                   p_msg_name     => G_REQUIRED_VALUE,
7698                                   p_token1       => G_COL_NAME_TOKEN,
7699                                   p_token1_value => 'Tax Owner');
7700                 x_return_status := OKC_API.G_RET_STS_ERROR;
7701                 RAISE OKL_API.G_EXCEPTION_ERROR;
7702             Else
7703                 l_tax_owner := rtrim(ltrim(l_town_rul,' '),' ');
7704             End If;
7705         Close town_rul_csr;
7706         End If;
7707 
7708         OPEN l_hdr_csr( p_rel_chr_id );
7709         FETCH l_hdr_csr INTO l_hdr_rec;
7710         CLOSE l_hdr_csr;
7711 
7712         G_CHR_CURRENCY_CODE := l_hdr_rec.currency_code;
7713 	G_FUNC_CURRENCY_CODE := okl_accounting_util.get_func_curr_code;
7714 	G_CHR_AUTHORING_ORG_ID  := l_hdr_rec.authoring_org_id;
7715 	G_CHR_START_DATE    := l_hdr_rec.start_date;
7716 	G_CHR_REPORT_PDT_ID := l_hdr_rec.report_pdt_id;
7717 
7718 
7719        -- Bug# 3631094
7720        --BUG# 354804
7721        -- l_release_allowed_on_mg_book := 'Y';
7722         l_Multi_GAAP_YN := 'N';
7723         --checks wheter Multi-GAAP processing needs tobe done
7724         If l_rep_pdt_id is not NULL Then
7725 
7726       --Bug 7708944. SMEREDDY 01/15/2009.
7727       -- Implemented MG changes based on PM recommendation.
7728 
7729             l_Multi_GAAP_YN := 'Y';
7730 /*
7731             If l_deal_type = 'LEASEOP' and
7732             nvl(l_rep_deal_type,'X') = 'LEASEOP' and
7733             nvl(l_tax_owner,'X') = 'LESSOR' Then
7734                 l_Multi_GAAP_YN := 'Y';
7735             End If;
7736 
7737             If l_deal_type in ('LEASEDF','LEASEST') and
7738             nvl(l_rep_deal_type,'X') = 'LEASEOP' and
7739             nvl(l_tax_owner,'X') = 'LESSOR' Then
7740                 l_Multi_GAAP_YN := 'Y';
7741             End If;
7742 
7743             If l_deal_type in ('LEASEDF','LEASEST') and
7744             nvl(l_rep_deal_type,'X') = 'LEASEOP' and
7745             nvl(l_tax_owner,'X') = 'LESSEE' Then
7746                 l_Multi_GAAP_YN := 'Y';
7747             End If;
7748 
7749             If l_deal_type = 'LOAN' and
7750             nvl(l_rep_deal_type,'X') = 'LEASEOP' and
7751             nvl(l_tax_owner,'X') = 'LESSEE' Then
7752                 l_Multi_GAAP_YN := 'Y';
7753             End If;
7754 
7755            --Bug# 3548044
7756            --Bug# 3621663
7757            If l_deal_type  = 'LEASEOP' and
7758             nvl(l_rep_deal_type,'X') in ('LEASEDF','LEASEST')
7759             and nvl(l_tax_owner,'X') = 'LESSOR' then
7760                 l_Multi_GAAP_YN := 'Y';
7761                 -- Bug# 3631094
7762                 --l_release_allowed_on_mg_book := 'N';
7763             End If;
7764             If l_deal_type in ('LEASEDF','LEASEST') and
7765             nvl(l_rep_deal_type,'X') in ('LEASEDF','LEASEST') and
7766             nvl(l_tax_owner,'X') = 'LESSOR'  then
7767                 l_Multi_GAAP_YN := 'Y';
7768                 -- Bug# 3631094
7769                 --l_release_allowed_on_mg_book := 'N';
7770             End If;
7771             If l_deal_type in ('LEASEDF','LEASEST') and
7772             nvl(l_rep_deal_type,'X') in ('LEASEDF','LEASEST') and
7773             nvl(l_tax_owner,'X') = 'LESSEE'  then
7774                 l_Multi_GAAP_YN := 'Y';
7775                 -- Bug# 3631094
7776                 --l_release_allowed_on_mg_book := 'N';
7777             End If;
7778             --Bug# 3548044
7779 */
7780         End If;
7781 
7782         -- Bug# 3631094
7783         /*If l_Multi_GAAP_YN = 'Y' Then
7784             --get reporting product book type
7785             l_rep_pdt_book := fnd_profile.value('OKL_REPORTING_PDT_ASSET_BOOK');
7786         End If;*/
7787 
7788         --get reporting product book type
7789         l_rep_pdt_book := OKL_SYSTEM_PARAMS_ALL_PUB.get_system_param_value(OKL_SYSTEM_PARAMS_ALL_PUB.G_RPT_PROD_BOOK_TYPE_CODE);
7790 
7791 
7792         --dbms_output.put_line('deal type :'||l_deal_type);
7793         --dbms_output.put_line('rbr code :'||l_rbr_code);
7794         --get the adjusted parameters for all the lines from line transactions
7795         --dbms_output.put_line('deal type :'||l_deal_type);
7796         --get the adjusted parameters for all the lines from line transactions
7797 
7798        --Bug# 3631094
7799        l_current_asset_number := null;
7800        l_asset_corp_book_cost := null;
7801 
7802        Open adj_txl_csr(p_rel_chr_id     => p_rel_chr_id);
7803        Loop
7804            Fetch adj_txl_csr into adj_txl_rec;
7805 
7806            IF adj_txl_csr%NOTFOUND Then
7807 
7808               Exit;-- exit from adj_txl_csr
7809 
7810            ---------------------------------------------
7811            Else --adj_txl_csr  found
7812            ---------------------------------------------
7813 
7814               --Bug# 3631094
7815               IF (( l_current_asset_number is null ) OR
7816                  ( l_current_asset_number is not null and
7817                    l_current_asset_number <> adj_txl_rec.asset_number)) THEN
7818 
7819                 l_current_asset_number := adj_txl_rec.asset_number;
7820 
7821                 open okx_ast_csr(p_asset_number   => adj_txl_rec.asset_number,
7822                                  p_book_type_code => adj_txl_rec.corp_book);
7823                 fetch okx_ast_csr into ast_corp_book_rec;
7824                 close okx_ast_csr;
7825 
7826                 l_asset_corp_book_cost := ast_corp_book_rec.cost;
7827 
7828               END IF;
7829 
7830               ---------------------------------------------------------------
7831                -- Bug# 3548044 : A part of this bug the multi-gaap book should
7832                -- not mimic corporate book . It should adjust based on entered
7833                -- parameters. DF/ST(local) vs DF/ST(reporting) MG books are created with cost
7834                -- and SV zero to be untouched till offlease amortization process
7835                ---------------------------------------------------------------
7836                -- Bug# 3631094
7837                /*If ( adj_txl_rec.book_type_code = nvl(l_rep_pdt_book,OKL_API.G_MISS_CHAR))
7838                   and (l_release_allowed_on_mg_book = 'N') Then
7839                    --Exit;
7840                    Null; --do not do anything for reporting book
7841                Else*/
7842                    --get actual parameters from FA to get the Delta
7843                    Open okx_ast_csr (p_asset_number => adj_txl_rec.asset_number,
7844                                      p_book_type_code => adj_txl_rec.book_type_code);
7845 
7846                        Fetch okx_ast_csr into okx_ast_rec;
7847                        If okx_ast_csr%NOTFOUND Then
7848 
7849                          -- Bug# 3631094: start
7850                          Close okx_ast_csr;
7851 
7852                          -- add asset to reporting product book
7853                          If l_Multi_GAAP_YN = 'Y' AND
7854                             adj_txl_rec.book_type_code = l_rep_pdt_book Then
7855 
7856                            open okx_ast_csr(p_asset_number   => adj_txl_rec.asset_number,
7857                                             p_book_type_code => adj_txl_rec.corp_book);
7858                            fetch okx_ast_csr into ast_corp_book_rec;
7859                            close  okx_ast_csr;
7860 
7861                            --chk if asset category is valid for the tax book
7862                            l_cat_bk_exists := '?';
7863                            open chk_cat_bk_csr(p_book_type_code => adj_txl_rec.book_type_code,
7864                                                p_category_id    => adj_txl_rec.asset_category_id);
7865                            Fetch chk_cat_bk_csr into l_cat_bk_exists;
7866                            Close chk_cat_bk_csr;
7867 
7868                            If l_cat_bk_exists = '?' Then
7869                              OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
7870          	                              p_msg_name     => G_FA_INVALID_BK_CAT,
7871                                           p_token1       => G_FA_BOOK,
7872                                           p_token1_value => adj_txl_rec.book_type_code,
7873                                           p_token2       => G_ASSET_CATEGORY,
7874                                           p_token2_value => to_char(adj_txl_rec.asset_category_id)
7875                                          );
7876                              RAISE OKL_API.G_EXCEPTION_ERROR;
7877                            Else
7878                              --check if asset already exists in tax book
7879                              l_ast_bk_exists := '?';
7880                              Open chk_ast_bk_csr(p_book_type_code => adj_txl_rec.book_type_code,
7881                                                  p_asset_id       => ast_corp_book_rec.asset_id);
7882                              Fetch chk_ast_bk_csr into l_ast_bk_exists;
7883                              Close chk_ast_bk_csr;
7884 
7885                              If l_ast_bk_exists = '!' Then --asset already exists in tax book
7886                                null; --do not have to add again
7887                              Else
7888                              --chk if corp book is the mass copy book for the tax book
7889                              l_mass_cpy_book := '?';
7890                              OPEN chk_mass_cpy_book(
7891                                                   p_corp_book => adj_txl_rec.corp_book,
7892                                                   p_tax_book  => adj_txl_rec.book_type_code);
7893                              Fetch chk_mass_cpy_book into l_mass_cpy_book;
7894                              Close chk_mass_cpy_book;
7895 
7896                              If l_mass_cpy_book = '?' Then
7897                                OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
7898 				                           p_msg_name     => G_FA_TAX_CPY_NOT_ALLOWED,
7899                                                    p_token1       => G_FA_BOOK,
7900                                                    p_token1_value => adj_txl_rec.book_type_code
7901 				                                  );
7902                                RAISE OKL_API.G_EXCEPTION_ERROR;
7903                              Else
7904                                 --can masscopy
7905                                 --intialize talv record for tax book
7906 
7907                                 l_talv_rec := get_talv_rec(adj_txl_rec.kle_id, l_trx_type, l_no_data_found);
7908                                 If l_no_data_found = TRUE Then
7909                                   --dbms_output.put_line('no asset creation transaction records ...!');
7910                                   OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
7911 		                                          p_msg_name     => G_FA_TRX_REC_NOT_FOUND,
7912                                                       p_token1       => G_FA_LINE_ID,
7913                                                       p_token1_value => to_char(adj_txl_rec.kle_id)
7914 				                              );
7915                                   RAISE OKL_API.G_EXCEPTION_ERROR;
7916                                 End if;
7917 
7918                                 l_talv_rec.corporate_book        := adj_txl_rec.book_type_code;
7919                                 l_talv_rec.dnz_asset_id          := ast_corp_book_rec.asset_id;
7920                                 l_talv_rec.depreciation_cost     := l_asset_corp_book_cost;
7921                                 l_talv_rec.life_in_months        := adj_txl_rec.life_in_months;
7922                                 l_talv_rec.deprn_method          := adj_txl_rec.deprn_method;
7923                                 l_talv_rec.deprn_rate            := adj_txl_rec.deprn_rate;
7924                                 l_talv_rec.salvage_value         := adj_txl_rec.corp_salvage_value;
7925                                 l_talv_rec.percent_salvage_value := adj_txl_rec.corp_percent_sv;
7926 
7927                                 l_release_date := l_start_date;
7928                                 l_trans_number := adj_txl_rec.trans_number;
7929 
7930                                 --Bug# 5261704 : Set depreciate flag to 'NO' if cost will be adjusted to zero
7931                                 l_depreciate_flag := 'YES';
7932                                 IF (l_rep_deal_type in (G_DF_LEASE_BK_CLASS,G_ST_LEASE_BK_CLASS)) THEN
7933                                     l_depreciate_flag := 'NO';
7934                                 End If;
7935                                 --End Bug# 5261704
7936 
7937                                 --call mass additions add for tax book
7938                                 FIXED_ASSET_ADD(p_api_version       => p_api_version,
7939                                                 p_init_msg_list     => p_init_msg_list,
7940                                                 x_return_status     => x_return_status,
7941                                                 x_msg_count         => x_msg_count,
7942                                                 x_msg_data          => x_msg_data,
7943                                                 p_talv_rec          => l_talv_rec,
7944                                                 p_trans_number      => l_trans_number,
7945                                                 p_calling_interface => l_calling_interface,
7946                                                 --Bug# 5261704
7947                                                 p_depreciate_flag   => l_depreciate_flag,
7948             --Bug# 6373605--SLA populate source
7949             p_sla_source_header_id    => adj_txl_rec.sla_source_header_id,
7950             p_sla_source_header_table => 'OKL_TRX_ASSETS',
7951             p_sla_source_try_id       => adj_txl_rec.sla_source_try_id,
7952             p_sla_source_line_id      => adj_txl_rec.sla_source_line_id,
7953             p_sla_source_line_table   => adj_txl_rec.sla_source_line_table,
7954             p_sla_source_chr_id       => p_rel_chr_id,
7955             p_sla_source_kle_id       => adj_txl_rec.sla_source_kle_id,
7956             p_sla_asset_chr_id        => p_rel_chr_id,
7957             --Bug# 6373605--SLA populate sources
7958                                                 --Bug# 4028371
7959                                                 x_fa_trx_date       => l_fa_add_date_mg,
7960                                                 x_asset_hdr_rec     => l_asset_hdr_rec);
7961 
7962                                 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7963                                      RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7964                                 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7965                                      RAISE OKL_API.G_EXCEPTION_ERROR;
7966                                 END IF;
7967 
7968                                 IF (l_rep_deal_type in (G_DF_LEASE_BK_CLASS,G_ST_LEASE_BK_CLASS)) THEN
7969 
7970                                   open okx_ast_csr(p_asset_number   => adj_txl_rec.asset_number,
7971                                                    p_book_type_code => l_rep_pdt_book);
7972                                   fetch okx_ast_csr into ast_rep_book_rec;
7973                                   close okx_ast_csr;
7974 
7975                                   l_adjust_cost := (-1)* ast_rep_book_rec.cost;
7976                                   l_adj_salvage_value := (-1)*ast_rep_book_rec.salvage_value;
7977                                   l_adj_percent_sv := (-1)*ast_rep_book_rec.percent_salvage_value;
7978 
7979                                   IF nvl(l_adjust_cost,0) = 0 and nvl(l_adj_salvage_value,0) = 0
7980                                      and nvl(l_adj_percent_sv,0) = 0 Then
7981                                      Null;
7982                                   ELSE
7983                                     FIXED_ASSET_ADJUST_COST
7984                                     (p_api_version       => p_api_version,
7985                                      p_init_msg_list     => p_init_msg_list,
7986                                      x_return_status     => x_return_status,
7987                                      x_msg_count         => x_msg_count,
7988                                      x_msg_data          => x_msg_data,
7989                                      p_chr_id            => p_rel_chr_id,
7990                                      p_asset_id          => ast_corp_book_rec.asset_id,
7991                                      p_book_type_code    => l_rep_pdt_book,
7992                                      p_adjust_cost       => l_adjust_cost,
7993                                      p_adj_salvage_value => l_adj_salvage_value,
7994                                      p_adj_percent_sv    => l_adj_percent_sv,
7995                                      p_trans_number      => l_trans_number,
7996                                      p_calling_interface => l_calling_interface,
7997                                      p_adj_date          => l_release_date,
7998             --Bug# 6373605--SLA populate source
7999             p_sla_source_header_id    => adj_txl_rec.sla_source_header_id,
8000             p_sla_source_header_table => 'OKL_TRX_ASSETS',
8001             p_sla_source_try_id       => adj_txl_rec.sla_source_try_id,
8002             p_sla_source_line_id      => adj_txl_rec.sla_source_line_id,
8003             p_sla_source_line_table   => adj_txl_rec.sla_source_line_table,
8004             p_sla_source_chr_id       => p_rel_chr_id,
8005             p_sla_source_kle_id       => adj_txl_rec.sla_source_kle_id,
8006             p_sla_asset_chr_id        => p_rel_chr_id,
8007             --Bug# 6373605--SLA populate sources
8008                                      --Bug# 4028371
8009                                      x_fa_trx_date       => l_fa_adj_date_mg,
8010                                      x_asset_fin_rec     => l_asset_fin_rec);
8011 
8012                                     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8013                                       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8014                                     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8015                                       RAISE OKL_API.G_EXCEPTION_ERROR;
8016                                     END IF;
8017                                   END IF;
8018                                 END IF;
8019 
8020                              End If; --can mass copy into tax book
8021                             End If; --asset does not exist in tax book
8022                            End If; -- valid tax book for category
8023                          End If; -- l_Multi_GAAP_YN = 'Y'
8024                          -- Bug 3631094: end
8025 
8026                        Else
8027 
8028                            --Bug# 3631094
8029                            Close okx_ast_csr;
8030 
8031                            --initialize
8032                            l_adjust_yn := 'N';
8033                            l_cost_delta := 0;
8034                            l_salvage_delta := 0;
8035 
8036                            --Bug# 3548044 : Removed comments
8037                            l_asset_fin_rec_adj.cost                   := null;
8038                            l_asset_fin_rec_adj.salvage_value          := null;
8039                            l_asset_fin_rec_adj.date_placed_in_service := null;
8040                            l_asset_fin_rec_adj.life_in_months         := null;
8041                            l_asset_fin_rec_adj.deprn_method_code      := null;
8042                            l_asset_fin_rec_adj.basic_rate             := null;
8043                            l_asset_fin_rec_adj.adjusted_rate          := null;
8044                            --Bug# 3950089
8045                            l_asset_fin_rec_adj.percent_salvage_value  := null;
8046                            --Bug# 3548044 : Removed comments
8047 
8048                            --Bug# 4627009
8049                            l_add_cap_fee:='Y';
8050                            --Include Cap fee
8051 
8052                          -- Bug# 5150150 -- Don't Include Cap Fee for Re-lease contracts
8053                           l_cap_fee_delta := 0;
8054                           l_cap_fee_delta_converted_amt := 0;
8055                          IF NVL(l_orig_system_source_code,OKL_API.G_MISS_CHAR) <> 'OKL_RELEASE' THEN
8056 
8057                            open cap_fee_csr(fa_cle_id   => adj_txl_rec.kle_id
8058                                             ,rel_chr_id  => p_rel_chr_id);
8059                            fetch cap_fee_csr into l_cap_fee_delta;
8060                            close cap_fee_csr;
8061                            l_cap_fee_delta := NVL(l_cap_fee_delta,0);
8062 
8063                            l_cap_fee_delta_converted_amt := 0;
8064                            convert_2functional_currency(
8065                                          p_api_version   => p_api_version,
8066                                          p_init_msg_list => p_init_msg_list,
8067                                          x_return_status => x_return_status,
8068                                          x_msg_count     => x_msg_count,
8069                                          x_msg_data      => x_msg_data,
8070                                          p_chr_id        => p_rel_chr_id,
8071                                          p_amount        => l_cap_fee_delta,
8072                                          x_amount        => l_cap_fee_delta_converted_amt);
8073 
8074                            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8075                                RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8076                            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8077                                RAISE OKL_API.G_EXCEPTION_ERROR;
8078                            END IF;
8079 
8080                            l_cap_fee_delta_converted_amt := NVL(l_cap_fee_delta_converted_amt,0);
8081                          END IF;   --Bug# 5150150
8082 
8083                            if (l_cap_fee_delta_converted_amt>0) THEN
8084 			           l_add_cap_fee:='Y';
8085 			         else
8086 				     l_add_cap_fee:='N';
8087                            END IF;
8088                            --Bug# 4627009 end
8089 
8090       ------------------------------------------------------------------
8091       -- Bug# 3533936 : Update of Asset cost should not be allowed for a
8092       -- Re-lease contract.
8093       /*---------------------------------------------------------------
8094 
8095                            l_dummy_amount := null;
8096                            convert_2functional_currency(
8097                                          p_api_version   => p_api_version,
8098                                          p_init_msg_list => p_init_msg_list,
8099 	                                 x_return_status => x_return_status,
8100                                          x_msg_count     => x_msg_count,
8101                                          x_msg_data      => x_msg_data,
8102                                          p_chr_id        => p_rel_chr_id,
8103 		                         p_amount        => adj_txl_rec.depreciation_cost,
8104 		                         x_amount        => l_dummy_amount);
8105 
8106                            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8107                                RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8108                            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8109                                RAISE OKL_API.G_EXCEPTION_ERROR;
8110                            END IF;
8111 
8112                            --calculate deltas
8113                            l_cost_delta     := (l_dummy_amount - okx_ast_rec.cost);
8114 
8115       -----------------------------------------------------------------------*/
8116       --Bug# 3533936 : End of commented code
8117       ------------------------------------------------------------------------
8118 
8119                            --Bug# 3548044 : Added if-else clause for reporting product books
8120                            If okx_ast_rec.book_type_code <> nvl(l_rep_pdt_book,OKL_API.G_MISS_CHAR) then
8121 
8122                              --Bug# 3950089
8123                              If (okx_ast_rec.percent_salvage_value is not null) Then
8124 
8125                                If (adj_txl_rec.pct_salvage_value is null) or
8126                                   (adj_txl_rec.salvage_value is not null) Then
8127 
8128                                  OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
8129                                                      p_msg_name     => 'OKL_LA_REVISE_SALVAGE_TYPE',
8130                                                      p_token1       => G_ASSET_NUMBER_TOKEN,
8131                                                      p_token1_value => okx_ast_rec.asset_number
8132                                                     );
8133                                  x_return_status := OKL_API.G_RET_STS_ERROR;
8134                                  RAISE OKL_API.G_EXCEPTION_ERROR;
8135                                End if;
8136 
8137                              Elsif (okx_ast_rec.salvage_value is not null) Then
8138 
8139                                If (adj_txl_rec.salvage_value is null) Then
8140 
8141                                  OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
8142                                                      p_msg_name     => 'OKL_LA_REVISE_SALVAGE_TYPE',
8143                                                      p_token1       => G_ASSET_NUMBER_TOKEN,
8144                                                      p_token1_value => okx_ast_rec.asset_number
8145                                                     );
8146                                  x_return_status := OKL_API.G_RET_STS_ERROR;
8147                                  RAISE OKL_API.G_EXCEPTION_ERROR;
8148                                End if;
8149                              End If;
8150 
8151                              If (okx_ast_rec.percent_salvage_value is not null) and
8152                                 (okx_ast_rec.book_class = 'CORPORATE') Then
8153 
8154                                l_salvage_delta  := ((adj_txl_rec.pct_salvage_value/100)
8155                                                    - okx_ast_rec.percent_salvage_value);
8156 
8157                              Else
8158                                l_dummy_amount := null;
8159                                convert_2functional_currency(
8160                                          p_api_version   => p_api_version,
8161                                          p_init_msg_list => p_init_msg_list,
8162                                          x_return_status => x_return_status,
8163                                          x_msg_count     => x_msg_count,
8164                                          x_msg_data      => x_msg_data,
8165                                          p_chr_id        => p_rel_chr_id,
8166                                          p_amount        => adj_txl_rec.salvage_value,
8167                                          x_amount        => l_dummy_amount);
8168 
8169                                IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8170                                    RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8171                                ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8172                                    RAISE OKL_API.G_EXCEPTION_ERROR;
8173                                END IF;
8174 
8175                                l_salvage_delta  := (l_dummy_amount - okx_ast_rec.salvage_value);
8176                              End if;
8177 
8178                            ElsIf okx_ast_rec.book_type_code = nvl(l_rep_pdt_book,OKL_API.G_MISS_CHAR) then
8179 
8180                              --Bug# 3950089
8181                              If (okx_ast_rec.percent_salvage_value is not null) Then
8182 
8183                                If (adj_txl_rec.corp_pct_salvage_value is null) or
8184                                   (adj_txl_rec.corp_salvage_value is not null) Then
8185 
8186                                  OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
8187                                                      p_msg_name     => 'OKL_LA_REVISE_SALVAGE_TYPE',
8188                                                      p_token1       => G_ASSET_NUMBER_TOKEN,
8189                                                      p_token1_value => okx_ast_rec.asset_number
8190                                                     );
8191                                  x_return_status := OKL_API.G_RET_STS_ERROR;
8192                                  RAISE OKL_API.G_EXCEPTION_ERROR;
8193                                End if;
8194 
8195                              Elsif (okx_ast_rec.salvage_value is not null) Then
8196 
8197                                If (adj_txl_rec.corp_salvage_value is null) Then
8198 
8199                                  OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
8200                                                      p_msg_name     => 'OKL_LA_REVISE_SALVAGE_TYPE',
8201                                                      p_token1       => G_ASSET_NUMBER_TOKEN,
8202                                                      p_token1_value => okx_ast_rec.asset_number
8203                                                     );
8204                                  x_return_status := OKL_API.G_RET_STS_ERROR;
8205                                  RAISE OKL_API.G_EXCEPTION_ERROR;
8206                                End if;
8207                              End If;
8208 
8209                              If (okx_ast_rec.percent_salvage_value is not null) Then
8210 
8211                                l_salvage_delta  := ((adj_txl_rec.corp_pct_salvage_value/100)
8212                                                    - okx_ast_rec.percent_salvage_value);
8213 
8214                              Else
8215                                l_dummy_amount := null;
8216                                convert_2functional_currency(
8217                                          p_api_version   => p_api_version,
8218                                          p_init_msg_list => p_init_msg_list,
8219                                          x_return_status => x_return_status,
8220                                          x_msg_count     => x_msg_count,
8221                                          x_msg_data      => x_msg_data,
8222                                          p_chr_id        => p_rel_chr_id,
8223                                          p_amount        => adj_txl_rec.corp_salvage_value,
8224                                          x_amount        => l_dummy_amount);
8225 
8226                                IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8227                                    RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8228                                ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8229                                    RAISE OKL_API.G_EXCEPTION_ERROR;
8230                                END IF;
8231 
8232                                l_salvage_delta  := (l_dummy_amount - okx_ast_rec.salvage_value);
8233                              End If;
8234 
8235                            End If;
8236                            --Bug# 3548044 end
8237 
8238                            -- Bug# 3631094: start
8239 
8240                            --  Update of Asset cost
8241                            If okx_ast_rec.book_type_code = nvl(l_rep_pdt_book,OKL_API.G_MISS_CHAR) Then
8242 
8243                              If ( nvl(l_rep_deal_type,OKL_API.G_MISS_CHAR) = OKL_API.G_MISS_CHAR AND
8244                                   okx_ast_rec.cost <> 0 ) Then
8245 
8246                                --Bug# 3872534
8247                                -- Adjust Asset COST and salvage value in
8248                                -- Reporting Book  to zero, if the product is
8249                                -- not a Multi-Gaap product
8250 
8251                                l_cost_delta := -1 * okx_ast_rec.cost;
8252                                l_asset_fin_rec_adj.cost := l_cost_delta;
8253                                l_adjust_yn := 'Y';
8254                                --Bug# 4627009
8255                                l_add_cap_fee:='N';
8256                                --Bug# 4627009 end
8257 
8258                              Elsif ( l_rep_deal_type = G_OP_LEASE_BK_CLASS AND
8259                                      l_Multi_GAAP_YN = 'Y' AND
8260                                      okx_ast_rec.cost = 0 ) Then
8261 
8262                                -- Adjust Asset cost in Reporting book to Asset
8263                                -- cost in  Corp book, if Reporting
8264                                -- product is OP Lease and Asset cost in
8265                                -- Reporting book is zero
8266 
8267                                l_cost_delta :=  l_asset_corp_book_cost;
8268                                l_asset_fin_rec_adj.cost := l_cost_delta;
8269                                l_adjust_yn := 'Y';
8270 
8271                              Elsif ( l_rep_deal_type in (G_DF_LEASE_BK_CLASS,G_ST_LEASE_BK_CLASS) AND
8272                                      l_Multi_GAAP_YN = 'Y' AND
8273                                      okx_ast_rec.cost <> 0 ) Then
8274 
8275                                --Bug# 3872534
8276                                -- Adjust Asset COST in Reporting book to zero
8277                                -- if Reporting product is DF/ST Lease
8278 
8279                                l_cost_delta := -1 * okx_ast_rec.cost;
8280                                l_asset_fin_rec_adj.cost := l_cost_delta;
8281                                l_adjust_yn := 'Y';
8282                                --Bug# 4627009
8283                                l_add_cap_fee:='N';
8284                                --Bug# 4627009 end
8285 
8286                              End If;
8287 
8288                            ElsIf ( l_deal_type in (G_DF_LEASE_BK_CLASS,G_ST_LEASE_BK_CLASS) and
8289                                    l_tax_owner = 'LESSOR' and
8290                                    okx_ast_rec.book_class = 'CORPORATE') OR
8291                                  ( l_deal_type in (G_DF_LEASE_BK_CLASS,G_ST_LEASE_BK_CLASS) and
8292                                    l_tax_owner = 'LESSEE' ) Then
8293 
8294                               --Bug# 3872534
8295                               -- Adjust Asset COST in Corp book to zero
8296                               -- if Local product is DF/ST Lease
8297                               -- Adjust Asset COST in Tax book to zero
8298                               -- if Local product is DF/ST Lease and Tax Owner
8299                               -- is Lessee
8300 
8301                               If  okx_ast_rec.cost <> 0 Then
8302                                 l_cost_delta := -1 * okx_ast_rec.cost;
8303                                 l_asset_fin_rec_adj.cost := l_cost_delta;
8304                                 l_adjust_yn := 'Y';
8305                               End If;
8306                               --Bug# 4627009
8307                               l_add_cap_fee:='N';
8308                               --Bug# 4627009 end
8309 
8310                            End If;
8311 
8312 
8313                            --  Update of Asset Salvage Value
8314                            If okx_ast_rec.book_type_code = nvl(l_rep_pdt_book,OKL_API.G_MISS_CHAR) Then
8315 
8316                              If ( nvl(l_rep_deal_type,OKL_API.G_MISS_CHAR) = OKL_API.G_MISS_CHAR) THEN
8317 
8318                                 -- Adjust Asset cost and salvage value in
8319                                 -- Reporting Book to zero, if the product
8320                                 -- is not a Multi-Gaap product
8321 
8322                                 --Bug# 3950089
8323                                 If (okx_ast_rec.percent_salvage_value is not null) And
8324                                    (okx_ast_rec.percent_salvage_value <> 0) Then
8325                                   l_salvage_delta := -1 * okx_ast_rec.percent_salvage_value;
8326                                   l_asset_fin_rec_adj.percent_salvage_value := l_salvage_delta;
8327                                   l_adjust_yn := 'Y';
8328 
8329                                 Elsif  (okx_ast_rec.salvage_value is not null) And
8330                                        (okx_ast_rec.salvage_value <> 0) Then
8331                                   l_salvage_delta := -1 * okx_ast_rec.salvage_value;
8332                                   l_asset_fin_rec_adj.salvage_value := l_salvage_delta;
8333                                   l_adjust_yn := 'Y';
8334 
8335                                 Else
8336                                   l_salvage_delta := 0;
8337                                 End if;
8338 
8339                              Elsif ( l_rep_deal_type = G_OP_LEASE_BK_CLASS AND
8340                                   l_Multi_GAAP_YN = 'Y' AND
8341                                   l_salvage_delta  <> 0 ) Then
8342 
8343                                   -- Adjust Salvage value in Reporting book
8344                                   -- to salvage value in Corp Book if
8345                                   -- Reporting product is OP Lease
8346 
8347                                   --Bug# 3950089
8348                                   If (okx_ast_rec.percent_salvage_value is not null) Then
8349                                     l_asset_fin_rec_adj.percent_salvage_value := l_salvage_delta;
8350                                   Else
8351                                     l_asset_fin_rec_adj.salvage_value := l_salvage_delta;
8352                                   End If;
8353                                   l_adjust_yn := 'Y';
8354 
8355                              Elsif ( l_rep_deal_type in (G_DF_LEASE_BK_CLASS,G_ST_LEASE_BK_CLASS) AND
8356                                      l_Multi_GAAP_YN = 'Y' AND
8357                                      okx_ast_rec.salvage_value <> 0 ) Then
8358 
8359                                -- Adjust salvage value in Reporting book to zero
8360                                -- if Reporting product is DF/ST Lease
8361 
8362                                --Bug# 3950089
8363                                If (okx_ast_rec.percent_salvage_value is not null) And
8364                                   (okx_ast_rec.percent_salvage_value <> 0) Then
8365                                  l_salvage_delta := -1 * okx_ast_rec.percent_salvage_value;
8366                                  l_asset_fin_rec_adj.percent_salvage_value := l_salvage_delta;
8367                                  l_adjust_yn := 'Y';
8368 
8369                                Elsif (okx_ast_rec.salvage_value is not null) And
8370                                      (okx_ast_rec.salvage_value <> 0) Then
8371 
8372                                  l_salvage_delta := -1 * okx_ast_rec.salvage_value;
8373                                  l_asset_fin_rec_adj.salvage_value := l_salvage_delta;
8374                                  l_adjust_yn := 'Y';
8375                                End If;
8376 
8377                              Else
8378                                l_salvage_delta := 0;
8379                              End If;
8380 
8381                            Elsif ( l_deal_type = G_OP_LEASE_BK_CLASS AND
8382                                    okx_ast_rec.book_class = 'CORPORATE' AND
8383                                    l_salvage_delta <> 0 ) Then
8384 
8385                                -- Adjust Salvage value in Corp book to user
8386                                -- entered salvage value, if Local product
8387                                -- is OP Lease
8388 
8389                                --Bug# 3950089
8390                                If (okx_ast_rec.percent_salvage_value is not null) Then
8391                                  l_asset_fin_rec_adj.percent_salvage_value := l_salvage_delta;
8392                                Else
8393                                  l_asset_fin_rec_adj.salvage_value := l_salvage_delta;
8394                                End if;
8395                                l_adjust_yn := 'Y';
8396 
8397                            Elsif ((l_deal_type = G_OP_LEASE_BK_CLASS and okx_ast_rec.book_class = 'TAX') OR
8398                                   (l_deal_type in (G_DF_LEASE_BK_CLASS,G_ST_LEASE_BK_CLASS))
8399                                  ) Then
8400 
8401                                 -- Adjust salvage value in Corp book to zero
8402                                 -- if Local product is DF/ST Lease
8403                                 -- Adjust salvage value in Tax book to zero
8404                                 -- if Local product is OP Lease or DF/ST Lease
8405 
8406                                 --Bug# 3950089
8407                                 If (okx_ast_rec.percent_salvage_value is not null) And
8408                                    (okx_ast_rec.percent_salvage_value <> 0) Then
8409                                   l_salvage_delta := -1 * okx_ast_rec.percent_salvage_value;
8410                                   l_asset_fin_rec_adj.percent_salvage_value := l_salvage_delta;
8411                                   l_adjust_yn := 'Y';
8412 
8413                                 Elsif (okx_ast_rec.salvage_value is not null) And
8414                                       (okx_ast_rec.salvage_value <> 0) Then
8415 
8416                                   l_salvage_delta := -1 * okx_ast_rec.salvage_value;
8417                                   l_asset_fin_rec_adj.salvage_value := l_salvage_delta;
8418                                   l_adjust_yn := 'Y';
8419                                 Else
8420                                   l_salvage_delta := 0;
8421                                 End If;
8422 
8423                            End If;
8424                            --Bug# 3631094: end
8425       ------------------------------------------------------------------
8426       -- Bug# 3533936 : Update of In-service date should not be allowed for a
8427       -- Re-lease contract.
8428       /*---------------------------------------------------------------
8429 
8430                            If  trunc(nvl(adj_txl_rec.in_service_date,okx_ast_rec.in_service_date)) <> trunc(okx_ast_rec.in_service_date) Then
8431                               l_asset_fin_rec_adj.date_placed_in_service := nvl(adj_txl_rec.in_service_date,okx_ast_rec.in_service_date);
8432                               l_adjust_yn := 'Y';
8433                            End If;
8434       -----------------------------------------------------------------------*/
8435       --Bug# 3533936 : End of commented code
8436       ------------------------------------------------------------------------
8437 
8438                            If  nvl(adj_txl_rec.life_in_months,okx_ast_rec.life_in_months) <> okx_ast_rec.life_in_months Then
8439                               l_asset_fin_rec_adj.deprn_method_code := nvl(adj_txl_rec.deprn_method,okx_ast_rec.deprn_method_code);
8440                               l_asset_fin_rec_adj.life_in_months    := nvl(adj_txl_rec.life_in_months,okx_ast_rec.life_in_months);
8441                               l_asset_fin_rec_adj.basic_rate        := adj_txl_rec.deprn_rate;
8442                               l_asset_fin_rec_adj.adjusted_rate     := adj_txl_rec.deprn_rate;
8443                               l_adjust_yn := 'Y';
8444                            End If;
8445 
8446                            --category updates not supported by API
8447                            --If adj_txl_rec.depreciation_id <> okx_ast_rec.depreciation_category Then
8448                            If nvl(adj_txl_rec.deprn_method,okx_ast_rec.deprn_method_code) <> okx_ast_rec.deprn_method_code Then
8449                               l_asset_fin_rec_adj.deprn_method_code := nvl(adj_txl_rec.deprn_method,okx_ast_rec.deprn_method_code);
8450                               --18-Jan-03 modified this
8451                              l_asset_fin_rec_adj.life_in_months    := adj_txl_rec.life_in_months;
8452                               l_asset_fin_rec_adj.basic_rate        := adj_txl_rec.deprn_rate;
8453                               l_asset_fin_rec_adj.adjusted_rate     := adj_txl_rec.deprn_rate;
8454                               l_adjust_yn := 'Y';
8455                            End If;
8456 
8457                            If nvl(adj_txl_rec.deprn_rate,okx_ast_rec.adjusted_rate) <> okx_ast_rec.adjusted_rate Then
8458                               l_asset_fin_rec_adj.deprn_method_code := nvl(adj_txl_rec.deprn_method,okx_ast_rec.deprn_method_code);
8459                               l_asset_fin_rec_adj.life_in_months    := adj_txl_rec.life_in_months;
8460                               l_asset_fin_rec_adj.basic_rate        := nvl(adj_txl_rec.deprn_rate,okx_ast_rec.basic_rate);
8461                               l_asset_fin_rec_adj.adjusted_rate     := nvl(adj_txl_rec.deprn_rate,okx_ast_rec.adjusted_rate);
8462                               l_adjust_yn := 'Y';
8463                           End If;
8464 
8465                           --Bug# 4627009
8466                           if ( l_add_cap_fee='Y') THEN
8467                                l_cost_delta := l_cost_delta + l_cap_fee_delta_converted_amt;
8468                                l_asset_fin_rec_adj.cost:=NVL(l_asset_fin_rec_adj.cost,0) + l_cap_fee_delta_converted_amt;
8469                                l_adjust_yn := 'Y';
8470                           end if;
8471                           --Bug# 4627009 end
8472 
8473                           If nvl(l_adjust_yn,'N') = 'Y' AND
8474                               l_deal_type not in (G_LOAN_BK_CLASS,G_REVOLVING_LOAN_BK_CLASS) then
8475 
8476                                --bug # 2942543 :
8477                                --check if salvage value is becoming more than asset cost
8478                                --BUG# 3548044: check for all the books (not only corporate book)
8479                                --If okx_ast_rec.book_class = 'CORPORATE' then --salvage value updates only for CORP
8480 
8481                                --Bug# 3950089
8482                                l_new_cost          := okx_ast_rec.cost + l_cost_delta;
8483                                If (okx_ast_rec.percent_salvage_value is not null) Then
8484                                  l_new_salvage_value := l_new_cost * (NVL(adj_txl_rec.pct_salvage_value,0)/100);
8485                                Else
8486                                  l_new_salvage_value := okx_ast_rec.salvage_value + l_salvage_delta;
8487                                End if;
8488 
8489                                If (l_new_cost < l_new_salvage_value) Then
8490                                    OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
8491                                                        p_msg_name     => G_SALVAGE_VALUE
8492                                                       );
8493                                        RAISE OKL_API.G_EXCEPTION_ERROR;
8494                                End If;
8495                                --End If; --Bug# 3548044
8496 
8497                               --bug# 3156924 :
8498                               --Bug# 3533936 : Use contract start date as the
8499                               --               transaction date
8500                               -- l_release_date := adj_txl_rec.in_service_date;
8501 
8502                               l_release_date := l_start_date;
8503                               l_trans_number := adj_txl_rec.trans_number;
8504                               --bug# 3156924
8505 
8506                               --Bug# 4631549
8507                               --For re-lease contract move this validation upfront to
8508                               --OKL_CONTRACT_BOOK_PVT
8509                               --Bug# 4869443
8510                               -- No date validation required for Re-lease asset and Re-lease contract
8511                               /*If nvl(l_orig_system_source_code,OKL_API.G_MISS_CHAR) <> 'OKL_RELEASE' Then
8512                                   --Bug# 3783518
8513                                   -- Release contract start date should fall in the current
8514                                   -- open period in FA
8515                                   validate_release_date
8516                                       (p_api_version     => p_api_version,
8517                                        p_init_msg_list   => p_init_msg_list,
8518                                        x_return_status   => x_return_status,
8519                                        x_msg_count       => x_msg_count,
8520                                        x_msg_data        => x_msg_data,
8521                                        p_book_type_code  => okx_ast_rec.book_type_code,
8522                                        p_release_date    => l_release_date);
8523 
8524                                   IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8525                                       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8526                                   ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8527                                       RAISE OKL_API.G_EXCEPTION_ERROR;
8528                                   END IF;
8529                               End If;*/
8530                               --Bug# End 4631549
8531 
8532                               --Bug# 6373605 start
8533                               l_asset_fin_rec_adj.contract_id := p_rel_chr_id;
8534                               --Bug# 6373605 end
8535                               --call the adjustment api to do adjustment
8536                               FIXED_ASSET_ADJUST
8537                                  (p_api_version         => p_api_version,
8538                                   p_init_msg_list       => p_init_msg_list,
8539                                   x_return_status       => x_return_status,
8540                                   x_msg_count           => x_msg_count,
8541                                   x_msg_data            => x_msg_data,
8542          		                p_chr_id              => p_rel_chr_id,
8543                                   p_asset_id            => okx_ast_rec.asset_id,
8544                                   p_book_type_code      => okx_ast_rec.book_type_code,
8545                                   p_asset_fin_rec_adj   => l_asset_fin_rec_adj,
8546                                   -- Bug Fix# 2925461
8547                                   --p_adj_date            => adj_txl_rec.in_service_date,
8548                                   p_adj_date            => l_release_date,
8549                                   --Bug# 3156924
8550                                   p_trans_number        => l_trans_number,
8551                                   p_calling_interface   => l_calling_interface,
8552                                   -- Bug# 3156924
8553             --Bug# 6373605--SLA populate source
8554             p_sla_source_header_id    => adj_txl_rec.sla_source_header_id,
8555             p_sla_source_header_table => 'OKL_TRX_ASSETS',
8556             p_sla_source_try_id       => adj_txl_rec.sla_source_try_id,
8557             p_sla_source_line_id      => adj_txl_rec.sla_source_line_id,
8558             p_sla_source_line_table   => adj_txl_rec.sla_source_line_table,
8559             p_sla_source_chr_id       => p_rel_chr_id,
8560             p_sla_source_kle_id       => adj_txl_rec.sla_source_kle_id,
8561             --Bug# 6373605--SLA populate sources
8562                                   --Bug# 4028371
8563                                   x_fa_trx_date       => l_fa_adj_date,
8564                                   x_asset_fin_rec_new   => l_asset_fin_rec_new);
8565 
8566                               --dbms_output.put_line('After fixed asset adjust for rebook :'||x_return_status);
8567                               IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8568                                   RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8569                               ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8570                                   RAISE OKL_API.G_EXCEPTION_ERROR;
8571                               END IF;
8572                              --Bug# 4028371
8573                               If adj_txl_rec.tal_id is not null Then
8574                                   --update the fa trx date on transaction line
8575                                       l_talv_date_rec.id     := adj_txl_rec.tal_id;
8576                                       l_talv_date_rec.fa_trx_date := l_fa_adj_date;
8577 
8578                                       okl_tal_pvt.update_row
8579                                         (p_api_version   => p_api_version,
8580                                          p_init_msg_list => p_init_msg_list,
8581                                          x_return_status => x_return_status,
8582                                          x_msg_count     => x_msg_count,
8583                                          x_msg_data      => x_msg_data,
8584                                          p_talv_rec      => l_talv_date_rec,
8585                                          x_talv_rec      => lx_talv_date_rec);
8586                                       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8587                                           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8588                                       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8589                                           RAISE OKL_API.G_EXCEPTION_ERROR;
8590                                       END IF;
8591                              End If;
8592                              --End Bug# 4028371
8593                         Else
8594                              --------------------
8595                              --Bug# 6373605 start
8596                              --------------------
8597                              --Even if nothing is being adjusted in FA
8598                              --make a dummy transaction to update the
8599                              --contract_id as assets are moving from
8600                              -- off-lease or old contract to new contract
8601 
8602                              l_dummy_asset_fin_rec_adj.contract_id := p_rel_chr_id;
8603                              --call the adjustment api to do adjustment
8604                               FIXED_ASSET_ADJUST
8605                                  (p_api_version         => p_api_version,
8606                                   p_init_msg_list       => p_init_msg_list,
8607                                   x_return_status       => x_return_status,
8608                                   x_msg_count           => x_msg_count,
8609                                   x_msg_data            => x_msg_data,
8610                                   p_chr_id              => p_rel_chr_id,
8611                                   p_asset_id            => okx_ast_rec.asset_id,
8612                                   p_book_type_code      => okx_ast_rec.book_type_code,
8613                                   p_asset_fin_rec_adj   => l_dummy_asset_fin_rec_adj,
8614                                   p_adj_date            => l_release_date,
8615                                   p_trans_number        => l_trans_number,
8616                                   p_calling_interface   => l_calling_interface,
8617                                   --Bug# 6373605--SLA populate source
8618                                   p_sla_source_header_id    => adj_txl_rec.sla_source_header_id,
8619                                   p_sla_source_header_table => 'OKL_TRX_ASSETS',
8620                                   p_sla_source_try_id       => adj_txl_rec.sla_source_try_id,
8621                                   p_sla_source_line_id      => adj_txl_rec.sla_source_line_id,
8622                                   p_sla_source_line_table   => adj_txl_rec.sla_source_line_table,
8623                                   p_sla_source_chr_id       => p_rel_chr_id,
8624                                   p_sla_source_kle_id       => adj_txl_rec.sla_source_kle_id,
8625                                  --Bug# 6373605--SLA populate sources
8626                                   x_fa_trx_date       => l_fa_adj_date,
8627                                   x_asset_fin_rec_new   => l_asset_fin_rec_new);
8628 
8629                              IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8630                                   RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8631                               ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8632                                   RAISE OKL_API.G_EXCEPTION_ERROR;
8633                               END IF;
8634 
8635                              If adj_txl_rec.tal_id is not null then
8636                                  --update th fa trx date on transaction line
8637                                  l_talv_date_rec.id      := adj_txl_rec.tal_id;
8638 
8639                                   --Bug# 6373605 : Commented as we have
8640                                   --actual FA transaction noe and do not
8641                                   --need to derive date
8642                                  /*okl_accounting_util.get_fa_trx_date
8643                                   (p_book_type_code  =>  okx_ast_rec.book_type_code,
8644                                    x_return_status   =>  x_return_status,
8645                                    x_fa_trx_date     =>  l_fa_adj_date);
8646 
8647                                  IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8648                                      RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8649                                  ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8650                                      RAISE OKL_API.G_EXCEPTION_ERROR;
8651                                  END IF;
8652 
8653                                  l_talv_date_rec.fa_trx_date := l_fa_adj_date;*/
8654                                  l_talv_date_rec.fa_trx_date := l_fa_adj_date;
8655                                  -----------
8656                                  --Bug# 6373605 end
8657                                  -------------
8658 
8659                                  okl_tal_pvt.update_row
8660                                         (p_api_version   => p_api_version,
8661                                          p_init_msg_list => p_init_msg_list,
8662                                          x_return_status => x_return_status,
8663                                          x_msg_count     => x_msg_count,
8664                                          x_msg_data      => x_msg_data,
8665                                          p_talv_rec      => l_talv_date_rec,
8666                                          x_talv_rec      => lx_talv_date_rec);
8667                                  IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8668                                      RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8669                                  ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8670                                      RAISE OKL_API.G_EXCEPTION_ERROR;
8671                                  END IF;
8672                               End If; --adj_txl_rec.tal_id is not null
8673                           End If; --l_adjust_yn = 'Y'
8674 
8675 
8676                            -- Bug# 3533936
8677                            IF  adj_txl_rec.fa_location_id is not null THEN
8678                              FIXED_ASSET_TRANSFER
8679                                (p_api_version       => p_api_version,
8680                                 p_init_msg_list     => p_init_msg_list,
8681                                 x_return_status     => x_return_status,
8682                                 x_msg_count         => x_msg_count,
8683                                 x_msg_data          => x_msg_data,
8684                                 p_asset_id          => okx_ast_rec.asset_id,
8685                                 p_book_type_code    => okx_ast_rec.book_type_code,
8686                                 p_location_id       => adj_txl_rec.fa_location_id,
8687                                 p_trx_date          => l_release_date,
8688                                 p_trx_number        => l_trans_number,
8689                                 p_calling_interface => l_calling_interface,
8690             --Bug# 6373605--SLA populate source
8691             p_sla_source_header_id    => adj_txl_rec.sla_source_header_id,
8692             p_sla_source_header_table => 'OKL_TRX_ASSETS',
8693             p_sla_source_try_id       => adj_txl_rec.sla_source_try_id,
8694             p_sla_source_line_id      => adj_txl_rec.sla_source_line_id,
8695             p_sla_source_line_table   => adj_txl_rec.sla_source_line_table,
8696             p_sla_source_chr_id       => p_rel_chr_id,
8697             p_sla_source_kle_id       => adj_txl_rec.sla_source_kle_id,
8698             --Bug# 6373605--SLA populate sources
8699                                 --Bug# 4028371
8700                                 x_fa_trx_date       => l_fa_tsfr_date
8701                                );
8702 
8703                              IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8704                                   RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8705                               ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8706                                   RAISE OKL_API.G_EXCEPTION_ERROR;
8707                              END IF;
8708                            END IF;
8709                        End If;
8710 
8711                 -- Bug# 3631094
8712                 --End If; -- do not do explicit changes for multi-gaap reporting book
8713 
8714                 -- Bug 3631094 : Setting transaction status to processed is moved
8715                 --               to the end of Release_asset procedure.
8716                 /*--Bug# 3533936 : set the status of transaction to processed
8717                 If adj_txl_rec.tas_id is not NULL then
8718 
8719                     update_trx_status(p_api_version   => p_api_version,
8720                                       p_init_msg_list => p_init_msg_list,
8721                                       x_return_status => x_return_status,
8722                                       x_msg_count     => x_msg_count,
8723                                       x_msg_data      => x_msg_data,
8724                                       p_tas_id        => adj_txl_rec.tas_id,
8725                                       p_tsu_code      => G_TSU_CODE_PROCESSED);
8726 
8727                       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8728                           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8729                       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8730                           RAISE OKL_API.G_EXCEPTION_ERROR;
8731                       END IF;
8732                 End If;
8733                 --End Bug# 3533936*/
8734 
8735                 End If; --adj_txl_rec found
8736             End Loop;
8737             Close adj_txl_csr;
8738           End If; --k hdr csr
8739         CLOSE k_hdr_csr;
8740 
8741         ---------------------------------------------------------------
8742         --Bug# 3143522 : Adjust subsidy adjustments into asset cost
8743         ---------------------------------------------------------------
8744         open l_allast_csr(p_chr_id  => p_rel_chr_id);
8745         loop
8746             fetch l_allast_csr into l_asset_cle_id,l_orig_system_id1;
8747             exit when l_allast_csr%NOTFOUND;
8748             l_subsidy_exists := OKL_API.G_FALSE;
8749             okl_subsidy_process_pvt.is_asset_subsidized
8750                           (p_api_version   => p_api_version,
8751                           p_init_msg_list => p_init_msg_list,
8752                           x_return_status => x_return_status,
8753                           x_msg_count     => x_msg_count,
8754                           x_msg_data      => x_msg_data,
8755                           p_asset_cle_id  => l_asset_cle_id,
8756                           x_subsidized    => l_subsidy_exists);
8757             IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
8758                 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
8759             ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
8760                 RAISE Okl_Api.G_EXCEPTION_ERROR;
8761             END IF;
8762 
8763 
8764             If l_subsidy_exists = OKL_API.G_TRUE then
8765 
8766                 --get total discount for original asset
8767                 OKL_EXECUTE_FORMULA_PUB.execute(p_api_version   => p_api_version,
8768                                                 p_init_msg_list => p_init_msg_list,
8769                                                 x_return_status => x_return_status,
8770                                                 x_msg_count     => x_msg_count,
8771                                                 x_msg_data      => x_msg_data,
8772                                                 p_formula_name  => G_FORMULA_LINE_DISCOUNT,
8773                                                 p_contract_id   => l_rel_chr_id,
8774                                                 p_line_id       => l_asset_cle_id,
8775                                                 x_value         => l_total_discount);
8776 
8777                 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8778                     RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8779                 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8780                     RAISE OKL_API.G_EXCEPTION_ERROR;
8781                 END IF;
8782 
8783                 --Bug# 3621663 : Fix for Multi-Currency
8784                 l_dummy_amount := null;
8785                 convert_2functional_currency(
8786                                          p_api_version   => p_api_version,
8787                                          p_init_msg_list => p_init_msg_list,
8788                                          x_return_status => x_return_status,
8789                                          x_msg_count     => x_msg_count,
8790                                          x_msg_data      => x_msg_data,
8791                                          p_chr_id        => p_rel_chr_id,
8792                                          p_amount        => l_total_discount,
8793                                          x_amount        => l_dummy_amount);
8794 
8795                 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8796                     RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8797                 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8798                     RAISE OKL_API.G_EXCEPTION_ERROR;
8799                 END IF;
8800                 l_total_discount := l_dummy_amount;
8801                 --Bug# 3621663 : Fix for Multi-Currency
8802 
8803                 If (l_total_discount <> 0) then
8804                     l_cost_adjustment := (-1)* l_total_discount;
8805                     --open cursor to get asset details
8806                     open l_Asset_csr(p_asset_cle_id => l_asset_cle_id);
8807                     Loop
8808                         Fetch l_asset_csr into l_asset_rec;
8809                         Exit when l_asset_csr%NOTFOUND;
8810 
8811                         -- Bug# 3783518
8812                         -- Do not make adjustment for subsidy for the Reporting
8813                         -- Book for cases where the asset is added to the
8814                         -- Reporting Book on Re-lease. The subsidy adjustment
8815                         -- is done by the call to Fixed_Asset_Add
8816 
8817                         If l_asset_rec.book_type_code =
8818                           nvl(l_rep_pdt_book,OKL_API.G_MISS_CHAR) Then
8819 
8820                           open orig_pdt_csr(l_orig_system_id1);
8821                           fetch orig_pdt_csr into l_orig_reporting_pdt_id;
8822                           close orig_pdt_csr;
8823 
8824                         End If;
8825 
8826                         If (l_asset_rec.book_type_code =
8827                             nvl(l_rep_pdt_book,OKL_API.G_MISS_CHAR)
8828                            AND l_orig_reporting_pdt_id is null) Then
8829 
8830                           NULL;
8831 
8832                         Else
8833 
8834                         --Bug# 3872534: Replace NBV checks with cost checks
8835                         If (l_asset_rec.asset_cost <> 0) then
8836                             If ((l_asset_rec.asset_cost + l_cost_adjustment) <= 0) then
8837                                 OKL_API.set_message(p_app_name     => G_APP_NAME,
8838                                            p_msg_name     => G_SUBSIDY_ADJ_COST_ERROR,
8839                                            p_token1       => G_ASSET_NUMBER_TOKEN,
8840                                            p_token1_value => l_asset_rec.asset_number,
8841                                            p_token2       => G_BOOK_TYPE_TOKEN,
8842                                            p_token2_value => l_asset_rec.book_type_code,
8843                                            p_token3       => G_ASSET_NUMBER_TOKEN,
8844                                            p_token3_value => l_asset_rec.asset_number);
8845                                 x_return_status := OKL_API.G_RET_STS_ERROR;
8846                                 RAISE OKL_API.G_EXCEPTION_ERROR;
8847                              Elsif ((l_asset_rec.asset_cost + l_cost_adjustment) > 0) then
8848 
8849                                 --Bug# 3156924
8850                                 l_trans_number := l_asset_rec.trans_number;
8851 
8852                                 --Bug# 3533936 : Use contract start date as the
8853                                 --               transaction date
8854                                 -- l_release_date := l_asset_rec.in_service_date;
8855                                 l_release_date := l_start_date;
8856                                 --bug# 3156924
8857 
8858                                 --call api to adjust FA cost-amortize adjustment
8859 
8860                                 -- Bug# 3783518
8861                                 -- Release contract start date should fall in the current
8862                                 -- open period in FA
8863                                 --Bug# 4869443
8864                                 -- No date validation required for Re-lease asset and Re-lease contract
8865                                 /*
8866                                 validate_release_date
8867                                   (p_api_version     => p_api_version,
8868                                    p_init_msg_list   => p_init_msg_list,
8869                                    x_return_status   => x_return_status,
8870                                    x_msg_count       => x_msg_count,
8871                                    x_msg_data        => x_msg_data,
8872                                    p_book_type_code  => l_asset_rec.book_type_code,
8873                                    p_release_date    => l_release_date);
8874 
8875                                 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8876                                   RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8877                                 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8878                                   RAISE OKL_API.G_EXCEPTION_ERROR;
8879                                 END IF;
8880                                 */
8881 
8882                                 l_subsidy_asset_fin_rec_adj.cost := l_cost_adjustment;
8883                                 --Bug# 6373605 start
8884                                 If l_asset_rec.book_class = 'CORPORATE' then
8885                                    l_sla_source_line_id :=
8886 l_asset_rec.sla_source_line_id;
8887                                    l_sla_source_line_table :=
8888 'OKL_TXL_ASSETS_B';
8889                                 Elsif l_asset_rec.book_class = 'TAX' then
8890                                     Open l_txd_from_book_type_csr(p_book_type_code =>
8891 l_asset_rec.book_type_code,
8892                                                              p_tal_id =>
8893 l_asset_rec.sla_source_line_id);
8894                                     Fetch l_txd_from_book_type_csr into
8895 l_txd_from_book_type_rec;
8896                                     If l_txd_from_book_type_csr%NOTFOUND then
8897                                         l_sla_source_line_id :=
8898 l_asset_rec.sla_source_line_id;
8899                                         l_sla_source_line_table :=
8900 'OKL_TXL_ASSETS_B';
8901                                     Else
8902                                         l_sla_source_line_id :=
8903 l_txd_from_book_type_rec.sla_source_line_id;
8904                                         l_sla_source_line_table :=
8905 'OKL_TXD_ASSETS_B';
8906                                     End If;
8907                                     Close l_txd_from_book_type_Csr;
8908                                End If;
8909 
8910                                l_asset_fin_rec_adj.contract_id := p_rel_chr_id;
8911                                --bug# 6373605 End;
8912 
8913                                 FIXED_ASSET_ADJUST
8914                                              (p_api_version       => p_api_version,
8915                                               p_init_msg_list     => p_init_msg_list,
8916                                               x_return_status     => x_return_status,
8917                                               x_msg_count         => x_msg_count,
8918                                               x_msg_data          => x_msg_data,
8919                                               p_chr_id            => l_rel_chr_id,
8920                                               p_asset_id          => l_asset_rec.asset_id,
8921                                               p_book_type_code    => l_asset_rec.book_type_code,
8922                                               p_asset_fin_rec_adj => l_subsidy_asset_fin_rec_adj,
8923                                               p_adj_date          => l_release_date,
8924                                               p_trans_number      => l_trans_number,
8925                                               p_calling_interface   => l_calling_interface,
8926            --Bug# 6373605--SLA populate source
8927             p_sla_source_header_id    => l_asset_rec.sla_source_header_id,
8928             p_sla_source_header_table => 'OKL_TRX_ASSETS',
8929             p_sla_source_try_id       => l_Asset_rec.sla_source_try_id,
8930             p_sla_source_line_id      => l_sla_source_line_id,
8931             p_sla_source_line_table   => l_sla_source_line_table,
8932             p_sla_source_chr_id       => p_rel_chr_id,
8933             p_sla_source_kle_id       => l_asset_rec.sla_source_kle_id,
8934             --Bug# 6373605--SLA populate sources
8935                                               --Bug# 4028371
8936                                               x_fa_trx_date       => l_fa_adj_date,
8937                                               x_asset_fin_rec_new => l_asset_fin_rec_new);
8938 
8939                                  IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8940                                      RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8941                                  ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8942                                      RAISE OKL_API.G_EXCEPTION_ERROR;
8943                                  END IF;
8944 
8945                              End If;
8946                         End If;
8947                       End If;
8948                     End Loop;
8949                     Close l_asset_csr;
8950                End If;
8951            End If; --if l_subsidy_exist = TRUE
8952        End Loop;
8953        Close l_allast_csr;
8954        ----------------------------------------------------------------
8955        --Bug# 3143522 : 11.5.10 End processing for subsidies
8956        ----------------------------------------------------------------
8957 
8958        --Bug 3631094: start
8959        --Bug# 3533936 : set the status of transaction to processed
8960        FOR tas_rec in tas_csr(p_chr_id => p_rel_chr_id) LOOP
8961 
8962          update_trx_status(p_api_version   => p_api_version,
8963                            p_init_msg_list => p_init_msg_list,
8964                            x_return_status => x_return_status,
8965                            x_msg_count     => x_msg_count,
8966                            x_msg_data      => x_msg_data,
8967                            p_tas_id        => tas_rec.id,
8968                            p_tsu_code      => G_TSU_CODE_PROCESSED);
8969 
8970          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8971            RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8972          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8973            RAISE OKL_API.G_EXCEPTION_ERROR;
8974          END IF;
8975 
8976        END LOOP;
8977        --End Bug# 3533936
8978        --Bug 3631094: end
8979 
8980     OKL_API.END_ACTIVITY (x_msg_count,x_msg_data );
8981     EXCEPTION
8982     WHEN OKL_API.G_EXCEPTION_ERROR THEN
8983     If ( l_hdr_csr%ISOPEN ) Then
8984        CLOSE l_hdr_csr;
8985     End If;
8986 
8987     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8988                                l_api_name,
8989                                G_PKG_NAME,
8990                                'OKL_API.G_RET_STS_ERROR',
8991                                x_msg_count,
8992                                x_msg_data,
8993                                '_PVT');
8994     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8995     If ( l_hdr_csr%ISOPEN ) Then
8996        CLOSE l_hdr_csr;
8997     End If;
8998 
8999     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
9000                               l_api_name,
9001                               G_PKG_NAME,
9002                               'OKL_API.G_RET_STS_UNEXP_ERROR',
9003                               x_msg_count,
9004                               x_msg_data,
9005                               '_PVT');
9006     WHEN OTHERS THEN
9007     If ( l_hdr_csr%ISOPEN ) Then
9008        CLOSE l_hdr_csr;
9009     End If;
9010 
9011     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
9012                               l_api_name,
9013                               G_PKG_NAME,
9014                               'OTHERS',
9015                               x_msg_count,
9016                               x_msg_data,
9017                               '_PVT');
9018 END RELEASE_ASSET;
9019 
9020   --Bug# 3621875: fetching depreciaion parameters for pricing
9021    ---------------------------------------------------------------------
9022   --Bug# 3621875: pricing parameters
9023   --------------------------------------------------------------------
9024   Procedure Get_pricing_Parameters ( p_api_version   IN  NUMBER,
9025                                      p_init_msg_list IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
9026                                      x_return_status OUT NOCOPY VARCHAR2,
9027                                      x_msg_count     OUT NOCOPY NUMBER,
9028                                      x_msg_data      OUT NOCOPY VARCHAR2,
9029                                      p_chr_id        IN  NUMBER,
9030                                      p_cle_id        IN  NUMBER,
9031                                      x_ast_dtl_tbl   OUT NOCOPY ast_dtl_tbl_type) is
9032 
9033   l_return_status        VARCHAR2(1)  default OKL_API.G_RET_STS_SUCCESS;
9034   l_api_name             CONSTANT varchar2(30) := 'GET_PRICING_PARAMS';
9035   l_api_version          CONSTANT NUMBER := 1.0;
9036 
9037   --cursor to get transaction going on on this asset
9038   cursor l_curr_trx_csr(p_chr_id in number,
9039                         p_cle_id in number) is
9040   select ttyt.name      transaction_type,
9041          trx.tas_type,
9042          txl.tal_type,
9043          txl.id         tal_id,
9044          trx.creation_date
9045   from   okl_trx_types_tl         ttyt,
9046          okl_trx_assets           trx,
9047          okl_txl_assets_b         txl,
9048          okc_k_lines_b            cleb,
9049          okc_line_styles_b        lseb
9050   where  ttyt.id            = trx.try_id
9051   and    ttyt.language      = 'US'
9052   and    trx.id             = txl.tas_id
9053   and    trx.tsu_code       = 'ENTERED'
9054   and    txl.kle_id         = cleb.id
9055   and    cleb.cle_id        = p_cle_id
9056   and    cleb.dnz_chr_id    = p_chr_id
9057   and    cleb.lse_id        = lseb.id
9058   and    lseb.lty_code      = 'FIXED_ASSET'
9059   order by trx.creation_date desc;
9060 
9061   l_curr_trx_rec l_curr_trx_csr%ROWTYPE;
9062 
9063   --cursor to check if the contract is selected for Mass Rebook
9064   CURSOR  l_chk_mass_rbk_csr (p_chr_id IN NUMBER) IS
9065   SELECT 'Y'
9066   FROM   okc_k_headers_b CHR,
9067          okl_trx_contracts ktrx
9068   where  CHR.ID          = p_chr_id
9069   AND    ktrx.KHR_ID     =  chr.id
9070   AND    ktrx.tsu_code   = 'ENTERED'
9071   AND    ktrx.rbr_code   IS NOT NULL
9072   AND    ktrx.tcn_type   = 'TRBK'
9073 --rkuttiya added for 12.1.1 Multi GAAP Proect
9074   AND    ktrx.representation_type = 'PRIMARY'
9075 --
9076   AND   EXISTS (SELECT '1'
9077               FROM   okl_rbk_selected_contract rbk_khr
9078               WHERE  rbk_khr.KHR_ID = chr.id
9079               AND    rbk_khr.STATUS <> 'PROCESSED');
9080 
9081   l_mass_rbk_yn varchar2(1);
9082 
9083 
9084   --cursor to get all the data from fa in case of mass rebook
9085   -- and no transaction
9086   cursor l_fa_csr2 (p_cle_id in number,
9087                     p_chr_id in number) is
9088   select fab.*,
9089          fa.asset_category_id,
9090          fbc.book_class,
9091          fa.asset_number
9092   from   fa_additions      fa,
9093          fa_books          fab,
9094          fa_book_controls  fbc,
9095          okc_k_items       cim,
9096          okc_k_lines_b     cleb,
9097          okc_line_styles_b lseb
9098   where  fab.asset_id             = fa.asset_id
9099   and    fab.transaction_header_id_out is null
9100   and    fbc.book_type_code       =  fab.book_type_code
9101   and    fa.asset_id              =  cim.object1_id1
9102   and    cim.object1_id2          = '#'
9103   and    cim.jtot_object1_code    = 'OKX_ASSET'
9104   and    cim.cle_id               = cleb.id
9105   and    cim.dnz_chr_id           = cleb.dnz_chr_id
9106   and    cleb.cle_id              = p_cle_id
9107   and    cleb.lse_id              = lseb.id
9108   and    cleb.dnz_chr_id          = p_chr_id
9109   and    lseb.lty_code            = 'FIXED_ASSET';
9110 
9111   l_fa_rec2 l_fa_csr2%ROWTYPE;
9112 
9113 
9114   --cursor to get contract header details
9115   cursor l_chr_csr (p_chr_id in number) is
9116   select khr.pdt_id,
9117          khr.deal_type,
9118          chrb.start_date,
9119          rul.rule_information1
9120   from   okc_rules_b       rul,
9121          okc_rule_groups_b rgp,
9122          okl_k_headers     khr,
9123          okc_k_headers_b   chrb
9124   where  rul.rule_information_category       = 'LATOWN'
9125   and    rul.rgp_id                          = rgp.id
9126   and    rul.dnz_chr_id                      = rgp.dnz_chr_id
9127   and    rgp.dnz_chr_id                      = chrb.id
9128   and    rgp.chr_id                          = chrb.id
9129   and    rgp.rgd_code                        = 'LATOWN'
9130   and    khr.id                              = chrb.id
9131   and    chrb.id                             = p_chr_id;
9132 
9133   l_pdt_id               number;
9134   l_start_date           date;
9135   l_rep_pdt_id           number;
9136   l_tax_owner            okc_rules_b.rule_information_category%TYPE;
9137   l_deal_type            okl_k_headers.deal_type%TYPE;
9138   l_rep_deal_type        okl_k_headers.deal_type%TYPE;
9139   l_Multi_GAAP_YN        varchar2(1);
9140   l_adjust_asset_to_zero varchar2(1);
9141   l_multi_gaap_book_done varchar2(1);
9142 
9143 
9144 
9145   --cursor to get asset details for contract undergoing booking :
9146   cursor l_booking_corp_csr (p_tal_id in number) is
9147   select txl.asset_number,
9148          txl.corporate_book,
9149          fbc.book_class,
9150          txl.deprn_method,
9151          txl.in_service_date,
9152          txl.life_in_months,
9153          txl.deprn_rate,
9154          txl.salvage_value,
9155          txl.percent_salvage_value,
9156          fcbd.prorate_convention_code,
9157          txl.depreciation_cost,
9158          txl.depreciation_id,
9159          txl.kle_id
9160    from  okl_txl_Assets_b txl,
9161          fa_book_controls fbc,
9162          fa_category_book_defaults fcbd
9163    where fcbd.category_id          = txl.depreciation_id
9164    and   fcbd.book_type_code       = txl.corporate_book
9165    and   txl.in_service_date between fcbd.start_dpis and nvl(fcbd.end_dpis,txl.in_service_date)
9166    and   fbc.book_type_code        = txl.corporate_book
9167    and   txl.id                    = p_tal_id;
9168 
9169    l_booking_corp_rec     l_booking_corp_csr%ROWTYPE;
9170 
9171   --cursor to get asset details for contract undergoing mass rebook :
9172   cursor l_mass_rebook_corp_csr (p_tal_id in number) is
9173   select txl.asset_number,
9174          txl.corporate_book,
9175          fbc.book_class,
9176          txl.deprn_method,
9177          txl.in_service_date,
9178          txl.life_in_months,
9179          txl.deprn_rate,
9180          txl.salvage_value,
9181          txl.percent_salvage_value,
9182          fcbd.prorate_convention_code,
9183          txl.depreciation_cost,
9184          txl.depreciation_id,
9185          txl.kle_id
9186    from  okl_txl_Assets_b txl,
9187          fa_book_controls fbc,
9188          fa_category_book_defaults fcbd,
9189          fa_additions fa
9190    where fcbd.category_id          = fa.asset_category_id
9191    and   fcbd.book_type_code       = txl.corporate_book
9192    and   fa.asset_number           = txl.asset_number
9193    and   txl.in_service_date between fcbd.start_dpis and nvl(fcbd.end_dpis,txl.in_service_date)
9194    and   fbc.book_type_code        = txl.corporate_book
9195    and   txl.id                    = p_tal_id;
9196 
9197    l_mass_rebook_corp_rec l_mass_rebook_corp_csr%ROWTYPE;
9198 
9199    cursor l_booking_tax_csr (p_tal_id in number,
9200                              p_category_id in number,
9201                              p_in_service_date date) is
9202    select txd.tax_book,
9203           fbc.book_class,
9204           txd.deprn_method_tax,
9205           txd.life_in_months_tax,
9206           txd.deprn_rate_tax,
9207           fcbd.prorate_convention_code,
9208           txd.cost
9209    from   okl_txd_Assets_b          txd,
9210           fa_book_controls          fbc,
9211           fa_category_book_defaults fcbd
9212    where  fcbd.category_id          = p_category_id
9213    and    fcbd.book_type_code       = txd.tax_book
9214    and    p_in_service_date  between fcbd.start_dpis and nvl(fcbd.end_dpis,p_in_service_date)
9215    and    fbc.book_type_code        = txd.tax_book
9216    and    txd.tal_id                = p_tal_id;
9217 
9218 
9219    l_booking_tax_rec     l_booking_tax_csr%ROWTYPE;
9220 
9221   cursor l_mass_rebook_tax_csr (p_tal_id in number,
9222                                 p_category_id in number,
9223                                 p_in_service_date date,
9224                                 p_book in varchar2    ) is
9225    select txd.tax_book,
9226           fbc.book_class,
9227           txd.deprn_method_tax,
9228           txd.life_in_months_tax,
9229           txd.deprn_rate_tax,
9230           fcbd.prorate_convention_code,
9231           txd.cost
9232    from   okl_txd_Assets_b          txd,
9233           fa_book_controls          fbc,
9234           fa_category_book_defaults fcbd
9235    where  fcbd.category_id          = p_category_id
9236    and    fcbd.book_type_code       = txd.tax_book
9237    and    p_in_service_date  between fcbd.start_dpis and nvl(fcbd.end_dpis,p_in_service_date)
9238    and    fbc.book_type_code        = txd.tax_book
9239    and    txd.tal_id                = p_tal_id
9240    and    txd.tax_book              = p_book;
9241 
9242    l_mass_rebook_tax_rec l_mass_rebook_tax_csr%ROWTYPE;
9243 
9244 
9245   --cursor to get method id
9246   cursor l_method_csr1 (p_method_code in varchar2,
9247                         p_life        in number) is
9248   select fm.method_id
9249   from   fa_methods fm
9250   where  fm.method_code = p_method_code
9251   and    fm.life_in_months = p_life
9252   and    fm.life_in_months is not null;
9253 
9254   cursor l_method_csr2 (p_method_code in varchar2,
9255                         p_basic_rate  in number,
9256                         p_adj_rate    in number) is
9257   select fm.method_id
9258   from   fa_methods fm
9259   where  fm.method_code   = p_method_code
9260   and    fm.life_in_months is null
9261   and    exists (select 1
9262                  from   fa_flat_rates ffr
9263                  where  ffr.method_id     = fm.method_id
9264                  and    ffr.basic_rate    = p_basic_rate
9265                  and    ffr.adjusted_rate = p_adj_rate);
9266 
9267   l_method_id    fa_methods.method_id%TYPE;
9268 
9269   l_rep_pdt_book fa_books.book_type_code%TYPE;
9270 
9271 
9272   --cursor to get defaults for multi-GAAP book
9273   cursor l_defaults_csr (p_book           in varchar2,
9274                          p_category_id    in number,
9275                          p_date           in date) is
9276   select deprn_method,
9277          life_in_months,
9278          basic_rate,
9279          adjusted_rate,
9280          prorate_convention_code
9281   from   fa_category_book_defaults
9282   where  book_type_code      = p_book
9283   and    category_id         = p_category_id
9284   and    p_date between start_dpis and nvl(end_dpis,p_date);
9285 
9286 
9287   l_defaults_rec      l_defaults_csr%ROWTYPE;
9288   i                   number;
9289 
9290   --Cursor to get values from FA
9291   Cursor l_fa_csr (p_asset_number in varchar2,
9292                    p_book         in varchar2) is
9293   select fab.*,
9294          fa.asset_category_id
9295   from   fa_books      fab,
9296          fa_additions  fa
9297   where  fab.book_type_code    = p_book
9298   and    fab.asset_id          = fa.asset_id
9299   and    fa.asset_number       = p_asset_number
9300   and    fab.transaction_header_id_out is null;
9301 
9302   l_fa_rec  l_fa_csr%ROWTYPE;
9303 
9304   l_cap_fee_delta number;
9305   l_ast_trx_not_found varchar2(1);
9306 
9307   --Bug# 4775166
9308   Cursor l_clev_csr(p_cle_id in number) is
9309   select name
9310   from okc_k_lines_v
9311   where id = p_cle_id;
9312 
9313   l_clev_rec l_clev_csr%rowtype;
9314 
9315   -- Bug# 5150150 - start
9316   -- cursor to get expected asset cost
9317   cursor l_exp_asset_cost_csr (p_cle_id in number) is
9318   select id,EXPECTED_ASSET_COST
9319   from okl_k_lines_v
9320   where id = p_cle_id;
9321 
9322   -- cursor to get ORIG_SYSTEM_SOURCE_CODE of the contract
9323 
9324   cursor l_orig_sys_src_code_csr (p_chr_id in number) is
9325   select id, ORIG_SYSTEM_SOURCE_CODE
9326   from okc_k_headers_b
9327   where id = p_chr_id;
9328 
9329   l_chr_id okc_k_headers_b.id%type;
9330   l_orig_system_source_code okc_k_headers_b.orig_system_source_code%type;
9331   l_cle_id okl_k_lines_v.id%type;
9332   l_exp_asset_cost okl_k_lines_v.expected_asset_cost%type;
9333 
9334   --cursor to get Cap fees added during Re-lease for the asset
9335   Cursor cap_fee_csr(p_fin_ast_cle_id   in number
9336                     ,p_chr_id           in number) IS
9337   Select nvl(sum(cov_ast_kle.capital_amount),0) capitalized_fee
9338   From
9339        OKL_K_LINES       fee_kle,
9340        OKC_K_LINES_B     fee_cle,
9341        OKC_STATUSES_B    fee_sts,
9342        OKL_K_LINES       cov_ast_kle,
9343        OKC_K_LINES_B     cov_ast_cle,
9344        OKC_STATUSES_B    cov_ast_sts,
9345        OKC_K_ITEMS       cov_ast_cim
9346   Where  fee_kle.id                    = fee_cle.id
9347   and    fee_kle.fee_type              = 'CAPITALIZED'
9348   and    fee_cle.dnz_chr_id            = p_chr_id
9349   and    fee_cle.chr_id                = p_chr_id
9350   and    fee_cle.lse_id                = 52 -- FEE
9351   and    fee_cle.sts_code              = fee_sts.code
9352   and    fee_sts.ste_code not in         ('HOLD', 'EXPIRED', 'TERMINATED', 'CANCELLED')
9353   and    fee_cle.id                    = cov_ast_cle.cle_id
9354   and    fee_cle.dnz_chr_id            = cov_ast_cle.dnz_chr_id
9355   and    cov_ast_kle.id                = cov_ast_cle.id
9356   and    cov_ast_cle.id                = cov_ast_cim.cle_id
9357   and    cov_ast_cle.lse_id            = 53 --LINK_FEE_ASSET
9358   and    cov_ast_cle.sts_code          = cov_ast_sts.code
9359   and    cov_ast_sts.ste_code not in    ('HOLD', 'EXPIRED', 'TERMINATED', 'CANCELLED')
9360   and    cov_ast_cle.dnz_chr_id        = cov_ast_cim.dnz_chr_id
9361   and    cov_ast_cim.object1_id1       = to_char(p_fin_ast_cle_id)
9362   and    cov_ast_cim.object1_id2       = '#'
9363   and    cov_ast_cim.jtot_object1_code = 'OKX_COVASST';
9364 
9365   l_new_cap_fee NUMBER;
9366   -- Bug# 5150150 - End
9367 
9368   begin
9369      x_return_status := OKL_API.G_RET_STS_SUCCESS;
9370 
9371      -- Call start_activity to create savepoint, check compatibility
9372      -- and initialize message list
9373      x_return_status := OKL_API.START_ACTIVITY (
9374                                 l_api_name
9375                                 ,p_init_msg_list
9376                                 ,'_PVT'
9377                                 ,x_return_status);
9378      -- Check if activity started successfully
9379      IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9380         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9381      ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9382         RAISE OKL_API.G_EXCEPTION_ERROR;
9383      END IF;
9384 
9385      -------------------------------------------------
9386      --1. Find out details of the current transactions
9387      -------------------------------------------------
9388      open l_curr_trx_csr (p_chr_id  =>  p_chr_id,
9389                           p_cle_id  =>  p_cle_id) ;
9390      fetch l_curr_trx_csr into l_curr_trx_rec;
9391      If l_curr_trx_csr%NOTFOUND then
9392          --Raise error
9393          l_ast_trx_not_found := 'Y';
9394      else
9395          l_ast_trx_not_found := 'N';
9396      end if;
9397      close l_curr_trx_csr;
9398 
9399      If l_ast_trx_not_found = 'Y' then
9400              i := 0;
9401              open l_fa_csr2(p_chr_id => p_chr_id,
9402                             p_cle_id => p_cle_id);
9403              loop
9404                  fetch  l_fa_csr2 into l_fa_rec2;
9405                  exit when l_fa_csr2%NOTFOUND;
9406                  i := i + 1;
9407                  x_ast_dtl_tbl(i).ASSET_NUMBER            :=  l_fa_rec2.asset_number;
9408                  x_ast_dtl_tbl(i).BOOK_TYPE_CODE          :=  l_fa_rec2.book_type_code;
9409                  x_ast_dtl_tbl(i).BOOK_CLASS              :=  l_fa_rec2.book_class;
9410                  x_ast_dtl_tbl(i).DEPRN_METHOD            :=  l_fa_rec2.deprn_method_code;
9411                  x_ast_dtl_tbl(i).IN_SERVICE_DATE         :=  l_fa_rec2.date_placed_in_service;
9412                  x_ast_dtl_tbl(i).LIFE_IN_MONTHS          :=  l_fa_rec2.life_in_months;
9413                  x_ast_dtl_tbl(i).BASIC_RATE              :=  l_fa_rec2.basic_rate;
9414                  x_ast_dtl_tbl(i).ADJUSTED_RATE           :=  l_fa_rec2.adjusted_rate;
9415                  x_ast_dtl_tbl(i).SALVAGE_VALUE           :=  l_fa_rec2.salvage_value;
9416                  x_ast_dtl_tbl(i).PERCENT_SALVAGE_VALUE   :=  l_fa_rec2.percent_salvage_value;
9417                  x_ast_dtl_tbl(i).PRORATE_CONVENTION_CODE :=  l_fa_rec2.prorate_convention_code;
9418                  x_ast_dtl_tbl(i).COST                    :=  l_fa_rec2.cost;
9419                   --get method id
9420                  l_method_id := null;
9421                  If nvl(l_fa_rec2.life_in_months,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
9422                      open l_method_csr1(p_method_code => l_fa_rec2.deprn_method_code,
9423                                         p_life        => l_fa_rec2.life_in_months);
9424                      fetch l_method_csr1 into l_method_id;
9425                      if l_method_csr1%NOTFOUND then
9426                          null;
9427                      end if;
9428                      close l_method_csr1;
9429                  ElsIf nvl(l_fa_rec2.adjusted_rate,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
9430                      open l_method_csr2(p_method_code   => l_fa_rec2.deprn_method_code,
9431                                         p_basic_rate    => l_fa_rec2.basic_rate,
9432                                         p_adj_rate      => l_fa_rec2.adjusted_rate);
9433                      fetch l_method_csr2 into l_method_id;
9434                      --Bug# 4775166
9435                      if l_method_csr2%NOTFOUND then
9436                          null;
9437                      end if;
9438                      close l_method_csr2;
9439                  End If;
9440                  x_ast_dtl_tbl(i).DEPRN_METHOD_ID         :=  l_method_id;
9441 
9442              end loop;
9443              --Bug# 4775166
9444              close l_fa_csr2;
9445      End If;
9446 
9447      If l_ast_trx_not_found = 'N' then
9448      --cursor to get contract detials :
9449      open l_chr_csr (p_chr_id => p_chr_id);
9450      fetch l_chr_csr into l_pdt_id,
9451                           l_deal_type,
9452                           l_start_date,
9453                           l_tax_owner;
9454      If l_chr_csr%NOTFOUND then
9455          --Raise Error : contract header details not found
9456          null;
9457      End If;
9458      close l_chr_csr;
9459 
9460      -- Multi-GAAP Begin
9461      Get_Pdt_Params (p_api_version   => p_api_version,
9462                      p_init_msg_list => p_init_msg_list,
9463                      x_return_status => x_return_status,
9464                      x_msg_count     => x_msg_count,
9465                      x_msg_data      => x_msg_data,
9466                      p_pdt_id        => l_pdt_id,
9467                      p_pdt_date      => l_start_date,
9468                      x_rep_pdt_id    => l_rep_pdt_id,
9469                      x_tax_owner     => l_tax_owner,
9470                      x_rep_deal_type => l_rep_deal_type);
9471 
9472      IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9473           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9474      ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9475           RAISE OKL_API.G_EXCEPTION_ERROR;
9476      END IF;
9477 
9478 
9479      l_Multi_GAAP_YN := 'N';
9480      l_adjust_asset_to_zero := 'N';
9481      --checks wheter Multi-GAAP processing needs tobe done
9482      If l_rep_pdt_id is not NULL Then
9483 
9484       --Bug 7708944. SMEREDDY 01/15/2009.
9485       -- Implemented MG changes based on PM recommendation.
9486 
9487         l_Multi_GAAP_YN := 'Y';
9488 /*
9489         If l_deal_type = 'LEASEOP' and
9490         nvl(l_rep_deal_type,'X') = 'LEASEOP' and
9491         nvl(l_tax_owner,'X') = 'LESSOR' Then
9492             l_Multi_GAAP_YN := 'Y';
9493         End If;
9494 
9495         If l_deal_type in ('LEASEDF','LEASEST') and
9496         nvl(l_rep_deal_type,'X') = 'LEASEOP' and
9497         nvl(l_tax_owner,'X') = 'LESSOR' Then
9498             l_Multi_GAAP_YN := 'Y';
9499         End If;
9500 
9501         If l_deal_type in ('LEASEDF','LEASEST') and
9502         nvl(l_rep_deal_type,'X') = 'LEASEOP' and
9503         nvl(l_tax_owner,'X') = 'LESSEE' Then
9504             l_Multi_GAAP_YN := 'Y';
9505         End If;
9506 
9507         If l_deal_type = 'LOAN' and
9508         nvl(l_rep_deal_type,'X') = 'LEASEOP' and
9509         nvl(l_tax_owner,'X') = 'LESSEE' Then
9510             l_Multi_GAAP_YN := 'Y';
9511         End If;
9512 */
9513       --Bug 7708944. SMEREDDY 01/15/2009.
9514       -- Implemented MG changes based on PM recommendation.
9515 
9516         If l_deal_type = 'LEASEOP' and
9517         nvl(l_rep_deal_type,'X') in ('LEASEDF','LEASEST') and
9518         nvl(l_tax_owner,'X') = 'LESSOR' Then
9519             --l_Multi_GAAP_YN := 'Y';
9520             l_adjust_asset_to_zero := 'Y';
9521         End If;
9522 
9523         If l_deal_type in ('LEASEDF','LEASEST') and
9524         nvl(l_rep_deal_type,'X') in ('LEASEDF','LEASEST') and
9525         nvl(l_tax_owner,'X') = 'LESSOR' Then
9526             --l_Multi_GAAP_YN := 'Y';
9527             l_adjust_asset_to_zero := 'Y';
9528         End If;
9529 
9530        If l_deal_type in ('LEASEDF','LEASEST') and
9531         nvl(l_rep_deal_type,'X') in ('LEASEDF','LEASEST') and
9532         nvl(l_tax_owner,'X') = 'LESSEE' Then
9533             --l_Multi_GAAP_YN := 'Y';
9534             l_adjust_asset_to_zero := 'Y';
9535         End If;
9536      End If;
9537 
9538      If l_Multi_GAAP_YN = 'Y' Then
9539          --get reporting product book type
9540          l_rep_pdt_book := OKL_SYSTEM_PARAMS_ALL_PUB.get_system_param_value(OKL_SYSTEM_PARAMS_ALL_PUB.G_RPT_PROD_BOOK_TYPE_CODE);
9541      End If;
9542 
9543      If (l_curr_trx_rec.transaction_type) = 'Internal Asset Creation' then
9544          --1. Booking and Online rebook new asset addition
9545          If (l_curr_trx_rec.tas_type = 'CFA') and (l_curr_trx_rec.tal_type = 'CFA') then
9546              open l_booking_corp_csr(p_tal_id => l_curr_trx_rec.tal_id);
9547              Fetch l_booking_corp_csr into l_booking_corp_rec;
9548              If l_booking_corp_csr%NOTFOUND then
9549                --Bug# 4775166
9550                close l_booking_corp_csr;
9551                open l_clev_csr(p_cle_id => p_cle_id);
9552                fetch l_clev_csr into l_clev_rec;
9553                close l_clev_csr;
9554 
9555                OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
9556                                    p_msg_name     => 'OKL_LA_NO_CORP_BOOK_DFLTS',
9557                                    p_token1       => 'ASSET_NUMBER',
9558                                    p_token1_value => l_clev_rec.name
9559 				           );
9560                Raise OKL_API.G_EXCEPTION_ERROR;
9561                --Bug# 4775166
9562              End If;
9563              close l_booking_corp_csr;
9564 
9565              l_method_id := null;
9566              If nvl(l_booking_corp_rec.life_in_months,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
9567                  open l_method_csr1(p_method_code => l_booking_corp_rec.deprn_method,
9568                                     p_life        => l_booking_corp_rec.life_in_months);
9569                  fetch l_method_csr1 into l_method_id;
9570                  if l_method_csr1%NOTFOUND then
9571                      null;
9572                  end if;
9573                  close l_method_csr1;
9574               ElsIf nvl(l_booking_corp_rec.deprn_rate,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
9575                  open l_method_csr2(p_method_code   => l_booking_corp_rec.deprn_method,
9576                                     p_basic_rate    => l_booking_corp_rec.deprn_rate,
9577                                     p_adj_rate      => l_booking_corp_rec.deprn_rate);
9578                  fetch l_method_csr2 into l_method_id;
9579                  --Bug# 4775166
9580                  if l_method_csr2%NOTFOUND then
9581                      null;
9582                  end if;
9583                  close l_method_csr2;
9584               End If;
9585 
9586               i := 1;
9587               x_ast_dtl_tbl(i).ASSET_NUMBER            :=  l_booking_corp_rec.asset_number;
9588               x_ast_dtl_tbl(i).BOOK_TYPE_CODE          :=  l_booking_corp_rec.corporate_book;
9589               x_ast_dtl_tbl(i).BOOK_CLASS              :=  l_booking_corp_rec.book_class;
9590               x_ast_dtl_tbl(i).DEPRN_METHOD            :=  l_booking_corp_rec.deprn_method;
9591               x_ast_dtl_tbl(i).DEPRN_METHOD_ID         :=  l_method_id;
9592               x_ast_dtl_tbl(i).IN_SERVICE_DATE         :=  l_booking_corp_rec.in_service_date;
9593               x_ast_dtl_tbl(i).LIFE_IN_MONTHS          :=  l_booking_corp_rec.life_in_months;
9594               x_ast_dtl_tbl(i).BASIC_RATE              :=  null;
9595               x_ast_dtl_tbl(i).ADJUSTED_RATE           :=  l_booking_corp_rec.deprn_rate;
9596               x_ast_dtl_tbl(i).SALVAGE_VALUE           :=  l_booking_corp_rec.salvage_value;
9597               x_ast_dtl_tbl(i).PERCENT_SALVAGE_VALUE   :=  l_booking_corp_rec.percent_salvage_value;
9598               x_ast_dtl_tbl(i).PRORATE_CONVENTION_CODE :=  l_booking_corp_rec.prorate_convention_code;
9599 
9600               If l_deal_type in ('LEASEDF','LEASEST','LOAN') then
9601                   x_ast_dtl_tbl(i).cost                  := 0;
9602                   x_ast_dtl_tbl(i).salvage_value         := 0;
9603                   x_ast_dtl_tbl(i).percent_salvage_value := null;
9604               Else
9605 
9606                   Calc_Deprn_Cost ( p_api_version      => p_api_version,
9607                                     p_init_msg_list    => p_init_msg_list,
9608                                     x_msg_count        => x_msg_count,
9609                                     x_msg_data         => x_msg_data,
9610                                     x_return_status    => x_return_status,
9611                                     p_entered_deprn    => l_booking_corp_rec.depreciation_cost,
9612                                     p_fa_cle_id        => l_booking_corp_rec.kle_id,
9613                                     x_calculated_deprn => x_ast_dtl_tbl(i).cost);
9614 
9615                   IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9616                       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9617                   ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9618                       RAISE OKL_API.G_EXCEPTION_ERROR;
9619                   END IF;
9620               End If;
9621 
9622               --process tax_books
9623               l_multi_gaap_book_done := 'N';
9624               open l_booking_tax_csr(p_tal_id          => l_curr_trx_rec.tal_id,
9625                                      p_category_id     => l_booking_corp_rec.depreciation_id,
9626                                      p_in_service_date => l_booking_corp_rec.in_service_date);
9627               loop
9628                   fetch l_booking_tax_csr into l_booking_tax_rec;
9629                   Exit when l_booking_tax_csr%NOTFOUND;
9630                   i := i + 1;
9631 
9632                   --get deprn method
9633                   l_method_id := null;
9634                   If nvl(l_booking_tax_rec.life_in_months_tax,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
9635                       open l_method_csr1(p_method_code => l_booking_tax_rec.deprn_method_tax,
9636                                          p_life        => l_booking_tax_rec.life_in_months_tax);
9637                       fetch l_method_csr1 into l_method_id;
9638                       if l_method_csr1%NOTFOUND then
9639                           null;
9640                       end if;
9641                       close l_method_csr1;
9642                   ElsIf nvl(l_booking_tax_rec.deprn_rate_tax,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
9643                       open l_method_csr2(p_method_code   => l_booking_tax_rec.deprn_method_tax,
9644                                          p_basic_rate    => l_booking_tax_rec.deprn_rate_tax,
9645                                          p_adj_rate      => l_booking_tax_rec.deprn_rate_tax);
9646                       fetch l_method_csr2 into l_method_id;
9647                       --Bug# 4775166
9648                       if l_method_csr2%NOTFOUND then
9649                            null;
9650                       end if;
9651                       close l_method_csr2;
9652                   End If;
9653 
9654                   x_ast_dtl_tbl(i).ASSET_NUMBER            :=  l_booking_corp_rec.asset_number;
9655                   x_ast_dtl_tbl(i).BOOK_TYPE_CODE          :=  l_booking_tax_rec.tax_book;
9656                   x_ast_dtl_tbl(i).BOOK_CLASS              :=  l_booking_tax_rec.book_class;
9657                   x_ast_dtl_tbl(i).DEPRN_METHOD            :=  l_booking_tax_rec.deprn_method_tax;
9658                   x_ast_dtl_tbl(i).DEPRN_METHOD_ID         :=  l_method_id;
9659                   x_ast_dtl_tbl(i).IN_SERVICE_DATE         :=  l_booking_corp_rec.in_service_date;
9660                   x_ast_dtl_tbl(i).LIFE_IN_MONTHS          :=  l_booking_tax_rec.life_in_months_tax;
9661                   x_ast_dtl_tbl(i).BASIC_RATE              :=  null;
9662                   x_ast_dtl_tbl(i).ADJUSTED_RATE           :=  l_booking_tax_rec.deprn_rate_tax;
9663                   If nvl(l_rep_pdt_book,OKL_API.G_MISS_CHAR) <> OKL_API.G_MISS_CHAR and
9664                      l_multi_gaap_yn = 'Y' and
9665                      l_rep_pdt_book = l_booking_tax_rec.tax_book then
9666                      x_ast_dtl_tbl(i).SALVAGE_VALUE           :=  l_booking_corp_rec.salvage_value;
9667                      x_ast_dtl_tbl(i).PERCENT_SALVAGE_VALUE   :=  l_booking_corp_rec.percent_salvage_value;
9668                      l_multi_gaap_book_done                   :=  'Y';
9669                   end if;
9670                   x_ast_dtl_tbl(i).PRORATE_CONVENTION_CODE :=  l_booking_tax_rec.prorate_convention_code;
9671 
9672                   If (l_multi_GAAP_yn = 'N') OR
9673                      (l_multi_GAAP_yn = 'Y' and nvl(l_rep_pdt_book,OKL_API.G_MISS_CHAR) <> l_booking_tax_rec.tax_book) then
9674                       If (l_deal_type = 'LOAN') OR
9675                          (l_deal_type in ('LEASEST','LEASEDF') AND l_tax_owner = 'LESSEE')
9676                       then
9677                           x_ast_dtl_tbl(i).cost  := 0;
9678                       Else
9679                           Calc_Deprn_Cost ( p_api_version      => p_api_version,
9680                                             p_init_msg_list    => p_init_msg_list,
9681                                             x_msg_count        => x_msg_count,
9682                                             x_msg_data         => x_msg_data,
9683                                             x_return_status    => x_return_status,
9684                                             p_entered_deprn    => l_booking_tax_rec.cost,
9685                                             p_fa_cle_id        => l_booking_corp_rec.kle_id,
9686                                             x_calculated_deprn => x_ast_dtl_tbl(i).cost);
9687 
9688                           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9689                               RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9690                           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9691                               RAISE OKL_API.G_EXCEPTION_ERROR;
9692                           END IF;
9693                       End If;
9694                   ElsIf (l_multi_gaap_yn = 'Y') and nvl(l_rep_pdt_book,OKL_API.G_MISS_CHAR) = l_booking_tax_rec.tax_book then
9695                       If (l_rep_deal_type = 'LEASEOP') then
9696                           Calc_Deprn_Cost ( p_api_version      => p_api_version,
9697                                             p_init_msg_list    => p_init_msg_list,
9698                                             x_msg_count        => x_msg_count,
9699                                             x_msg_data         => x_msg_data,
9700                                             x_return_status    => x_return_status,
9701                                             p_entered_deprn    => l_booking_tax_rec.cost,
9702                                             p_fa_cle_id        => l_booking_corp_rec.kle_id,
9703                                             x_calculated_deprn => x_ast_dtl_tbl(i).cost);
9704 
9705                           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9706                               RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9707                           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9708                               RAISE OKL_API.G_EXCEPTION_ERROR;
9709                           END IF;
9710                        ElsIf l_rep_deal_type in ('LEASEST','LEASEDF') then
9711                           x_ast_dtl_tbl(i).cost := 0;
9712                           x_ast_dtl_tbl(i).salvage_value := 0;
9713                           x_ast_dtl_tbl(i).percent_salvage_value := null;
9714                        End If;
9715                   End If;
9716               End Loop;
9717               close l_booking_tax_csr;
9718 
9719               --if multigaap book has not been done
9720               If (l_multi_gaap_yn = 'Y') and (l_multi_gaap_book_done = 'N') then
9721                   i := i+1;
9722                   --get defaults
9723                   open l_defaults_csr (p_book        => l_rep_pdt_book,
9724                                        p_category_id => l_booking_corp_rec.depreciation_id,
9725                                        p_date        => l_booking_corp_rec.in_service_date);
9726                   fetch l_defaults_csr into l_defaults_rec;
9727                   If l_defaults_csr%NOTFOUND then
9728                       --Raise Error
9729                       null;
9730                   End If;
9731                   close l_defaults_csr;
9732 
9733                   --get deprn method
9734                   l_method_id := null;
9735                   If nvl(l_defaults_rec.life_in_months,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
9736                       open l_method_csr1(p_method_code => l_defaults_rec.deprn_method,
9737                                          p_life        => l_defaults_rec.life_in_months);
9738                       fetch l_method_csr1 into l_method_id;
9739                       if l_method_csr1%NOTFOUND then
9740                           null;
9741                       end if;
9742                       close l_method_csr1;
9743                   ElsIf nvl(l_defaults_rec.basic_rate,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
9744                       open l_method_csr2(p_method_code   => l_defaults_rec.deprn_method,
9745                                          p_basic_rate    => l_defaults_rec.basic_rate,
9746                                          p_adj_rate      => l_defaults_rec.adjusted_rate);
9747                       fetch l_method_csr2 into l_method_id;
9748                       --Bug# 4775166
9749                       if l_method_csr2%NOTFOUND then
9750                            null;
9751                       end if;
9752                       close l_method_csr2;
9753                   End If;
9754 
9755                   x_ast_dtl_tbl(i).ASSET_NUMBER            :=  l_booking_corp_rec.asset_number;
9756                   x_ast_dtl_tbl(i).BOOK_TYPE_CODE          :=  l_rep_pdt_book;
9757                   x_ast_dtl_tbl(i).BOOK_CLASS              :=  'TAX';
9758                   x_ast_dtl_tbl(i).DEPRN_METHOD            :=  l_defaults_rec.deprn_method;
9759                   x_ast_dtl_tbl(i).DEPRN_METHOD_ID         :=  l_method_id;
9760                   x_ast_dtl_tbl(i).IN_SERVICE_DATE         :=  l_booking_corp_rec.in_service_date;
9761                   x_ast_dtl_tbl(i).LIFE_IN_MONTHS          :=  l_defaults_rec.life_in_months;
9762                   x_ast_dtl_tbl(i).BASIC_RATE              :=  l_defaults_rec.basic_rate;
9763                   x_ast_dtl_tbl(i).ADJUSTED_RATE           :=  l_defaults_rec.adjusted_rate;
9764                   x_ast_dtl_tbl(i).SALVAGE_VALUE           :=  l_booking_corp_rec.salvage_value;
9765                   x_ast_dtl_tbl(i).PERCENT_SALVAGE_VALUE   :=  l_booking_corp_rec.percent_salvage_value;
9766                   x_ast_dtl_tbl(i).PRORATE_CONVENTION_CODE :=  l_defaults_rec.prorate_convention_code;
9767                   l_multi_gaap_book_done                   :=  'Y';
9768 
9769                   If (l_rep_deal_type = 'LEASEOP') then
9770                       Calc_Deprn_Cost ( p_api_version      => p_api_version,
9771                                         p_init_msg_list    => p_init_msg_list,
9772                                         x_msg_count        => x_msg_count,
9773                                         x_msg_data         => x_msg_data,
9774                                         x_return_status    => x_return_status,
9775                                         p_entered_deprn    => l_booking_tax_rec.cost,
9776                                         p_fa_cle_id        => l_booking_corp_rec.kle_id,
9777                                         x_calculated_deprn => x_ast_dtl_tbl(i).cost);
9778 
9779                       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9780                           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9781                       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9782                           RAISE OKL_API.G_EXCEPTION_ERROR;
9783                       END IF;
9784                   Elsif l_rep_deal_type in ('LEASEST','LEASEDF') then
9785                       x_ast_dtl_tbl(i).cost := 0;
9786                       x_ast_dtl_tbl(i).salvage_value := 0;
9787                       x_ast_dtl_tbl(i).percent_salvage_value := null;
9788                   End If;
9789             End If;
9790 
9791          --2. Online Rebook adjustments
9792          ElsIf (l_curr_trx_rec.tas_type = 'CRB') and (l_curr_trx_rec.tal_type = 'CRB') then
9793 
9794              open l_booking_corp_csr(p_tal_id => l_curr_trx_rec.tal_id);
9795              Fetch l_booking_corp_csr into l_booking_corp_rec;
9796              If l_booking_corp_csr%NOTFOUND then
9797                --Bug# 4775166
9798                close l_booking_corp_csr;
9799                open l_clev_csr(p_cle_id => p_cle_id);
9800                fetch l_clev_csr into l_clev_rec;
9801                close l_clev_csr;
9802 
9803                OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
9804                                    p_msg_name     => 'OKL_LA_NO_CORP_BOOK_DFLTS',
9805                                    p_token1       => 'ASSET_NUMBER',
9806                                    p_token1_value => l_clev_rec.name
9807 				           );
9808                Raise OKL_API.G_EXCEPTION_ERROR;
9809                --Bug# 4775166
9810              End If;
9811              close l_booking_corp_csr;
9812 
9813              l_method_id := null;
9814              If nvl(l_booking_corp_rec.life_in_months,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
9815                  open l_method_csr1(p_method_code => l_booking_corp_rec.deprn_method,
9816                                     p_life        => l_booking_corp_rec.life_in_months);
9817                  fetch l_method_csr1 into l_method_id;
9818                  if l_method_csr1%NOTFOUND then
9819                      null;
9820                  end if;
9821                  close l_method_csr1;
9822              ElsIf nvl(l_booking_corp_rec.deprn_rate,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
9823                  open l_method_csr2(p_method_code   => l_booking_corp_rec.deprn_method,
9824                                     p_basic_rate    => l_booking_corp_rec.deprn_rate,
9825                                     p_adj_rate      => l_booking_corp_rec.deprn_rate);
9826                  fetch l_method_csr2 into l_method_id;
9827                  --Bug# 4775166
9828                  if l_method_csr2%NOTFOUND then
9829                      null;
9830                  end if;
9831                  close l_method_csr2;
9832              End If;
9833 
9834              --fetch data from FA
9835              l_fa_rec := null;
9836              open l_fa_csr (p_asset_number  => l_booking_corp_rec.asset_number,
9837                             p_book          => l_booking_corp_rec.corporate_book);
9838              fetch l_fa_csr into l_fa_rec;
9839              If l_fa_csr%NOTFOUND then
9840                  --Raise error
9841                  null;
9842              End If;
9843              close l_fa_csr;
9844 
9845              i := 1;
9846              x_ast_dtl_tbl(i).ASSET_NUMBER            :=  l_booking_corp_rec.asset_number;
9847              x_ast_dtl_tbl(i).BOOK_TYPE_CODE          :=  l_booking_corp_rec.corporate_book;
9848              x_ast_dtl_tbl(i).BOOK_CLASS              :=  l_booking_corp_rec.book_class;
9849              x_ast_dtl_tbl(i).DEPRN_METHOD            :=  l_booking_corp_rec.deprn_method;
9850              x_ast_dtl_tbl(i).DEPRN_METHOD_ID         :=  l_method_id;
9851              x_ast_dtl_tbl(i).IN_SERVICE_DATE         :=  l_booking_corp_rec.in_service_date;
9852              x_ast_dtl_tbl(i).LIFE_IN_MONTHS          :=  l_booking_corp_rec.life_in_months;
9853              x_ast_dtl_tbl(i).BASIC_RATE              :=  null;
9854              x_ast_dtl_tbl(i).ADJUSTED_RATE           :=  l_booking_corp_rec.deprn_rate;
9855              x_ast_dtl_tbl(i).SALVAGE_VALUE           :=  l_booking_corp_rec.salvage_value;
9856              x_ast_dtl_tbl(i).PERCENT_SALVAGE_VALUE   :=  l_booking_corp_rec.percent_salvage_value;
9857              x_ast_dtl_tbl(i).PRORATE_CONVENTION_CODE :=  l_fa_rec.prorate_convention_code;
9858 
9859 
9860 
9861              If l_deal_type in ('LEASEDF','LEASEST','LOAN') then
9862                  x_ast_dtl_tbl(i).cost                  := l_fa_rec.cost;
9863                  x_ast_dtl_tbl(i).salvage_value         := l_fa_rec.salvage_value;
9864                  x_ast_dtl_tbl(i).percent_salvage_value := l_fa_rec.percent_salvage_value;
9865              Else
9866 
9867                  -- Bug# 4899328: Cap fee changes are now included in the
9868                  -- Depreciation cost. Depreciation cost amount is automatically
9869                  -- recalculated whenever there is a change to cap fee.
9870                  /*
9871                  --find out if new capitalized fee has been added
9872                  Calc_Cap_Fee_Adjustment
9873                             (p_api_version        => p_api_version,
9874                              p_init_msg_list      => p_init_msg_list,
9875                              x_msg_count          => x_msg_count,
9876                              x_msg_data           => x_msg_data,
9877                              x_return_status      => x_return_status,
9878                              p_rbk_fa_cle_id      => l_booking_corp_rec.kle_id,
9879                              p_rbk_chr_id         => p_chr_id,
9880                              x_cap_fee_adjustment => l_cap_fee_delta);
9881 
9882                   IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9883                       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9884                   ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9885                       RAISE OKL_API.G_EXCEPTION_ERROR;
9886                   END IF;
9887                   x_ast_dtl_tbl(i).cost   := l_booking_corp_rec.depreciation_cost + l_cap_fee_delta;
9888                   */
9889 
9890                   x_ast_dtl_tbl(i).cost   := l_booking_corp_rec.depreciation_cost;
9891                   -- Bug# 4899328: End
9892 
9893              End If;
9894 
9895              --process tax_books
9896              l_multi_gaap_book_done := 'N';
9897              open l_booking_tax_csr(p_tal_id          => l_curr_trx_rec.tal_id,
9898                                  p_category_id     => l_booking_corp_rec.depreciation_id,
9899                                  p_in_service_date => l_booking_corp_rec.in_service_date);
9900              loop
9901                   fetch l_booking_tax_csr into l_booking_tax_rec;
9902                   Exit when l_booking_tax_csr%NOTFOUND;
9903                   i := i + 1;
9904 
9905                   --get deprn method
9906                   l_method_id := null;
9907                   If nvl(l_booking_tax_rec.life_in_months_tax,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
9908                       open l_method_csr1(p_method_code => l_booking_tax_rec.deprn_method_tax,
9909                                          p_life        => l_booking_tax_rec.life_in_months_tax);
9910                       fetch l_method_csr1 into l_method_id;
9911                       if l_method_csr1%NOTFOUND then
9912                           null;
9913                       end if;
9914                       close l_method_csr1;
9915                   ElsIf nvl(l_booking_tax_rec.deprn_rate_tax,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
9916                       open l_method_csr2(p_method_code   => l_booking_tax_rec.deprn_method_tax,
9917                                          p_basic_rate    => l_booking_tax_rec.deprn_rate_tax,
9918                                          p_adj_rate      => l_booking_tax_rec.deprn_rate_tax);
9919                       fetch l_method_csr2 into l_method_id;
9920                       --Bug# 4775166
9921                       if l_method_csr2%NOTFOUND then
9922                            null;
9923                       end if;
9924                       close l_method_csr2;
9925                   End If;
9926 
9927                   --fetch data from FA
9928                   l_fa_rec := null;
9929                   open l_fa_csr (p_asset_number  => l_booking_corp_rec.asset_number,
9930                                  p_book          => l_booking_tax_rec.tax_book);
9931                   fetch l_fa_csr into l_fa_rec;
9932                   If l_fa_csr%NOTFOUND then
9933                       --Raise error
9934                       null;
9935                   End If;
9936                   close l_fa_csr;
9937 
9938                   x_ast_dtl_tbl(i).ASSET_NUMBER            :=  l_booking_corp_rec.asset_number;
9939                   x_ast_dtl_tbl(i).BOOK_TYPE_CODE          :=  l_booking_tax_rec.tax_book;
9940                   x_ast_dtl_tbl(i).BOOK_CLASS              :=  l_booking_tax_rec.book_class;
9941                   x_ast_dtl_tbl(i).DEPRN_METHOD            :=  l_booking_tax_rec.deprn_method_tax;
9942                   x_ast_dtl_tbl(i).DEPRN_METHOD_ID         :=  l_method_id;
9943                   x_ast_dtl_tbl(i).IN_SERVICE_DATE         :=  l_booking_corp_rec.in_service_date;
9944                   x_ast_dtl_tbl(i).LIFE_IN_MONTHS          :=  l_booking_tax_rec.life_in_months_tax;
9945                   x_ast_dtl_tbl(i).BASIC_RATE              :=  null;
9946                   x_ast_dtl_tbl(i).ADJUSTED_RATE           :=  l_booking_tax_rec.deprn_rate_tax;
9947                   If nvl(l_rep_pdt_book,OKL_API.G_MISS_CHAR) <> OKL_API.G_MISS_CHAR and
9948                      l_multi_gaap_yn = 'Y' and
9949                      l_rep_pdt_book = l_booking_tax_rec.tax_book then
9950                      x_ast_dtl_tbl(i).SALVAGE_VALUE           :=  l_booking_corp_rec.salvage_value;
9951                      x_ast_dtl_tbl(i).PERCENT_SALVAGE_VALUE   :=  l_booking_corp_rec.percent_salvage_value;
9952                      l_multi_gaap_book_done                   :=  'Y';
9953                   end if;
9954                   x_ast_dtl_tbl(i).PRORATE_CONVENTION_CODE :=  l_fa_rec.prorate_convention_code;
9955 
9956                   If (l_multi_GAAP_yn = 'N') OR
9957                      (l_multi_GAAP_yn = 'Y' and nvl(l_rep_pdt_book,OKL_API.G_MISS_CHAR) <> l_booking_tax_rec.tax_book) then
9958                       If (l_deal_type = 'LOAN') OR
9959                          (l_deal_type in ('LEASEST','LEASEDF') AND l_tax_owner = 'LESSEE')
9960                       then
9961                           x_ast_dtl_tbl(i).cost  := l_fa_rec.cost;
9962                       Else
9963 
9964                           -- Bug# 4899328: Cap fee changes are now included in the
9965                           -- Depreciation cost. Depreciation cost amount is automatically
9966                           -- recalculated whenever there is a change to cap fee.
9967                           /*
9968                           --find out if new capitalized fee has been added
9969                           Calc_Cap_Fee_Adjustment
9970                             (p_api_version        => p_api_version,
9971                              p_init_msg_list      => p_init_msg_list,
9972                              x_msg_count          => x_msg_count,
9973                              x_msg_data           => x_msg_data,
9974                              x_return_status      => x_return_status,
9975                              p_rbk_fa_cle_id      => l_booking_corp_rec.kle_id,
9976                              p_rbk_chr_id         => p_chr_id,
9977                              x_cap_fee_adjustment => l_cap_fee_delta);
9978 
9979                           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9980                               RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9981                           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9982                               RAISE OKL_API.G_EXCEPTION_ERROR;
9983                           END IF;
9984                           x_ast_dtl_tbl(i).cost   := l_booking_tax_rec.cost + l_cap_fee_delta;
9985                           */
9986 
9987                           x_ast_dtl_tbl(i).cost   := l_booking_tax_rec.cost;
9988                           --Bug# 4899328: End
9989                       End If;
9990 
9991                   ElsIf (l_multi_gaap_yn = 'Y') and nvl(l_rep_pdt_book,OKL_API.G_MISS_CHAR) = l_booking_tax_rec.tax_book then
9992                       If (l_rep_deal_type = 'LEASEOP') then
9993 
9994                           -- Bug# 4899328: Cap fee changes are now included in the
9995                           -- Depreciation cost. Depreciation cost amount is automatically
9996                           -- recalculated whenever there is a change to cap fee.
9997                           /*
9998                           --find out if new capitalized fee has been added
9999                           Calc_Cap_Fee_Adjustment
10000                             (p_api_version        => p_api_version,
10001                              p_init_msg_list      => p_init_msg_list,
10002                              x_msg_count          => x_msg_count,
10003                              x_msg_data           => x_msg_data,
10004                              x_return_status      => x_return_status,
10005                              p_rbk_fa_cle_id      => l_booking_corp_rec.kle_id,
10006                              p_rbk_chr_id         => p_chr_id,
10007                              x_cap_fee_adjustment => l_cap_fee_delta);
10008 
10009                           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10010                               RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10011                           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10012                               RAISE OKL_API.G_EXCEPTION_ERROR;
10013                           END IF;
10014                           x_ast_dtl_tbl(i).cost   := l_booking_tax_rec.cost + l_cap_fee_delta;
10015                           */
10016 
10017                           x_ast_dtl_tbl(i).cost   := l_booking_tax_rec.cost;
10018                           --Bug# 4899328: End
10019 
10020                        ElsIf l_rep_deal_type in ('LEASEST','LEASEDF') then
10021 
10022                           x_ast_dtl_tbl(i).cost                  := l_fa_rec.cost;
10023                           x_ast_dtl_tbl(i).salvage_value         := l_fa_rec.salvage_value;
10024                           x_ast_dtl_tbl(i).percent_salvage_value := l_fa_rec.percent_salvage_value;
10025 
10026                        End If;
10027                   End If;
10028               End Loop;
10029               close l_booking_tax_csr;
10030           --3. Release Asset and Release Contract Case
10031           ElsIf (l_curr_trx_rec.tas_type = 'CRL') and (l_curr_trx_rec.tal_type = 'CRL') then
10032             open l_booking_corp_csr(p_tal_id => l_curr_trx_rec.tal_id);
10033              Fetch l_booking_corp_csr into l_booking_corp_rec;
10034              If l_booking_corp_csr%NOTFOUND then
10035                --Bug# 4775166
10036                close l_booking_corp_csr;
10037                open l_clev_csr(p_cle_id => p_cle_id);
10038                fetch l_clev_csr into l_clev_rec;
10039                close l_clev_csr;
10040 
10041                OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
10042                                    p_msg_name     => 'OKL_LA_NO_CORP_BOOK_DFLTS',
10043                                    p_token1       => 'ASSET_NUMBER',
10044                                    p_token1_value => l_clev_rec.name
10045 				           );
10046                Raise OKL_API.G_EXCEPTION_ERROR;
10047                --Bug# 4775166
10048              End If;
10049              close l_booking_corp_csr;
10050 
10051              l_method_id := null;
10052              If nvl(l_booking_corp_rec.life_in_months,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
10053                  open l_method_csr1(p_method_code => l_booking_corp_rec.deprn_method,
10054                                     p_life        => l_booking_corp_rec.life_in_months);
10055                  fetch l_method_csr1 into l_method_id;
10056                  if l_method_csr1%NOTFOUND then
10057                      null;
10058                  end if;
10059                  close l_method_csr1;
10060              ElsIf nvl(l_booking_corp_rec.deprn_rate,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
10061                  open l_method_csr2(p_method_code   => l_booking_corp_rec.deprn_method,
10062                                     p_basic_rate    => l_booking_corp_rec.deprn_rate,
10063                                     p_adj_rate      => l_booking_corp_rec.deprn_rate);
10064                  fetch l_method_csr2 into l_method_id;
10065                  --Bug# 4775166
10066                  if l_method_csr2%NOTFOUND then
10067                      null;
10068                  end if;
10069                  close l_method_csr2;
10070              End If;
10071 
10072              --fetch data from FA
10073              l_fa_rec := null;
10074              open l_fa_csr (p_asset_number  => l_booking_corp_rec.asset_number,
10075                             p_book          => l_booking_corp_rec.corporate_book);
10076              fetch l_fa_csr into l_fa_rec;
10077              If l_fa_csr%NOTFOUND then
10078                  --Raise error
10079                  null;
10080              End If;
10081              close l_fa_csr;
10082 
10083              i := 1;
10084              x_ast_dtl_tbl(i).ASSET_NUMBER            :=  l_booking_corp_rec.asset_number;
10085              x_ast_dtl_tbl(i).BOOK_TYPE_CODE          :=  l_booking_corp_rec.corporate_book;
10086              x_ast_dtl_tbl(i).BOOK_CLASS              :=  l_booking_corp_rec.book_class;
10087              x_ast_dtl_tbl(i).DEPRN_METHOD            :=  l_booking_corp_rec.deprn_method;
10088              x_ast_dtl_tbl(i).DEPRN_METHOD_ID         :=  l_method_id;
10089              x_ast_dtl_tbl(i).IN_SERVICE_DATE         :=  l_booking_corp_rec.in_service_date;
10090              x_ast_dtl_tbl(i).LIFE_IN_MONTHS          :=  l_booking_corp_rec.life_in_months;
10091              x_ast_dtl_tbl(i).BASIC_RATE              :=  null;
10092              x_ast_dtl_tbl(i).ADJUSTED_RATE           :=  l_booking_corp_rec.deprn_rate;
10093              x_ast_dtl_tbl(i).SALVAGE_VALUE           :=  l_booking_corp_rec.salvage_value;
10094              x_ast_dtl_tbl(i).PERCENT_SALVAGE_VALUE   :=  l_booking_corp_rec.percent_salvage_value;
10095              x_ast_dtl_tbl(i).PRORATE_CONVENTION_CODE :=  l_fa_rec.prorate_convention_code;
10096 
10097              -- Bug# 5150150
10098              OPEN  l_orig_sys_src_code_csr ( p_chr_id );
10099              FETCH l_orig_sys_src_code_csr INTO l_chr_id, l_orig_system_source_code;
10100              CLOSE l_orig_sys_src_code_csr;
10101 
10102              -- If Re-lease contract
10103              if ((l_orig_system_source_code is not null) and (l_orig_system_source_code = 'OKL_RELEASE')) then
10104 
10105                         OPEN  l_exp_asset_cost_csr ( p_cle_id );
10106                         FETCH l_exp_asset_cost_csr INTO l_cle_id, l_exp_asset_cost;
10107                         CLOSE l_exp_asset_cost_csr;
10108              end if;
10109              -- Bug# 5150150
10110 
10111              If l_deal_type in ('LEASEDF','LEASEST','LOAN') then
10112                  -- Bug# 5150150
10113                  x_ast_dtl_tbl(i).cost                  := 0;
10114                  x_ast_dtl_tbl(i).salvage_value         := 0;
10115                  x_ast_dtl_tbl(i).percent_salvage_value := 0;
10116              Else
10117                   -- Bug# 5150150-start
10118                   -- If Re-lease contract
10119                     if ((l_orig_system_source_code is not null) and (l_orig_system_source_code = 'OKL_RELEASE')) then
10120                         if (NVL(l_fa_rec.cost,0) = 0) then
10121                           x_ast_dtl_tbl(i).cost   := l_exp_asset_cost ;
10122                         else
10123                           x_ast_dtl_tbl(i).cost   := l_fa_rec.cost ;
10124                         end if;
10125 
10126                     -- if Re-lease asset
10127                     else
10128                         x_ast_dtl_tbl(i).cost   := l_fa_rec.cost ;
10129 
10130                         --find out if new capitalized fee has been added
10131                         open cap_fee_csr(p_fin_ast_cle_id   => p_cle_id
10132                                         ,p_chr_id           => p_chr_id);
10133                         fetch cap_fee_csr into l_new_cap_fee;
10134                         close cap_fee_csr;
10135 
10136                         x_ast_dtl_tbl(i).cost := x_ast_dtl_tbl(i).cost + NVL(l_new_cap_fee,0);
10137                     end if;
10138 
10139                     -- Bug# 5150150-End
10140              End If;
10141 
10142              --process tax_books
10143              l_multi_gaap_book_done := 'N';
10144              open l_booking_tax_csr(p_tal_id          => l_curr_trx_rec.tal_id,
10145                                     p_category_id     => l_booking_corp_rec.depreciation_id,
10146                                     p_in_service_date => l_booking_corp_rec.in_service_date);
10147              loop
10148                   fetch l_booking_tax_csr into l_booking_tax_rec;
10149                   Exit when l_booking_tax_csr%NOTFOUND;
10150                   i := i + 1;
10151 
10152                   --get deprn method
10153                   l_method_id := null;
10154                   If nvl(l_booking_tax_rec.life_in_months_tax,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
10155                       open l_method_csr1(p_method_code => l_booking_tax_rec.deprn_method_tax,
10156                                          p_life        => l_booking_tax_rec.life_in_months_tax);
10157                       fetch l_method_csr1 into l_method_id;
10158                       if l_method_csr1%NOTFOUND then
10159                           null;
10160                       end if;
10161                       close l_method_csr1;
10162                   ElsIf nvl(l_booking_tax_rec.deprn_rate_tax,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
10163                       open l_method_csr2(p_method_code   => l_booking_tax_rec.deprn_method_tax,
10164                                          p_basic_rate    => l_booking_tax_rec.deprn_rate_tax,
10165                                          p_adj_rate      => l_booking_tax_rec.deprn_rate_tax);
10166                       fetch l_method_csr2 into l_method_id;
10167                       --Bug# 4775166
10168                       if l_method_csr2%NOTFOUND then
10169                            null;
10170                       end if;
10171                       close l_method_csr2;
10172                   End If;
10173 
10174                   --fetch data from FA
10175                   l_fa_rec := null;
10176                   open l_fa_csr (p_asset_number  => l_booking_corp_rec.asset_number,
10177                                  p_book          => l_booking_tax_rec.tax_book);
10178                   fetch l_fa_csr into l_fa_rec;
10179                   If l_fa_csr%NOTFOUND then
10180                       --Raise error
10181                       null;
10182                   End If;
10183                   close l_fa_csr;
10184 
10185                   x_ast_dtl_tbl(i).ASSET_NUMBER            :=  l_booking_corp_rec.asset_number;
10186                   x_ast_dtl_tbl(i).BOOK_TYPE_CODE          :=  l_booking_tax_rec.tax_book;
10187                   x_ast_dtl_tbl(i).BOOK_CLASS              :=  l_booking_tax_rec.book_class;
10188                   x_ast_dtl_tbl(i).DEPRN_METHOD            :=  l_booking_tax_rec.deprn_method_tax;
10189                   x_ast_dtl_tbl(i).DEPRN_METHOD_ID         :=  l_method_id;
10190                   x_ast_dtl_tbl(i).IN_SERVICE_DATE         :=  l_booking_corp_rec.in_service_date;
10191                   x_ast_dtl_tbl(i).LIFE_IN_MONTHS          :=  l_booking_tax_rec.life_in_months_tax;
10192                   x_ast_dtl_tbl(i).BASIC_RATE              :=  null;
10193                   x_ast_dtl_tbl(i).ADJUSTED_RATE           :=  l_booking_tax_rec.deprn_rate_tax;
10194                   If nvl(l_rep_pdt_book,OKL_API.G_MISS_CHAR) <> OKL_API.G_MISS_CHAR and
10195                      l_multi_gaap_yn = 'Y' and
10196                      l_rep_pdt_book = l_booking_tax_rec.tax_book then
10197                      x_ast_dtl_tbl(i).SALVAGE_VALUE           :=  l_booking_corp_rec.salvage_value;
10198                      x_ast_dtl_tbl(i).PERCENT_SALVAGE_VALUE   :=  l_booking_corp_rec.percent_salvage_value;
10199                      l_multi_gaap_book_done                   :=  'Y';
10200                   end if;
10201                   x_ast_dtl_tbl(i).PRORATE_CONVENTION_CODE :=  l_fa_rec.prorate_convention_code;
10202                 If (l_multi_GAAP_yn = 'N') OR
10203                      (l_multi_GAAP_yn = 'Y' and nvl(l_rep_pdt_book,OKL_API.G_MISS_CHAR) <> l_booking_tax_rec.tax_book) then
10204 
10205                       -- Bug# 5150150
10206                       If (l_deal_type = 'LOAN') OR
10207                          (l_deal_type in ('LEASEST','LEASEDF') AND l_tax_owner = 'LESSEE')
10208                       then
10209                           x_ast_dtl_tbl(i).cost  := 0;
10210                       Else
10211                           -- Bug# 5150150-start
10212                           -- If Re-lease contract
10213                           if ((l_orig_system_source_code is not null) and (l_orig_system_source_code = 'OKL_RELEASE')) then
10214                             if (NVL(l_fa_rec.cost,0) = 0) then
10215                               x_ast_dtl_tbl(i).cost   := l_exp_asset_cost ;
10216                             else
10217                               x_ast_dtl_tbl(i).cost   := l_fa_rec.cost ;
10218                             end if;
10219                           -- if Re-lease asset
10220                           else
10221                             x_ast_dtl_tbl(i).cost   := l_fa_rec.cost ;
10222 
10223                             --find out if new capitalized fee has been added
10224                             open cap_fee_csr(p_fin_ast_cle_id   => p_cle_id
10225                                             ,p_chr_id           => p_chr_id);
10226                             fetch cap_fee_csr into l_new_cap_fee;
10227                             close cap_fee_csr;
10228 
10229                             x_ast_dtl_tbl(i).cost := x_ast_dtl_tbl(i).cost + NVL(l_new_cap_fee,0);
10230                           end if;
10231                           -- Bug# 5150150-End
10232                       End If;
10233 
10234                   ElsIf (l_multi_gaap_yn = 'Y') and nvl(l_rep_pdt_book,OKL_API.G_MISS_CHAR) = l_booking_tax_rec.tax_book then
10235                       If (l_rep_deal_type = 'LEASEOP') then
10236                           --find out if new capitalized fee has been added
10237 
10238                           -- Bug# 5150150-start
10239                           -- If Re-lease contract
10240                           if (NVL(l_orig_system_source_code,OKL_API.G_MISS_CHAR) = 'OKL_RELEASE') then
10241                             if (NVL(l_fa_rec.cost,0) = 0) then
10242                               x_ast_dtl_tbl(i).cost   := l_exp_asset_cost ;
10243                             else
10244                               x_ast_dtl_tbl(i).cost   := l_fa_rec.cost ;
10245                             end if;
10246                           -- if Re-lease asset
10247                           else
10248                             x_ast_dtl_tbl(i).cost   := l_fa_rec.cost ;
10249 
10250                             --find out if new capitalized fee has been added
10251                             open cap_fee_csr(p_fin_ast_cle_id   => p_cle_id
10252                                             ,p_chr_id           => p_chr_id);
10253                             fetch cap_fee_csr into l_new_cap_fee;
10254                             close cap_fee_csr;
10255 
10256                             x_ast_dtl_tbl(i).cost := x_ast_dtl_tbl(i).cost + NVL(l_new_cap_fee,0);
10257                           end if;
10258                           -- Bug# 5150150-End
10259 
10260                        ElsIf l_rep_deal_type in ('LEASEST','LEASEDF') then
10261                           -- Bug# 5150150
10262                           x_ast_dtl_tbl(i).cost                  := 0;
10263                           x_ast_dtl_tbl(i).salvage_value         := 0;
10264                           x_ast_dtl_tbl(i).percent_salvage_value := 0;
10265 
10266                        End If;
10267                   End If;
10268               End Loop;
10269               close l_booking_tax_csr;
10270           -------------
10271           --Bug# 4138635
10272           --4. Split Asset Case
10273           ElsIf (l_curr_trx_rec.tas_type = 'CSP') and (l_curr_trx_rec.tal_type = 'CSP') then
10274             open l_booking_corp_csr(p_tal_id => l_curr_trx_rec.tal_id);
10275              Fetch l_booking_corp_csr into l_booking_corp_rec;
10276              If l_booking_corp_csr%NOTFOUND then
10277                 --Bug# 4775166
10278                close l_booking_corp_csr;
10279                open l_clev_csr(p_cle_id => p_cle_id);
10280                fetch l_clev_csr into l_clev_rec;
10281                close l_clev_csr;
10282 
10283                OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
10284                                    p_msg_name     => 'OKL_LA_NO_CORP_BOOK_DFLTS',
10285                                    p_token1       => 'ASSET_NUMBER',
10286                                    p_token1_value => l_clev_rec.name
10287 				           );
10288                Raise OKL_API.G_EXCEPTION_ERROR;
10289                --Bug# 4775166
10290              End If;
10291              close l_booking_corp_csr;
10292 
10293              l_method_id := null;
10294              If nvl(l_booking_corp_rec.life_in_months,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
10295                  open l_method_csr1(p_method_code => l_booking_corp_rec.deprn_method,
10296                                     p_life        => l_booking_corp_rec.life_in_months);
10297                  fetch l_method_csr1 into l_method_id;
10298                  if l_method_csr1%NOTFOUND then
10299                      null;
10300                  end if;
10301                  close l_method_csr1;
10302              ElsIf nvl(l_booking_corp_rec.deprn_rate,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
10303                  open l_method_csr2(p_method_code   => l_booking_corp_rec.deprn_method,
10304                                     p_basic_rate    => l_booking_corp_rec.deprn_rate,
10305                                     p_adj_rate      => l_booking_corp_rec.deprn_rate);
10306                  fetch l_method_csr2 into l_method_id;
10307                  --Bug# 4775166
10308                  if l_method_csr2%NOTFOUND then
10309                      null;
10310                  end if;
10311                  close l_method_csr2;
10312              End If;
10313 
10314              --fetch data from FA
10315              l_fa_rec := null;
10316              open l_fa_csr (p_asset_number  => l_booking_corp_rec.asset_number,
10317                             p_book          => l_booking_corp_rec.corporate_book);
10318              fetch l_fa_csr into l_fa_rec;
10319              If l_fa_csr%NOTFOUND then
10320                  --Raise error
10321                  null;
10322              End If;
10323              close l_fa_csr;
10324 
10325              i := 1;
10326              x_ast_dtl_tbl(i).ASSET_NUMBER            :=  l_booking_corp_rec.asset_number;
10327              x_ast_dtl_tbl(i).BOOK_TYPE_CODE          :=  l_booking_corp_rec.corporate_book;
10328              x_ast_dtl_tbl(i).BOOK_CLASS              :=  l_booking_corp_rec.book_class;
10329              x_ast_dtl_tbl(i).DEPRN_METHOD            :=  l_booking_corp_rec.deprn_method;
10330              x_ast_dtl_tbl(i).DEPRN_METHOD_ID         :=  l_method_id;
10331              x_ast_dtl_tbl(i).IN_SERVICE_DATE         :=  l_booking_corp_rec.in_service_date;
10332              x_ast_dtl_tbl(i).LIFE_IN_MONTHS          :=  l_booking_corp_rec.life_in_months;
10333              x_ast_dtl_tbl(i).BASIC_RATE              :=  null;
10334              x_ast_dtl_tbl(i).ADJUSTED_RATE           :=  l_booking_corp_rec.deprn_rate;
10335              x_ast_dtl_tbl(i).SALVAGE_VALUE           :=  l_booking_corp_rec.salvage_value;
10336              x_ast_dtl_tbl(i).PERCENT_SALVAGE_VALUE   :=  l_booking_corp_rec.percent_salvage_value;
10337              x_ast_dtl_tbl(i).PRORATE_CONVENTION_CODE :=  l_fa_rec.prorate_convention_code;
10338 
10339 
10340 
10341              If l_deal_type in ('LEASEDF','LEASEST','LOAN') then
10342                  x_ast_dtl_tbl(i).cost                  := l_fa_rec.cost;
10343                  x_ast_dtl_tbl(i).salvage_value         := l_fa_rec.salvage_value;
10344                  x_ast_dtl_tbl(i).percent_salvage_value := l_fa_rec.percent_salvage_value;
10345              Else
10346                   x_ast_dtl_tbl(i).cost   := l_fa_rec.cost ;
10347              End If;
10348 
10349              --process tax_books
10350              l_multi_gaap_book_done := 'N';
10351              open l_booking_tax_csr(p_tal_id          => l_curr_trx_rec.tal_id,
10352                                     p_category_id     => l_booking_corp_rec.depreciation_id,
10353                                     p_in_service_date => l_booking_corp_rec.in_service_date);
10354              loop
10355                   fetch l_booking_tax_csr into l_booking_tax_rec;
10356                   Exit when l_booking_tax_csr%NOTFOUND;
10357                   i := i + 1;
10358 
10359                   --get deprn method
10360                   l_method_id := null;
10361                   If nvl(l_booking_tax_rec.life_in_months_tax,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
10362                       open l_method_csr1(p_method_code => l_booking_tax_rec.deprn_method_tax,
10363                                          p_life        => l_booking_tax_rec.life_in_months_tax);
10364                       fetch l_method_csr1 into l_method_id;
10365                       if l_method_csr1%NOTFOUND then
10366                           null;
10367                       end if;
10368                       close l_method_csr1;
10369                   ElsIf nvl(l_booking_tax_rec.deprn_rate_tax,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
10370                       open l_method_csr2(p_method_code   => l_booking_tax_rec.deprn_method_tax,
10371                                          p_basic_rate    => l_booking_tax_rec.deprn_rate_tax,
10372                                          p_adj_rate      => l_booking_tax_rec.deprn_rate_tax);
10373                       fetch l_method_csr2 into l_method_id;
10374                       --Bug# 4775166
10375                       if l_method_csr2%NOTFOUND then
10376                            null;
10377                       end if;
10378                       close l_method_csr2;
10379                   End If;
10380 
10381                   --fetch data from FA
10382                   l_fa_rec := null;
10383                   open l_fa_csr (p_asset_number  => l_booking_corp_rec.asset_number,
10384                                  p_book          => l_booking_tax_rec.tax_book);
10385                   fetch l_fa_csr into l_fa_rec;
10386                   If l_fa_csr%NOTFOUND then
10387                       --Raise error
10388                       null;
10389                   End If;
10390                   close l_fa_csr;
10391 
10392                   x_ast_dtl_tbl(i).ASSET_NUMBER            :=  l_booking_corp_rec.asset_number;
10393                   x_ast_dtl_tbl(i).BOOK_TYPE_CODE          :=  l_booking_tax_rec.tax_book;
10394                   x_ast_dtl_tbl(i).BOOK_CLASS              :=  l_booking_tax_rec.book_class;
10395                   x_ast_dtl_tbl(i).DEPRN_METHOD            :=  l_booking_tax_rec.deprn_method_tax;
10396                   x_ast_dtl_tbl(i).DEPRN_METHOD_ID         :=  l_method_id;
10397                   x_ast_dtl_tbl(i).IN_SERVICE_DATE         :=  l_booking_corp_rec.in_service_date;
10398                   x_ast_dtl_tbl(i).LIFE_IN_MONTHS          :=  l_booking_tax_rec.life_in_months_tax;
10399                   x_ast_dtl_tbl(i).BASIC_RATE              :=  null;
10400                   x_ast_dtl_tbl(i).ADJUSTED_RATE           :=  l_booking_tax_rec.deprn_rate_tax;
10401                   If nvl(l_rep_pdt_book,OKL_API.G_MISS_CHAR) <> OKL_API.G_MISS_CHAR and
10402                      l_multi_gaap_yn = 'Y' and
10403                      l_rep_pdt_book = l_booking_tax_rec.tax_book then
10404                      x_ast_dtl_tbl(i).SALVAGE_VALUE           :=  l_booking_corp_rec.salvage_value;
10405                      x_ast_dtl_tbl(i).PERCENT_SALVAGE_VALUE   :=  l_booking_corp_rec.percent_salvage_value;
10406                      l_multi_gaap_book_done                   :=  'Y';
10407                   end if;
10408                   x_ast_dtl_tbl(i).PRORATE_CONVENTION_CODE :=  l_fa_rec.prorate_convention_code;
10409                 If (l_multi_GAAP_yn = 'N') OR
10410                      (l_multi_GAAP_yn = 'Y' and nvl(l_rep_pdt_book,OKL_API.G_MISS_CHAR) <> l_booking_tax_rec.tax_book) then
10411                       x_ast_dtl_tbl(i).cost  := l_fa_rec.cost;
10412 
10413                   ElsIf (l_multi_gaap_yn = 'Y') and nvl(l_rep_pdt_book,OKL_API.G_MISS_CHAR) = l_booking_tax_rec.tax_book then
10414                       If (l_rep_deal_type = 'LEASEOP') then
10415                           --find out if new capitalized fee has been added
10416                           x_ast_dtl_tbl(i).cost   := l_fa_rec.cost ;
10417 
10418                        ElsIf l_rep_deal_type in ('LEASEST','LEASEDF') then
10419 
10420                           x_ast_dtl_tbl(i).cost                  := l_fa_rec.cost;
10421                           x_ast_dtl_tbl(i).salvage_value         := l_fa_rec.salvage_value;
10422                           x_ast_dtl_tbl(i).percent_salvage_value := l_fa_rec.percent_salvage_value;
10423 
10424                        End If;
10425                   End If;
10426               End Loop;
10427               close l_booking_tax_csr;
10428               --Bug# 4138635
10429           End If;
10430       --Mass rebook - created transaction type
10431 
10432       --Bug# 6344223 : Included transaction type 'Split Asset'
10433       ElsIf (l_curr_trx_rec.transaction_type) in('Rebook', 'Split Asset') then
10434           --Bug# 6344223 Included tas_type 'ALI'
10435           If (l_curr_trx_rec.tas_type in('CRB','ALI')) and (l_curr_trx_rec.tal_type in('CRB','ALI')) then
10436              open l_mass_rebook_corp_csr(p_tal_id => l_curr_trx_rec.tal_id);
10437              Fetch l_mass_rebook_corp_csr into l_mass_rebook_corp_rec;
10438              If l_mass_rebook_corp_csr%NOTFOUND then
10439                --Bug# 4775166
10440                close l_mass_rebook_corp_csr;
10441                open l_clev_csr(p_cle_id => p_cle_id);
10442                fetch l_clev_csr into l_clev_rec;
10443                close l_clev_csr;
10444 
10445                OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
10446                                    p_msg_name     => 'OKL_LA_NO_CORP_BOOK_DFLTS',
10447                                    p_token1       => 'ASSET_NUMBER',
10448                                    p_token1_value => l_clev_rec.name
10449 				           );
10450                Raise OKL_API.G_EXCEPTION_ERROR;
10451                --Bug# 4775166
10452              End If;
10453              close l_mass_rebook_corp_csr;
10454 
10455              l_method_id := null;
10456              If nvl(l_mass_rebook_corp_rec.life_in_months,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
10457                  open l_method_csr1(p_method_code => l_mass_rebook_corp_rec.deprn_method,
10458                                     p_life        => l_mass_rebook_corp_rec.life_in_months);
10459                  fetch l_method_csr1 into l_method_id;
10460                  if l_method_csr1%NOTFOUND then
10461                      null;
10462                  end if;
10463                  close l_method_csr1;
10464              ElsIf nvl(l_mass_rebook_corp_rec.deprn_rate,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
10465                  open l_method_csr2(p_method_code   => l_mass_rebook_corp_rec.deprn_method,
10466                                     p_basic_rate    => l_mass_rebook_corp_rec.deprn_rate,
10467                                     p_adj_rate      => l_mass_rebook_corp_rec.deprn_rate);
10468                  fetch l_method_csr2 into l_method_id;
10469                  --Bug# 4775166
10470                  if l_method_csr2%NOTFOUND then
10471                      null;
10472                  end if;
10473                  close l_method_csr2;
10474              End If;
10475 
10476              --fetch data from FA
10477              l_fa_rec := null;
10478              open l_fa_csr (p_asset_number  => l_mass_rebook_corp_rec.asset_number,
10479                             p_book          => l_mass_rebook_corp_rec.corporate_book);
10480              fetch l_fa_csr into l_fa_rec;
10481              If l_fa_csr%NOTFOUND then
10482                  --Raise error
10483                  null;
10484              End If;
10485              close l_fa_csr;
10486 
10487              i := 1;
10488 
10489              x_ast_dtl_tbl(i).ASSET_NUMBER            :=  l_mass_rebook_corp_rec.asset_number;
10490              x_ast_dtl_tbl(i).BOOK_TYPE_CODE          :=  l_mass_rebook_corp_rec.corporate_book;
10491              x_ast_dtl_tbl(i).BOOK_CLASS              :=  l_mass_rebook_corp_rec.book_class;
10492              x_ast_dtl_tbl(i).DEPRN_METHOD            :=  l_mass_rebook_corp_rec.deprn_method;
10493              x_ast_dtl_tbl(i).DEPRN_METHOD_ID         :=  l_method_id;
10494              x_ast_dtl_tbl(i).IN_SERVICE_DATE         :=  nvl(l_mass_rebook_corp_rec.in_service_date,l_fa_rec.date_placed_in_service);
10495              x_ast_dtl_tbl(i).LIFE_IN_MONTHS          :=  l_mass_rebook_corp_rec.life_in_months;
10496              x_ast_dtl_tbl(i).BASIC_RATE              :=  null;
10497              x_ast_dtl_tbl(i).ADJUSTED_RATE           :=  l_mass_rebook_corp_rec.deprn_rate;
10498              x_ast_dtl_tbl(i).SALVAGE_VALUE           :=  nvl(l_mass_rebook_corp_rec.salvage_value,l_fa_rec.salvage_value);
10499              x_ast_dtl_tbl(i).PERCENT_SALVAGE_VALUE   :=  nvl(l_mass_rebook_corp_rec.percent_salvage_value,l_fa_rec.percent_salvage_value);
10500              x_ast_dtl_tbl(i).PRORATE_CONVENTION_CODE :=  l_fa_rec.prorate_convention_code;
10501 
10502              If x_ast_dtl_tbl(i).asset_number is not null and l_method_id is null Then
10503                  --unable to resolve method from supplied deprn parameters
10504                  x_ast_dtl_tbl(i).DEPRN_METHOD    := l_fa_rec.deprn_method_code;
10505                  x_ast_dtl_tbl(i).LIFE_IN_MONTHS  := l_fa_rec.life_in_months;
10506                  x_ast_dtl_tbl(i).BASIC_RATE      := l_fa_Rec.basic_rate;
10507                  x_ast_dtl_tbl(i).ADJUSTED_RATE   := l_fa_rec.adjusted_rate;
10508                  --get method id
10509                  l_method_id := null;
10510                  If nvl(l_fa_rec.life_in_months,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
10511                      open l_method_csr1(p_method_code => l_fa_rec.deprn_method_code,
10512                                         p_life        => l_fa_rec.life_in_months);
10513                      fetch l_method_csr1 into l_method_id;
10514                      if l_method_csr1%NOTFOUND then
10515                          null;
10516                      end if;
10517                      close l_method_csr1;
10518                  ElsIf nvl(l_fa_rec.adjusted_rate,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
10519                      open l_method_csr2(p_method_code   => l_fa_rec.deprn_method_code,
10520                                         p_basic_rate    => l_fa_rec.basic_rate,
10521                                         p_adj_rate      => l_fa_rec.adjusted_rate);
10522                      fetch l_method_csr2 into l_method_id;
10523                      --Bug# 4775166
10524                      if l_method_csr2%NOTFOUND then
10525                          null;
10526                      end if;
10527                      close l_method_csr2;
10528                  End If;
10529              End If;
10530 
10531              x_ast_dtl_tbl(i).DEPRN_METHOD_ID     :=  l_method_id;
10532              x_ast_dtl_tbl(i).COST                := l_fa_rec.cost;
10533 
10534              --process tax_books
10535              open l_fa_csr2 (p_chr_id => p_chr_id,
10536                              p_cle_id => p_cle_id);
10537              Loop
10538                  fetch l_fa_csr2 into l_fa_rec2;
10539                  Exit when l_fa_csr2%NOTFOUND ;
10540                  If l_fa_rec2.book_class = 'TAX' then
10541                  open l_mass_rebook_tax_csr(p_tal_id          => l_curr_trx_rec.tal_id,
10542                                             p_category_id     => l_fa_rec.asset_category_id,
10543                                             p_in_service_date => l_fa_rec.date_placed_in_service,
10544                                             p_book            => l_fa_rec2.book_type_code);
10545 
10546                   fetch l_mass_rebook_tax_csr into l_mass_rebook_tax_rec;
10547                   If l_mass_rebook_tax_csr%NOTFOUND then
10548                       i := i + 1;
10549                       x_ast_dtl_tbl(i).ASSET_NUMBER            :=  l_fa_rec2.asset_number;
10550                       x_ast_dtl_tbl(i).BOOK_TYPE_CODE          :=  l_fa_rec2.book_type_code;
10551                       x_ast_dtl_tbl(i).BOOK_CLASS              :=  l_fa_rec2.book_class;
10552                       x_ast_dtl_tbl(i).DEPRN_METHOD            :=  l_fa_rec2.deprn_method_code;
10553                       x_ast_dtl_tbl(i).IN_SERVICE_DATE         :=  l_fa_rec2.date_placed_in_service;
10554                       x_ast_dtl_tbl(i).LIFE_IN_MONTHS          :=  l_fa_rec2.life_in_months;
10555                       x_ast_dtl_tbl(i).BASIC_RATE              :=  l_fa_rec2.basic_rate;
10556                       x_ast_dtl_tbl(i).ADJUSTED_RATE           :=  l_fa_rec2.adjusted_rate;
10557                       x_ast_dtl_tbl(i).SALVAGE_VALUE           :=  l_fa_rec2.salvage_value;
10558                       x_ast_dtl_tbl(i).PERCENT_SALVAGE_VALUE   :=  l_fa_rec2.percent_salvage_value;
10559                       x_ast_dtl_tbl(i).PRORATE_CONVENTION_CODE :=  l_fa_rec2.prorate_convention_code;
10560                       x_ast_dtl_tbl(i).COST                    :=  l_fa_rec2.cost;
10561                        --get method id
10562                       l_method_id := null;
10563                       If nvl(l_fa_rec2.life_in_months,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
10564                           open l_method_csr1(p_method_code => l_fa_rec2.deprn_method_code,
10565                                              p_life        => l_fa_rec2.life_in_months);
10566                           fetch l_method_csr1 into l_method_id;
10567                           if l_method_csr1%NOTFOUND then
10568                               null;
10569                           end if;
10570                           close l_method_csr1;
10571                       ElsIf nvl(l_fa_rec2.adjusted_rate,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
10572                           open l_method_csr2(p_method_code   => l_fa_rec2.deprn_method_code,
10573                                              p_basic_rate    => l_fa_rec2.basic_rate,
10574                                              p_adj_rate      => l_fa_rec2.adjusted_rate);
10575                           fetch l_method_csr2 into l_method_id;
10576                           --Bug# 4775166
10577                           if l_method_csr2%NOTFOUND then
10578                               null;
10579                           end if;
10580                           close l_method_csr2;
10581                       End If;
10582                       x_ast_dtl_tbl(i).DEPRN_METHOD_ID         :=  l_method_id;
10583 
10584                    ElsIf l_mass_rebook_tax_csr%FOUND then
10585                        --get deprn method
10586                       i := i + 1;
10587                       l_method_id := null;
10588                       If nvl(l_mass_rebook_tax_rec.life_in_months_tax,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
10589                           open l_method_csr1(p_method_code => l_mass_rebook_tax_rec.deprn_method_tax,
10590                                              p_life        => l_mass_rebook_tax_rec.life_in_months_tax);
10591                           fetch l_method_csr1 into l_method_id;
10592                           if l_method_csr1%NOTFOUND then
10593                              null;
10594                           end if;
10595                           close l_method_csr1;
10596                       ElsIf nvl(l_mass_rebook_tax_rec.deprn_rate_tax,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
10597                           open l_method_csr2(p_method_code   => l_mass_rebook_tax_rec.deprn_method_tax,
10598                                              p_basic_rate    => l_mass_rebook_tax_rec.deprn_rate_tax,
10599                                              p_adj_rate      => l_mass_rebook_tax_rec.deprn_rate_tax);
10600                           fetch l_method_csr2 into l_method_id;
10601                           --Bug# 4775166
10602                           if l_method_csr2%NOTFOUND then
10603                                null;
10604                           end if;
10605                           close l_method_csr2;
10606                       End If;
10607 
10608                       x_ast_dtl_tbl(i).ASSET_NUMBER            :=  l_mass_rebook_corp_rec.asset_number;
10609                       x_ast_dtl_tbl(i).BOOK_TYPE_CODE          :=  l_mass_rebook_tax_rec.tax_book;
10610                       x_ast_dtl_tbl(i).BOOK_CLASS              :=  l_mass_rebook_tax_rec.book_class;
10611                       x_ast_dtl_tbl(i).DEPRN_METHOD            :=  l_mass_rebook_tax_rec.deprn_method_tax;
10612                       x_ast_dtl_tbl(i).DEPRN_METHOD_ID         :=  l_method_id;
10613                       x_ast_dtl_tbl(i).IN_SERVICE_DATE         :=  nvl(l_mass_rebook_corp_rec.in_service_date,l_fa_rec2.date_placed_in_service);
10614                       x_ast_dtl_tbl(i).LIFE_IN_MONTHS          :=  l_mass_rebook_tax_rec.life_in_months_tax;
10615                       x_ast_dtl_tbl(i).BASIC_RATE              :=  null;
10616                       x_ast_dtl_tbl(i).ADJUSTED_RATE           :=  l_mass_rebook_tax_rec.deprn_rate_tax;
10617                       x_ast_dtl_tbl(i).salvage_value           :=  l_fa_rec2.salvage_value;
10618                       x_ast_dtl_tbl(i).percent_salvage_value   :=  l_fa_rec2.percent_salvage_value;
10619                       x_ast_dtl_tbl(i).COST                    :=  l_fa_rec2.cost;
10620                       If x_ast_dtl_tbl(i).asset_number is not null and l_method_id is null Then
10621                           --unable to resolve method from supplied deprn parameters
10622                          x_ast_dtl_tbl(i).DEPRN_METHOD    := l_fa_rec2.deprn_method_code;
10623                          x_ast_dtl_tbl(i).LIFE_IN_MONTHS  := l_fa_rec2.life_in_months;
10624                          x_ast_dtl_tbl(i).BASIC_RATE      := l_fa_Rec2.basic_rate;
10625                          x_ast_dtl_tbl(i).ADJUSTED_RATE   := l_fa_rec2.adjusted_rate;
10626                          --get method id
10627                          l_method_id := null;
10628                          If nvl(l_fa_rec.life_in_months,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
10629                              open l_method_csr1(p_method_code => l_fa_rec2.deprn_method_code,
10630                                                p_life        => l_fa_rec2.life_in_months);
10631                              fetch l_method_csr1 into l_method_id;
10632                              if l_method_csr1%NOTFOUND then
10633                                  null;
10634                              end if;
10635                              close l_method_csr1;
10636                          ElsIf nvl(l_fa_rec2.adjusted_rate,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
10637                              open l_method_csr2(p_method_code   => l_fa_rec2.deprn_method_code,
10638                                                 p_basic_rate    => l_fa_rec2.basic_rate,
10639                                                 p_adj_rate      => l_fa_rec2.adjusted_rate);
10640                              fetch l_method_csr2 into l_method_id;
10641                              --Bug# 4775166
10642                              if l_method_csr2%NOTFOUND then
10643                                  null;
10644                              end if;
10645                              close l_method_csr2;
10646                          End If;
10647                       End If;
10648                       x_ast_dtl_tbl(i).DEPRN_METHOD_ID     :=  l_method_id;
10649                   End If;
10650                   close l_mass_rebook_tax_csr;
10651                   End If;
10652                   End Loop;
10653               close l_fa_csr2;
10654           End If;
10655       End If;
10656       End If;
10657       OKL_API.END_ACTIVITY (x_msg_count,x_msg_data );
10658       EXCEPTION
10659       WHEN OKL_API.G_EXCEPTION_ERROR THEN
10660       If l_curr_trx_csr%ISOPEN then
10661           close l_curr_trx_csr;
10662       end if;
10663       If l_booking_corp_csr%ISOPEN then
10664           close l_booking_corp_csr;
10665       end if;
10666       if l_booking_tax_csr%ISOPEN then
10667           close l_booking_tax_csr;
10668       end if;
10669       if l_method_csr1%isopen then
10670           close l_method_csr1;
10671       end if;
10672       if l_method_csr2%isopen then
10673           close l_method_csr2;
10674       end if;
10675       if l_defaults_csr%isopen then
10676           close l_defaults_csr;
10677       end if;
10678       if l_chr_csr%isopen then
10679           close l_chr_csr;
10680       end if;
10681       if l_chk_mass_rbk_csr%isopen then
10682           close l_chk_mass_rbk_csr;
10683       end if;
10684       if l_fa_csr2%isopen then
10685           close l_fa_csr2;
10686       end if;
10687       if l_fa_csr%isopen then
10688           close l_fa_csr;
10689       end if;
10690       if l_mass_rebook_corp_csr%isopen then
10691           close l_mass_rebook_corp_csr;
10692       end if;
10693       if l_mass_rebook_tax_csr%isopen then
10694           close l_mass_rebook_tax_csr;
10695       end if;
10696       if l_clev_csr%isopen then
10697           close l_clev_csr;
10698       end if;
10699       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10700                                l_api_name,
10701                                G_PKG_NAME,
10702                                'OKL_API.G_RET_STS_ERROR',
10703                                x_msg_count,
10704                                x_msg_data,
10705                                '_PVT');
10706       WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
10707       If l_curr_trx_csr%ISOPEN then
10708           close l_curr_trx_csr;
10709       end if;
10710       If l_booking_corp_csr%ISOPEN then
10711           close l_booking_corp_csr;
10712       end if;
10713       if l_booking_tax_csr%ISOPEN then
10714           close l_booking_tax_csr;
10715       end if;
10716       if l_method_csr1%isopen then
10717           close l_method_csr1;
10718       end if;
10719       if l_method_csr2%isopen then
10720           close l_method_csr2;
10721       end if;
10722       if l_defaults_csr%isopen then
10723           close l_defaults_csr;
10724       end if;
10725       if l_chr_csr%isopen then
10726           close l_chr_csr;
10727       end if;
10728       if l_chk_mass_rbk_csr%isopen then
10729           close l_chk_mass_rbk_csr;
10730       end if;
10731       if l_fa_csr2%isopen then
10732           close l_fa_csr2;
10733       end if;
10734       if l_fa_csr%isopen then
10735           close l_fa_csr;
10736       end if;
10737       if l_mass_rebook_corp_csr%isopen then
10738           close l_mass_rebook_corp_csr;
10739       end if;
10740       if l_mass_rebook_tax_csr%isopen then
10741           close l_mass_rebook_tax_csr;
10742       end if;
10743       if l_clev_csr%isopen then
10744           close l_clev_csr;
10745       end if;
10746       x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10747                               l_api_name,
10748                               G_PKG_NAME,
10749                               'OKL_API.G_RET_STS_UNEXP_ERROR',
10750                               x_msg_count,
10751                               x_msg_data,
10752                               '_PVT');
10753       WHEN OTHERS THEN
10754       If l_curr_trx_csr%ISOPEN then
10755           close l_curr_trx_csr;
10756       end if;
10757       If l_booking_corp_csr%ISOPEN then
10758           close l_booking_corp_csr;
10759       end if;
10760       if l_booking_tax_csr%ISOPEN then
10761           close l_booking_tax_csr;
10762       end if;
10763       if l_method_csr1%isopen then
10764           close l_method_csr1;
10765       end if;
10766       if l_method_csr2%isopen then
10767           close l_method_csr2;
10768       end if;
10769       if l_defaults_csr%isopen then
10770           close l_defaults_csr;
10771       end if;
10772       if l_chr_csr%isopen then
10773           close l_chr_csr;
10774       end if;
10775       if l_chk_mass_rbk_csr%isopen then
10776           close l_chk_mass_rbk_csr;
10777       end if;
10778       if l_fa_csr2%isopen then
10779           close l_fa_csr2;
10780       end if;
10781       if l_fa_csr%isopen then
10782           close l_fa_csr;
10783       end if;
10784       if l_mass_rebook_corp_csr%isopen then
10785           close l_mass_rebook_corp_csr;
10786       end if;
10787       if l_mass_rebook_tax_csr%isopen then
10788           close l_mass_rebook_tax_csr;
10789       end if;
10790       if l_clev_csr%isopen then
10791           close l_clev_csr;
10792       end if;
10793       x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10794                               l_api_name,
10795                               G_PKG_NAME,
10796                               'OTHERS',
10797                               x_msg_count,
10798                               x_msg_data,
10799                               '_PVT');
10800 
10801   END Get_Pricing_parameters;
10802 
10803   --------------------------------------------------------------------------------
10804   --Start of Comments
10805   --Function Name   : RECALCULATE_ASSET_COST Bug fix# 4899328
10806   --Description     : Procedure to recalculate Asset Depreciable Cost on Rebook
10807   --                  when there is a change to Capitalized Fee or Subsidy
10808   --
10809   --History         :
10810   --                 05-Dec-2005  rpillay Created
10811   --
10812   --End of Comments
10813 --------------------------------------------------------------------------------
10814   Procedure recalculate_asset_cost ( p_api_version   IN  NUMBER,
10815                                      p_init_msg_list IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
10816                                      x_return_status OUT NOCOPY VARCHAR2,
10817                                      x_msg_count     OUT NOCOPY NUMBER,
10818                                      x_msg_data      OUT NOCOPY VARCHAR2,
10819                                      p_chr_id        IN  NUMBER,
10820                                      p_cle_id        IN  NUMBER) is
10821 
10822     l_return_status        VARCHAR2(1)  default OKL_API.G_RET_STS_SUCCESS;
10823     l_api_name             CONSTANT varchar2(30) := 'RECALCULATE_ASSET_COST';
10824     l_api_version          CONSTANT NUMBER := 1.0;
10825 
10826     --cursor to check if the contract is undergoing on-line rebook
10827     cursor l_chk_rbk_csr(p_chr_id IN NUMBER) is
10828     SELECT '!'
10829     FROM   okc_k_headers_b CHR,
10830            okl_trx_contracts ktrx
10831     WHERE  ktrx.khr_id_new = chr.id
10832     AND    ktrx.tsu_code = 'ENTERED'
10833     AND    ktrx.rbr_code is NOT NULL
10834     AND    ktrx.tcn_type = 'TRBK'
10835    --rkuttiya added for 12.1.1 Multi GAAP Project
10836     AND    ktrx.representation_type = 'PRIMARY'
10837    --
10838     AND    CHR.id = p_chr_id
10839     AND    CHR.ORIG_SYSTEM_SOURCE_CODE = 'OKL_REBOOK';
10840 
10841     l_rbk_khr      VARCHAR2(1) DEFAULT '?';
10842 
10843     --cursor to get transaction going on on this asset
10844     cursor l_curr_trx_csr(p_chr_id in number,
10845                           p_cle_id in number) is
10846     select ttyt.name      transaction_type,
10847            trx.tas_type,
10848            txl.tal_type,
10849            txl.id         tal_id,
10850            trx.creation_date
10851     from   okl_trx_types_tl         ttyt,
10852            okl_trx_assets           trx,
10853            okl_txl_assets_b         txl,
10854            okc_k_lines_b            cleb,
10855            okc_line_styles_b        lseb
10856     where  ttyt.id            = trx.try_id
10857     and    ttyt.language      = 'US'
10858     and    trx.id             = txl.tas_id
10859     and    trx.tsu_code       = 'ENTERED'
10860     and    txl.kle_id         = cleb.id
10861     and    cleb.cle_id        = p_cle_id
10862     and    cleb.dnz_chr_id    = p_chr_id
10863     and    cleb.lse_id        = lseb.id
10864     and    lseb.lty_code      = 'FIXED_ASSET'
10865     order by trx.creation_date desc;
10866 
10867     l_curr_trx_rec l_curr_trx_csr%ROWTYPE;
10868 
10869     --cursor to get contract header details
10870     cursor l_chr_csr (p_chr_id in number) is
10871     select khr.pdt_id,
10872            khr.deal_type,
10873            chrb.start_date,
10874            rul.rule_information1
10875     from   okc_rules_b       rul,
10876            okc_rule_groups_b rgp,
10877            okl_k_headers     khr,
10878            okc_k_headers_b   chrb
10879     where  rul.rule_information_category       = 'LATOWN'
10880     and    rul.rgp_id                          = rgp.id
10881     and    rul.dnz_chr_id                      = rgp.dnz_chr_id
10882     and    rgp.dnz_chr_id                      = chrb.id
10883     and    rgp.chr_id                          = chrb.id
10884     and    rgp.rgd_code                        = 'LATOWN'
10885     and    khr.id                              = chrb.id
10886     and    chrb.id                             = p_chr_id;
10887 
10888     l_pdt_id               number;
10889     l_start_date           date;
10890     l_rep_pdt_id           number;
10891     l_tax_owner            okc_rules_b.rule_information_category%TYPE;
10892     l_deal_type            okl_k_headers.deal_type%TYPE;
10893     l_rep_deal_type        okl_k_headers.deal_type%TYPE;
10894     l_Multi_GAAP_YN        varchar2(1);
10895 
10896     cursor l_tax_book_csr(p_tal_id in number) is
10897     select txd.id,
10898            txd.tax_book
10899     from   okl_txd_Assets_b txd
10900     where  txd.tal_id = p_tal_id;
10901 
10902     l_rep_pdt_book fa_books.book_type_code%TYPE;
10903 
10904     cursor l_capital_cost_csr(p_fin_cle_id in number) IS
10905     select kle_fin.capital_amount
10906     from   okc_k_lines_b cleb_fin,
10907            okl_k_lines   kle_fin
10908     where  cleb_fin.id = p_fin_cle_id
10909     and    kle_fin.id  = cleb_fin.id;
10910 
10911     l_capital_amount okl_k_lines.capital_amount%TYPE;
10912 
10913     l_talv_rec         okl_txl_assets_pub.tlpv_rec_type;
10914     lx_talv_rec        okl_txl_assets_pub.tlpv_rec_type;
10915     l_txdv_rec         okl_txd_assets_pub.adpv_rec_type;
10916     lx_txdv_rec        okl_txd_assets_pub.adpv_rec_type;
10917 
10918   BEGIN
10919      x_return_status := OKL_API.G_RET_STS_SUCCESS;
10920 
10921      -- Call start_activity to create savepoint, check compatibility
10922      -- and initialize message list
10923      x_return_status := OKL_API.START_ACTIVITY (
10924                                 l_api_name
10925                                 ,p_init_msg_list
10926                                 ,'_PVT'
10927                                 ,x_return_status);
10928      -- Check if activity started successfully
10929      IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10930         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10931      ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10932         RAISE OKL_API.G_EXCEPTION_ERROR;
10933      END IF;
10934 
10935      --check for rebook contract
10936      l_rbk_khr := '?';
10937      OPEN l_chk_rbk_csr (p_chr_id => p_chr_id);
10938      FETCH l_chk_rbk_csr INTO l_rbk_khr;
10939      CLOSE l_chk_rbk_csr;
10940 
10941      If l_rbk_khr = '!' Then
10942 
10943        -------------------------------------------------
10944        --1. Find out details of the current transactions
10945        -------------------------------------------------
10946 
10947        For l_curr_trx_rec in l_curr_trx_csr(p_chr_id => p_chr_id,
10948                                             p_cle_id => p_cle_id) Loop
10949 
10950          --cursor to get capital cost
10951          l_capital_amount := 0;
10952          open l_capital_cost_csr(p_fin_cle_id => p_cle_id);
10953          fetch l_capital_cost_csr into l_capital_amount;
10954          close l_capital_cost_csr;
10955 
10956          --cursor to get contract detials :
10957          open l_chr_csr (p_chr_id => p_chr_id);
10958          fetch l_chr_csr into l_pdt_id,
10959                               l_deal_type,
10960                               l_start_date,
10961                               l_tax_owner;
10962          close l_chr_csr;
10963 
10964          -- Multi-GAAP Begin
10965          Get_Pdt_Params (p_api_version   => p_api_version,
10966                          p_init_msg_list => p_init_msg_list,
10967                          x_return_status => x_return_status,
10968                          x_msg_count     => x_msg_count,
10969                          x_msg_data      => x_msg_data,
10970                          p_pdt_id        => l_pdt_id,
10971                          p_pdt_date      => l_start_date,
10972                          x_rep_pdt_id    => l_rep_pdt_id,
10973                          x_tax_owner     => l_tax_owner,
10974                          x_rep_deal_type => l_rep_deal_type);
10975 
10976          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10977             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10978          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10979             RAISE OKL_API.G_EXCEPTION_ERROR;
10980          END IF;
10981 
10982          l_Multi_GAAP_YN := 'N';
10983          --checks wheter Multi-GAAP processing needs tobe done
10984          If l_rep_pdt_id is not NULL Then
10985 
10986       --Bug 7708944. SMEREDDY 01/15/2009.
10987       -- Implemented MG changes based on PM recommendation.
10988 
10989            l_Multi_GAAP_YN := 'Y';
10990 /*
10991            If l_deal_type = 'LEASEOP' and
10992            nvl(l_rep_deal_type,'X') = 'LEASEOP' and
10993            nvl(l_tax_owner,'X') = 'LESSOR' Then
10994              l_Multi_GAAP_YN := 'Y';
10995            End If;
10996 
10997            If l_deal_type in ('LEASEDF','LEASEST') and
10998            nvl(l_rep_deal_type,'X') = 'LEASEOP' and
10999            nvl(l_tax_owner,'X') = 'LESSOR' Then
11000              l_Multi_GAAP_YN := 'Y';
11001            End If;
11002 
11003            If l_deal_type in ('LEASEDF','LEASEST') and
11004            nvl(l_rep_deal_type,'X') = 'LEASEOP' and
11005            nvl(l_tax_owner,'X') = 'LESSEE' Then
11006              l_Multi_GAAP_YN := 'Y';
11007            End If;
11008 
11009            If l_deal_type = 'LOAN' and
11010            nvl(l_rep_deal_type,'X') = 'LEASEOP' and
11011            nvl(l_tax_owner,'X') = 'LESSEE' Then
11012              l_Multi_GAAP_YN := 'Y';
11013            End If;
11014 
11015            If l_deal_type = 'LEASEOP' and
11016            nvl(l_rep_deal_type,'X') in ('LEASEDF','LEASEST') and
11017            nvl(l_tax_owner,'X') = 'LESSOR' Then
11018              l_Multi_GAAP_YN := 'Y';
11019            End If;
11020 
11021            If l_deal_type in ('LEASEDF','LEASEST') and
11022            nvl(l_rep_deal_type,'X') in ('LEASEDF','LEASEST') and
11023            nvl(l_tax_owner,'X') = 'LESSOR' Then
11024              l_Multi_GAAP_YN := 'Y';
11025            End If;
11026 
11027            If l_deal_type in ('LEASEDF','LEASEST') and
11028            nvl(l_rep_deal_type,'X') in ('LEASEDF','LEASEST') and
11029            nvl(l_tax_owner,'X') = 'LESSEE' Then
11030              l_Multi_GAAP_YN := 'Y';
11031            End If;
11032 */
11033          End If;
11034 
11035          If l_Multi_GAAP_YN = 'Y' Then
11036            --get reporting product book type
11037            l_rep_pdt_book := OKL_SYSTEM_PARAMS_ALL_PUB.get_system_param_value(OKL_SYSTEM_PARAMS_ALL_PUB.G_RPT_PROD_BOOK_TYPE_CODE);
11038          End If;
11039 
11040          If (l_curr_trx_rec.transaction_type) = 'Internal Asset Creation' then
11041            --1. Online rebook new asset addition
11042            If (l_curr_trx_rec.tas_type = 'CFA') and (l_curr_trx_rec.tal_type = 'CFA') then
11043 
11044              -- Update Depreciation_Cost in Okl_Txl_Assets_B to
11045              -- the calculated Line Capital Amount
11046              l_talv_rec.id                    := l_curr_trx_rec.tal_id;
11047              l_talv_rec.depreciation_cost     := l_capital_amount;
11048 
11049              OKL_TXL_ASSETS_PUB.update_txl_asset_def(
11050                p_api_version    => p_api_version,
11051                p_init_msg_list  => p_init_msg_list,
11052                x_return_status  => x_return_status,
11053                x_msg_count      => x_msg_count,
11054                x_msg_data       => x_msg_data,
11055                p_tlpv_rec       => l_talv_rec,
11056                x_tlpv_rec       => lx_talv_rec);
11057 
11058              IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11059                RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11060              ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11061                RAISE OKL_API.G_EXCEPTION_ERROR;
11062              END IF;
11063 
11064              --process tax_books
11065              For l_tax_book_rec in l_tax_book_csr(p_tal_id => l_curr_trx_rec.tal_id)
11066              Loop
11067 
11068                -- Update Cost in Okl_Txd_Assets to the calculated Line Capital Amount
11069                l_txdv_rec.id       := l_tax_book_rec.id;
11070                l_txdv_rec.cost     := l_capital_amount;
11071 
11072                OKL_TXD_ASSETS_PUB.UPDATE_TXD_ASSET_DEF
11073                  (p_api_version    =>  p_api_version,
11074                   p_init_msg_list  =>  p_init_msg_list,
11075                   x_return_status  =>  x_return_status,
11076                   x_msg_count      =>  x_msg_count,
11077                   x_msg_data       =>  x_msg_data,
11078                   p_adpv_rec       =>  l_txdv_rec,
11079                   x_adpv_rec       =>  lx_txdv_rec);
11080 
11081                IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11082                  RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11083                ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11084                  RAISE OKL_API.G_EXCEPTION_ERROR;
11085                END IF;
11086              End Loop;
11087 
11088            --2. Online Rebook adjustments
11089            ElsIf (l_curr_trx_rec.tas_type = 'CRB') and (l_curr_trx_rec.tal_type = 'CRB') then
11090 
11091              If l_deal_type in ('LEASEDF','LEASEST','LOAN') then
11092                  -- Do not recalculate asset cost for DF/ST Lease and Loan
11093                  NULL;
11094 
11095              ElsIf l_deal_type = 'LEASEOP' Then
11096                  -- Update Depreciation_Cost in Okl_Txl_Assets_B to
11097                  -- the calculated Line Capital Amount
11098                  l_talv_rec.id                    := l_curr_trx_rec.tal_id;
11099                  l_talv_rec.depreciation_cost     := l_capital_amount;
11100 
11101                  OKL_TXL_ASSETS_PUB.update_txl_asset_def(
11102                        p_api_version    => p_api_version,
11103                        p_init_msg_list  => p_init_msg_list,
11104                        x_return_status  => x_return_status,
11105                        x_msg_count      => x_msg_count,
11106                        x_msg_data       => x_msg_data,
11107                        p_tlpv_rec       => l_talv_rec,
11108                        x_tlpv_rec       => lx_talv_rec);
11109 
11110                  IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11111                    RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11112                  ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11113                    RAISE OKL_API.G_EXCEPTION_ERROR;
11114                  END IF;
11115              End If;
11116 
11117              --process tax_books
11118              For l_tax_book_rec in l_tax_book_csr(p_tal_id => l_curr_trx_rec.tal_id)
11119              Loop
11120 
11121                --Multi-Gaap Book
11122                If (l_multi_GAAP_yn = 'Y' and nvl(l_rep_pdt_book,OKL_API.G_MISS_CHAR) = l_tax_book_rec.tax_book) then
11123 
11124                  If l_rep_deal_type in ('LEASEDF','LEASEST','LOAN') then
11125                    -- Do not recalculate asset cost for DF/ST Lease and Loan
11126                    NULL;
11127 
11128                  ElsIf  l_rep_deal_type = 'LEASEOP' then
11129 
11130                    -- Update Cost in Okl_Txd_Assets to the calculated Line Capital Amount
11131                    l_txdv_rec.id       := l_tax_book_rec.id;
11132                    l_txdv_rec.cost     := l_capital_amount;
11133 
11134                    OKL_TXD_ASSETS_PUB.UPDATE_TXD_ASSET_DEF
11135                      (p_api_version    =>  p_api_version,
11136                       p_init_msg_list  =>  p_init_msg_list,
11137                       x_return_status  =>  x_return_status,
11138                       x_msg_count      =>  x_msg_count,
11139                       x_msg_data       =>  x_msg_data,
11140                       p_adpv_rec       =>  l_txdv_rec,
11141                       x_adpv_rec       =>  lx_txdv_rec);
11142 
11143                    IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11144                      RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11145                    ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11146                      RAISE OKL_API.G_EXCEPTION_ERROR;
11147                    END IF;
11148 
11149                  End If;
11150 
11151                -- Tax Books
11152                Else
11153 
11154                  If (l_deal_type = 'LOAN') OR
11155                     (l_deal_type in ('LEASEST','LEASEDF') AND l_tax_owner = 'LESSEE') then
11156 
11157                       -- Do not recalculate asset cost for Loan and DF/ST Lease with Tax owner Lessee
11158                       NULL;
11159                  Else
11160 
11161                     -- Update Cost in Okl_Txd_Assets to the calculated Line Capital Amount
11162                     l_txdv_rec.id       := l_tax_book_rec.id;
11163                     l_txdv_rec.cost     := l_capital_amount;
11164 
11165                     OKL_TXD_ASSETS_PUB.UPDATE_TXD_ASSET_DEF
11166                      (p_api_version    =>  p_api_version,
11167                       p_init_msg_list  =>  p_init_msg_list,
11168                       x_return_status  =>  x_return_status,
11169                       x_msg_count      =>  x_msg_count,
11170                       x_msg_data       =>  x_msg_data,
11171                       p_adpv_rec       =>  l_txdv_rec,
11172                       x_adpv_rec       =>  lx_txdv_rec);
11173 
11174                    IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11175                      RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11176                    ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11177                      RAISE OKL_API.G_EXCEPTION_ERROR;
11178                    END IF;
11179 
11180                  End if;
11181                End if;
11182              End Loop;
11183 
11184            End If;
11185          End If;
11186        End Loop;
11187      End If;
11188      OKL_API.END_ACTIVITY (x_msg_count,x_msg_data );
11189   EXCEPTION
11190       WHEN OKL_API.G_EXCEPTION_ERROR THEN
11191       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
11192                                l_api_name,
11193                                G_PKG_NAME,
11194                                'OKL_API.G_RET_STS_ERROR',
11195                                x_msg_count,
11196                                x_msg_data,
11197                                '_PVT');
11198       WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
11199       x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11200                               l_api_name,
11201                               G_PKG_NAME,
11202                               'OKL_API.G_RET_STS_UNEXP_ERROR',
11203                               x_msg_count,
11204                               x_msg_data,
11205                               '_PVT');
11206       WHEN OTHERS THEN
11207       If l_chk_rbk_csr%ISOPEN then
11208           close l_chk_rbk_csr;
11209       end if;
11210       If l_capital_cost_csr%ISOPEN then
11211           close l_capital_cost_csr;
11212       end if;
11213       if l_chr_csr%ISOPEN then
11214           close l_chr_csr;
11215       end if;
11216       x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11217                               l_api_name,
11218                               G_PKG_NAME,
11219                               'OTHERS',
11220                               x_msg_count,
11221                               x_msg_data,
11222                               '_PVT');
11223 
11224   END recalculate_asset_cost;
11225 
11226 END OKL_ACTIVATE_ASSET_PVT;