[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;